diff --git a/tools/checkbins/checkbins.py b/tools/checkbins/checkbins.py
index e8d93e9..c58d4c58 100755
--- a/tools/checkbins/checkbins.py
+++ b/tools/checkbins/checkbins.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # Copyright (c) 2011 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.
@@ -10,8 +10,6 @@
 /NXCOMPAT, /DYNAMICBASE and /SAFESEH.
 """
 
-from __future__ import print_function
-
 import json
 import os
 import optparse
@@ -20,7 +18,7 @@
 REPO_ROOT = os.path.join(os.path.dirname(__file__), '..', '..')
 FILES_CFG = os.path.join(REPO_ROOT, 'chrome', 'tools', 'build', 'win',
                          'FILES.cfg')
-PEFILE_DIR = os.path.join(REPO_ROOT, 'third_party', 'pefile')
+PEFILE_DIR = os.path.join(REPO_ROOT, 'third_party', 'pefile_py3')
 sys.path.append(PEFILE_DIR)
 
 import pefile
@@ -34,8 +32,8 @@
 MACHINE_TYPE_AMD64 = 0x8664
 
 # Please do not add your file here without confirming that it indeed doesn't
-# require /NXCOMPAT and /DYNAMICBASE.  Contact cpu@chromium.org or your local
-# Windows guru for advice.
+# require /NXCOMPAT and /DYNAMICBASE.  Contact //sandbox/win/OWNERS or your
+# local Windows guru for advice.
 EXCLUDED_FILES = [
                   'crashpad_util_test_process_info_test_child.exe',
                   'mini_installer.exe',
@@ -56,9 +54,11 @@
 
   failures = []
 
-  # Load FILES.cfg
+  # Load FILES.cfg - it is a python file setting a FILES variable.
   exec_globals = {'__builtins__': None}
-  execfile(FILES_CFG, exec_globals)
+  with open(FILES_CFG, encoding="utf-8") as f:
+    code = compile(f.read(), FILES_CFG, 'exec')
+    exec(code, exec_globals)
   files_cfg = exec_globals['FILES']
 
   # Determines whether a specified file is in the 'default'
diff --git a/tools/clang/scripts/update.py b/tools/clang/scripts/update.py
index 2f9505d3..79906ca 100755
--- a/tools/clang/scripts/update.py
+++ b/tools/clang/scripts/update.py
@@ -39,7 +39,7 @@
 # https://chromium.googlesource.com/chromium/src/+/main/docs/updating_clang.md
 # Reverting problematic clang rolls is safe, though.
 # This is the output of `git describe` and is usable as a commit-ish.
-CLANG_REVISION = 'llvmorg-13-init-11649-g4d788fb8'
+CLANG_REVISION = 'llvmorg-13-init-11999-g50c0aaed'
 CLANG_SUB_REVISION = 1
 
 PACKAGE_VERSION = '%s-%s' % (CLANG_REVISION, CLANG_SUB_REVISION)
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl
index 529812f9..3f061eb 100644
--- a/tools/mb/mb_config.pyl
+++ b/tools/mb/mb_config.pyl
@@ -129,9 +129,6 @@
     'chromium.angle': {
       'android-angle-arm64-builder': 'angle_specific_no_trace_android_release_trybot_arm64',
       'android-angle-chromium-arm64-builder': 'gpu_tests_android_release_trybot_arm64_fastbuild',
-      'android-angle-perf-arm64-builder': 'angle_specific_android_vulkan_ndk_release_trybot_dcheck_off_arm64',
-      'android-angle-vk-arm-builder': 'angle_specific_android_vulkan_ndk_release_trybot',
-      'android-angle-vk-arm64-builder': 'angle_specific_android_vulkan_ndk_release_trybot_arm64',
       'fuchsia-angle-builder': 'angle_specific_release_trybot_fuchsia',
       'ios-angle-builder': 'angle_specific_release_trybot_ios',
       'linux-angle-builder': 'angle_specific_release_trybot',
@@ -454,10 +451,6 @@
       'Android FYI Release (NVIDIA Shield TV)': 'gpu_tests_android_release_trybot_arm64',
       'Android FYI Release (Pixel 2)': 'gpu_tests_android_release_trybot',
       'Android FYI Release (Pixel 4)': 'gpu_tests_android_release_trybot',
-      'Android FYI 32 Vk Release (Pixel 2)': 'gpu_fyi_tests_android_vulkan_ndk_release_trybot',
-      'Android FYI 64 Vk Release (Pixel 2)': 'gpu_fyi_tests_android_vulkan_ndk_release_trybot_arm64',
-      'Android FYI 32 dEQP Vk Release (Pixel 2)': 'angle_deqp_android_vulkan_ndk_release_trybot',
-      'Android FYI 64 dEQP Vk Release (Pixel 2)': 'angle_deqp_android_vulkan_ndk_release_trybot_arm64',
       'Android FYI SkiaRenderer GL (Nexus 5X)': 'gpu_tests_android_release_trybot_arm64',
       'Android FYI SkiaRenderer Vulkan (Pixel 2)': 'gpu_tests_android_release_trybot',
       'ChromeOS FYI Release (amd64-generic)': 'gpu_tests_chromeos_amd64_release_trybot_dcheck_off_no_symbols',
@@ -468,7 +461,6 @@
       'GPU FYI Linux dEQP Builder': 'angle_deqp_release_trybot',
       'GPU FYI Mac Builder': 'gpu_fyi_tests_release_trybot',
       'GPU FYI Mac Builder (dbg)': 'gpu_fyi_tests_debug_trybot',
-      'GPU FYI Perf Android 64 Builder': 'gpu_fyi_tests_android_vulkan_ndk_release_trybot_dcheck_off_arm64',
       'GPU FYI Win Builder': 'gpu_fyi_tests_release_trybot_x86',
       'GPU FYI Win x64 Builder': 'gpu_fyi_tests_release_trybot',
       'GPU FYI Win x64 Builder (dbg)': 'gpu_fyi_tests_debug_trybot',
@@ -840,10 +832,6 @@
       'gpu-fyi-try-android-n-nvidia-shield-tv-64': 'gpu_tests_android_release_trybot_arm64',
       'gpu-fyi-try-android-p-pixel-2-32': 'gpu_tests_android_release_trybot',
       'gpu-fyi-try-android-p-pixel-2-skv-32': 'gpu_tests_android_release_trybot',
-      'gpu-fyi-try-android-q-pixel-2-deqp-vk-32': 'angle_deqp_android_vulkan_ndk_release_trybot',
-      'gpu-fyi-try-android-q-pixel-2-deqp-vk-64': 'angle_deqp_android_vulkan_ndk_release_trybot_arm64',
-      'gpu-fyi-try-android-q-pixel-2-vk-32': 'gpu_fyi_tests_android_vulkan_ndk_release_trybot',
-      'gpu-fyi-try-android-q-pixel-2-vk-64': 'gpu_fyi_tests_android_vulkan_ndk_release_trybot_arm64',
       'gpu-fyi-try-android-r-pixel-4-32': 'gpu_tests_android_release_trybot',
       'gpu-try-android-m-nexus-5x-64': 'gpu_tests_android_release_trybot_arm64',
       'linux_android_dbg_ng': 'android_debug_bot',
@@ -855,11 +843,7 @@
     # TODO(jmadill/ynovikov): Migrate these to angle waterfall. http://anglebug.com/4483
     'tryserver.chromium.angle': {
       'android_angle_rel_ng': 'gpu_tests_android_release_trybot_arm64',
-      'android_angle_vk32_rel_ng': 'gpu_fyi_tests_android_vulkan_ndk_release_trybot',
-      'android_angle_vk64_rel_ng': 'gpu_fyi_tests_android_vulkan_ndk_release_trybot_arm64',
       'android_angle_deqp_rel_ng': 'angle_deqp_android_release_trybot_arm64',
-      'android_angle_vk32_deqp_rel_ng': 'angle_deqp_android_vulkan_ndk_release_trybot',
-      'android_angle_vk64_deqp_rel_ng': 'angle_deqp_android_vulkan_ndk_release_trybot_arm64',
       'fuchsia-angle-rel': 'gpu_fyi_tests_release_trybot_fuchsia',
       'fuchsia-angle-try': 'angle_specific_release_trybot_fuchsia',
       'ios-angle-try-intel': 'angle_specific_release_trybot_ios',
@@ -1539,14 +1523,6 @@
       'angle_deqp_tests', 'android',  'shared_release_trybot', 'arm64',
     ],
 
-    'angle_deqp_android_vulkan_ndk_release_trybot': [
-      'angle_deqp_tests', 'android', 'vulkan_ndk', 'shared_release_trybot',
-    ],
-
-    'angle_deqp_android_vulkan_ndk_release_trybot_arm64': [
-      'angle_deqp_tests', 'android', 'vulkan_ndk', 'shared_release_trybot', 'arm64',
-    ],
-
     'angle_deqp_release_trybot': [
       'angle_deqp_tests', 'shared_release_trybot',
     ],
@@ -1555,21 +1531,6 @@
       'angle_deqp_tests', 'shared_release_trybot', 'x86',
     ],
 
-    'angle_specific_android_vulkan_ndk_release_trybot': [
-      'angle_specific_tests', 'android_without_codecs', 'vulkan_ndk',
-      'shared_release_trybot',
-    ],
-
-    'angle_specific_android_vulkan_ndk_release_trybot_arm64': [
-      'angle_specific_tests', 'android_without_codecs', 'vulkan_ndk',
-      'shared_release_trybot', 'arm64',
-    ],
-
-    'angle_specific_android_vulkan_ndk_release_trybot_dcheck_off_arm64': [
-      'angle_specific_tests', 'android_without_codecs',  'vulkan_ndk',
-      'shared_release_trybot_dcheck_off', 'arm64',
-    ],
-
     'angle_specific_no_trace_android_release_trybot_arm64': [
       'angle_specific_no_trace_tests', 'android_without_codecs',
       'shared_release_trybot', 'arm64',
@@ -2049,20 +2010,6 @@
       'official_optimize_goma_trybot', 'fuchsia',
     ],
 
-    'gpu_fyi_tests_android_vulkan_ndk_release_trybot': [
-      'gpu_fyi_android_tests', 'vulkan_ndk', 'release_trybot', 'static_angle',
-    ],
-
-    'gpu_fyi_tests_android_vulkan_ndk_release_trybot_arm64': [
-      'gpu_fyi_android_tests', 'vulkan_ndk', 'release_trybot', 'arm64',
-      'static_angle',
-    ],
-
-    'gpu_fyi_tests_android_vulkan_ndk_release_trybot_dcheck_off_arm64': [
-      'gpu_fyi_android_tests', 'vulkan_ndk', 'release_trybot_dcheck_off',
-      'arm64', 'static_angle',
-    ],
-
     'gpu_fyi_tests_debug_trybot': [
       'gpu_fyi_tests', 'debug_bot', 'disable_nacl',
     ],
@@ -3182,10 +3129,6 @@
       'gn_args': 'use_goma=true',
     },
 
-    'gpu_fyi_android_tests': {
-      'mixins': ['android', 'angle_trace_perf_tests', 'gpu_tests'],
-    },
-
     'gpu_fyi_tests': {
       'mixins': ['angle_trace_perf_tests', 'gpu_tests', 'internal_gles_conform_tests'],
     },
@@ -3502,10 +3445,6 @@
       'mixins': ['shared_release_bot', 'minimal_symbols', 'dcheck_always_on'],
     },
 
-    'shared_release_trybot_dcheck_off': {
-      'mixins': ['shared_release_bot', 'minimal_symbols', 'dcheck_off'],
-    },
-
     'sk_dawn': {
       'gn_args': 'skia_use_dawn=true enable_skia_dawn_gtests=true',
     },
@@ -3623,10 +3562,6 @@
       'gn_args': 'enable_vr=true',
     },
 
-    'vulkan_ndk': {
-      'gn_args': 'android32_ndk_api_level=29 android64_ndk_api_level=29',
-    },
-
     'webview_google': {
       'gn_args': 'system_webview_package_name="com.google.android.webview"',
     },
diff --git a/tools/mb/mb_config_expectations/chromium.angle.json b/tools/mb/mb_config_expectations/chromium.angle.json
index 02830bf..0aa0f899 100644
--- a/tools/mb/mb_config_expectations/chromium.angle.json
+++ b/tools/mb/mb_config_expectations/chromium.angle.json
@@ -28,56 +28,6 @@
       "use_static_angle": true
     }
   },
-  "android-angle-perf-arm64-builder": {
-    "gn_args": {
-      "android32_ndk_api_level": 29,
-      "android64_ndk_api_level": 29,
-      "build_angle_deqp_tests": true,
-      "build_angle_gles1_conform_tests": true,
-      "build_angle_trace_perf_tests": true,
-      "dcheck_always_on": false,
-      "enable_nacl": false,
-      "is_component_build": true,
-      "is_debug": false,
-      "symbol_level": 1,
-      "target_cpu": "arm64",
-      "target_os": "android",
-      "use_goma": true
-    }
-  },
-  "android-angle-vk-arm-builder": {
-    "gn_args": {
-      "android32_ndk_api_level": 29,
-      "android64_ndk_api_level": 29,
-      "build_angle_deqp_tests": true,
-      "build_angle_gles1_conform_tests": true,
-      "build_angle_trace_perf_tests": true,
-      "dcheck_always_on": true,
-      "enable_nacl": false,
-      "is_component_build": true,
-      "is_debug": false,
-      "symbol_level": 1,
-      "target_os": "android",
-      "use_goma": true
-    }
-  },
-  "android-angle-vk-arm64-builder": {
-    "gn_args": {
-      "android32_ndk_api_level": 29,
-      "android64_ndk_api_level": 29,
-      "build_angle_deqp_tests": true,
-      "build_angle_gles1_conform_tests": true,
-      "build_angle_trace_perf_tests": true,
-      "dcheck_always_on": true,
-      "enable_nacl": false,
-      "is_component_build": true,
-      "is_debug": false,
-      "symbol_level": 1,
-      "target_cpu": "arm64",
-      "target_os": "android",
-      "use_goma": true
-    }
-  },
   "fuchsia-angle-builder": {
     "gn_args": {
       "build_angle_deqp_tests": true,
diff --git a/tools/mb/mb_config_expectations/chromium.gpu.fyi.json b/tools/mb/mb_config_expectations/chromium.gpu.fyi.json
index c9e7761f..640f2a4 100644
--- a/tools/mb/mb_config_expectations/chromium.gpu.fyi.json
+++ b/tools/mb/mb_config_expectations/chromium.gpu.fyi.json
@@ -13,70 +13,6 @@
       "use_static_angle": true
     }
   },
-  "Android FYI 32 Vk Release (Pixel 2)": {
-    "gn_args": {
-      "android32_ndk_api_level": 29,
-      "android64_ndk_api_level": 29,
-      "build_angle_trace_perf_tests": true,
-      "dcheck_always_on": true,
-      "ffmpeg_branding": "Chrome",
-      "is_component_build": false,
-      "is_debug": false,
-      "proprietary_codecs": true,
-      "symbol_level": 1,
-      "target_os": "android",
-      "use_goma": true,
-      "use_static_angle": true
-    }
-  },
-  "Android FYI 32 dEQP Vk Release (Pixel 2)": {
-    "gn_args": {
-      "android32_ndk_api_level": 29,
-      "android64_ndk_api_level": 29,
-      "build_angle_deqp_tests": true,
-      "dcheck_always_on": true,
-      "ffmpeg_branding": "Chrome",
-      "is_component_build": true,
-      "is_debug": false,
-      "proprietary_codecs": true,
-      "symbol_level": 1,
-      "target_os": "android",
-      "use_goma": true
-    }
-  },
-  "Android FYI 64 Vk Release (Pixel 2)": {
-    "gn_args": {
-      "android32_ndk_api_level": 29,
-      "android64_ndk_api_level": 29,
-      "build_angle_trace_perf_tests": true,
-      "dcheck_always_on": true,
-      "ffmpeg_branding": "Chrome",
-      "is_component_build": false,
-      "is_debug": false,
-      "proprietary_codecs": true,
-      "symbol_level": 1,
-      "target_cpu": "arm64",
-      "target_os": "android",
-      "use_goma": true,
-      "use_static_angle": true
-    }
-  },
-  "Android FYI 64 dEQP Vk Release (Pixel 2)": {
-    "gn_args": {
-      "android32_ndk_api_level": 29,
-      "android64_ndk_api_level": 29,
-      "build_angle_deqp_tests": true,
-      "dcheck_always_on": true,
-      "ffmpeg_branding": "Chrome",
-      "is_component_build": true,
-      "is_debug": false,
-      "proprietary_codecs": true,
-      "symbol_level": 1,
-      "target_cpu": "arm64",
-      "target_os": "android",
-      "use_goma": true
-    }
-  },
   "Android FYI Release (NVIDIA Shield TV)": {
     "gn_args": {
       "dcheck_always_on": true,
@@ -323,23 +259,6 @@
       "use_goma": true
     }
   },
-  "GPU FYI Perf Android 64 Builder": {
-    "gn_args": {
-      "android32_ndk_api_level": 29,
-      "android64_ndk_api_level": 29,
-      "build_angle_trace_perf_tests": true,
-      "dcheck_always_on": false,
-      "ffmpeg_branding": "Chrome",
-      "is_component_build": false,
-      "is_debug": false,
-      "proprietary_codecs": true,
-      "symbol_level": 1,
-      "target_cpu": "arm64",
-      "target_os": "android",
-      "use_goma": true,
-      "use_static_angle": true
-    }
-  },
   "GPU FYI Win Builder": {
     "gn_args": {
       "build_angle_gles1_conform_tests": true,
diff --git a/tools/mb/mb_config_expectations/tryserver.chromium.android.json b/tools/mb/mb_config_expectations/tryserver.chromium.android.json
index 06442af..13245d6 100644
--- a/tools/mb/mb_config_expectations/tryserver.chromium.android.json
+++ b/tools/mb/mb_config_expectations/tryserver.chromium.android.json
@@ -972,70 +972,6 @@
       "use_static_angle": true
     }
   },
-  "gpu-fyi-try-android-q-pixel-2-deqp-vk-32": {
-    "gn_args": {
-      "android32_ndk_api_level": 29,
-      "android64_ndk_api_level": 29,
-      "build_angle_deqp_tests": true,
-      "dcheck_always_on": true,
-      "ffmpeg_branding": "Chrome",
-      "is_component_build": true,
-      "is_debug": false,
-      "proprietary_codecs": true,
-      "symbol_level": 1,
-      "target_os": "android",
-      "use_goma": true
-    }
-  },
-  "gpu-fyi-try-android-q-pixel-2-deqp-vk-64": {
-    "gn_args": {
-      "android32_ndk_api_level": 29,
-      "android64_ndk_api_level": 29,
-      "build_angle_deqp_tests": true,
-      "dcheck_always_on": true,
-      "ffmpeg_branding": "Chrome",
-      "is_component_build": true,
-      "is_debug": false,
-      "proprietary_codecs": true,
-      "symbol_level": 1,
-      "target_cpu": "arm64",
-      "target_os": "android",
-      "use_goma": true
-    }
-  },
-  "gpu-fyi-try-android-q-pixel-2-vk-32": {
-    "gn_args": {
-      "android32_ndk_api_level": 29,
-      "android64_ndk_api_level": 29,
-      "build_angle_trace_perf_tests": true,
-      "dcheck_always_on": true,
-      "ffmpeg_branding": "Chrome",
-      "is_component_build": false,
-      "is_debug": false,
-      "proprietary_codecs": true,
-      "symbol_level": 1,
-      "target_os": "android",
-      "use_goma": true,
-      "use_static_angle": true
-    }
-  },
-  "gpu-fyi-try-android-q-pixel-2-vk-64": {
-    "gn_args": {
-      "android32_ndk_api_level": 29,
-      "android64_ndk_api_level": 29,
-      "build_angle_trace_perf_tests": true,
-      "dcheck_always_on": true,
-      "ffmpeg_branding": "Chrome",
-      "is_component_build": false,
-      "is_debug": false,
-      "proprietary_codecs": true,
-      "symbol_level": 1,
-      "target_cpu": "arm64",
-      "target_os": "android",
-      "use_goma": true,
-      "use_static_angle": true
-    }
-  },
   "gpu-fyi-try-android-r-pixel-4-32": {
     "gn_args": {
       "dcheck_always_on": true,
diff --git a/tools/mb/mb_config_expectations/tryserver.chromium.angle.json b/tools/mb/mb_config_expectations/tryserver.chromium.angle.json
index d5986ff0..03f3cf57 100644
--- a/tools/mb/mb_config_expectations/tryserver.chromium.angle.json
+++ b/tools/mb/mb_config_expectations/tryserver.chromium.angle.json
@@ -27,70 +27,6 @@
       "use_static_angle": true
     }
   },
-  "android_angle_vk32_deqp_rel_ng": {
-    "gn_args": {
-      "android32_ndk_api_level": 29,
-      "android64_ndk_api_level": 29,
-      "build_angle_deqp_tests": true,
-      "dcheck_always_on": true,
-      "ffmpeg_branding": "Chrome",
-      "is_component_build": true,
-      "is_debug": false,
-      "proprietary_codecs": true,
-      "symbol_level": 1,
-      "target_os": "android",
-      "use_goma": true
-    }
-  },
-  "android_angle_vk32_rel_ng": {
-    "gn_args": {
-      "android32_ndk_api_level": 29,
-      "android64_ndk_api_level": 29,
-      "build_angle_trace_perf_tests": true,
-      "dcheck_always_on": true,
-      "ffmpeg_branding": "Chrome",
-      "is_component_build": false,
-      "is_debug": false,
-      "proprietary_codecs": true,
-      "symbol_level": 1,
-      "target_os": "android",
-      "use_goma": true,
-      "use_static_angle": true
-    }
-  },
-  "android_angle_vk64_deqp_rel_ng": {
-    "gn_args": {
-      "android32_ndk_api_level": 29,
-      "android64_ndk_api_level": 29,
-      "build_angle_deqp_tests": true,
-      "dcheck_always_on": true,
-      "ffmpeg_branding": "Chrome",
-      "is_component_build": true,
-      "is_debug": false,
-      "proprietary_codecs": true,
-      "symbol_level": 1,
-      "target_cpu": "arm64",
-      "target_os": "android",
-      "use_goma": true
-    }
-  },
-  "android_angle_vk64_rel_ng": {
-    "gn_args": {
-      "android32_ndk_api_level": 29,
-      "android64_ndk_api_level": 29,
-      "build_angle_trace_perf_tests": true,
-      "dcheck_always_on": true,
-      "ffmpeg_branding": "Chrome",
-      "is_component_build": false,
-      "is_debug": false,
-      "proprietary_codecs": true,
-      "symbol_level": 1,
-      "target_cpu": "arm64",
-      "target_os": "android",
-      "use_goma": true,
-      "use_static_angle": true
-    }
-  },
   "fuchsia-angle-rel": {
     "gn_args": {
       "build_angle_gles1_conform_tests": true,
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 1989365..c7f21e9c 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -15618,6 +15618,7 @@
   <int value="1" label="Click onscreen button"/>
   <int value="2" label="Select the button in the SwitchAccess context menu"/>
   <int value="3" label="ChromeVox gesture"/>
+  <int value="4" label="AccessibilityCommon extension"/>
 </enum>
 
 <enum name="CrosDisksArchiveType">
@@ -26043,6 +26044,7 @@
   <int value="476" label="TTS_ENGINE_ON_SPEAK_WITH_AUDIO_STREAM"/>
   <int value="477" label="ACCESSIBILITY_PRIVATE_ON_SHOW_CHROMEVOX_TUTORIAL"/>
   <int value="478" label="STORAGE_SESSION_ON_CHANGE"/>
+  <int value="479" label="ACCESSIBILITY_PRIVATE_ON_TOGGLE_DICTATION"/>
 </enum>
 
 <enum name="ExtensionFileWriteResult">
@@ -56373,6 +56375,12 @@
   <int value="1" label="Disconnected"/>
 </enum>
 
+<enum name="NetworkCellularESimInstallViaQrCodeResult">
+  <int value="0" label="Success"/>
+  <int value="1" label="Inhibit failed"/>
+  <int value="2" label="Hermes install failed"/>
+</enum>
+
 <enum name="NetworkCellularESimProfileStatus">
   <int value="0" label="Active"/>
   <int value="1" label="ActiveWithPendingProfiles"/>
@@ -56380,6 +56388,12 @@
   <int value="3" label="NoProfiles"/>
 </enum>
 
+<enum name="NetworkCellularESimRequestPendingProfilesResult">
+  <int value="0" label="Success"/>
+  <int value="1" label="Inhibit failed"/>
+  <int value="2" label="Hermes request failed"/>
+</enum>
+
 <enum name="NetworkCellularESimUninstallOperationResult">
   <int value="0" label="Success"/>
   <int value="1" label="Network not found"/>
@@ -56391,12 +56405,31 @@
   <int value="7" label="Remove service failed"/>
 </enum>
 
+<enum name="NetworkCellularInhibitResult">
+  <int value="0" label="Success"/>
+  <int value="1" label="UninhibitTimeout"/>
+  <int value="2" label="SetInhibitFailed"/>
+  <int value="3" label="SetInhibitTimeout"/>
+  <int value="4" label="SetInhibitNoDevice"/>
+</enum>
+
 <enum name="NetworkCellularOutOfCreditsReason">
   <int value="0" label="Connect-Disconnect Loop"/>
   <int value="1" label="TX-Queue Congestion"/>
   <int value="2" label="Elongated Time Wait"/>
 </enum>
 
+<enum name="NetworkCellularPrepareForConnectionResult">
+  <int value="0" label="Success"/>
+  <int value="1" label="Network not found"/>
+  <int value="2" label="Inhibit failed"/>
+  <int value="3" label="EUICC not found"/>
+  <int value="4" label="Refresh profiles failed"/>
+  <int value="5" label="eSIM profile not found"/>
+  <int value="6" label="Enable profile failed"/>
+  <int value="7" label="Timeout waiting for connectable"/>
+</enum>
+
 <enum name="NetworkCellularPSimActivationState">
   <int value="0" label="Activated"/>
   <int value="1" label="Activating"/>
diff --git a/tools/metrics/histograms/histograms_xml/network/histograms.xml b/tools/metrics/histograms/histograms_xml/network/histograms.xml
index cce0172..323f405 100644
--- a/tools/metrics/histograms/histograms_xml/network/histograms.xml
+++ b/tools/metrics/histograms/histograms_xml/network/histograms.xml
@@ -154,6 +154,19 @@
   </summary>
 </histogram>
 
+<histogram name="Network.Cellular.ESim.EnableProfile.Result"
+    enum="HermesResponseStatus" expires_after="2021-11-01">
+  <owner>azeemarshad@chromium.org</owner>
+  <owner>khorimoto@chromium.org</owner>
+  <owner>cros-connectivity@google.com</owner>
+  <summary>
+    Tracks the success rate of enabling an eSIM profile. Note that the result
+    for &quot;already enabled&quot; is considered a success for this metric.
+
+    Emitted once the operation completes.
+  </summary>
+</histogram>
+
 <histogram name="Network.Cellular.ESim.InstallPendingProfile.Result"
     enum="HermesResponseStatus" expires_after="2022-03-01">
   <owner>azeemarshad@chromium.org</owner>
@@ -171,6 +184,21 @@
   </summary>
 </histogram>
 
+<histogram name="Network.Cellular.ESim.InstallViaQrCode.OperationResult"
+    enum="NetworkCellularESimInstallViaQrCodeResult" expires_after="2021-11-01">
+  <owner>azeemarshad@chromium.org</owner>
+  <owner>khorimoto@chromium.org</owner>
+  <owner>cros-connectivity@google.com</owner>
+  <summary>
+    Tracks the result of an attempt to install an eSIM profile via a QR code.
+    This process includes both an attempt to inhibit modem scans as well as a
+    request to install the profile. The metric tracks failures at each step of
+    the process.
+
+    Emitted once the operation completes.
+  </summary>
+</histogram>
+
 <histogram name="Network.Cellular.ESim.InstallViaQrCode.Result"
     enum="HermesResponseStatus" expires_after="2022-03-01">
   <owner>azeemarshad@chromium.org</owner>
@@ -234,6 +262,33 @@
   <summary>Tracks the rate of success of uninstalling a profile.</summary>
 </histogram>
 
+<histogram name="Network.Cellular.ESim.RequestPendingProfiles.OperationResult"
+    enum="NetworkCellularESimRequestPendingProfilesResult"
+    expires_after="2021-11-01">
+  <owner>azeemarshad@chromium.org</owner>
+  <owner>khorimoto@chromium.org</owner>
+  <owner>cros-connectivity@google.com</owner>
+  <summary>
+    Tracks the result of an attempt to request pending eSIM profiles (i.e.,
+    those found via an SM-DS scan). This process includes both an attempt to
+    inhibit modem scans as well as a request for the profiles. The metric tracks
+    failures at each step of the process.
+
+    Emitted once the operation completes.
+  </summary>
+</histogram>
+
+<histogram name="Network.Cellular.ESim.RequestPendingProfiles.Result"
+    enum="HermesResponseStatus" expires_after="2021-11-01">
+  <owner>azeemarshad@chromium.org</owner>
+  <owner>khorimoto@chromium.org</owner>
+  <owner>cros-connectivity@google.com</owner>
+  <summary>
+    Tracks the success rate of requesting pending eSIM profiles. Emitted once
+    the operation completes.
+  </summary>
+</histogram>
+
 <histogram name="Network.Cellular.ESim.ServiceAtLogin.Count" units="units"
     expires_after="2022-03-01">
   <owner>azeemarshad@chromium.org</owner>
@@ -301,6 +356,18 @@
   </summary>
 </histogram>
 
+<histogram name="Network.Cellular.InhibitResult"
+    enum="NetworkCellularInhibitResult" expires_after="2021-11-01">
+  <owner>azeemarshad@chromium.org</owner>
+  <owner>khorimoto@chromium.org</owner>
+  <owner>cros-connectivity@google.com</owner>
+  <summary>
+    Tracks the result of a cellular device inhibit-uninhibit cycle.
+
+    Emitted when uninhibit completes or when any step fails.
+  </summary>
+</histogram>
+
 <histogram name="Network.Cellular.Pin.{SimPinOperation}"
     enum="SimPinOperationResult" expires_after="2022-03-01">
   <owner>azeemarshad@chromium.org</owner>
@@ -315,6 +382,20 @@
   </token>
 </histogram>
 
+<histogram name="Network.Cellular.PrepareForConnection.OperationResult"
+    enum="NetworkCellularPrepareForConnectionResult" expires_after="2021-11-01">
+  <owner>azeemarshad@chromium.org</owner>
+  <owner>khorimoto@chromium.org</owner>
+  <owner>cros-connectivity@google.com</owner>
+  <summary>
+    Tracks the result of the high-level operation of preparing a cellular
+    network for a connection. For eSIM networks, this involves several steps
+    such as enabling the profile, each of which can fail or succeed.
+
+    Emitted once the operation completes.
+  </summary>
+</histogram>
+
 <histogram name="Network.Cellular.PSim.ServiceAtLogin.Count" units="units"
     expires_after="2022-03-01">
   <owner>azeemarshad@chromium.org</owner>
diff --git a/tools/perf/core/results_processor/processor.py b/tools/perf/core/results_processor/processor.py
index 1c1515530..9e41ada 100644
--- a/tools/perf/core/results_processor/processor.py
+++ b/tools/perf/core/results_processor/processor.py
@@ -129,7 +129,7 @@
       if 'runDuration' in result and result['runDuration']:
         current_duration = float(result['runDuration'].rstrip('s'))
         new_story_cost = current_duration + per_story_cost
-        result['runDuration'] = unicode(str(new_story_cost) + 's', 'utf-8')
+        result['runDuration'] = str(new_story_cost) + 's'
 
 
 def _AddExtraMetrics(test_results, extra_metrics):
diff --git a/tools/perf/core/results_processor/util.py b/tools/perf/core/results_processor/util.py
index 5b6f7c9..4848c86 100644
--- a/tools/perf/core/results_processor/util.py
+++ b/tools/perf/core/results_processor/util.py
@@ -33,7 +33,7 @@
   try:
     # Note that this is speculatively halved as an attempt to fix
     # crbug.com/953365.
-    cpu_count = multiprocessing.cpu_count() / 2
+    cpu_count = multiprocessing.cpu_count() // 2
     if sys.platform == 'win32':
       # TODO(crbug.com/1190269) - we can't use more than 56
       # cores on Windows or Python3 may hang.
diff --git a/tools/perf/core/tbmv3/trace_processor.py b/tools/perf/core/tbmv3/trace_processor.py
index e882537..56b41dd 100644
--- a/tools/perf/core/tbmv3/trace_processor.py
+++ b/tools/perf/core/tbmv3/trace_processor.py
@@ -281,7 +281,7 @@
     Output path.
   """
   trace_processor_path = _EnsureTraceProcessor(trace_processor_path)
-  with tempfile_ext.NamedTemporaryFile() as query_file:
+  with tempfile_ext.NamedTemporaryFile(mode='w+') as query_file:
     query_file.write(EXPORT_JSON_QUERY_TEMPLATE % _SqlString(json_path))
     query_file.close()
     _RunTraceProcessor(