diff --git a/debian/changelog b/debian/changelog
index 3b652b1..f078d25 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,252 @@
+chromium (97.0.4692.71-0.1) unstable; urgency=high
+
+  * Non-maintainer upload.
+  * Stop building chromium's bunded gn and instead build-dep on generate-ninja.
+  * Drop numerous patches related to gcc building, since we just build w/ clang.
+  * Use python3 as default instead of relying on python2
+    (closes: #942962, #996375).
+  * Enable the ozone backend in the build (closes: #955540).
+  * Automatically detect & enable Wayland support when launching chromium
+    (closes: #861796).
+  * Rename crashpad_handler to chrome_crashpad_handler.
+  * No longer hardcode desktop GL implementation as default - it causes
+    the chromium compositor's draw buffer to fill up & crash on my system.
+  * Enable official builds.
+  * New upstream stable release (closes: #995212).
+    - CVE-2022-0096: Use after free in Storage. Reported by Yangkang
+      (@dnpushme) of 360 ATA
+    - CVE-2022-0097: Inappropriate implementation in DevTools. Reported by
+      David Erceg
+    - CVE-2022-0098: Use after free in Screen Capture. Reported by
+      @ginggilBesel
+    - CVE-2022-0099: Use after free in Sign-in. Reported by Rox
+    - CVE-2022-0100: Heap buffer overflow in Media streams API. Reported by
+      Cassidy Kim of Amber Security Lab, OPPO Mobile Telecommunications
+      Corp. Ltd.
+    - CVE-2022-0101: Heap buffer overflow in Bookmarks. Reported by raven
+      (@raid_akame)
+    - CVE-2022-0102: Type Confusion in V8. Reported by Brendon Tiszka
+    - CVE-2022-0103: Use after free in SwiftShader. Reported by Abraruddin
+      Khan and Omair
+    - CVE-2022-0104: Heap buffer overflow in ANGLE. Reported by Abraruddin
+      Khan and Omair
+    - CVE-2022-0105: Use after free in PDF. Reported by Cassidy Kim of Amber
+      Security Lab, OPPO Mobile Telecommunications Corp. Ltd.
+    - CVE-2022-0106: Use after free in Autofill. Reported by Khalil Zhani
+    - CVE-2022-0107: Use after free in File Manager API. Reported by raven
+      (@raid_akame)
+    - CVE-2022-0108: Inappropriate implementation in Navigation. Reported by
+      Luan Herrera (@lbherrera_)
+    - CVE-2022-0109: Inappropriate implementation in Autofill. Reported by
+      Young Min Kim (@ylemkimon), CompSec Lab at Seoul National University
+    - CVE-2022-0110: Incorrect security UI in Autofill. Reported by
+      Alesandro Ortiz
+    - CVE-2022-0111: Inappropriate implementation in Navigation. Reported by
+      garygreen
+    - CVE-2022-0112: Incorrect security UI in Browser UI. Reported by Thomas
+      Orlita
+    - CVE-2022-0113: Inappropriate implementation in Blink. Reported by Luan
+      Herrera (@lbherrera_)
+    - CVE-2022-0114: Out of bounds memory access in Web Serial. Reported by
+      Looben Yang
+    - CVE-2022-0115: Uninitialized Use in File API. Reported by Mark Brand
+      of Google Project Zero
+    - CVE-2022-0116: Inappropriate implementation in Compositing. Reported
+      by Irvan Kurniawan (sourc7)
+    - CVE-2022-0117: Policy bypass in Service Workers. Reported by
+      Dongsung Kim (@kid1ng)
+    - CVE-2022-0118: Inappropriate implementation in WebShare. Reported by
+      Alesandro Ortiz
+    - CVE-2022-0120: Inappropriate implementation in Passwords. Reported by
+      CHAKRAVARTHI (Ruler96)
+    (96.0.4664.110)
+    - CVE-2021-4098: Insufficient data validation in Mojo. Reported by
+      Sergei Glazunov of Google Project Zero
+    - CVE-2021-4099: Use after free in Swiftshader. Reported by Aki Helin
+      of Solita
+    - CVE-2021-4100: Object lifecycle issue in ANGLE. Reported by Aki Helin
+      of Solita
+    - CVE-2021-4101: Heap buffer overflow in Swiftshader. Reported by
+      Abraruddin Khan and Omair
+    - CVE-2021-4102: Use after free in V8. Reported by Anonymous
+    (96.0.4664.93)
+    - CVE-2021-4052: Use after free in web apps. Reported by Wei Yuan of
+      MoyunSec VLab
+    - CVE-2021-4053: Use after free in UI. Reported by Rox
+    - CVE-2021-4079: Out of bounds write in WebRTC. Reported by Brendon
+      Tiszka
+    - CVE-2021-4054: Incorrect security UI in autofill. Reported by
+      Alesandro Ortiz
+    - CVE-2021-4078: Type confusion in V8. Reported by Nan
+      Wang(@eternalsakura13) and Guang Gong of 360 Alpha Lab
+    - CVE-2021-4055: Heap buffer overflow in extensions. Reported by Chen
+      Rong
+    - CVE-2021-4056: Type Confusion in loader. Reported by @__R0ng of 360
+      Alpha Lab
+    - CVE-2021-4057: Use after free in file API. Reported by Sergei
+      Glazunov of Google Project Zero
+    - CVE-2021-4058: Heap buffer overflow in ANGLE. Reported by Abraruddin
+      Khan and Omair
+    - CVE-2021-4059: Insufficient data validation in loader. Reported by
+      Luan Herrera (@lbherrera_)
+    - CVE-2021-4061: Type Confusion in V8. Reported by Paolo Severini
+    - CVE-2021-4062: Heap buffer overflow in BFCache. Reported by Leecraso
+      and Guang Gong of 360 Alpha Lab
+    - CVE-2021-4063: Use after free in developer tools. Reported by
+      Abdulrahman Alqabandi, Microsoft Browser Vulnerability Research
+    - CVE-2021-4064: Use after free in screen capture. Reported by
+      @ginggilBesel
+    - CVE-2021-4065: Use after free in autofill. Reported by 5n1p3r0010
+      from Topsec ChiXiao Lab
+    - CVE-2021-4066: Integer underflow in ANGLE. Reported by Jaehun
+      Jeong(@n3sk) of Theori
+    - CVE-2021-4067: Use after free in window manager. Reported by
+      @ginggilBesel
+    - CVE-2021-4068: Insufficient validation of untrusted input in new tab
+      page. Reported by NDevTK
+    (96.0.4664.45)
+    - CVE-2021-38008: Use after free in media. Reported by Marcin Towalski
+    - CVE-2021-38009: Inappropriate implementation in cache.
+      Reported by Luan Herrera (@lbherrera_)
+    - CVE-2021-38006: Use after free in storage foundation.
+      Reported by Sergei Glazunov of Google Project Zero
+    - CVE-2021-38007: Type Confusion in V8. Reported by Polaris Feng and
+      SGFvamll at Singular Security Lab
+    - CVE-2021-38005: Use after free in loader.
+      Reported by Sergei Glazunov of Google Project Zero
+    - CVE-2021-38010: Inappropriate implementation in service workers.
+      Reported by Sergei Glazunov of Google Project Zero
+    - CVE-2021-38011: Use after free in storage foundation.
+      Reported by Sergei Glazunov of Google Project Zero
+    - CVE-2021-38012: Type Confusion in V8. Reported by Yonghwi Jin (@jinmo123)
+    - CVE-2021-38013: Heap buffer overflow in fingerprint recognition.
+      Reported by raven (@raid_akame)
+    - CVE-2021-38014: Out of bounds write in Swiftshader.
+      Reported by Atte Kettunen of OUSPG
+    - CVE-2021-38015: Inappropriate implementation in input.
+      Reported by David Erceg
+    - CVE-2021-38016: Insufficient policy enforcement in background fetch.
+      Reported by Maurice Dauer
+    - CVE-2021-38017: Insufficient policy enforcement in iframe sandbox.
+      Reported by NDevTK
+    - CVE-2021-38018: Inappropriate implementation in navigation.
+      Reported by Alesandro Ortiz
+    - CVE-2021-38019: Insufficient policy enforcement in CORS.
+      Reported by Maurice Dauer
+    - CVE-2021-38020: Insufficient policy enforcement in contacts picker.
+      Reported by Luan Herrera (@lbherrera_)
+    - CVE-2021-38021: Inappropriate implementation in referrer.
+      Reported by Prakash (@1lastBr3ath)
+    - CVE-2021-38022: Inappropriate implementation in WebAuthentication.
+      Reported by Michal Kepkowski
+    (95.0.4638.69)
+    - CVE-2021-37997: Use after free in Sign-In. Reported by Wei Yuan of
+      MoyunSec VLab
+    - CVE-2021-37998: Use after free in Garbage Collection. Reported by
+      Cassidy Kim of Amber Security Lab, OPPO Mobile Telecommunications
+      Corp. Ltd.
+    - CVE-2021-37999: Insufficient data validation in New Tab Page.
+      Reported by Ashish Arun Dhone
+    - CVE-2021-38000: Insufficient validation of untrusted input in Intents.
+      Reported by Clement Lecigne, Neel Mehta, and Maddie Stone of Google
+      Threat Analysis Group
+    - CVE-2021-38001: Type Confusion in V8. Reported by @s0rrymybad of
+      Kunlun Lab via Tianfu Cup
+    - CVE-2021-38002: Use after free in Web Transport. Reported by @__R0ng
+      of 360 Alpha Lab, æ¼æ´ç ç©¶é¢éè®­é via Tianfu Cup
+    - CVE-2021-38003: Inappropriate implementation in V8. Reported by ClÃ©ment
+      Lecigne from Google TAG and Samuel GroÃ from Google Project Zero
+    - CVE-2021-38004: Insufficient policy enforcement in Autofill. Reported
+      by Mark Amery
+    (95.0.4638.54)
+    - CVE-2021-37981: Heap buffer overflow in Skia. Reported by Yangkang
+      (@dnpushme) of 360 ATA
+    - CVE-2021-37982: Use after free in Incognito. Reported by Weipeng Jiang
+      (@Krace) from Codesafe Team of Legendsec at Qi'anxin Group
+    - CVE-2021-37983: Use after free in Dev Tools. Reported by Zhihua Yao
+      of KunLun Lab
+    - CVE-2021-37984: Heap buffer overflow in PDFium. Reported by Antti
+      LevomÃ¤ki, Joonas Pihlaja and Christian Jalio from Forcepoint
+    - CVE-2021-37985: Use after free in V8. Reported by Yangkang (@dnpushme)
+      of 360 ATA
+    - CVE-2021-37986: Heap buffer overflow in Settings.
+      Reported by raven (@raid_akame)
+    - CVE-2021-37987: Use after free in Network APIs. Reported by
+      Yangkang (@dnpushme) of 360 ATA
+    - CVE-2021-37988: Use after free in Profiles. Reported by raven
+     (@raid_akame)
+    - CVE-2021-37989: Inappropriate implementation in Blink.
+      Reported by Matt Dyas, Ankur Sundara
+    - CVE-2021-37990: Inappropriate implementation in WebView. Reported by
+      Kareem Selim of CyShield
+    - CVE-2021-37991: Race in V8. Reported by Samuel GroÃ of Google Project
+      Zero
+    - CVE-2021-37992: Out of bounds read in WebAudio. Reported by
+      sunburst@Ant Security Light-Year Lab
+    - CVE-2021-37993: Use after free in PDF Accessibility. Reported by Cassidy
+      Kim of Amber Security Lab, OPPO Mobile Telecommunications Corp. Ltd.
+    - CVE-2021-37996: Insufficient validation of untrusted input in Downloads.
+      Reported by Anonymous
+    - CVE-2021-37994: Inappropriate implementation in iFrame Sandbox.
+      Reported by David Erceg
+    - CVE-2021-37995: Inappropriate implementation in WebApp Installer.
+      Reported by Terence Eden
+    (94.0.4606.81)
+    - CVE-2021-37977: Use after free in Garbage Collection. Reported by
+      Anonymous
+    - CVE-2021-37978: Heap buffer overflow in Blink. Reported by Yangkang
+      (@dnpushme) of 360 ATA
+    - CVE-2021-37979: Heap buffer overflow in WebRTC. Reported by Marcin
+      Towalski of Cisco Talos
+    - CVE-2021-37980: Inappropriate implementation in Sandbox. Reported by
+      Yonghwi Jin (@jinmo123) of Theori
+    (94.0.4606.71)
+    - CVE-2021-37974: Use after free in Safe Browsing. Reported by Weipeng
+      Jiang (@Krace) from Codesafe Team of Legendsec at Qi'anxin Group
+    - CVE-2021-37975: Use after free in V8. Reported by Anonymous
+    - CVE-2021-37976: Information leak in core. Reported by ClÃ©ment Lecigne
+      from Google TAG, with technical assistance from Sergei Glazunov and
+      Mark Brand from Google Project Zero
+    (94.0.4606.61)
+    - CVE-2021-37973: Use after free in Portals. Reported by ClÃ©ment Lecigne
+      from Google TAG, with technical assistance from Sergei Glazunov and
+      Mark Brand from Google Project Zero
+    (94.0.4606.54)
+    - CVE-2021-37956 Use after free in Offline use. Reported by Huyna at
+      Viettel Cyber Security
+    - CVE-2021-37957: Use after free in WebGPU. Reported by Looben Yang
+    - CVE-2021-37958: Inappropriate implementation in Navigation. Reported by
+      James Lee (@Windowsrcer)
+    - CVE-2021-37959: Use after free in Task Manager. Reported by raven
+      (@raid_akame)
+    - CVE-2021-37961: Use after free in Tab Strip. Reported by Khalil Zhani
+    - CVE-2021-37962: Use after free in Performance Manager. Reported by Sri
+    - CVE-2021-37963: Side-channel information leakage in DevTools. Reported
+      by Daniel Genkin and Ayush Agarwal, University of Michigan, Eyal Ronen
+      and Shaked Yehezkel, Tel Aviv University, Sioli OâConnell, University of
+      Adelaide, and Jason Kim, Georgia Institute of Technology
+    - CVE-2021-37964: Inappropriate implementation in ChromeOS Networking.
+      Reported by Hugo Hue and Sze Yiu Chau of the Chinese University of Hong
+      Kong
+    - CVE-2021-37965: Inappropriate implementation in Background Fetch API.
+      Reported by Maurice Dauer
+    - CVE-2021-37966: Inappropriate implementation in Compositing. Reported by
+      Mohit Raj (shadow2639)
+    - CVE-2021-37967: Inappropriate implementation in Background Fetch API.
+      Reported by SorryMybad (@S0rryMybad) of Kunlun Lab
+    - CVE-2021-37968: Inappropriate implementation in Background Fetch API.
+      Reported by Maurice Dauer
+    - CVE-2021-37969: Inappropriate implementation in Google Updater. Reported
+      by Abdelhamid Naceri (halov)
+    - CVE-2021-37970: Use after free in File System API. Reported by
+      SorryMybad (@S0rryMybad) of Kunlun Lab
+    - CVE-2021-37971: Incorrect security UI in Web Browser UI. Reported by
+      Rayyan Bijoora
+    - CVE-2021-37972: Out of bounds read in libjpeg-turbo. Reported by Xu
+      Hanyu and Lu Yutao from Panguite-Forensics-Lab of Qianxin
+
+ -- Andres Salomon <dilinger@debian.org>  Mon, 10 Jan 2022 01:38:13 -0500
+
 chromium (93.0.4577.82-1) unstable; urgency=medium
 
   * New upstream stable release.
diff --git a/debian/chromium-common.install b/debian/chromium-common.install
index 0735dea..195cf4e 100644
--- a/debian/chromium-common.install
+++ b/debian/chromium-common.install
@@ -2,4 +2,4 @@ out/Release/*.bin usr/lib/chromium
 out/Release/libEGL.so usr/lib/chromium
 out/Release/libGLESv2.so usr/lib/chromium
 
-out/Release/crashpad_handler usr/lib/chromium
+out/Release/chrome_crashpad_handler usr/lib/chromium
diff --git a/debian/clean b/debian/clean
index e56b697..d7bce69 100644
--- a/debian/clean
+++ b/debian/clean
@@ -12,7 +12,6 @@ third_party/flac/BUILD.gn
 third_party/zlib/BUILD.gn
 third_party/opus/BUILD.gn
 third_party/snappy/BUILD.gn
-third_party/ffmpeg/BUILD.gn
 third_party/libxml/BUILD.gn
 third_party/libdrm/BUILD.gn
 third_party/libpng/BUILD.gn
diff --git a/debian/control b/debian/control
index 20c0129..caf9894 100644
--- a/debian/control
+++ b/debian/control
@@ -16,12 +16,11 @@ Build-Depends:
  lld,
  clang,
  clang-format,
- python2,
  python3,
  pkg-config,
  ninja-build,
- python-jinja2,
- python-pkg-resources,
+ python3-jinja2,
+ python3-pkg-resources,
  ca-certificates,
  elfutils,
  wget,
@@ -34,6 +33,12 @@ Build-Depends:
  nodejs,
  node-typescript,
  uglifyjs.terser,
+ rollup,
+ node-babel7,
+ node-has-ansi,
+ node-stable,
+ node-jsdom,
+ node-is-windows,
  valgrind,
  xz-utils,
  x11-apps,
@@ -45,6 +50,7 @@ Build-Depends:
  libglu1-mesa-dev,
  libegl1-mesa-dev,
  libgles2-mesa-dev,
+ generate-ninja,
  mesa-common-dev,
  libva-dev,
  libxt-dev,
@@ -74,9 +80,6 @@ Build-Depends:
  libpam0g-dev,
  libbrotli-dev,
  libsnappy-dev,
- libavutil-dev,
- libavcodec-dev (>= 7:3.0),
- libavformat-dev,
  libglib2.0-dev,
  libasound2-dev,
  libjsoncpp-dev,
diff --git a/debian/copyright b/debian/copyright
index 8ffa22b..619c427 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -20,7 +20,16 @@ Files-Excluded:
  *jquery*.min.js
  ios
  buildtools
- ui/chromeos
+ ui/chromeos/B*
+ ui/chromeos/D*
+ ui/chromeos/devicetype_utils.cc
+ ui/chromeos/e*
+ ui/chromeos/f*
+ ui/chromeos/r*
+ ui/chromeos/s*
+ ui/chromeos/t*
+ ui/chromeos/ui_chromeos_strings*
+ ui/chromeos/user*
  base/mac
  base/test/data
  base/third_party/nspr
@@ -36,7 +45,6 @@ Files-Excluded:
  chrome/installer/gcapi*
  chrome/installer/mini_installer
  chrome/installer/launcher_support
- chrome/common/extensions/docs
  chrome/common/safe_browsing/rar_analyzer.*
  chrome/browser/resources/chromeos
  chrome/browser/resources/default_apps
@@ -54,7 +62,6 @@ Files-Excluded:
  tools/perf/page_sets
  tools/perf/measurements/test_data
  tools/perf/page_sets/maps_perf_test
- tools/perf/page_sets/webrtc_cases/adapter.js
  tools/perf/page_sets/tough_scheduling_cases/*.min.js
  tools/page_cycler/acid3
  tools/resultdb/result_adapter
@@ -65,12 +72,10 @@ Files-Excluded:
  components/test/android
  components/drive/chromeos
  testing/buildbot
- testing/rts
  native_client*
  android_webview
  third_party/re2
  third_party/icu
- third_party/ink
  third_party/opus
  third_party/flac
  third_party/llvm
@@ -83,10 +88,10 @@ Files-Excluded:
  third_party/freetype
  build/config/freetype/freetype.gni
  third_party/android*
- third_party/chromite
  third_party/tcmalloc
  third_party/lzma_sdk/7zr.exe
- third_party/test_fonts
+ third_party/test_fonts/test_fonts*
+ third_party/test_fonts/README*
  third_party/pyelftools
  third_party/fontconfig
  third_party/depot_tools
@@ -103,30 +108,24 @@ Files-Excluded:
  third_party/zlib/z*
  third_party/zlib/contrib
  third_party/zlib/patches
- third_party/skia/site/user/api
+ third_party/skia/site/docs/user/api
  third_party/skia/platform_tools
  third_party/skia/resources/icc_profiles
  third_party/skia/tools/perf-canvaskit-puppeteer/path_translate_assets/car.svg
- third_party/ffmpeg/BUILD.gn
  third_party/ffmpeg/doc
- third_party/ffmpeg/lib*
  third_party/ffmpeg/tests
  third_party/ffmpeg/tools
  third_party/ffmpeg/fftools
- third_party/ffmpeg/compat
  third_party/ffmpeg/config*
- third_party/ffmpeg/chromium
  third_party/harfbuzz-ng/src
  third_party/harfbuzz-ng/harfbuzz.gni
  third_party/openh264/src
  third_party/openh264/BUILD.gn
  third_party/expat/src
  third_party/unrar
- third_party/perfetto/infra/perfetto.dev/dist
  third_party/perfetto/ui/src/gen
  third_party/checkstyle
  third_party/swiftshader
- third_party/apache-mac
  third_party/apache-win32
  third_party/apache-portable-runtime
  third_party/instrumented_libraries
@@ -139,15 +138,76 @@ Files-Excluded:
  third_party/blink/renderer/platform/testing/data
  third_party/blink/renderer/platform/text_codec_fuzzer_seed_corpus
  third_party/google_input_tools/src/chrome/os/inputview/_locales/*.js
- v8/third_party/binutils
  v8/third_party/colorama
  v8/third_party/googletest
- v8/third_party/inspector_protocol
  third_party/libxml/mac
  third_party/libxml/linux
  third_party/libxml/win32
  third_party/libxml/BUILD.gn
- third_party/node
+ third_party/node/linux
+ third_party/node/mac
+ third_party/node/win
+ third_party/node/node.*
+ third_party/node/node_modules.*
+ third_party/node/node_modules/@*
+ third_party/node/node_modules/a*
+ third_party/node/node_modules/b*
+ third_party/node/node_modules/call*
+ third_party/node/node_modules/ch*
+ third_party/node/node_modules/cl*
+ third_party/node/node_modules/co*
+ third_party/node/node_modules/cr*
+ third_party/node/node_modules/css-*
+ third_party/node/node_modules/csso
+ third_party/node/node_modules/d*
+ third_party/node/node_modules/e*
+ third_party/node/node_modules/f*
+ third_party/node/node_modules/g*
+ third_party/node/node_modules/h*
+ third_party/node/node_modules/ig*
+ third_party/node/node_modules/im*
+ third_party/node/node_modules/inf*
+ third_party/node/node_modules/inh*
+ third_party/node/node_modules/int*
+ third_party/node/node_modules/inv*
+ third_party/node/node_modules/is*
+ third_party/node/node_modules/jse*
+ third_party/node/node_modules/json-*
+ third_party/node/node_modules/js-*
+ third_party/node/node_modules/l*
+ third_party/node/node_modules/m*
+ third_party/node/node_modules/n*
+ third_party/node/node_modules/o*
+ third_party/node/node_modules/pa*
+ third_party/node/node_modules/pi*
+ third_party/node/node_modules/polymer-bundler
+ third_party/node/node_modules/pr*
+ third_party/node/node_modules/pu*
+ third_party/node/node_modules/q*
+ third_party/node/node_modules/r*
+ third_party/node/node_modules/sa*
+ third_party/node/node_modules/se*
+ third_party/node/node_modules/shebang*
+ third_party/node/node_modules/si*
+ third_party/node/node_modules/sl*
+ third_party/node/node_modules/so*
+ third_party/node/node_modules/sp*
+ third_party/node/node_modules/st*
+ third_party/node/node_modules/su*
+ third_party/node/node_modules/sv*
+ third_party/node/node_modules/ta*
+ third_party/node/node_modules/tes*
+ third_party/node/node_modules/tex*
+ third_party/node/node_modules/to*
+ third_party/node/node_modules/tr*
+ third_party/node/node_modules/ts*
+ third_party/node/node_modules/type-*
+ third_party/node/node_modules/typi*
+ third_party/node/node_modules/u*
+ third_party/node/node_modules/v8*
+ third_party/node/node_modules/vl*
+ third_party/node/node_modules/w*
+ third_party/node/node_modules/y*
  third_party/mocha/mocha.js
  third_party/chaijs/chai.js
  third_party/blanketjs/src/blanket.js
@@ -156,7 +216,6 @@ Files-Excluded:
  third_party/webrtc/sdk
  third_party/webrtc/data
  third_party/webrtc/examples
- third_party/pdfium/third_party/eu-strip
  third_party/pdfium/third_party/libpng16
  third_party/pdfium/third_party/libopenjpeg20
  third_party/breakpad/breakpad/src/client/mac
@@ -164,12 +223,11 @@ Files-Excluded:
  third_party/boringssl/src/crypto/cipher_extra/test
  third_party/dom_distiller_js/dist/js/domdistiller_wrapped.js
  third_party/devtools-frontend/src/test
- third_party/devtools-frontend/src/scripts/closure/compiler.jar
  third_party/devtools-frontend/src/node_modules/.bin
- third_party/devtools-frontend/src/back_end/CXXDWARFSymbols/unittests
  third_party/libphonenumber/dist/javascript/i18n/phonenumbers/metadata.js
  third_party/libphonenumber/dist/javascript/i18n/phonenumbers/metadatalite.js
  third_party/tflite/src/tensorflow/examples/multibox_detector/data/surfers.jpg
+ third_party/tflite/src/tensorflow/lite/experimental/acceleration/mini_benchmark/models/blazeface_mlkit_v1.tfl
 
 
 Files: *
diff --git a/debian/patches/bullseye/blink-constexpr.patch b/debian/patches/bullseye/blink-constexpr.patch
new file mode 100644
index 0000000..c937431
--- /dev/null
+++ b/debian/patches/bullseye/blink-constexpr.patch
@@ -0,0 +1,40 @@
+description: fix build error w/ clang 11
+author: Andres Salomon <dilinger@debian.org>
+
+The constexpr works fine w/ clang-13, but not with clang-11. The code
+still must be inlined (otherwise you get conflicting symbols), but
+the computations can't be computed at compile time under the older
+clang.
+
+--- a/third_party/blink/renderer/platform/wtf/math_extras.h
++++ b/third_party/blink/renderer/platform/wtf/math_extras.h
+@@ -127,11 +127,11 @@ constexpr float Grad2turn(float g) {
+   return g * (1.0f / 400.0f);
+ }
+ 
+-constexpr double RoundHalfTowardsPositiveInfinity(double value) {
++inline double RoundHalfTowardsPositiveInfinity(double value) {
+   return std::floor(value + 0.5);
+ }
+ 
+-constexpr float RoundHalfTowardsPositiveInfinity(float value) {
++inline float RoundHalfTowardsPositiveInfinity(float value) {
+   return std::floor(value + 0.5f);
+ }
+ 
+--- a/third_party/blink/renderer/platform/geometry/int_rect.h
++++ b/third_party/blink/renderer/platform/geometry/int_rect.h
+@@ -244,11 +244,11 @@ constexpr IntRect SaturatedRect(const In
+                  base::ClampAdd(r.y(), r.height()) - r.y());
+ }
+ 
+-constexpr bool operator==(const IntRect& a, const IntRect& b) {
++inline bool operator==(const IntRect& a, const IntRect& b) {
+   return a.origin() == b.origin() && a.size() == b.size();
+ }
+ 
+-constexpr bool operator!=(const IntRect& a, const IntRect& b) {
++inline bool operator!=(const IntRect& a, const IntRect& b) {
+   return !(a == b);
+ }
+ 
diff --git a/debian/patches/bullseye/clang11.patch b/debian/patches/bullseye/clang11.patch
new file mode 100644
index 0000000..2a3bca8
--- /dev/null
+++ b/debian/patches/bullseye/clang11.patch
@@ -0,0 +1,25 @@
+description: clang-11 doesn't support -ffile-compilation-dir or -fuse-ctor-homing
+author: Andres Salomon <dilinger@debian.org>
+
+Index: chromium-96.0.4664.110/build/config/compiler/BUILD.gn
+===================================================================
+--- chromium-96.0.4664.110.orig/build/config/compiler/BUILD.gn
++++ chromium-96.0.4664.110/build/config/compiler/BUILD.gn
+@@ -1259,7 +1259,8 @@ config("compiler_deterministic") {
+     } else {
+       # -ffile-compilation-dir is an alias for both -fdebug-compilation-dir=
+       # and -fcoverage-compilation-dir=.
+-      cflags += [ "-ffile-compilation-dir=." ]
++      #cflags += [ "-ffile-compilation-dir=." ]
++      cflags += [ "-fdebug-compilation-dir=." ]
+     }
+     if (false) {
+       # We don't use clang -cc1as on Windows (yet? https://crbug.com/762167)
+@@ -2337,7 +2337,6 @@ config("symbols") {
+       # by emitting class type info only when constructors are emitted.
+       cflags += [
+         "-Xclang",
+-        "-fuse-ctor-homing",
+       ]
+     }
+   }
diff --git a/debian/patches/bullseye/ffmpeg.patch b/debian/patches/bullseye/ffmpeg.patch
deleted file mode 100644
index abe04c2..0000000
--- a/debian/patches/bullseye/ffmpeg.patch
+++ /dev/null
@@ -1,396 +0,0 @@
---- b/media/cast/test/fake_media_source.cc
-+++ a/media/cast/test/fake_media_source.cc
-@@ -141,7 +141,7 @@
-       continue;
-     }
- 
-+    AVCodec* av_codec = avcodec_find_decoder(av_codec_context->codec_id);
--    const AVCodec* av_codec = avcodec_find_decoder(av_codec_context->codec_id);
- 
-     if (!av_codec) {
-       LOG(ERROR) << "Cannot find decoder for the codec: "
-@@ -432,7 +432,7 @@
- }
- 
- ScopedAVPacket FakeMediaSource::DemuxOnePacket(bool* audio) {
-+  ScopedAVPacket packet(new AVPacket());
--  ScopedAVPacket packet = MakeScopedAVPacket();
-   if (av_read_frame(av_format_context_, packet.get()) < 0) {
-     VLOG(1) << "Failed to read one AVPacket.";
-     packet.reset();
---- b/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
-+++ a/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
-@@ -168,7 +168,7 @@
-   if (codec_context_->sample_fmt == AV_SAMPLE_FMT_S16P)
-     codec_context_->request_sample_fmt = AV_SAMPLE_FMT_S16;
- 
-+  AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id);
--  const AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id);
-   if (!codec || avcodec_open2(codec_context_.get(), codec, NULL) < 0) {
-     DLOG(ERROR) << "Could not initialize audio decoder: "
-                 << codec_context_->codec_id;
-@@ -235,16 +235,15 @@
-   size_t total_size = 0u;
-   std::vector<std::unique_ptr<AVFrame, ScopedPtrAVFreeFrame>> audio_frames;
- 
-+  AVPacket packet;
-+  av_init_packet(&packet);
-+  packet.data = const_cast<uint8_t*>(compressed_buffer);
-+  packet.size = compressed_buffer_size;
--  AVPacket* packet = av_packet_alloc();
--  packet->data = const_cast<uint8_t*>(compressed_buffer);
--  packet->size = compressed_buffer_size;
- 
-+  switch (decoding_loop_->DecodePacket(
-+      &packet, base::BindRepeating(&FFmpegCdmAudioDecoder::OnNewFrame,
-+                                   base::Unretained(this), &total_size,
-+                                   &audio_frames))) {
--  FFmpegDecodingLoop::DecodeStatus decode_status = decoding_loop_->DecodePacket(
--      packet,
--      base::BindRepeating(&FFmpegCdmAudioDecoder::OnNewFrame,
--                          base::Unretained(this), &total_size, &audio_frames));
--  av_packet_free(&packet);
--  switch (decode_status) {
-     case FFmpegDecodingLoop::DecodeStatus::kSendPacketFailed:
-       return cdm::kDecodeError;
-     case FFmpegDecodingLoop::DecodeStatus::kFrameProcessingFailed:
---- b/media/ffmpeg/ffmpeg_common.h
-+++ a/media/ffmpeg/ffmpeg_common.h
-@@ -53,7 +53,8 @@
- 
- inline void ScopedPtrAVFreePacket::operator()(void* x) const {
-   AVPacket* packet = static_cast<AVPacket*>(x);
-+  av_packet_unref(packet);
-+  delete packet;
--  av_packet_free(&packet);
- }
- 
- inline void ScopedPtrAVFreeContext::operator()(void* x) const {
---- b/media/ffmpeg/ffmpeg_deleters.h
-+++ a/media/ffmpeg/ffmpeg_deleters.h
-@@ -18,9 +18,9 @@
-   void operator()(void* x) const;
- };
- 
-+// This assumes that the AVPacket being captured was allocated outside of
-+// FFmpeg via the new operator.  Do not use this with AVPacket instances that
-+// are allocated via malloc() or av_malloc().
--// This assumes that the ScopedAVPacket was created using MakeScopedAVPacket
--// from ffmpeg_demuxer.h. Do not use this with an AVPacket instance that was
--// allocated with new or manually av_malloc'd.
- struct ScopedPtrAVFreePacket {
-   void operator()(void* x) const;
- };
---- b/media/filters/android/video_frame_extractor.cc
-+++ a/media/filters/android/video_frame_extractor.cc
-@@ -119,7 +119,7 @@
- 
- ScopedAVPacket VideoFrameExtractor::ReadVideoFrame() {
-   AVFormatContext* format_context = glue_->format_context();
-+  ScopedAVPacket packet(new AVPacket());
--  ScopedAVPacket packet = MakeScopedAVPacket();
-   while (av_read_frame(format_context, packet.get()) >= 0) {
-     // Skip frames from streams other than video.
-     if (packet->stream_index != video_stream_index_)
---- b/media/filters/audio_decoder_unittest.cc
-+++ a/media/filters/audio_decoder_unittest.cc
-@@ -109,7 +109,7 @@
-   }
- 
-   // If the timestamp is positive, try to use FFmpeg's discard data.
-+  int skip_samples_size = 0;
--  size_t skip_samples_size = 0;
-   const uint32_t* skip_samples_ptr =
-       reinterpret_cast<const uint32_t*>(av_packet_get_side_data(
-           packet, AV_PKT_DATA_SKIP_SAMPLES, &skip_samples_size));
---- b/media/filters/audio_file_reader.cc
-+++ a/media/filters/audio_file_reader.cc
-@@ -86,7 +86,7 @@
- }
- 
- bool AudioFileReader::OpenDecoder() {
-+  AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id);
--  const AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id);
-   if (codec) {
-     // MP3 decodes to S16P which we don't support, tell it to use S16 instead.
-     if (codec_context_->sample_fmt == AV_SAMPLE_FMT_S16P)
---- b/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
-+++ a/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
-@@ -59,7 +59,7 @@
-     dummy_packet[i] = i & 0xFF; // Repeated sequences of 0-255
-   }
- 
-+  ScopedAVPacket test_packet(new AVPacket());
--  ScopedAVPacket test_packet = MakeScopedAVPacket();
-   CreatePacket(test_packet.get(), dummy_packet,
-                sizeof(dummy_packet));
- 
-@@ -91,7 +91,7 @@
-   EXPECT_FALSE(converter.ConvertPacket(NULL));
- 
-   // Create new packet to test actual conversion.
-+  ScopedAVPacket test_packet(new AVPacket());
--  ScopedAVPacket test_packet = MakeScopedAVPacket();
-   CreatePacket(test_packet.get(), dummy_packet, sizeof(dummy_packet));
- 
-   // Try out the actual conversion. This should fail due to missing extradata.
-@@ -103,7 +103,7 @@
- 
-   uint8_t dummy_packet[1000] = {0};
- 
-+  ScopedAVPacket test_packet(new AVPacket());
--  ScopedAVPacket test_packet = MakeScopedAVPacket();
-   CreatePacket(test_packet.get(), dummy_packet,
-                sizeof(dummy_packet));
- 
-@@ -142,7 +142,7 @@
- 
-   uint8_t dummy_packet[1000];
- 
-+  ScopedAVPacket test_packet(new AVPacket());
--  ScopedAVPacket test_packet = MakeScopedAVPacket();
-   CreatePacket(test_packet.get(), dummy_packet,
-                sizeof(dummy_packet));
- 
-@@ -158,7 +158,7 @@
-   EXPECT_EQ(frame_length, test_packet->size);
- 
-   // Create a second packet that is 1 byte smaller than the first one
-+  ScopedAVPacket second_test_packet(new AVPacket());
--  ScopedAVPacket second_test_packet = MakeScopedAVPacket();
-   CreatePacket(second_test_packet.get(), dummy_packet,
-                sizeof(dummy_packet) - 1);
- 
---- b/media/filters/ffmpeg_audio_decoder.cc
-+++ a/media/filters/ffmpeg_audio_decoder.cc
-@@ -167,27 +167,26 @@
- }
- 
- bool FFmpegAudioDecoder::FFmpegDecode(const DecoderBuffer& buffer) {
-+  AVPacket packet;
-+  av_init_packet(&packet);
--  AVPacket* packet = av_packet_alloc();
-   if (buffer.end_of_stream()) {
-+    packet.data = NULL;
-+    packet.size = 0;
--    packet->data = NULL;
--    packet->size = 0;
-   } else {
-+    packet.data = const_cast<uint8_t*>(buffer.data());
-+    packet.size = buffer.data_size();
--    packet->data = const_cast<uint8_t*>(buffer.data());
--    packet->size = buffer.data_size();
- 
-+    DCHECK(packet.data);
-+    DCHECK_GT(packet.size, 0);
--    DCHECK(packet->data);
--    DCHECK_GT(packet->size, 0);
-   }
- 
-   bool decoded_frame_this_loop = false;
-   // base::Unretained and std::cref are safe to use with the callback given
-   // to DecodePacket() since that callback is only used the function call.
-+  switch (decoding_loop_->DecodePacket(
-+      &packet, base::BindRepeating(&FFmpegAudioDecoder::OnNewFrame,
-+                                   base::Unretained(this), std::cref(buffer),
-+                                   &decoded_frame_this_loop))) {
--  FFmpegDecodingLoop::DecodeStatus decode_status = decoding_loop_->DecodePacket(
--      packet, base::BindRepeating(&FFmpegAudioDecoder::OnNewFrame,
--                                  base::Unretained(this), std::cref(buffer),
--                                  &decoded_frame_this_loop));
--  av_packet_free(&packet);
--  switch (decode_status) {
-     case FFmpegDecodingLoop::DecodeStatus::kSendPacketFailed:
-       MEDIA_LOG(ERROR, media_log_)
-           << "Failed to send audio packet for decoding: "
-@@ -331,7 +330,7 @@
-     }
-   }
- 
-+  AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id);
--  const AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id);
-   if (!codec ||
-       avcodec_open2(codec_context_.get(), codec, &codec_options) < 0) {
-     DLOG(ERROR) << "Could not initialize audio decoder: "
---- b/media/filters/ffmpeg_demuxer.cc
-+++ a/media/filters/ffmpeg_demuxer.cc
-@@ -50,7 +50,6 @@
- #include "media/formats/webm/webm_crypto_helpers.h"
- #include "media/media_buildflags.h"
- #include "third_party/ffmpeg/ffmpeg_features.h"
--#include "third_party/ffmpeg/libavcodec/packet.h"
- 
- #if BUILDFLAG(ENABLE_PLATFORM_HEVC)
- #include "media/filters/ffmpeg_h265_to_annex_b_bitstream_converter.h"
-@@ -67,11 +66,6 @@
- 
- }  // namespace
- 
--ScopedAVPacket MakeScopedAVPacket() {
--  ScopedAVPacket packet(av_packet_alloc());
--  return packet;
--}
--
- static base::Time ExtractTimelineOffset(
-     container_names::MediaContainerName container,
-     const AVFormatContext* format_context) {
-@@ -427,11 +421,11 @@
-   scoped_refptr<DecoderBuffer> buffer;
- 
-   if (type() == DemuxerStream::TEXT) {
-+    int id_size = 0;
--    size_t id_size = 0;
-     uint8_t* id_data = av_packet_get_side_data(
-         packet.get(), AV_PKT_DATA_WEBVTT_IDENTIFIER, &id_size);
- 
-+    int settings_size = 0;
--    size_t settings_size = 0;
-     uint8_t* settings_data = av_packet_get_side_data(
-         packet.get(), AV_PKT_DATA_WEBVTT_SETTINGS, &settings_size);
- 
-@@ -443,7 +437,7 @@
-     buffer = DecoderBuffer::CopyFrom(packet->data, packet->size,
-                                      side_data.data(), side_data.size());
-   } else {
-+    int side_data_size = 0;
--    size_t side_data_size = 0;
-     uint8_t* side_data = av_packet_get_side_data(
-         packet.get(), AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, &side_data_size);
- 
-@@ -504,7 +498,7 @@
-                                        packet->size - data_offset);
-     }
- 
-+    int skip_samples_size = 0;
--    size_t skip_samples_size = 0;
-     const uint32_t* skip_samples_ptr =
-         reinterpret_cast<const uint32_t*>(av_packet_get_side_data(
-             packet.get(), AV_PKT_DATA_SKIP_SAMPLES, &skip_samples_size));
-@@ -1794,9 +1788,9 @@
-   }
- 
-   // Allocate and read an AVPacket from the media. Save |packet_ptr| since
-+  // evaluation order of packet.get() and base::Passed(&packet) is
--  // evaluation order of packet.get() and std::move(&packet) is
-   // undefined.
-+  ScopedAVPacket packet(new AVPacket());
--  ScopedAVPacket packet = MakeScopedAVPacket();
-   AVPacket* packet_ptr = packet.get();
- 
-   pending_read_ = true;
---- b/media/filters/ffmpeg_demuxer.h
-+++ a/media/filters/ffmpeg_demuxer.h
-@@ -62,10 +62,6 @@
- 
- typedef std::unique_ptr<AVPacket, ScopedPtrAVFreePacket> ScopedAVPacket;
- 
--// Use av_packet_alloc() to create a packet, which is scoped to delete with
--// av_packet_free at the end of it's lifetime.
--MEDIA_EXPORT ScopedAVPacket MakeScopedAVPacket();
--
- class MEDIA_EXPORT FFmpegDemuxerStream : public DemuxerStream {
-  public:
-   // Attempts to create FFmpegDemuxerStream form the given AVStream. Will return
---- b/media/filters/ffmpeg_glue.cc
-+++ a/media/filters/ffmpeg_glue.cc
-@@ -89,6 +89,9 @@
-   // Enable fast, but inaccurate seeks for MP3.
-   format_context_->flags |= AVFMT_FLAG_FAST_SEEK;
- 
-+  // Ensures we can read out various metadata bits like vp8 alpha.
-+  format_context_->flags |= AVFMT_FLAG_KEEP_SIDE_DATA;
-+
-   // Ensures format parsing errors will bail out. From an audit on 11/2017, all
-   // instances were real failures. Solves bugs like http://crbug.com/710791.
-   format_context_->error_recognition |= AV_EF_EXPLODE;
---- b/media/filters/ffmpeg_h264_to_annex_b_bitstream_converter_unittest.cc
-+++ a/media/filters/ffmpeg_h264_to_annex_b_bitstream_converter_unittest.cc
-@@ -304,7 +304,7 @@
- TEST_F(FFmpegH264ToAnnexBBitstreamConverterTest, Conversion_Success) {
-   FFmpegH264ToAnnexBBitstreamConverter converter(&test_parameters_);
- 
-+  ScopedAVPacket test_packet(new AVPacket());
--  ScopedAVPacket test_packet = MakeScopedAVPacket();
-   CreatePacket(test_packet.get(), kPacketDataOkWithFieldLen4,
-                sizeof(kPacketDataOkWithFieldLen4));
- 
-@@ -319,7 +319,7 @@
-   FFmpegH264ToAnnexBBitstreamConverter converter(&test_parameters_);
- 
-   // Create new packet with 1000 excess bytes.
-+  ScopedAVPacket test_packet(new AVPacket());
--  ScopedAVPacket test_packet = MakeScopedAVPacket();
-   static uint8_t excess_data[sizeof(kPacketDataOkWithFieldLen4) + 1000] = {0};
-   memcpy(excess_data, kPacketDataOkWithFieldLen4,
-          sizeof(kPacketDataOkWithFieldLen4));
-@@ -343,7 +343,7 @@
-   EXPECT_FALSE(converter.ConvertPacket(nullptr));
- 
-   // Create new packet to test actual conversion.
-+  ScopedAVPacket test_packet(new AVPacket());
--  ScopedAVPacket test_packet = MakeScopedAVPacket();
-   CreatePacket(test_packet.get(), kPacketDataOkWithFieldLen4,
-                sizeof(kPacketDataOkWithFieldLen4));
- 
---- b/media/filters/ffmpeg_video_decoder.cc
-+++ a/media/filters/ffmpeg_video_decoder.cc
-@@ -339,27 +339,25 @@
- bool FFmpegVideoDecoder::FFmpegDecode(const DecoderBuffer& buffer) {
-   // Create a packet for input data.
-   // Due to FFmpeg API changes we no longer have const read-only pointers.
-+  AVPacket packet;
-+  av_init_packet(&packet);
--  // av_init_packet is deprecated and being removed, and ffmpeg clearly does
--  // not want to allow on-stack allocation of AVPackets.
--  AVPacket* packet = av_packet_alloc();
-   if (buffer.end_of_stream()) {
-+    packet.data = NULL;
-+    packet.size = 0;
--    packet->data = NULL;
--    packet->size = 0;
-   } else {
-+    packet.data = const_cast<uint8_t*>(buffer.data());
-+    packet.size = buffer.data_size();
--    packet->data = const_cast<uint8_t*>(buffer.data());
--    packet->size = buffer.data_size();
- 
-+    DCHECK(packet.data);
-+    DCHECK_GT(packet.size, 0);
--    DCHECK(packet->data);
--    DCHECK_GT(packet->size, 0);
- 
-     // Let FFmpeg handle presentation timestamp reordering.
-     codec_context_->reordered_opaque = buffer.timestamp().InMicroseconds();
-   }
-+
-+  switch (decoding_loop_->DecodePacket(
-+      &packet, base::BindRepeating(&FFmpegVideoDecoder::OnNewFrame,
-+                                   base::Unretained(this)))) {
--  FFmpegDecodingLoop::DecodeStatus decode_status = decoding_loop_->DecodePacket(
--      packet, base::BindRepeating(&FFmpegVideoDecoder::OnNewFrame,
--                                  base::Unretained(this)));
--  av_packet_free(&packet);
--  switch (decode_status) {
-     case FFmpegDecodingLoop::DecodeStatus::kSendPacketFailed:
-       MEDIA_LOG(ERROR, media_log_)
-           << "Failed to send video packet for decoding: "
-@@ -426,7 +424,7 @@
-   if (decode_nalus_)
-     codec_context_->flags2 |= AV_CODEC_FLAG2_CHUNKS;
- 
-+  AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id);
--  const AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id);
-   if (!codec || avcodec_open2(codec_context_.get(), codec, NULL) < 0) {
-     ReleaseFFmpegResources();
-     return false;
---- b/media/filters/media_file_checker.cc
-+++ a/media/filters/media_file_checker.cc
-@@ -68,7 +68,7 @@
-       auto context = AVStreamToAVCodecContext(format_context->streams[i]);
-       if (!context)
-         continue;
-+      AVCodec* codec = avcodec_find_decoder(cp->codec_id);
--      const AVCodec* codec = avcodec_find_decoder(cp->codec_id);
-       if (codec && avcodec_open2(context.get(), codec, nullptr) >= 0) {
-         auto loop = std::make_unique<FFmpegDecodingLoop>(context.get());
-         stream_contexts[i] = {std::move(context), std::move(loop)};
diff --git a/debian/patches/bullseye/icu-types.patch b/debian/patches/bullseye/icu-types.patch
index 5ff7bea..c952851 100644
--- a/debian/patches/bullseye/icu-types.patch
+++ b/debian/patches/bullseye/icu-types.patch
@@ -11,7 +11,7 @@
  class BreakIterator;
 --- a/v8/src/objects/intl-objects.cc
 +++ b/v8/src/objects/intl-objects.cc
-@@ -2050,12 +2050,10 @@ bool ICUTimezoneCache::GetOffsets(double time_ms, bool is_utc,
+@@ -2551,12 +2551,10 @@ bool ICUTimezoneCache::GetOffsets(double
    if (is_utc) {
      GetTimeZone()->getOffset(time_ms, false, *raw_offset, *dst_offset, status);
    } else {
@@ -27,9 +27,9 @@
    }
  
    return U_SUCCESS(status);
---- b/base/BUILD.gn
-+++ a/base/BUILD.gn
-@@ -2541,6 +2541,7 @@
+--- a/base/BUILD.gn
++++ b/base/BUILD.gn
+@@ -2625,6 +2625,7 @@ component("i18n") {
      "i18n/time_formatting.h",
      "i18n/timezone.cc",
      "i18n/timezone.h",
@@ -37,51 +37,51 @@
      "i18n/unicodestring.h",
      "i18n/utf8_validator_tables.cc",
      "i18n/utf8_validator_tables.h",
---- b/base/i18n/break_iterator.cc
-+++ a/base/i18n/break_iterator.cc
-@@ -7,6 +7,7 @@
- #include <stdint.h>
+--- a/base/i18n/break_iterator.cc
++++ b/base/i18n/break_iterator.cc
+@@ -8,6 +8,7 @@
+ #include <ostream>
  
  #include "base/check.h"
 +#include "base/i18n/uchar.h"
  #include "base/lazy_instance.h"
  #include "base/notreached.h"
  #include "base/synchronization/lock.h"
-@@ -164,9 +165,9 @@
+@@ -166,9 +167,9 @@ bool BreakIterator::Init() {
        iter_ = line_break_cache.Pointer()->Lease(status);
        break;
      case RULE_BASED:
-+      iter_ = ubrk_openRules(ToUCharPtr(rules_.c_str()),
-+                             static_cast<int32_t>(rules_.length()), nullptr, 0,
-+                             &parse_error, &status);
 -      iter_ =
 -          ubrk_openRules(rules_.c_str(), static_cast<int32_t>(rules_.length()),
 -                         nullptr, 0, &parse_error, &status);
++      iter_ = ubrk_openRules(ToUCharPtr(rules_.c_str()),
++                             static_cast<int32_t>(rules_.length()), nullptr, 0,
++                             &parse_error, &status);
        if (U_FAILURE(status)) {
          NOTREACHED() << "ubrk_openRules failed to parse rule string at line "
                       << parse_error.line << ", offset " << parse_error.offset;
-@@ -182,7 +183,8 @@
+@@ -184,7 +185,8 @@ bool BreakIterator::Init() {
    }
  
    if (string_.data() != nullptr) {
+-    ubrk_setText(static_cast<UBreakIterator*>(iter_), string_.data(),
 +    ubrk_setText(static_cast<UBreakIterator*>(iter_),
 +                 ToUCharPtr(string_.data()),
--    ubrk_setText(static_cast<UBreakIterator*>(iter_), string_.data(),
                   static_cast<int32_t>(string_.size()), &status);
      if (U_FAILURE(status)) {
        return false;
-@@ -232,7 +234,8 @@
+@@ -234,7 +236,8 @@ bool BreakIterator::Advance() {
  
  bool BreakIterator::SetText(const char16_t* text, const size_t length) {
    UErrorCode status = U_ZERO_ERROR;
+-  ubrk_setText(static_cast<UBreakIterator*>(iter_), text, length, &status);
 +  ubrk_setText(static_cast<UBreakIterator*>(iter_), ToUCharPtr(text), length,
 +               &status);
--  ubrk_setText(static_cast<UBreakIterator*>(iter_), text, length, &status);
    pos_ = 0;  // implicit when ubrk_setText is done
    prev_ = npos;
    if (U_FAILURE(status)) {
---- b/base/i18n/case_conversion.cc
-+++ a/base/i18n/case_conversion.cc
+--- a/base/i18n/case_conversion.cc
++++ b/base/i18n/case_conversion.cc
 @@ -8,6 +8,7 @@
  
  #include <string>
@@ -90,23 +90,23 @@
  #include "base/numerics/safe_conversions.h"
  #include "base/strings/string_util.h"
  #include "third_party/icu/source/common/unicode/uchar.h"
-@@ -63,9 +64,10 @@
+@@ -65,9 +66,10 @@ std::u16string CaseMap(StringPiece16 str
      // ICU won't terminate the string if there's not enough room for the null
      // terminator, but will otherwise. So we don't need to save room for that.
      // Don't use WriteInto, which assumes null terminators.
+-    int32_t new_length = case_mapper(
+-        &dest[0], saturated_cast<int32_t>(dest.size()), string.data(),
+-        saturated_cast<int32_t>(string.size()), &error);
 +    int32_t new_length =
 +        case_mapper(ToUCharPtr(&dest[0]), saturated_cast<int32_t>(dest.size()),
 +                    ToUCharPtr(string.data()),
 +                    saturated_cast<int32_t>(string.size()), &error);
--    int32_t new_length = case_mapper(
--        &dest[0], saturated_cast<int32_t>(dest.size()), string.data(),
--        saturated_cast<int32_t>(string.size()), &error);
      dest.resize(new_length);
    } while (error == U_BUFFER_OVERFLOW_ERROR);
    return dest;
---- b/base/i18n/file_util_icu_unittest.cc
-+++ a/base/i18n/file_util_icu_unittest.cc
-@@ -54,55 +54,55 @@ TEST_F(FileUtilICUTest, ReplaceIllegalCharactersInPathLinuxTest) {
+--- a/base/i18n/file_util_icu_unittest.cc
++++ b/base/i18n/file_util_icu_unittest.cc
+@@ -53,55 +53,55 @@ TEST_F(FileUtilICUTest, ReplaceIllegalCh
  // unicode characters. For Mac they should be converted to UTF-8, for Windows to
  // wide.
  static const struct FileUtilICUTestCases {
@@ -196,43 +196,43 @@
  #endif
    }
  }
---- b/base/i18n/icu_string_conversions.cc
-+++ a/base/i18n/icu_string_conversions.cc
-@@ -11,6 +11,7 @@
- #include <vector>
+--- a/base/i18n/icu_string_conversions.cc
++++ b/base/i18n/icu_string_conversions.cc
+@@ -10,6 +10,7 @@
+ #include <memory>
  
  #include "base/check.h"
 +#include "base/i18n/uchar.h"
  #include "base/notreached.h"
  #include "base/strings/string_util.h"
  #include "base/strings/utf_string_conversions.h"
-@@ -108,8 +109,8 @@
+@@ -107,8 +108,8 @@ bool ConvertFromUTF16(UConverter* conver
  
    // ucnv_fromUChars returns size not including terminating null
    int actual_size =
-+      ucnv_fromUChars(converter, &(*encoded)[0], encoded_max_length,
-+                      i18n::ToUCharPtr(src.data()), src.length(), &status);
 -      ucnv_fromUChars(converter, &(*encoded)[0], encoded_max_length, src.data(),
 -                      src.length(), &status);
++      ucnv_fromUChars(converter, &(*encoded)[0], encoded_max_length,
++                      i18n::ToUCharPtr(src.data()), src.length(), &status);
    encoded->resize(actual_size);
    ucnv_close(converter);
    if (U_SUCCESS(status))
-@@ -180,9 +181,10 @@
+@@ -179,9 +180,10 @@ bool CodepageToUTF16(base::StringPiece e
  
    SetUpErrorHandlerForToUChars(on_error, converter, &status);
    std::unique_ptr<char16_t[]> buffer(new char16_t[uchar_max_length]);
+-  int actual_size = ucnv_toUChars(
+-      converter, buffer.get(), static_cast<int>(uchar_max_length),
+-      encoded.data(), static_cast<int>(encoded.length()), &status);
 +  int actual_size =
 +      ucnv_toUChars(converter, i18n::ToUCharPtr(buffer.get()),
 +                    static_cast<int>(uchar_max_length), encoded.data(),
 +                    static_cast<int>(encoded.length()), &status);
--  int actual_size = ucnv_toUChars(
--      converter, buffer.get(), static_cast<int>(uchar_max_length),
--      encoded.data(), static_cast<int>(encoded.length()), &status);
    ucnv_close(converter);
    if (!U_SUCCESS(status)) {
      utf16->clear();  // Make sure the output is empty on error.
---- b/base/i18n/string_search.cc
-+++ a/base/i18n/string_search.cc
+--- a/base/i18n/string_search.cc
++++ b/base/i18n/string_search.cc
 @@ -5,6 +5,7 @@
  #include <stdint.h>
  
@@ -241,7 +241,7 @@
  
  #include "base/check.h"
  #include "base/check_op.h"
-@@ -20,7 +21,7 @@ FixedPatternStringSearch::FixedPatternStringSearch(
+@@ -22,7 +23,7 @@ FixedPatternStringSearch::FixedPatternSt
    const std::u16string& dummy = find_this_;
  
    UErrorCode status = U_ZERO_ERROR;
@@ -250,12 +250,12 @@
                           dummy.size(), uloc_getDefault(),
                           nullptr,  // breakiter
                           &status);
-@@ -48,7 +50,7 @@
+@@ -51,7 +52,7 @@ bool FixedPatternStringSearch::Search(co
                                        size_t* match_length,
                                        bool forward_search) {
    UErrorCode status = U_ZERO_ERROR;
-+  usearch_setText(search_, ToUCharPtr(in_this.data()), in_this.size(), &status);
 -  usearch_setText(search_, in_this.data(), in_this.size(), &status);
++  usearch_setText(search_, ToUCharPtr(in_this.data()), in_this.size(), &status);
  
    // Default to basic substring search if usearch fails. According to
    // http://icu-project.org/apiref/icu4c/usearch_8h.html, usearch_open will fail
@@ -312,7 +312,7 @@
 +
 +#endif  // BASE_STRINGS_STRING16_H_
 --- /dev/null
-+++ a/base/i18n/uchar.h
++++ b/base/i18n/uchar.h
 @@ -0,0 +1,43 @@
 +// Copyright 2021 The Chromium Authors. All rights reserved.
 +// Use of this source code is governed by a BSD-style license that can be
@@ -357,8 +357,8 @@
 +}  // namespace base
 +
 +#endif  // BASE_I18N_UCHAR_H_
---- b/base/i18n/unicodestring.h
-+++ a/base/i18n/unicodestring.h
+--- a/base/i18n/unicodestring.h
++++ b/base/i18n/unicodestring.h
 @@ -7,6 +7,7 @@
  
  #include <string>
@@ -376,27 +376,27 @@
                          static_cast<size_t>(unistr.length()));
  #else
    return std::u16string(unistr.getBuffer(),
---- b/base/logging.cc
-+++ a/base/logging.cc
-@@ -1140,9 +1140,14 @@
+--- a/base/logging.cc
++++ b/base/logging.cc
+@@ -1156,9 +1156,14 @@ std::ostream& std::operator<<(std::ostre
  }
  
  std::ostream& std::operator<<(std::ostream& out, const char16_t* str16) {
+-  return out << (str16 ? base::StringPiece16(str16) : base::StringPiece16());
 +  // TODO(crbug.com/911896): Drop cast once char16_t is char16_t everywhere.
 +  return out << (str16 ? base::StringPiece16(
 +                             reinterpret_cast<const char16_t*>(str16))
 +                       : base::StringPiece16());
--  return out << (str16 ? base::StringPiece16(str16) : base::StringPiece16());
  }
  
  std::ostream& std::operator<<(std::ostream& out, const std::u16string& str16) {
+-  return out << base::StringPiece16(str16);
 +  // TODO(crbug.com/911896): Drop cast once char16_t is char16_t everywhere.
 +  return out << base::StringPiece16(
 +             reinterpret_cast<const char16_t*>(str16.data()), str16.size());
--  return out << base::StringPiece16(str16);
  }
---- b/chrome/browser/ui/commander/fuzzy_finder.cc
-+++ a/chrome/browser/ui/commander/fuzzy_finder.cc
+--- a/chrome/browser/ui/commander/fuzzy_finder.cc
++++ b/chrome/browser/ui/commander/fuzzy_finder.cc
 @@ -6,6 +6,7 @@
  
  #include "base/i18n/case_conversion.h"
@@ -405,7 +405,7 @@
  #include "base/ranges/algorithm.h"
  #include "base/strings/string_util.h"
  #include "third_party/icu/source/common/unicode/uchar.h"
-@@ -75,7 +75,7 @@ double ScoreForMatches(const std::vector<MatchRecord>& matches,
+@@ -75,7 +76,7 @@ double ScoreForMatches(const std::vector
  }
  
  size_t LengthInCodePoints(const std::u16string& str) {
@@ -414,8 +414,8 @@
  }
  
  // Returns a positive score if every code point in |needle| is present in
---- b/components/url_formatter/spoof_checks/idn_spoof_checker.cc
-+++ a/components/url_formatter/spoof_checks/idn_spoof_checker.cc
+--- a/components/url_formatter/spoof_checks/idn_spoof_checker.cc
++++ b/components/url_formatter/spoof_checks/idn_spoof_checker.cc
 @@ -5,6 +5,7 @@
  #include "components/url_formatter/spoof_checks/idn_spoof_checker.h"
  
@@ -424,17 +424,17 @@
  #include "base/containers/contains.h"
  #include "base/logging.h"
  #include "base/no_destructor.h"
-@@ -357,7 +358,7 @@
+@@ -358,7 +359,7 @@ IDNSpoofChecker::Result IDNSpoofChecker:
      base::StringPiece16 top_level_domain_unicode) {
    UErrorCode status = U_ZERO_ERROR;
    int32_t result =
-+      uspoof_check(checker_, base::i18n::ToUCharPtr(label.data()),
 -      uspoof_check(checker_, label.data(),
++      uspoof_check(checker_, base::i18n::ToUCharPtr(label.data()),
                     base::checked_cast<int32_t>(label.size()), nullptr, &status);
    // If uspoof_check fails (due to library failure), or if any of the checks
    // fail, treat the IDN as unsafe.
---- b/components/url_formatter/url_formatter.cc
-+++ a/components/url_formatter/url_formatter.cc
+--- a/components/url_formatter/url_formatter.cc
++++ b/components/url_formatter/url_formatter.cc
 @@ -8,6 +8,7 @@
  #include <utility>
  #include <vector>
@@ -443,7 +443,7 @@
  #include "base/lazy_instance.h"
  #include "base/numerics/safe_conversions.h"
  #include "base/strings/strcat.h"
-@@ -432,8 +432,8 @@ ComponentResult IDNToUnicodeOneComponent(
+@@ -430,8 +431,8 @@ ComponentResult IDNToUnicodeOneComponent
      // code units, |status| will be U_BUFFER_OVERFLOW_ERROR and we'll try
      // the conversion again, but with a sufficiently large buffer.
      output_length = uidna_labelToUnicode(
@@ -454,8 +454,8 @@
    } while ((status == U_BUFFER_OVERFLOW_ERROR && info.errors == 0));
  
    if (U_SUCCESS(status) && info.errors == 0) {
---- b/content/child/browser_font_resource_trusted.cc
-+++ a/content/child/browser_font_resource_trusted.cc
+--- a/content/child/browser_font_resource_trusted.cc
++++ b/content/child/browser_font_resource_trusted.cc
 @@ -6,6 +6,7 @@
  
  #include <stddef.h>
@@ -464,29 +464,19 @@
  #include "base/macros.h"
  #include "base/strings/string_util.h"
  #include "base/strings/utf_string_conversions.h"
-@@ -70,8 +71,8 @@
+@@ -70,8 +71,8 @@ class TextRunCollection {
      } else {
        bidi_ = ubidi_open();
        UErrorCode uerror = U_ZERO_ERROR;
-+      ubidi_setPara(bidi_, base::i18n::ToUCharPtr(text_.data()), text_.size(),
-+                    run.rtl, nullptr, &uerror);
 -      ubidi_setPara(bidi_, text_.data(), text_.size(), run.rtl, nullptr,
 -                    &uerror);
++      ubidi_setPara(bidi_, base::i18n::ToUCharPtr(text_.data()), text_.size(),
++                    run.rtl, nullptr, &uerror);
        if (U_SUCCESS(uerror))
          num_runs_ = ubidi_countRuns(bidi_, &uerror);
      }
---- b/third_party/blink/renderer/core/DEPS
-+++ a/third_party/blink/renderer/core/DEPS
-@@ -4,6 +4,7 @@
-     "+base/bits.h",
-     "+base/cancelable_callback.h",
-     "+base/files/file.h",
-+    "+base/i18n/uchar.h",
-     "+base/mac/foundation_util.h",
-     "+base/mac/mac_util.h",
-     "+base/mac/scoped_cftyperef.h",
---- b/third_party/blink/renderer/core/clipboard/clipboard_utilities.cc
-+++ a/third_party/blink/renderer/core/clipboard/clipboard_utilities.cc
+--- a/third_party/blink/renderer/core/clipboard/clipboard_utilities.cc
++++ b/third_party/blink/renderer/core/clipboard/clipboard_utilities.cc
 @@ -30,6 +30,7 @@
  
  #include "third_party/blink/renderer/core/clipboard/clipboard_utilities.h"
@@ -495,20 +485,20 @@
  #include "mojo/public/cpp/base/big_buffer.h"
  #include "net/base/escape.h"
  #include "third_party/blink/renderer/platform/image-encoders/image_encoder.h"
-@@ -75,8 +76,9 @@
+@@ -76,8 +77,9 @@ static String EscapeForHTML(const String
          {reinterpret_cast<const char*>(str.Characters8()), str.length()});
      return String(result.data(), result.size());
    }
+-  auto result = net::EscapeForHTML({str.Characters16(), str.length()});
+-  return String(result.data(), result.size());
 +  auto result = net::EscapeForHTML(
 +      {base::i18n::ToChar16Ptr(str.Characters16()), str.length()});
 +  return String(base::i18n::ToUCharPtr(result.data()), result.size());
--  auto result = net::EscapeForHTML({str.Characters16(), str.length()});
--  return String(result.data(), result.size());
  }
  
  String URLToImageMarkup(const KURL& url, const String& title) {
---- b/third_party/blink/renderer/core/editing/editor_key_bindings.cc
-+++ a/third_party/blink/renderer/core/editing/editor_key_bindings.cc
+--- a/third_party/blink/renderer/core/editing/editor_key_bindings.cc
++++ b/third_party/blink/renderer/core/editing/editor_key_bindings.cc
 @@ -26,6 +26,7 @@
  
  #include "third_party/blink/renderer/core/editing/editor.h"
@@ -517,43 +507,43 @@
  #include "third_party/blink/public/common/input/web_input_event.h"
  #include "third_party/blink/renderer/core/editing/commands/editor_command.h"
  #include "third_party/blink/renderer/core/editing/editing_behavior.h"
-@@ -89,11 +90,12 @@
+@@ -93,11 +94,12 @@ bool Editor::HandleEditingKeyboardEvent(
      return false;
  
    // Return true to prevent default action. e.g. Space key scroll.
+-  if (DispatchBeforeInputInsertText(evt->target()->ToNode(), key_event->text) !=
 +  if (DispatchBeforeInputInsertText(evt->target()->ToNode(),
 +                                    base::i18n::ToUCharPtr(key_event->text)) !=
--  if (DispatchBeforeInputInsertText(evt->target()->ToNode(), key_event->text) !=
        DispatchEventResult::kNotCanceled)
      return true;
  
-+  return InsertText(base::i18n::ToUCharPtr(key_event->text), evt);
 -  return InsertText(key_event->text, evt);
++  return InsertText(base::i18n::ToUCharPtr(key_event->text), evt);
  }
  
  void Editor::HandleKeyboardEvent(KeyboardEvent* evt) {
---- b/third_party/blink/renderer/core/input/keyboard_event_manager.cc
-+++ a/third_party/blink/renderer/core/input/keyboard_event_manager.cc
-@@ -6,6 +6,7 @@
- 
+--- a/third_party/blink/renderer/core/input/keyboard_event_manager.cc
++++ b/third_party/blink/renderer/core/input/keyboard_event_manager.cc
+@@ -7,6 +7,7 @@
  #include <memory>
  
+ #include "base/auto_reset.h"
 +#include "base/i18n/uchar.h"
  #include "build/build_config.h"
  #include "third_party/blink/public/common/input/web_input_event.h"
  #include "third_party/blink/public/mojom/input/focus_type.mojom-blink.h"
-@@ -163,7 +164,7 @@
+@@ -166,7 +167,7 @@ bool KeyboardEventManager::HandleAccessK
    if ((evt.GetModifiers() & (WebKeyboardEvent::kKeyModifiers &
                               ~WebInputEvent::kShiftKey)) != kAccessKeyModifiers)
      return false;
-+  String key = String(base::i18n::ToUCharPtr(evt.unmodified_text));
 -  String key = String(evt.unmodified_text);
++  String key = String(base::i18n::ToUCharPtr(evt.unmodified_text));
    Element* elem =
        frame_->GetDocument()->GetElementByAccessKey(key.DeprecatedLower());
    if (!elem)
---- b/third_party/blink/renderer/modules/gamepad/DEPS
-+++ a/third_party/blink/renderer/modules/gamepad/DEPS
-@@ -14,6 +14,7 @@
+--- a/third_party/blink/renderer/modules/gamepad/DEPS
++++ b/third_party/blink/renderer/modules/gamepad/DEPS
+@@ -14,6 +14,7 @@ include_rules = [
      "+third_party/blink/renderer/modules/event_modules.h",
      "+third_party/blink/renderer/modules/gamepad",
      "+third_party/blink/renderer/modules/modules_export.h",
@@ -561,8 +551,8 @@
      "+base/macros.h",
  
      # For shared metrics.
---- b/third_party/blink/renderer/modules/gamepad/gamepad.cc
-+++ a/third_party/blink/renderer/modules/gamepad/gamepad.cc
+--- a/third_party/blink/renderer/modules/gamepad/gamepad.cc
++++ b/third_party/blink/renderer/modules/gamepad/gamepad.cc
 @@ -25,6 +25,7 @@
  
  #include "third_party/blink/renderer/modules/gamepad/gamepad.h"
@@ -571,7 +561,7 @@
  #include "base/trace_event/trace_event.h"
  #include "third_party/blink/renderer/core/timing/performance.h"
  #include "third_party/blink/renderer/modules/gamepad/gamepad_comparisons.h"
-@@ -60,7 +60,7 @@ void Gamepad::UpdateFromDeviceState(const device::Gamepad& device_gamepad,
+@@ -60,7 +61,7 @@ void Gamepad::UpdateFromDeviceState(cons
    GamepadComparisons::HasGamepadConnectionChanged(
        connected(),                            // Old connected.
        device_gamepad.connected,               // New connected.
@@ -580,17 +570,17 @@
        &newly_connected, nullptr);
  
    SetConnected(device_gamepad.connected);
-@@ -74,7 +76,7 @@
+@@ -75,7 +76,7 @@ void Gamepad::UpdateFromDeviceState(cons
    // These fields are not expected to change and will only be written when the
    // gamepad is newly connected.
    if (newly_connected) {
-+    SetId(base::i18n::ToUCharPtr(device_gamepad.id));
 -    SetId(device_gamepad.id);
++    SetId(base::i18n::ToUCharPtr(device_gamepad.id));
      SetMapping(device_gamepad.mapping);
    }
  }
---- b/third_party/blink/renderer/modules/url_pattern/DEPS
-+++ a/third_party/blink/renderer/modules/url_pattern/DEPS
+--- a/third_party/blink/renderer/modules/url_pattern/DEPS
++++ b/third_party/blink/renderer/modules/url_pattern/DEPS
 @@ -3,6 +3,7 @@
  # found in the LICENSE file.
  
@@ -610,7 +600,7 @@
  #include "third_party/blink/renderer/modules/url_pattern/url_pattern_canon.h"
  
  #include "third_party/blink/renderer/modules/url_pattern/url_pattern_component.h"
-@@ -223,7 +225,7 @@ String CanonicalizeProtocol(const String& input,
+@@ -276,7 +278,7 @@ String CanonicalizeProtocol(const String
      result = url::CanonicalizeScheme(
          utf8.data(), url::Component(0, utf8.size()), &canon_output, &component);
    } else {
@@ -619,7 +609,7 @@
                                       url::Component(0, stripped.length()),
                                       &canon_output, &component);
    }
-@@ -269,9 +271,11 @@ void CanonicalizeUsernameAndPassword(const String& username,
+@@ -322,9 +324,11 @@ void CanonicalizeUsernameAndPassword(con
      username16.Ensure16Bit();
      password16.Ensure16Bit();
      result = url::CanonicalizeUserInfo(
@@ -634,7 +624,7 @@
    }
  
    if (!result) {
-@@ -424,7 +428,7 @@ String CanonicalizeSearch(const String& input,
+@@ -477,7 +481,7 @@ String CanonicalizeSearch(const String&
      url::CanonicalizeQuery(utf8.data(), url::Component(0, utf8.size()),
                             /*converter=*/nullptr, &canon_output, &component);
    } else {
@@ -643,7 +633,7 @@
                             url::Component(0, stripped.length()),
                             /*converter=*/nullptr, &canon_output, &component);
    }
-@@ -452,7 +456,7 @@ String CanonicalizeHash(const String& input,
+@@ -505,7 +509,7 @@ String CanonicalizeHash(const String& in
      url::CanonicalizeRef(utf8.data(), url::Component(0, utf8.size()),
                           &canon_output, &component);
    } else {
@@ -652,9 +642,9 @@
                           url::Component(0, stripped.length()), &canon_output,
                           &component);
    }
---- b/third_party/blink/renderer/platform/DEPS
-+++ a/third_party/blink/renderer/platform/DEPS
-@@ -13,6 +13,7 @@
+--- a/third_party/blink/renderer/platform/DEPS
++++ b/third_party/blink/renderer/platform/DEPS
+@@ -15,6 +15,7 @@ include_rules = [
      "+base/files",
      "+base/containers/flat_map.h",
      "+base/guid.h",
@@ -662,8 +652,8 @@
      "+base/json",
      "+base/location.h",
      "+base/logging.h",
---- b/third_party/blink/renderer/platform/exported/file_path_conversion.cc
-+++ a/third_party/blink/renderer/platform/exported/file_path_conversion.cc
+--- a/third_party/blink/renderer/platform/exported/file_path_conversion.cc
++++ b/third_party/blink/renderer/platform/exported/file_path_conversion.cc
 @@ -5,6 +5,7 @@
  #include "third_party/blink/public/platform/file_path_conversion.h"
  
@@ -672,19 +662,19 @@
  #include "build/build_config.h"
  #include "third_party/blink/public/platform/web_string.h"
  #include "third_party/blink/renderer/platform/wtf/text/string_utf8_adaptor.h"
-@@ -17,8 +18,8 @@
+@@ -17,8 +18,8 @@ base::FilePath StringToFilePath(const St
      return base::FilePath();
  
    if (!str.Is8Bit()) {
-+    return base::FilePath::FromUTF16Unsafe(base::StringPiece16(
-+        base::i18n::ToChar16Ptr(str.Characters16()), str.length()));
 -    return base::FilePath::FromUTF16Unsafe(
 -        base::StringPiece16(str.Characters16(), str.length()));
++    return base::FilePath::FromUTF16Unsafe(base::StringPiece16(
++        base::i18n::ToChar16Ptr(str.Characters16()), str.length()));
    }
  
  #if defined(OS_POSIX)
---- b/third_party/blink/renderer/platform/exported/url_conversion.cc
-+++ a/third_party/blink/renderer/platform/exported/url_conversion.cc
+--- a/third_party/blink/renderer/platform/exported/url_conversion.cc
++++ b/third_party/blink/renderer/platform/exported/url_conversion.cc
 @@ -4,6 +4,7 @@
  
  #include "third_party/blink/public/platform/url_conversion.h"
@@ -693,18 +683,18 @@
  #include "third_party/blink/public/platform/web_string.h"
  #include "third_party/blink/renderer/platform/wtf/text/string_utf8_adaptor.h"
  #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
-@@ -23,7 +24,8 @@
+@@ -23,7 +24,8 @@ GURL WebStringToGURL(const WebString& we
    }
  
    // GURL can consume UTF-16 directly.
+-  return GURL(base::StringPiece16(str.Characters16(), str.length()));
 +  return GURL(base::StringPiece16(base::i18n::ToChar16Ptr(str.Characters16()),
 +                                  str.length()));
--  return GURL(base::StringPiece16(str.Characters16(), str.length()));
  }
  
  }  // namespace blink
---- b/third_party/blink/renderer/platform/exported/web_string.cc
-+++ a/third_party/blink/renderer/platform/exported/web_string.cc
+--- a/third_party/blink/renderer/platform/exported/web_string.cc
++++ b/third_party/blink/renderer/platform/exported/web_string.cc
 @@ -30,6 +30,7 @@
  
  #include "third_party/blink/public/platform/web_string.h"
@@ -713,28 +703,27 @@
  #include "base/strings/string_util.h"
  #include "third_party/blink/renderer/platform/wtf/assertions.h"
  #include "third_party/blink/renderer/platform/wtf/text/ascii_fast_path.h"
-@@ -56,7 +57,8 @@
- WebString& WebString::operator=(WebString&&) = default;
+@@ -57,7 +58,7 @@ WebString& WebString::operator=(WebStrin
  
  WebString::WebString(const WebUChar* data, size_t len)
-+    : impl_(StringImpl::Create8BitIfPossible(base::i18n::ToUCharPtr(data),
-+                                             len)) {}
--    : impl_(StringImpl::Create8BitIfPossible(data, len)) {}
+     : impl_(StringImpl::Create8BitIfPossible(
+-          data,
++          base::i18n::ToUCharPtr(data),
+           base::checked_cast<wtf_size_t>(len))) {}
  
  void WebString::Reset() {
-   impl_ = nullptr;
-@@ -75,7 +77,8 @@
+@@ -77,7 +78,8 @@ const WebLChar* WebString::Data8() const
  }
  
  const WebUChar* WebString::Data16() const {
+-  return impl_ && !Is8Bit() ? impl_->Characters16() : nullptr;
 +  return impl_ && !Is8Bit() ? base::i18n::ToChar16Ptr(impl_->Characters16())
 +                            : nullptr;
--  return impl_ && !Is8Bit() ? impl_->Characters16() : nullptr;
  }
  
  std::string WebString::Utf8(UTF8ConversionMode mode) const {
---- b/third_party/blink/renderer/platform/link_hash.cc
-+++ a/third_party/blink/renderer/platform/link_hash.cc
+--- a/third_party/blink/renderer/platform/link_hash.cc
++++ b/third_party/blink/renderer/platform/link_hash.cc
 @@ -30,6 +30,7 @@
  
  #include "third_party/blink/renderer/platform/link_hash.h"
@@ -743,18 +732,18 @@
  #include "third_party/blink/public/platform/platform.h"
  #include "third_party/blink/renderer/platform/weborigin/kurl.h"
  #include "third_party/blink/renderer/platform/wtf/text/string_utf8_adaptor.h"
-@@ -52,7 +53,8 @@
+@@ -52,7 +53,8 @@ static bool ResolveRelative(const KURL&
                                  relative_utf8.size(), nullptr, buffer, &parsed);
    }
    return url::ResolveRelative(base_utf8.data(), base_utf8.size(),
+-                              base.GetParsed(), relative.Characters16(),
 +                              base.GetParsed(),
 +                              base::i18n::ToChar16Ptr(relative.Characters16()),
--                              base.GetParsed(), relative.Characters16(),
                                relative.length(), nullptr, buffer, &parsed);
  }
  
---- b/third_party/blink/renderer/platform/weborigin/kurl.cc
-+++ a/third_party/blink/renderer/platform/weborigin/kurl.cc
+--- a/third_party/blink/renderer/platform/weborigin/kurl.cc
++++ b/third_party/blink/renderer/platform/weborigin/kurl.cc
 @@ -29,6 +29,7 @@
  
  #include <algorithm>
@@ -763,85 +752,82 @@
  #include "base/numerics/checked_math.h"
  #include "third_party/blink/renderer/platform/weborigin/known_ports.h"
  #include "third_party/blink/renderer/platform/weborigin/scheme_registry.h"
-@@ -104,8 +105,9 @@
-   void ConvertFromUTF16(const char16_t* input,
+@@ -105,7 +106,7 @@ class KURLCharsetConverter final : publi
                          int input_length,
                          url::CanonOutput* output) override {
-+    std::string encoded =
-+        encoding_->Encode(String(base::i18n::ToUCharPtr(input), input_length),
-+                          WTF::kURLEncodedEntitiesForUnencodables);
--    std::string encoded = encoding_->Encode(
--        String(input, input_length), WTF::kURLEncodedEntitiesForUnencodables);
+     std::string encoded =
+-        encoding_->Encode(String(input, static_cast<unsigned>(input_length)),
++        encoding_->Encode(String(base::i18n::ToUCharPtr(input), static_cast<unsigned>(input_length)),
+                           WTF::kURLEncodedEntitiesForUnencodables);
      output->Append(encoded.c_str(), static_cast<int>(encoded.length()));
    }
- 
-@@ -360,7 +362,8 @@
+@@ -361,7 +362,8 @@ String KURL::LastPathComponent() const {
    if (string_.Is8Bit()) {
      url::ExtractFileName(AsURLChar8Subtle(string_), path, &file);
    } else {
+-    url::ExtractFileName(string_.Characters16(), path, &file);
 +    url::ExtractFileName(base::i18n::ToChar16Ptr(string_.Characters16()), path,
 +                         &file);
--    url::ExtractFileName(string_.Characters16(), path, &file);
    }
  
    // Bug: https://bugs.webkit.org/show_bug.cgi?id=21015 this function returns
-@@ -383,9 +386,11 @@
+@@ -384,9 +386,11 @@ uint16_t KURL::Port() const {
    if (!is_valid_ || parsed_.port.len <= 0)
      return 0;
    DCHECK(!string_.IsNull());
+-  int port = string_.Is8Bit()
+-                 ? url::ParsePort(AsURLChar8Subtle(string_), parsed_.port)
+-                 : url::ParsePort(string_.Characters16(), parsed_.port);
 +  int port =
 +      string_.Is8Bit()
 +          ? url::ParsePort(AsURLChar8Subtle(string_), parsed_.port)
 +          : url::ParsePort(base::i18n::ToChar16Ptr(string_.Characters16()),
 +                           parsed_.port);
--  int port = string_.Is8Bit()
--                 ? url::ParsePort(AsURLChar8Subtle(string_), parsed_.port)
--                 : url::ParsePort(string_.Characters16(), parsed_.port);
    DCHECK_NE(port, url::PORT_UNSPECIFIED);  // Checked port.len <= 0 already.
    DCHECK_NE(port, url::PORT_INVALID);      // Checked is_valid_ already.
  
-@@ -724,7 +729,8 @@
+@@ -790,7 +794,8 @@ bool KURL::IsHierarchical() const {
      return false;
    return string_.Is8Bit()
               ? url::IsStandard(AsURLChar8Subtle(string_), parsed_.scheme)
+-             : url::IsStandard(string_.Characters16(), parsed_.scheme);
 +             : url::IsStandard(base::i18n::ToChar16Ptr(string_.Characters16()),
 +                               parsed_.scheme);
--             : url::IsStandard(string_.Characters16(), parsed_.scheme);
  }
  
  bool EqualIgnoringFragmentIdentifier(const KURL& a, const KURL& b) {
-@@ -777,7 +783,8 @@
+@@ -843,7 +848,8 @@ unsigned KURL::PathAfterLastSlash() cons
    if (string_.Is8Bit()) {
      url::ExtractFileName(AsURLChar8Subtle(string_), parsed_.path, &filename);
    } else {
+-    url::ExtractFileName(string_.Characters16(), parsed_.path, &filename);
 +    url::ExtractFileName(base::i18n::ToChar16Ptr(string_.Characters16()),
 +                         parsed_.path, &filename);
--    url::ExtractFileName(string_.Characters16(), parsed_.path, &filename);
    }
    return filename.begin;
  }
-@@ -792,8 +799,8 @@
+@@ -858,8 +864,8 @@ bool ProtocolIs(const String& url, const
      return url::FindAndCompareScheme(AsURLChar8Subtle(url), url.length(),
                                       protocol, nullptr);
    }
-+  return url::FindAndCompareScheme(base::i18n::ToChar16Ptr(url.Characters16()),
-+                                   url.length(), protocol, nullptr);
 -  return url::FindAndCompareScheme(url.Characters16(), url.length(), protocol,
 -                                   nullptr);
++  return url::FindAndCompareScheme(base::i18n::ToChar16Ptr(url.Characters16()),
++                                   url.length(), protocol, nullptr);
  }
  
  void KURL::Init(const KURL& base,
-@@ -825,7 +825,7 @@ void KURL::Init(const KURL& base,
+@@ -891,7 +897,7 @@ void KURL::Init(const KURL& base,
                                       charset_converter, &output, &parsed_);
    } else {
      is_valid_ = url::ResolveRelative(base_utf8.data(), base_utf8.size(),
 -                                     base.parsed_, relative.Characters16(),
 +                                     base.parsed_, base::i18n::ToChar16Ptr(relative.Characters16()),
-                                      clampTo<int>(relative.length()),
+                                      ClampTo<int>(relative.length()),
                                       charset_converter, &output, &parsed_);
    }
---- b/third_party/blink/renderer/platform/weborigin/security_origin.cc
-+++ a/third_party/blink/renderer/platform/weborigin/security_origin.cc
+--- a/third_party/blink/renderer/platform/weborigin/security_origin.cc
++++ b/third_party/blink/renderer/platform/weborigin/security_origin.cc
 @@ -34,6 +34,7 @@
  #include <string>
  #include <utility>
@@ -850,22 +836,22 @@
  #include "base/containers/contains.h"
  #include "net/base/url_util.h"
  #include "services/network/public/cpp/is_potentially_trustworthy.h"
-@@ -737,9 +738,9 @@
+@@ -697,9 +698,9 @@ String SecurityOrigin::CanonicalizeHost(
      *success = url::CanonicalizeHost(
          utf8.data(), url::Component(0, utf8.size()), &canon_output, &out_host);
    } else {
-+    *success = url::CanonicalizeHost(
-+        base::i18n::ToChar16Ptr(host.Characters16()),
-+        url::Component(0, host.length()), &canon_output, &out_host);
 -    *success = url::CanonicalizeHost(host.Characters16(),
 -                                     url::Component(0, host.length()),
 -                                     &canon_output, &out_host);
++    *success = url::CanonicalizeHost(
++        base::i18n::ToChar16Ptr(host.Characters16()),
++        url::Component(0, host.length()), &canon_output, &out_host);
    }
    return String::FromUTF8(canon_output.data(), canon_output.length());
  }
 --- a/third_party/blink/renderer/platform/wtf/date_math.cc
 +++ b/third_party/blink/renderer/platform/wtf/date_math.cc
-@@ -672,8 +672,9 @@ absl::optional<base::Time> ParseDateFromNullTerminatedCharacters(
+@@ -672,8 +672,9 @@ absl::optional<base::Time> ParseDateFrom
      // Handle the conversion of localtime to UTC the same way as the
      // latest ECMA 262 spec for Javascript (v8 does that, too).
      static_cast<const icu::BasicTimeZone*>(timezone.get())
@@ -877,8 +863,8 @@
      DCHECK(U_SUCCESS(status));
      offset = static_cast<int>((raw_offset + dst_offset) / kMsPerMinute);
    }
---- b/third_party/blink/renderer/platform/wtf/text/atomic_string.h
-+++ a/third_party/blink/renderer/platform/wtf/text/atomic_string.h
+--- a/third_party/blink/renderer/platform/wtf/text/atomic_string.h
++++ b/third_party/blink/renderer/platform/wtf/text/atomic_string.h
 @@ -76,6 +76,10 @@ class WTF_EXPORT AtomicString {
    AtomicString(const LChar* chars, unsigned length);
    AtomicString(const UChar* chars, unsigned length);
@@ -890,9 +876,9 @@
  
    // Constructing an AtomicString from a String / StringImpl can be expensive if
    // the StringImpl is not already atomic.
---- b/third_party/blink/renderer/platform/wtf/text/string_view.h
-+++ a/third_party/blink/renderer/platform/wtf/text/string_view.h
-@@ -128,6 +128,12 @@
+--- a/third_party/blink/renderer/platform/wtf/text/string_view.h
++++ b/third_party/blink/renderer/platform/wtf/text/string_view.h
+@@ -135,6 +135,12 @@ class WTF_EXPORT StringView {
    StringView(const UChar* chars, unsigned length)
        : impl_(StringImpl::empty16_bit_), bytes_(chars), length_(length) {}
    StringView(const UChar* chars);
@@ -905,9 +891,9 @@
  
  #if DCHECK_IS_ON()
    ~StringView();
---- b/third_party/blink/renderer/platform/wtf/text/wtf_string.h
-+++ a/third_party/blink/renderer/platform/wtf/text/wtf_string.h
-@@ -83,6 +83,12 @@
+--- a/third_party/blink/renderer/platform/wtf/text/wtf_string.h
++++ b/third_party/blink/renderer/platform/wtf/text/wtf_string.h
+@@ -77,6 +77,12 @@ class WTF_EXPORT String {
  
    // Construct a string with UTF-16 data, from a null-terminated source.
    String(const UChar*);
@@ -920,9 +906,9 @@
  
    // Construct a string with latin1 data.
    String(const LChar* characters, unsigned length);
---- b/ui/base/ime/utf_offset_unittest.cc
-+++ a/ui/base/ime/utf_offset_unittest.cc
-@@ -128,9 +128,12 @@
+--- a/ui/base/ime/utf_offset_unittest.cc
++++ b/ui/base/ime/utf_offset_unittest.cc
+@@ -129,9 +129,12 @@ TEST(UtfOffsetTest, Utf8OffsetFromUtf16O
    };
  
    for (const auto& test_case : kTestCases) {
@@ -930,16 +916,16 @@
 +    // to char16_t.
 +    base::string16 text(reinterpret_cast<const char16_t*>(test_case.str));
      EXPECT_EQ(test_case.expect,
-+              Utf8OffsetFromUtf16Offset(text, test_case.offset))
-+        << " at " << text << "[" << test_case.offset << "]";
 -              Utf8OffsetFromUtf16Offset(test_case.str, test_case.offset))
 -        << " at " << test_case.str << "[" << test_case.offset << "]";
++              Utf8OffsetFromUtf16Offset(text, test_case.offset))
++        << " at " << text << "[" << test_case.offset << "]";
    }
  }
  
---- b/ui/base/l10n/l10n_util.cc
-+++ a/ui/base/l10n/l10n_util.cc
-@@ -19,6 +19,7 @@
+--- a/ui/base/l10n/l10n_util.cc
++++ b/ui/base/l10n/l10n_util.cc
+@@ -20,6 +20,7 @@
  #include "base/i18n/number_formatting.h"
  #include "base/i18n/rtl.h"
  #include "base/i18n/string_compare.h"
@@ -947,7 +933,7 @@
  #include "base/lazy_instance.h"
  #include "base/logging.h"
  #include "base/no_destructor.h"
-@@ -633,11 +634,11 @@ std::u16string GetDisplayNameForLocale(const std::string& locale,
+@@ -648,11 +649,11 @@ std::u16string GetDisplayNameForLocale(c
      if (locale_code[0] == '-' || locale_code[0] == '_') {
        actual_size = uloc_getDisplayCountry(
            locale_code.c_str(), display_locale.c_str(),
@@ -961,8 +947,8 @@
      }
      if (disallow_default && U_USING_DEFAULT_WARNING == error)
        return std::u16string();
---- b/ui/base/l10n/time_format.cc
-+++ a/ui/base/l10n/time_format.cc
+--- a/ui/base/l10n/time_format.cc
++++ b/ui/base/l10n/time_format.cc
 @@ -8,6 +8,7 @@
  
  #include "base/check_op.h"
@@ -971,7 +957,7 @@
  #include "base/lazy_instance.h"
  #include "base/notreached.h"
  #include "base/numerics/safe_conversions.h"
-@@ -144,7 +144,7 @@ std::u16string TimeFormat::DetailedWithMonthAndYear(
+@@ -143,7 +144,7 @@ std::u16string TimeFormat::DetailedWithM
    DCHECK_GT(capacity, 1);
    std::u16string result;
    UErrorCode error = U_ZERO_ERROR;
@@ -980,8 +966,8 @@
    DCHECK(U_SUCCESS(error));
    return result;
  }
---- b/ui/gfx/bidi_line_iterator.cc
-+++ a/ui/gfx/bidi_line_iterator.cc
+--- a/ui/gfx/bidi_line_iterator.cc
++++ b/ui/gfx/bidi_line_iterator.cc
 @@ -5,6 +5,7 @@
  #include "ui/gfx/bidi_line_iterator.h"
  
@@ -990,18 +976,18 @@
  #include "base/notreached.h"
  
  namespace ui {
-@@ -45,7 +46,8 @@
+@@ -45,7 +46,8 @@ bool BiDiLineIterator::Open(const std::u
    if (U_FAILURE(error))
      return false;
  
+-  ubidi_setPara(bidi_, text.data(), static_cast<int>(text.length()),
 +  ubidi_setPara(bidi_, base::i18n::ToUCharPtr(text.data()),
 +                static_cast<int>(text.length()),
--  ubidi_setPara(bidi_, text.data(), static_cast<int>(text.length()),
                  GetParagraphLevelForDirection(direction), nullptr, &error);
    return (U_SUCCESS(error));
  }
---- b/ui/gfx/font_fallback_unittest.cc
-+++ a/ui/gfx/font_fallback_unittest.cc
+--- a/ui/gfx/font_fallback_unittest.cc
++++ b/ui/gfx/font_fallback_unittest.cc
 @@ -6,6 +6,7 @@
  
  #include <tuple>
@@ -1010,19 +996,19 @@
  #include "base/cxx17_backports.h"
  #include "base/strings/string_util.h"
  #include "base/strings/stringprintf.h"
-@@ -237,8 +238,8 @@
+@@ -238,8 +239,8 @@ std::vector<FallbackFontTestCase> GetSam
      // Make a sample text to test the script.
      char16_t text[8];
      UErrorCode errorCode = U_ZERO_ERROR;
-+    int text_length = uscript_getSampleString(
-+        script, base::i18n::ToUCharPtr(text), base::size(text), &errorCode);
 -    int text_length =
 -        uscript_getSampleString(script, text, base::size(text), &errorCode);
++    int text_length = uscript_getSampleString(
++        script, base::i18n::ToUCharPtr(text), base::size(text), &errorCode);
      if (text_length <= 0 || errorCode != U_ZERO_ERROR)
        continue;
  
---- b/url/url_canon_icu.cc
-+++ a/url/url_canon_icu.cc
+--- a/url/url_canon_icu.cc
++++ b/url/url_canon_icu.cc
 @@ -9,6 +9,7 @@
  #include <string.h>
  
@@ -1031,20 +1017,20 @@
  #include "third_party/icu/source/common/unicode/ucnv.h"
  #include "third_party/icu/source/common/unicode/ucnv_cb.h"
  #include "third_party/icu/source/common/unicode/utypes.h"
-@@ -94,8 +95,9 @@
+@@ -94,8 +95,9 @@ void ICUCharsetConverter::ConvertFromUTF
    do {
      UErrorCode err = U_ZERO_ERROR;
      char* dest = &output->data()[begin_offset];
+-    int required_capacity = ucnv_fromUChars(converter_, dest, dest_capacity,
+-                                            input, input_len, &err);
 +    int required_capacity =
 +        ucnv_fromUChars(converter_, dest, dest_capacity,
 +                        base::i18n::ToUCharPtr(input), input_len, &err);
--    int required_capacity = ucnv_fromUChars(converter_, dest, dest_capacity,
--                                            input, input_len, &err);
      if (err != U_BUFFER_OVERFLOW_ERROR) {
        output->set_length(begin_offset + required_capacity);
        return;
---- b/url/url_idna_icu.cc
-+++ a/url/url_idna_icu.cc
+--- a/url/url_idna_icu.cc
++++ b/url/url_idna_icu.cc
 @@ -11,6 +11,7 @@
  #include <ostream>
  
@@ -1053,7 +1039,7 @@
  #include "third_party/icu/source/common/unicode/uidna.h"
  #include "third_party/icu/source/common/unicode/utypes.h"
  #include "url/url_canon_icu.h"
-@@ -80,8 +81,10 @@ bool IDNToASCII(const char16_t* src, int src_len, CanonOutputW* output) {
+@@ -80,8 +81,10 @@ bool IDNToASCII(const char16_t* src, int
    while (true) {
      UErrorCode err = U_ZERO_ERROR;
      UIDNAInfo info = UIDNA_INFO_INITIALIZER;
diff --git a/debian/patches/bullseye/node-tsc.patch b/debian/patches/bullseye/node-tsc.patch
new file mode 100644
index 0000000..c426c6d
--- /dev/null
+++ b/debian/patches/bullseye/node-tsc.patch
@@ -0,0 +1,17 @@
+--- a/third_party/node/node_modules.py
++++ b/third_party/node/node_modules.py
+@@ -14,11 +14,13 @@ def _path_in_node_modules(*args):
+ # Typescript is not approved for general use in Chromium. Email chromium-dev
+ # if you want to use it.
+ def PathToTypescript():
+-  return '/usr/bin/tsc'
++  return _path_in_node_modules('typescript', 'bin', 'tsc')
++  #return '/usr/bin/tsc'
+ 
+ def PathToRollup():
+   return '/usr/share/nodejs/rollup/dist/bin/rollup'
+ 
++
+ def PathToPolymerCssBuild():
+   return _path_in_node_modules('polymer-css-build', 'bin', 'polymer-css-build')
+ 
diff --git a/debian/patches/debianization/explicit-python2.patch b/debian/patches/debianization/explicit-python2.patch
deleted file mode 100644
index 627eb36..0000000
--- a/debian/patches/debianization/explicit-python2.patch
+++ /dev/null
@@ -1,8285 +0,0 @@
-diff --git a/PRESUBMIT_test.py b/PRESUBMIT_test.py
-index cc9d6ad..aa26ca2 100755
---- a/PRESUBMIT_test.py
-+++ b/PRESUBMIT_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/ash/webui/file_manager/resources/gen_main_html.py b/ash/webui/file_manager/resources/gen_main_html.py
-index d4d2875..6be1070 100755
---- a/ash/webui/file_manager/resources/gen_main_html.py
-+++ b/ash/webui/file_manager/resources/gen_main_html.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/base/android/jni_generator/jni_generator.py b/base/android/jni_generator/jni_generator.py
-index 4df3649..b06ea77 100755
---- a/base/android/jni_generator/jni_generator.py
-+++ b/base/android/jni_generator/jni_generator.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/base/android/jni_generator/jni_generator_tests.py b/base/android/jni_generator/jni_generator_tests.py
-index a590bf1..724da7a 100755
---- a/base/android/jni_generator/jni_generator_tests.py
-+++ b/base/android/jni_generator/jni_generator_tests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/base/android/jni_generator/jni_registration_generator.py b/base/android/jni_generator/jni_registration_generator.py
-index a21b89b..b9b7ea7 100755
---- a/base/android/jni_generator/jni_registration_generator.py
-+++ b/base/android/jni_generator/jni_registration_generator.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/base/win/embedded_i18n/create_string_rc.py b/base/win/embedded_i18n/create_string_rc.py
-index 934131c..1b2896f 100755
---- a/base/win/embedded_i18n/create_string_rc.py
-+++ b/base/win/embedded_i18n/create_string_rc.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/build/add_rts_filters.py b/build/add_rts_filters.py
-index 4186c39..6abdf75 100755
---- a/build/add_rts_filters.py
-+++ b/build/add_rts_filters.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2021 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/build/android/adb_logcat_monitor.py b/build/android/adb_logcat_monitor.py
-index a919722..1f327bb 100755
---- a/build/android/adb_logcat_monitor.py
-+++ b/build/android/adb_logcat_monitor.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright (c) 2012 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/build/android/adb_logcat_printer.py b/build/android/adb_logcat_printer.py
-index a715170..27d5d6c 100755
---- a/build/android/adb_logcat_printer.py
-+++ b/build/android/adb_logcat_printer.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright (c) 2012 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/build/android/asan_symbolize.py b/build/android/asan_symbolize.py
-index 6585089..028d674 100755
---- a/build/android/asan_symbolize.py
-+++ b/build/android/asan_symbolize.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2013 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/build/android/diff_resource_sizes.py b/build/android/diff_resource_sizes.py
-index eefb6cd..966eeff 100755
---- a/build/android/diff_resource_sizes.py
-+++ b/build/android/diff_resource_sizes.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/android/download_doclava.py b/build/android/download_doclava.py
-index 1982fdb..31cf658 100755
---- a/build/android/download_doclava.py
-+++ b/build/android/download_doclava.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/android/gradle/gn_to_cmake.py b/build/android/gradle/gn_to_cmake.py
-index d3e80ae..2bfdfab 100755
---- a/build/android/gradle/gn_to_cmake.py
-+++ b/build/android/gradle/gn_to_cmake.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/android/gyp/create_apk_operations_script.py b/build/android/gyp/create_apk_operations_script.py
-index 660567f..6f1c0e1 100755
---- a/build/android/gyp/create_apk_operations_script.py
-+++ b/build/android/gyp/create_apk_operations_script.py
-@@ -12,7 +12,7 @@ import sys
- from util import build_utils
- 
- SCRIPT_TEMPLATE = string.Template("""\
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # This file was generated by build/android/gyp/create_apk_operations_script.py
- 
-diff --git a/build/android/gyp/create_bundle_wrapper_script.py b/build/android/gyp/create_bundle_wrapper_script.py
-index 282e206..6f712d5 100755
---- a/build/android/gyp/create_bundle_wrapper_script.py
-+++ b/build/android/gyp/create_bundle_wrapper_script.py
-@@ -13,7 +13,7 @@ import sys
- from util import build_utils
- 
- SCRIPT_TEMPLATE = string.Template("""\
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # This file was generated by build/android/gyp/create_bundle_wrapper_script.py
- 
-diff --git a/build/android/gyp/create_java_binary_script.py b/build/android/gyp/create_java_binary_script.py
-index 5bc9d08..760ade8 100755
---- a/build/android/gyp/create_java_binary_script.py
-+++ b/build/android/gyp/create_java_binary_script.py
-@@ -21,7 +21,7 @@ from util import build_utils
- # to the directory that the script is written in and then, when run, must
- # recalculate the paths relative to the current directory.
- script_template = """\
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # This file was generated by build/android/gyp/create_java_binary_script.py
- 
-diff --git a/build/android/incremental_install/generate_android_manifest.py b/build/android/incremental_install/generate_android_manifest.py
-index e069dab..1910900 100755
---- a/build/android/incremental_install/generate_android_manifest.py
-+++ b/build/android/incremental_install/generate_android_manifest.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2015 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/build/android/incremental_install/write_installer_json.py b/build/android/incremental_install/write_installer_json.py
-index cf1d2d4..fc74ee3 100755
---- a/build/android/incremental_install/write_installer_json.py
-+++ b/build/android/incremental_install/write_installer_json.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2017 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/build/android/lighttpd_server.py b/build/android/lighttpd_server.py
-index 42fbcdb..d6a00dd 100755
---- a/build/android/lighttpd_server.py
-+++ b/build/android/lighttpd_server.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright (c) 2012 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/build/android/method_count.py b/build/android/method_count.py
-index a39a390..c96f825 100755
---- a/build/android/method_count.py
-+++ b/build/android/method_count.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- # 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.
-diff --git a/build/android/native_flags/argcapture.py b/build/android/native_flags/argcapture.py
-index 159b03a..d5f0047 100755
---- a/build/android/native_flags/argcapture.py
-+++ b/build/android/native_flags/argcapture.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2021 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/build/android/pylib/dex/dex_parser.py b/build/android/pylib/dex/dex_parser.py
-index be5f1af..654d33b 100755
---- a/build/android/pylib/dex/dex_parser.py
-+++ b/build/android/pylib/dex/dex_parser.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/android/pylib/results/presentation/standard_gtest_merge.py b/build/android/pylib/results/presentation/standard_gtest_merge.py
-index 64f40e6..276e2cd 100755
---- a/build/android/pylib/results/presentation/standard_gtest_merge.py
-+++ b/build/android/pylib/results/presentation/standard_gtest_merge.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- #
- # Copyright 2017 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/build/android/pylib/results/presentation/test_results_presentation.py b/build/android/pylib/results/presentation/test_results_presentation.py
-index 2fd98b1..1780e28 100755
---- a/build/android/pylib/results/presentation/test_results_presentation.py
-+++ b/build/android/pylib/results/presentation/test_results_presentation.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2017 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/build/android/pylib/symbols/apk_lib_dump.py b/build/android/pylib/symbols/apk_lib_dump.py
-index 933a0ab..218940d 100755
---- a/build/android/pylib/symbols/apk_lib_dump.py
-+++ b/build/android/pylib/symbols/apk_lib_dump.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2018 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/build/android/pylib/symbols/mock_addr2line/mock_addr2line b/build/android/pylib/symbols/mock_addr2line/mock_addr2line
-index 8b2a723..0d07401 100755
---- a/build/android/pylib/symbols/mock_addr2line/mock_addr2line
-+++ b/build/android/pylib/symbols/mock_addr2line/mock_addr2line
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/android/update_deps/update_third_party_deps.py b/build/android/update_deps/update_third_party_deps.py
-index 3a869c4..60729db 100755
---- a/build/android/update_deps/update_third_party_deps.py
-+++ b/build/android/update_deps/update_third_party_deps.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/apple/tweak_info_plist.py b/build/apple/tweak_info_plist.py
-index 76f64dc..875cdd4 100755
---- a/build/apple/tweak_info_plist.py
-+++ b/build/apple/tweak_info_plist.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright (c) 2012 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/build/check_gn_headers.py b/build/check_gn_headers.py
-index 9bdbba8..7b8233d 100755
---- a/build/check_gn_headers.py
-+++ b/build/check_gn_headers.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/check_gn_headers_unittest.py b/build/check_gn_headers_unittest.py
-index 20c3b13..55c4a87 100755
---- a/build/check_gn_headers_unittest.py
-+++ b/build/check_gn_headers_unittest.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/check_return_value.py b/build/check_return_value.py
-index 9caa15f..13b76bb 100755
---- a/build/check_return_value.py
-+++ b/build/check_return_value.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/cipd/clobber_cipd_root.py b/build/cipd/clobber_cipd_root.py
-index 5d36c72..20baced 100755
---- a/build/cipd/clobber_cipd_root.py
-+++ b/build/cipd/clobber_cipd_root.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2018 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/build/clobber.py b/build/clobber.py
-index 1de3212..00c8222 100755
---- a/build/clobber.py
-+++ b/build/clobber.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/compute_build_timestamp.py b/build/compute_build_timestamp.py
-index ceb507b..c2ec2eb 100755
---- a/build/compute_build_timestamp.py
-+++ b/build/compute_build_timestamp.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/config/fuchsia/build_symbol_archive.py b/build/config/fuchsia/build_symbol_archive.py
-index c763627..2a5ec9c 100755
---- a/build/config/fuchsia/build_symbol_archive.py
-+++ b/build/config/fuchsia/build_symbol_archive.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2018 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/build/config/get_host_byteorder.py b/build/config/get_host_byteorder.py
-index fc01d85..6921f3d 100755
---- a/build/config/get_host_byteorder.py
-+++ b/build/config/get_host_byteorder.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/config/linux/pkg-config.py b/build/config/linux/pkg-config.py
-index 5adf70c..b30136c 100755
---- a/build/config/linux/pkg-config.py
-+++ b/build/config/linux/pkg-config.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2013 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.
-diff --git a/build/copy_test_data_ios.py b/build/copy_test_data_ios.py
-index cd23fb2..96d7668 100755
---- a/build/copy_test_data_ios.py
-+++ b/build/copy_test_data_ios.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/build/cp.py b/build/cp.py
-index 0f32536..5f280b6 100755
---- a/build/cp.py
-+++ b/build/cp.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/build/detect_host_arch.py b/build/detect_host_arch.py
-index cad0f4b..fd7c3a6 100755
---- a/build/detect_host_arch.py
-+++ b/build/detect_host_arch.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/dir_exists.py b/build/dir_exists.py
-index 70d367e..49c0a43 100755
---- a/build/dir_exists.py
-+++ b/build/dir_exists.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/download_nacl_toolchains.py b/build/download_nacl_toolchains.py
-index 286a92a..26b54f9 100755
---- a/build/download_nacl_toolchains.py
-+++ b/build/download_nacl_toolchains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/build/env_dump.py b/build/env_dump.py
-index 3f82173..e97dda9 100755
---- a/build/env_dump.py
-+++ b/build/env_dump.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2013 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.
-diff --git a/build/extract_from_cab.py b/build/extract_from_cab.py
-index 9695b96..d1f38d0 100755
---- a/build/extract_from_cab.py
-+++ b/build/extract_from_cab.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/build/extract_partition.py b/build/extract_partition.py
-index 4b2f064..077ed65 100755
---- a/build/extract_partition.py
-+++ b/build/extract_partition.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/find_depot_tools.py b/build/find_depot_tools.py
-index 49a9138..30097f1 100755
---- a/build/find_depot_tools.py
-+++ b/build/find_depot_tools.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/fix_gn_headers.py b/build/fix_gn_headers.py
-index 71fb332..e370efa 100755
---- a/build/fix_gn_headers.py
-+++ b/build/fix_gn_headers.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/fuchsia/binary_sizes_test.py b/build/fuchsia/binary_sizes_test.py
-index 962e4c9..373295c 100755
---- a/build/fuchsia/binary_sizes_test.py
-+++ b/build/fuchsia/binary_sizes_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/build/fuchsia/deploy_to_amber_repo.py b/build/fuchsia/deploy_to_amber_repo.py
-index 80ac2fe..9b4f7ea 100755
---- a/build/fuchsia/deploy_to_amber_repo.py
-+++ b/build/fuchsia/deploy_to_amber_repo.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2019 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/build/fuchsia/test_runner.py b/build/fuchsia/test_runner.py
-index afecddd..743a76f 100755
---- a/build/fuchsia/test_runner.py
-+++ b/build/fuchsia/test_runner.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2018 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/build/fuchsia/update_images.py b/build/fuchsia/update_images.py
-index 79b8e49..57b7cf4 100755
---- a/build/fuchsia/update_images.py
-+++ b/build/fuchsia/update_images.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/build/fuchsia/update_sdk.py b/build/fuchsia/update_sdk.py
-index a1c9621..89a5619 100755
---- a/build/fuchsia/update_sdk.py
-+++ b/build/fuchsia/update_sdk.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/get_landmines.py b/build/get_landmines.py
-index a32ab99..c5cc8cc 100755
---- a/build/get_landmines.py
-+++ b/build/get_landmines.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2013 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.
-diff --git a/build/get_symlink_targets.py b/build/get_symlink_targets.py
-index 3285ff1..a0a720d 100755
---- a/build/get_symlink_targets.py
-+++ b/build/get_symlink_targets.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/lacros/lacros_resource_sizes.py b/build/lacros/lacros_resource_sizes.py
-index bf791c6..92ac11d 100755
---- a/build/lacros/lacros_resource_sizes.py
-+++ b/build/lacros/lacros_resource_sizes.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/build/landmines.py b/build/landmines.py
-index f5adf80..21f56a3 100755
---- a/build/landmines.py
-+++ b/build/landmines.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/build/linux/install-chromeos-fonts.py b/build/linux/install-chromeos-fonts.py
-index da8fb40..caaf9bf 100755
---- a/build/linux/install-chromeos-fonts.py
-+++ b/build/linux/install-chromeos-fonts.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2013 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.
-diff --git a/build/linux/rewrite_dirs.py b/build/linux/rewrite_dirs.py
-index 17659c3..6eeb3f9 100755
---- a/build/linux/rewrite_dirs.py
-+++ b/build/linux/rewrite_dirs.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/linux/strip_binary.py b/build/linux/strip_binary.py
-index 00b4089..2dca524 100755
---- a/build/linux/strip_binary.py
-+++ b/build/linux/strip_binary.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2021 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/build/linux/sysroot_scripts/build_and_upload.py b/build/linux/sysroot_scripts/build_and_upload.py
-index 1a24da2..fef5605 100755
---- a/build/linux/sysroot_scripts/build_and_upload.py
-+++ b/build/linux/sysroot_scripts/build_and_upload.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/linux/sysroot_scripts/find_incompatible_glibc_symbols.py b/build/linux/sysroot_scripts/find_incompatible_glibc_symbols.py
-index 1e0b5f6..dfd3a0d 100755
---- a/build/linux/sysroot_scripts/find_incompatible_glibc_symbols.py
-+++ b/build/linux/sysroot_scripts/find_incompatible_glibc_symbols.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/linux/sysroot_scripts/find_incompatible_glibc_symbols_unittest.py b/build/linux/sysroot_scripts/find_incompatible_glibc_symbols_unittest.py
-index 7c66555..9b2b67a 100755
---- a/build/linux/sysroot_scripts/find_incompatible_glibc_symbols_unittest.py
-+++ b/build/linux/sysroot_scripts/find_incompatible_glibc_symbols_unittest.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/linux/sysroot_scripts/install-sysroot.py b/build/linux/sysroot_scripts/install-sysroot.py
-index f5f1da4..96d6c39 100755
---- a/build/linux/sysroot_scripts/install-sysroot.py
-+++ b/build/linux/sysroot_scripts/install-sysroot.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2013 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.
-diff --git a/build/linux/sysroot_scripts/merge-package-lists.py b/build/linux/sysroot_scripts/merge-package-lists.py
-index 70b3d05..0c27c0f 100755
---- a/build/linux/sysroot_scripts/merge-package-lists.py
-+++ b/build/linux/sysroot_scripts/merge-package-lists.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/linux/unbundle/remove_bundled_libraries.py b/build/linux/unbundle/remove_bundled_libraries.py
-index 899877a..abaf845 100755
---- a/build/linux/unbundle/remove_bundled_libraries.py
-+++ b/build/linux/unbundle/remove_bundled_libraries.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2013 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.
-diff --git a/build/linux/unbundle/replace_gn_files.py b/build/linux/unbundle/replace_gn_files.py
-index eba4bd1..3159762 100755
---- a/build/linux/unbundle/replace_gn_files.py
-+++ b/build/linux/unbundle/replace_gn_files.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/mac/find_sdk.py b/build/mac/find_sdk.py
-index d86f310..3d60359 100755
---- a/build/mac/find_sdk.py
-+++ b/build/mac/find_sdk.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/build/mac_toolchain.py b/build/mac_toolchain.py
-index 2dfdb43..ac85e99 100755
---- a/build/mac_toolchain.py
-+++ b/build/mac_toolchain.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2018 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/build/print_python_deps.py b/build/print_python_deps.py
-index e567834..0a8d08c 100755
---- a/build/print_python_deps.py
-+++ b/build/print_python_deps.py
-@@ -81,7 +81,7 @@ def _GetTargetPythonVersion(module):
-   default_version = 2
-   if shebang.startswith('#!'):
-     # Examples:
--    # '#!/usr/bin/python'
-+    # '#!/usr/bin/python2'
-     # '#!/usr/bin/python2.7'
-     # '#!/usr/bin/python3'
-     # '#!/usr/bin/env python3'
-diff --git a/build/protoc_java.py b/build/protoc_java.py
-index fe602a9..399b27f 100755
---- a/build/protoc_java.py
-+++ b/build/protoc_java.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/build/rm.py b/build/rm.py
-index 43a663d..8f1b819 100755
---- a/build/rm.py
-+++ b/build/rm.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/build/symlink.py b/build/symlink.py
-index 0f90696..4d181ef 100755
---- a/build/symlink.py
-+++ b/build/symlink.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2013 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.
-diff --git a/build/toolchain/apple/linker_driver.py b/build/toolchain/apple/linker_driver.py
-index c21e18a..1a6d8f6 100755
---- a/build/toolchain/apple/linker_driver.py
-+++ b/build/toolchain/apple/linker_driver.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2016 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/build/toolchain/clang_code_coverage_wrapper.py b/build/toolchain/clang_code_coverage_wrapper.py
-index 38d4155..649a8bc 100755
---- a/build/toolchain/clang_code_coverage_wrapper.py
-+++ b/build/toolchain/clang_code_coverage_wrapper.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/toolchain/gcc_link_wrapper.py b/build/toolchain/gcc_link_wrapper.py
-index b70de8b..d004cb0 100755
---- a/build/toolchain/gcc_link_wrapper.py
-+++ b/build/toolchain/gcc_link_wrapper.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/toolchain/gcc_solink_wrapper.py b/build/toolchain/gcc_solink_wrapper.py
-index 39aef4d..7426082 100755
---- a/build/toolchain/gcc_solink_wrapper.py
-+++ b/build/toolchain/gcc_solink_wrapper.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/toolchain/get_concurrent_links.py b/build/toolchain/get_concurrent_links.py
-index d77bb43..cc105f4 100755
---- a/build/toolchain/get_concurrent_links.py
-+++ b/build/toolchain/get_concurrent_links.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/toolchain/win/ml.py b/build/toolchain/win/ml.py
-index 6a1b6e5..a6183dc 100755
---- a/build/toolchain/win/ml.py
-+++ b/build/toolchain/win/ml.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/toolchain/win/rc/rc.py b/build/toolchain/win/rc/rc.py
-index 2ab4122..15932c4 100755
---- a/build/toolchain/win/rc/rc.py
-+++ b/build/toolchain/win/rc/rc.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/util/java_action.py b/build/util/java_action.py
-index ed9bb60..bb0bccb 100755
---- a/build/util/java_action.py
-+++ b/build/util/java_action.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/util/lastchange.py b/build/util/lastchange.py
-index 02a3664..4932bf3 100755
---- a/build/util/lastchange.py
-+++ b/build/util/lastchange.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/build/util/lib/common/unittest_util_test.py b/build/util/lib/common/unittest_util_test.py
-index 1514c9b..0f72365 100755
---- a/build/util/lib/common/unittest_util_test.py
-+++ b/build/util/lib/common/unittest_util_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/util/version.py b/build/util/version.py
-index e93cfe4..a2ddc28 100755
---- a/build/util/version.py
-+++ b/build/util/version.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/vs_toolchain.py b/build/vs_toolchain.py
-index ecf0971..9eccc45 100755
---- a/build/vs_toolchain.py
-+++ b/build/vs_toolchain.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/win/copy_cdb_to_output.py b/build/win/copy_cdb_to_output.py
-index a0b99bb..24d3fba 100755
---- a/build/win/copy_cdb_to_output.py
-+++ b/build/win/copy_cdb_to_output.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/win/reorder-imports.py b/build/win/reorder-imports.py
-index 0995ae0..9f1a5bb 100755
---- a/build/win/reorder-imports.py
-+++ b/build/win/reorder-imports.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/build/win/use_ansi_codes.py b/build/win/use_ansi_codes.py
-index 5951c2a..eed2954 100755
---- a/build/win/use_ansi_codes.py
-+++ b/build/win/use_ansi_codes.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/build/write_build_date_header.py b/build/write_build_date_header.py
-index 7738828..b498206 100755
---- a/build/write_build_date_header.py
-+++ b/build/write_build_date_header.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/build/write_buildflag_header.py b/build/write_buildflag_header.py
-index 47b9a03..f3843fe 100755
---- a/build/write_buildflag_header.py
-+++ b/build/write_buildflag_header.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/browser/PRESUBMIT_test.py b/chrome/browser/PRESUBMIT_test.py
-index 337e413..3586b3a 100755
---- a/chrome/browser/PRESUBMIT_test.py
-+++ b/chrome/browser/PRESUBMIT_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/browser/offline_pages/android/evaluation/run_offline_page_evaluation_test.py b/chrome/browser/offline_pages/android/evaluation/run_offline_page_evaluation_test.py
-index d17b454..676bb12 100755
---- a/chrome/browser/offline_pages/android/evaluation/run_offline_page_evaluation_test.py
-+++ b/chrome/browser/offline_pages/android/evaluation/run_offline_page_evaluation_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright (c) 2016 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/chrome/browser/prefetch/no_state_prefetch/tools/prerender_test_server/prerender_test_server.py b/chrome/browser/prefetch/no_state_prefetch/tools/prerender_test_server/prerender_test_server.py
-index 91aada7..9528b55 100755
---- a/chrome/browser/prefetch/no_state_prefetch/tools/prerender_test_server/prerender_test_server.py
-+++ b/chrome/browser/prefetch/no_state_prefetch/tools/prerender_test_server/prerender_test_server.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/browser/resources/PRESUBMIT_test.py b/chrome/browser/resources/PRESUBMIT_test.py
-index c741292..74f4694 100755
---- a/chrome/browser/resources/PRESUBMIT_test.py
-+++ b/chrome/browser/resources/PRESUBMIT_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/browser/resources/tools/optimize_webui.py b/chrome/browser/resources/tools/optimize_webui.py
-index ddbdbf3..7114c31 100755
---- a/chrome/browser/resources/tools/optimize_webui.py
-+++ b/chrome/browser/resources/tools/optimize_webui.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/browser/resources/tools/optimize_webui_test.py b/chrome/browser/resources/tools/optimize_webui_test.py
-index 77842e9..a7fee0e 100755
---- a/chrome/browser/resources/tools/optimize_webui_test.py
-+++ b/chrome/browser/resources/tools/optimize_webui_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/browser/resources/vr/assets/push_assets_component.py b/chrome/browser/resources/vr/assets/push_assets_component.py
-index fae1c92..c0a33b1 100755
---- a/chrome/browser/resources/vr/assets/push_assets_component.py
-+++ b/chrome/browser/resources/vr/assets/push_assets_component.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/browser/search/tools/generate_integrity_header.py b/chrome/browser/search/tools/generate_integrity_header.py
-index 228aa13..45a11a9 100755
---- a/chrome/browser/search/tools/generate_integrity_header.py
-+++ b/chrome/browser/search/tools/generate_integrity_header.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/browser/test_presubmit.py b/chrome/browser/test_presubmit.py
-index 796a90a..afc4395 100755
---- a/chrome/browser/test_presubmit.py
-+++ b/chrome/browser/test_presubmit.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/browser/vr/test/run_xr_browser_tests.py b/chrome/browser/vr/test/run_xr_browser_tests.py
-index c46dbef..9fb64e9 100755
---- a/chrome/browser/vr/test/run_xr_browser_tests.py
-+++ b/chrome/browser/vr/test/run_xr_browser_tests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/credential_provider/build/make_setup.py b/chrome/credential_provider/build/make_setup.py
-index c825fb8..5d46a94 100755
---- a/chrome/credential_provider/build/make_setup.py
-+++ b/chrome/credential_provider/build/make_setup.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/installer/util/prebuild/create_installer_string_rc.py b/chrome/installer/util/prebuild/create_installer_string_rc.py
-index 7a019df..e2d893d 100755
---- a/chrome/installer/util/prebuild/create_installer_string_rc.py
-+++ b/chrome/installer/util/prebuild/create_installer_string_rc.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/test/chromedriver/embed_js_in_cpp.py b/chrome/test/chromedriver/embed_js_in_cpp.py
-index 1425e4d..0859b32 100755
---- a/chrome/test/chromedriver/embed_js_in_cpp.py
-+++ b/chrome/test/chromedriver/embed_js_in_cpp.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/chrome/test/chromedriver/embed_mobile_devices_in_cpp.py b/chrome/test/chromedriver/embed_mobile_devices_in_cpp.py
-index 3ddca6a..a3e0f07 100755
---- a/chrome/test/chromedriver/embed_mobile_devices_in_cpp.py
-+++ b/chrome/test/chromedriver/embed_mobile_devices_in_cpp.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/test/chromedriver/embed_networks_in_cpp.py b/chrome/test/chromedriver/embed_networks_in_cpp.py
-index b258fa5..c76c21c 100755
---- a/chrome/test/chromedriver/embed_networks_in_cpp.py
-+++ b/chrome/test/chromedriver/embed_networks_in_cpp.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/test/chromedriver/embed_user_data_dir_in_cpp.py b/chrome/test/chromedriver/embed_user_data_dir_in_cpp.py
-index 46b32f5..5af6bc5 100755
---- a/chrome/test/chromedriver/embed_user_data_dir_in_cpp.py
-+++ b/chrome/test/chromedriver/embed_user_data_dir_in_cpp.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2013 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.
-diff --git a/chrome/test/chromedriver/log_replay/client_replay.py b/chrome/test/chromedriver/log_replay/client_replay.py
-index 687742b..55297aa 100755
---- a/chrome/test/chromedriver/log_replay/client_replay.py
-+++ b/chrome/test/chromedriver/log_replay/client_replay.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/test/chromedriver/log_replay/client_replay_test.py b/chrome/test/chromedriver/log_replay/client_replay_test.py
-index 8c83bf4..df576b0 100755
---- a/chrome/test/chromedriver/log_replay/client_replay_test.py
-+++ b/chrome/test/chromedriver/log_replay/client_replay_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/test/chromedriver/log_replay/client_replay_unittest.py b/chrome/test/chromedriver/log_replay/client_replay_unittest.py
-index 206c55f..a64a67f 100755
---- a/chrome/test/chromedriver/log_replay/client_replay_unittest.py
-+++ b/chrome/test/chromedriver/log_replay/client_replay_unittest.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/test/chromedriver/support/release/release_notes.py b/chrome/test/chromedriver/support/release/release_notes.py
-index 41037fb..d162363 100755
---- a/chrome/test/chromedriver/support/release/release_notes.py
-+++ b/chrome/test/chromedriver/support/release/release_notes.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/chrome/test/chromedriver/test/run_java_tests.py b/chrome/test/chromedriver/test/run_java_tests.py
-index facbba1..a7c8ef4 100755
---- a/chrome/test/chromedriver/test/run_java_tests.py
-+++ b/chrome/test/chromedriver/test/run_java_tests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2013 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.
-diff --git a/chrome/test/chromedriver/test/run_py_tests.py b/chrome/test/chromedriver/test/run_py_tests.py
-index bed0dca..2426283 100755
---- a/chrome/test/chromedriver/test/run_py_tests.py
-+++ b/chrome/test/chromedriver/test/run_py_tests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2013 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.
-diff --git a/chrome/test/chromeos/autotest/files/client/deps/chrome_test/chrome_test.py b/chrome/test/chromeos/autotest/files/client/deps/chrome_test/chrome_test.py
-index 3d3826d..77cef3d 100755
---- a/chrome/test/chromeos/autotest/files/client/deps/chrome_test/chrome_test.py
-+++ b/chrome/test/chromeos/autotest/files/client/deps/chrome_test/chrome_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/chrome/test/chromeos/autotest/files/client/deps/page_cycler_dep/page_cycler_dep.py b/chrome/test/chromeos/autotest/files/client/deps/page_cycler_dep/page_cycler_dep.py
-index f4a9c14..ff522c7 100755
---- a/chrome/test/chromeos/autotest/files/client/deps/page_cycler_dep/page_cycler_dep.py
-+++ b/chrome/test/chromeos/autotest/files/client/deps/page_cycler_dep/page_cycler_dep.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright (c) 2012 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/chrome/test/chromeos/autotest/files/client/deps/perf_data_dep/perf_data_dep.py b/chrome/test/chromeos/autotest/files/client/deps/perf_data_dep/perf_data_dep.py
-index 82c8037..d45f771 100755
---- a/chrome/test/chromeos/autotest/files/client/deps/perf_data_dep/perf_data_dep.py
-+++ b/chrome/test/chromeos/autotest/files/client/deps/perf_data_dep/perf_data_dep.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright (c) 2013 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/chrome/test/chromeos/autotest/files/client/deps/pyauto_dep/pyauto_dep.py b/chrome/test/chromeos/autotest/files/client/deps/pyauto_dep/pyauto_dep.py
-index 5a874cd..787c95f 100755
---- a/chrome/test/chromeos/autotest/files/client/deps/pyauto_dep/pyauto_dep.py
-+++ b/chrome/test/chromeos/autotest/files/client/deps/pyauto_dep/pyauto_dep.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/chrome/test/chromeos/autotest/files/client/deps/telemetry_dep/telemetry_dep.py b/chrome/test/chromeos/autotest/files/client/deps/telemetry_dep/telemetry_dep.py
-index b4b3d91..1e7ee03 100755
---- a/chrome/test/chromeos/autotest/files/client/deps/telemetry_dep/telemetry_dep.py
-+++ b/chrome/test/chromeos/autotest/files/client/deps/telemetry_dep/telemetry_dep.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright (c) 2013 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/chrome/test/chromeos/utilities/vm_setup_state.py b/chrome/test/chromeos/utilities/vm_setup_state.py
-index e513a6a..9ec4889 100755
---- a/chrome/test/chromeos/utilities/vm_setup_state.py
-+++ b/chrome/test/chromeos/utilities/vm_setup_state.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/chrome/test/mini_installer/run_mini_installer_tests.py b/chrome/test/mini_installer/run_mini_installer_tests.py
-index 4e717d6..f13f9ff 100755
---- a/chrome/test/mini_installer/run_mini_installer_tests.py
-+++ b/chrome/test/mini_installer/run_mini_installer_tests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2021 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/chrome/tools/build/appid.py b/chrome/tools/build/appid.py
-index d052bc3..6127b6c 100755
---- a/chrome/tools/build/appid.py
-+++ b/chrome/tools/build/appid.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/tools/build/mac/verify_dynamic_libraries.py b/chrome/tools/build/mac/verify_dynamic_libraries.py
-index 655151c..c389fd5 100755
---- a/chrome/tools/build/mac/verify_dynamic_libraries.py
-+++ b/chrome/tools/build/mac/verify_dynamic_libraries.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/chrome/tools/build/make_zip.py b/chrome/tools/build/make_zip.py
-index a976f29..6b3f2e7 100755
---- a/chrome/tools/build/make_zip.py
-+++ b/chrome/tools/build/make_zip.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/tools/build/sha256_file.py b/chrome/tools/build/sha256_file.py
-index e0db751..7a21fcd 100755
---- a/chrome/tools/build/sha256_file.py
-+++ b/chrome/tools/build/sha256_file.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2021 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/chrome/tools/build/win/create_installer_archive.py b/chrome/tools/build/win/create_installer_archive.py
-index 732479b..afc0e44 100755
---- a/chrome/tools/build/win/create_installer_archive.py
-+++ b/chrome/tools/build/win/create_installer_archive.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/chrome/tools/build/win/makecab.py b/chrome/tools/build/win/makecab.py
-index 29565b9..9c8031e 100755
---- a/chrome/tools/build/win/makecab.py
-+++ b/chrome/tools/build/win/makecab.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/tools/build/win/makecab_test.py b/chrome/tools/build/win/makecab_test.py
-index 782efac..1e03776 100755
---- a/chrome/tools/build/win/makecab_test.py
-+++ b/chrome/tools/build/win/makecab_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/tools/build/win/resedit.py b/chrome/tools/build/win/resedit.py
-index 723c4b0..299e7fb 100755
---- a/chrome/tools/build/win/resedit.py
-+++ b/chrome/tools/build/win/resedit.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/tools/history-viz.py b/chrome/tools/history-viz.py
-index f99dee1..6388d61 100755
---- a/chrome/tools/history-viz.py
-+++ b/chrome/tools/history-viz.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/tools/inconsistent-eol.py b/chrome/tools/inconsistent-eol.py
-index ef25245..6f14c08 100755
---- a/chrome/tools/inconsistent-eol.py
-+++ b/chrome/tools/inconsistent-eol.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/tools/test/experiment_tool_win.py b/chrome/tools/test/experiment_tool_win.py
-index 6ba0b92..34be552 100755
---- a/chrome/tools/test/experiment_tool_win.py
-+++ b/chrome/tools/test/experiment_tool_win.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/tools/webforms_aggregator.py b/chrome/tools/webforms_aggregator.py
-index 16e5273..244c751 100755
---- a/chrome/tools/webforms_aggregator.py
-+++ b/chrome/tools/webforms_aggregator.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/tools/webforms_aggregator_tests.py b/chrome/tools/webforms_aggregator_tests.py
-index 2eb26bb..62850ad 100755
---- a/chrome/tools/webforms_aggregator_tests.py
-+++ b/chrome/tools/webforms_aggregator_tests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/tools/webforms_aggregator_unittests.py b/chrome/tools/webforms_aggregator_unittests.py
-index 00ea2bd..8740c38 100755
---- a/chrome/tools/webforms_aggregator_unittests.py
-+++ b/chrome/tools/webforms_aggregator_unittests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chrome/tools/webforms_extractor.py b/chrome/tools/webforms_extractor.py
-index 1dd1d95..102386b 100755
---- a/chrome/tools/webforms_extractor.py
-+++ b/chrome/tools/webforms_extractor.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/chromeos/ime/gen_input_methods.py b/chromeos/ime/gen_input_methods.py
-index 04eaf34..2cb9808 100755
---- a/chromeos/ime/gen_input_methods.py
-+++ b/chromeos/ime/gen_input_methods.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/chromeos/tools/concat_dbus_conf_files.py b/chromeos/tools/concat_dbus_conf_files.py
-index 0ce133b..60b8627 100755
---- a/chromeos/tools/concat_dbus_conf_files.py
-+++ b/chromeos/tools/concat_dbus_conf_files.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/components/autofill/core/browser/pattern_provider/transpile_default_regex_patterns.py b/components/autofill/core/browser/pattern_provider/transpile_default_regex_patterns.py
-index 37f3950..1000750 100755
---- a/components/autofill/core/browser/pattern_provider/transpile_default_regex_patterns.py
-+++ b/components/autofill/core/browser/pattern_provider/transpile_default_regex_patterns.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/components/certificate_transparency/tools/make_ct_known_logs_list.py b/components/certificate_transparency/tools/make_ct_known_logs_list.py
-index 861f110..0813b50 100755
---- a/components/certificate_transparency/tools/make_ct_known_logs_list.py
-+++ b/components/certificate_transparency/tools/make_ct_known_logs_list.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/components/certificate_transparency/tools/make_ct_known_logs_list_unittest.py b/components/certificate_transparency/tools/make_ct_known_logs_list_unittest.py
-index db94cf4..715c281 100755
---- a/components/certificate_transparency/tools/make_ct_known_logs_list_unittest.py
-+++ b/components/certificate_transparency/tools/make_ct_known_logs_list_unittest.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/components/crash/content/tools/dmp2minidump.py b/components/crash/content/tools/dmp2minidump.py
-index fdb3207..26a68a6 100755
---- a/components/crash/content/tools/dmp2minidump.py
-+++ b/components/crash/content/tools/dmp2minidump.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2013 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.
-diff --git a/components/crash/content/tools/generate_breakpad_symbols.py b/components/crash/content/tools/generate_breakpad_symbols.py
-index ae381dd..d261b2d 100755
---- a/components/crash/content/tools/generate_breakpad_symbols.py
-+++ b/components/crash/content/tools/generate_breakpad_symbols.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2013 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.
-diff --git a/components/cronet/android/test/javaperftests/run.py b/components/cronet/android/test/javaperftests/run.py
-index eba6243..208fedc 100755
---- a/components/cronet/android/test/javaperftests/run.py
-+++ b/components/cronet/android/test/javaperftests/run.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/components/cronet/native/perftest/run.py b/components/cronet/native/perftest/run.py
-index 79f7849..435e836 100755
---- a/components/cronet/native/perftest/run.py
-+++ b/components/cronet/native/perftest/run.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/components/cronet/tools/api_static_checks.py b/components/cronet/tools/api_static_checks.py
-index 9c78434..b937352 100755
---- a/components/cronet/tools/api_static_checks.py
-+++ b/components/cronet/tools/api_static_checks.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/components/cronet/tools/api_static_checks_unittest.py b/components/cronet/tools/api_static_checks_unittest.py
-index 7f415dc..3abdd36 100755
---- a/components/cronet/tools/api_static_checks_unittest.py
-+++ b/components/cronet/tools/api_static_checks_unittest.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/components/cronet/tools/check_no_neon.py b/components/cronet/tools/check_no_neon.py
-index df419a6..f0a0c33 100755
---- a/components/cronet/tools/check_no_neon.py
-+++ b/components/cronet/tools/check_no_neon.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/components/cronet/tools/cr_cronet.py b/components/cronet/tools/cr_cronet.py
-index b3ee052..4bab086 100755
---- a/components/cronet/tools/cr_cronet.py
-+++ b/components/cronet/tools/cr_cronet.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/components/cronet/tools/generate_idl_bindings.py b/components/cronet/tools/generate_idl_bindings.py
-index 4df9c7d..5a7e598 100755
---- a/components/cronet/tools/generate_idl_bindings.py
-+++ b/components/cronet/tools/generate_idl_bindings.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2017 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/components/cronet/tools/generate_javadoc.py b/components/cronet/tools/generate_javadoc.py
-index cc878ca..ae186dd 100755
---- a/components/cronet/tools/generate_javadoc.py
-+++ b/components/cronet/tools/generate_javadoc.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2015 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/components/cronet/tools/generate_proguard_file.py b/components/cronet/tools/generate_proguard_file.py
-index edaebb0..eccbab9 100755
---- a/components/cronet/tools/generate_proguard_file.py
-+++ b/components/cronet/tools/generate_proguard_file.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2016 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/components/cronet/tools/generators/cronet_bindings_generator.py b/components/cronet/tools/generators/cronet_bindings_generator.py
-index 02cff01..5212bdf 100755
---- a/components/cronet/tools/generators/cronet_bindings_generator.py
-+++ b/components/cronet/tools/generators/cronet_bindings_generator.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2013 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.
-diff --git a/components/cronet/tools/hide_symbols.py b/components/cronet/tools/hide_symbols.py
-index 374982c..09de2cf 100755
---- a/components/cronet/tools/hide_symbols.py
-+++ b/components/cronet/tools/hide_symbols.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2017 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/components/cronet/tools/jar_src.py b/components/cronet/tools/jar_src.py
-index 67c7ddc..4df0683 100755
---- a/components/cronet/tools/jar_src.py
-+++ b/components/cronet/tools/jar_src.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2014 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/components/cronet/tools/link_dependencies.py b/components/cronet/tools/link_dependencies.py
-index 94e612e..f752730 100755
---- a/components/cronet/tools/link_dependencies.py
-+++ b/components/cronet/tools/link_dependencies.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2014 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/components/cronet/tools/package_ios.py b/components/cronet/tools/package_ios.py
-index 00a08e6..8066548 100755
---- a/components/cronet/tools/package_ios.py
-+++ b/components/cronet/tools/package_ios.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/components/cronet/tools/package_mac.py b/components/cronet/tools/package_mac.py
-index a5fcf40..55e0e86 100755
---- a/components/cronet/tools/package_mac.py
-+++ b/components/cronet/tools/package_mac.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/components/cronet/tools/perf_test_utils.py b/components/cronet/tools/perf_test_utils.py
-index b1b5d9b..c84c2fe 100755
---- a/components/cronet/tools/perf_test_utils.py
-+++ b/components/cronet/tools/perf_test_utils.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/components/cronet/tools/update_api.py b/components/cronet/tools/update_api.py
-index c725deb..ff77256 100755
---- a/components/cronet/tools/update_api.py
-+++ b/components/cronet/tools/update_api.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/components/cronet/tools_unittest.py b/components/cronet/tools_unittest.py
-index 80cd570..2cb366b 100755
---- a/components/cronet/tools_unittest.py
-+++ b/components/cronet/tools_unittest.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/components/domain_reliability/bake_in_configs.py b/components/domain_reliability/bake_in_configs.py
-index cf2e8b4..5c1feed 100755
---- a/components/domain_reliability/bake_in_configs.py
-+++ b/components/domain_reliability/bake_in_configs.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/components/module_installer/android/module_desc_java.py b/components/module_installer/android/module_desc_java.py
-index 6c74bb4..c45deb8 100755
---- a/components/module_installer/android/module_desc_java.py
-+++ b/components/module_installer/android/module_desc_java.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2019 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/components/ntp_snippets/remote/fetch.py b/components/ntp_snippets/remote/fetch.py
-index d5624c0..304b827 100755
---- a/components/ntp_snippets/remote/fetch.py
-+++ b/components/ntp_snippets/remote/fetch.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # -*- coding: utf-8 -*-
- # Copyright 2017 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-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 91c39f4..895f9b9 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
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/components/resources/protobufs/binary_proto_generator.py b/components/resources/protobufs/binary_proto_generator.py
-index 5daee77..e947c16 100755
---- a/components/resources/protobufs/binary_proto_generator.py
-+++ b/components/resources/protobufs/binary_proto_generator.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/components/safe_browsing/content/resources/push_file_type_proto.py b/components/safe_browsing/content/resources/push_file_type_proto.py
-index 9769b4e..4caafca 100755
---- a/components/safe_browsing/content/resources/push_file_type_proto.py
-+++ b/components/safe_browsing/content/resources/push_file_type_proto.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/components/sync/PRESUBMIT_test.py b/components/sync/PRESUBMIT_test.py
-index feb8ffc..7f4897e 100755
---- a/components/sync/PRESUBMIT_test.py
-+++ b/components/sync/PRESUBMIT_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/components/url_formatter/spoof_checks/top_domains/make_alexa_top_list.py b/components/url_formatter/spoof_checks/top_domains/make_alexa_top_list.py
-index 8f79fc7..126bb45 100755
---- a/components/url_formatter/spoof_checks/top_domains/make_alexa_top_list.py
-+++ b/components/url_formatter/spoof_checks/top_domains/make_alexa_top_list.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/components/variations/service/generate_ui_string_overrider.py b/components/variations/service/generate_ui_string_overrider.py
-index bcf33dc..ac1f719 100755
---- a/components/variations/service/generate_ui_string_overrider.py
-+++ b/components/variations/service/generate_ui_string_overrider.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/components/variations/service/generate_ui_string_overrider_unittest.py b/components/variations/service/generate_ui_string_overrider_unittest.py
-index 4a3fd3f..b1d72a1 100755
---- a/components/variations/service/generate_ui_string_overrider_unittest.py
-+++ b/components/variations/service/generate_ui_string_overrider_unittest.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/components/viz/service/display/process_renderer_perftest_results.py b/components/viz/service/display/process_renderer_perftest_results.py
-index 588dece..ccc8882 100755
---- a/components/viz/service/display/process_renderer_perftest_results.py
-+++ b/components/viz/service/display/process_renderer_perftest_results.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/components/zucchini/fuzzers/create_seed_file_pair.py b/components/zucchini/fuzzers/create_seed_file_pair.py
-index db3843f..8663f2b 100755
---- a/components/zucchini/fuzzers/create_seed_file_pair.py
-+++ b/components/zucchini/fuzzers/create_seed_file_pair.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/components/zucchini/fuzzers/generate_fuzzer_data.py b/components/zucchini/fuzzers/generate_fuzzer_data.py
-index c76cfbc..93f22f6 100755
---- a/components/zucchini/fuzzers/generate_fuzzer_data.py
-+++ b/components/zucchini/fuzzers/generate_fuzzer_data.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/content/public/android/generate_child_service.py b/content/public/android/generate_child_service.py
-index 050bf82..5d62b2f 100755
---- a/content/public/android/generate_child_service.py
-+++ b/content/public/android/generate_child_service.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2018 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/content/renderer/PRESUBMIT_test.py b/content/renderer/PRESUBMIT_test.py
-index 691c024..229ec32 100755
---- a/content/renderer/PRESUBMIT_test.py
-+++ b/content/renderer/PRESUBMIT_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/content/shell/tools/breakpad_integration_test.py b/content/shell/tools/breakpad_integration_test.py
-index c245701..7201e73 100755
---- a/content/shell/tools/breakpad_integration_test.py
-+++ b/content/shell/tools/breakpad_integration_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2014 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/content/test/gpu/gather_power_measurement_results.py b/content/test/gpu/gather_power_measurement_results.py
-index 60d4f9f..c78f57b 100755
---- a/content/test/gpu/gather_power_measurement_results.py
-+++ b/content/test/gpu/gather_power_measurement_results.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/content/test/gpu/gather_swarming_json_results.py b/content/test/gpu/gather_swarming_json_results.py
-index 77798df..0943967 100755
---- a/content/test/gpu/gather_swarming_json_results.py
-+++ b/content/test/gpu/gather_swarming_json_results.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/content/test/gpu/power_measurement_results/analyze_power_measurement_results.py b/content/test/gpu/power_measurement_results/analyze_power_measurement_results.py
-index 5fb67cd..fb7dee2 100755
---- a/content/test/gpu/power_measurement_results/analyze_power_measurement_results.py
-+++ b/content/test/gpu/power_measurement_results/analyze_power_measurement_results.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/docs/cipd_and_3pp.md b/docs/cipd_and_3pp.md
-index 339f6a3..3c25219 100644
---- a/docs/cipd_and_3pp.md
-+++ b/docs/cipd_and_3pp.md
-@@ -221,7 +221,7 @@ script to probe for the latest version and obtain the latest sources. A simple
- example can be like the following:
- 
- ```
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2021 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/docs/enterprise/extension_query.py b/docs/enterprise/extension_query.py
-index 41c9262..6020b5b 100755
---- a/docs/enterprise/extension_query.py
-+++ b/docs/enterprise/extension_query.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/docs/enterprise/extension_query_py2.py b/docs/enterprise/extension_query_py2.py
-index 597a564..df645c7 100755
---- a/docs/enterprise/extension_query_py2.py
-+++ b/docs/enterprise/extension_query_py2.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/docs/python3_migration.md b/docs/python3_migration.md
-index 65aea89..cf8dcaa 100644
---- a/docs/python3_migration.md
-+++ b/docs/python3_migration.md
-@@ -58,7 +58,7 @@ However, here are a few notes that may be helpful in a Chromium context:
-   is available in vpython and in `//third_party/six/src/six.py`.
- 
- * shebang lines mostly don't matter. A "shebang line" is the line at the
--  beginning of many unix scripts, like `#!/usr/bin/env python`. They are
-+  beginning of many unix scripts, like `#!/usr/bin/env python2`. They are
-   not that important for us because most of our python invocations come
-   from tools like Ninja or Swarming and invoke python directly. So, while
-   you should keep them accurate where they are useful, we can't rely
-diff --git a/docs/win_cross.md b/docs/win_cross.md
-index bc6d9e0..5c132eb 100644
---- a/docs/win_cross.md
-+++ b/docs/win_cross.md
-@@ -76,7 +76,7 @@ setting `DEPOT_TOOLS_WIN_TOOLCHAIN_BASE_URL` and running `gclient sync`:
-     gclient sync
-     ...
-     Running hooks:  17% (11/64) win_toolchain
--    ________ running '/usr/bin/python src/build/vs_toolchain.py update --force' in <chromium dir>
-+    ________ running '/usr/bin/python2 src/build/vs_toolchain.py update --force' in <chromium dir>
-     Windows toolchain out of date or doesn't exist, updating (Pro)...
-     current_hashes:
-     desired_hash: <toolchain hash>
-diff --git a/extensions/common/api/externs_checker_test.py b/extensions/common/api/externs_checker_test.py
-index a28deaf..c1f3f2a 100755
---- a/extensions/common/api/externs_checker_test.py
-+++ b/extensions/common/api/externs_checker_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/google_apis/build/check_internal.py b/google_apis/build/check_internal.py
-index 89514c5..e721f6f 100755
---- a/google_apis/build/check_internal.py
-+++ b/google_apis/build/check_internal.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/google_apis/google_api_keys.py b/google_apis/google_api_keys.py
-index 664169b..d9d2fd8 100755
---- a/google_apis/google_api_keys.py
-+++ b/google_apis/google_api_keys.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py
-index 4d2936d..dceff73 100755
---- a/gpu/command_buffer/build_gles2_cmd_buffer.py
-+++ b/gpu/command_buffer/build_gles2_cmd_buffer.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/gpu/command_buffer/build_raster_cmd_buffer.py b/gpu/command_buffer/build_raster_cmd_buffer.py
-index f0832ff..463571c 100755
---- a/gpu/command_buffer/build_raster_cmd_buffer.py
-+++ b/gpu/command_buffer/build_raster_cmd_buffer.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/gpu/command_buffer/build_webgpu_cmd_buffer.py b/gpu/command_buffer/build_webgpu_cmd_buffer.py
-index 07b6c8e..f8bb073 100755
---- a/gpu/command_buffer/build_webgpu_cmd_buffer.py
-+++ b/gpu/command_buffer/build_webgpu_cmd_buffer.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/gpu/config/build_workaround_header.py b/gpu/config/build_workaround_header.py
-index b855832..abb1e96 100755
---- a/gpu/config/build_workaround_header.py
-+++ b/gpu/config/build_workaround_header.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/gpu/config/process_json.py b/gpu/config/process_json.py
-index b08ae8d..c98fb2f 100755
---- a/gpu/config/process_json.py
-+++ b/gpu/config/process_json.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/gpu/gles2_conform_support/generate_gles2_conform_tests.py b/gpu/gles2_conform_support/generate_gles2_conform_tests.py
-index c29407c..ba638f9 100755
---- a/gpu/gles2_conform_support/generate_gles2_conform_tests.py
-+++ b/gpu/gles2_conform_support/generate_gles2_conform_tests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2013 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.
-diff --git a/gpu/gles2_conform_support/generate_gles2_embedded_data.py b/gpu/gles2_conform_support/generate_gles2_embedded_data.py
-index d8eb08f..7ab52dd 100755
---- a/gpu/gles2_conform_support/generate_gles2_embedded_data.py
-+++ b/gpu/gles2_conform_support/generate_gles2_embedded_data.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2013 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.
-diff --git a/gpu/ipc/common/generate_vulkan_types.py b/gpu/ipc/common/generate_vulkan_types.py
-index 00b0b8b..65b4f4a 100755
---- a/gpu/ipc/common/generate_vulkan_types.py
-+++ b/gpu/ipc/common/generate_vulkan_types.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/gpu/khronos_glcts_support/generate_khronos_glcts_tests.py b/gpu/khronos_glcts_support/generate_khronos_glcts_tests.py
-index b553794..09e9358 100755
---- a/gpu/khronos_glcts_support/generate_khronos_glcts_tests.py
-+++ b/gpu/khronos_glcts_support/generate_khronos_glcts_tests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/headless/lib/browser/devtools_api/client_api_generator_unittest.py b/headless/lib/browser/devtools_api/client_api_generator_unittest.py
-index 9e1ca65..85e2a8c 100755
---- a/headless/lib/browser/devtools_api/client_api_generator_unittest.py
-+++ b/headless/lib/browser/devtools_api/client_api_generator_unittest.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2016 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/infra/config/lint-luci-milo.py b/infra/config/lint-luci-milo.py
-index a91c6f3..cea047f 100755
---- a/infra/config/lint-luci-milo.py
-+++ b/infra/config/lint-luci-milo.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/infra/scripts/sizes.py b/infra/scripts/sizes.py
-index 01180fa..e37c8b4 100755
---- a/infra/scripts/sizes.py
-+++ b/infra/scripts/sizes.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/media/PRESUBMIT_test.py b/media/PRESUBMIT_test.py
-index 80eabff..fe2d76e 100755
---- a/media/PRESUBMIT_test.py
-+++ b/media/PRESUBMIT_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/media/cast/test/utility/netload.py b/media/cast/test/utility/netload.py
-index 248eca2..4cdf72c 100755
---- a/media/cast/test/utility/netload.py
-+++ b/media/cast/test/utility/netload.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/media/tools/constrained_network_server/cn.py b/media/tools/constrained_network_server/cn.py
-index fe5781c..40306cc 100755
---- a/media/tools/constrained_network_server/cn.py
-+++ b/media/tools/constrained_network_server/cn.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/media/tools/constrained_network_server/cns.py b/media/tools/constrained_network_server/cns.py
-index d039d8e..a45b4e3 100755
---- a/media/tools/constrained_network_server/cns.py
-+++ b/media/tools/constrained_network_server/cns.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/media/tools/constrained_network_server/traffic_control_test.py b/media/tools/constrained_network_server/traffic_control_test.py
-index d641253..dc25433 100755
---- a/media/tools/constrained_network_server/traffic_control_test.py
-+++ b/media/tools/constrained_network_server/traffic_control_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright (c) 2012 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/media/tools/constrained_network_server/traffic_control_unittest.py b/media/tools/constrained_network_server/traffic_control_unittest.py
-index a6781e9..8ed4a40 100755
---- a/media/tools/constrained_network_server/traffic_control_unittest.py
-+++ b/media/tools/constrained_network_server/traffic_control_unittest.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright (c) 2012 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/mojo/public/cpp/bindings/tests/generate_test_mojom.py b/mojo/public/cpp/bindings/tests/generate_test_mojom.py
-index 22929f3..a93c077 100755
---- a/mojo/public/cpp/bindings/tests/generate_test_mojom.py
-+++ b/mojo/public/cpp/bindings/tests/generate_test_mojom.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/mojo/public/tools/bindings/concatenate-files.py b/mojo/public/tools/bindings/concatenate-files.py
-index 48bc66f..f713548 100755
---- a/mojo/public/tools/bindings/concatenate-files.py
-+++ b/mojo/public/tools/bindings/concatenate-files.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/mojo/public/tools/bindings/concatenate_and_replace_closure_exports.py b/mojo/public/tools/bindings/concatenate_and_replace_closure_exports.py
-index be8985c..efe734e 100755
---- a/mojo/public/tools/bindings/concatenate_and_replace_closure_exports.py
-+++ b/mojo/public/tools/bindings/concatenate_and_replace_closure_exports.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/mojo/public/tools/bindings/generate_type_mappings.py b/mojo/public/tools/bindings/generate_type_mappings.py
-index 5eaad1e..e2bb70b 100755
---- a/mojo/public/tools/bindings/generate_type_mappings.py
-+++ b/mojo/public/tools/bindings/generate_type_mappings.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/mojo/public/tools/bindings/mojom_bindings_generator.py b/mojo/public/tools/bindings/mojom_bindings_generator.py
-index da9efc7..8e27b33 100755
---- a/mojo/public/tools/bindings/mojom_bindings_generator.py
-+++ b/mojo/public/tools/bindings/mojom_bindings_generator.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2013 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.
-diff --git a/mojo/public/tools/bindings/mojom_types_downgrader.py b/mojo/public/tools/bindings/mojom_types_downgrader.py
-index 15f0e3b..87ea5f4 100755
---- a/mojo/public/tools/bindings/mojom_types_downgrader.py
-+++ b/mojo/public/tools/bindings/mojom_types_downgrader.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/mojo/public/tools/bindings/validate_typemap_config.py b/mojo/public/tools/bindings/validate_typemap_config.py
-index 4cb714a..310948e 100755
---- a/mojo/public/tools/bindings/validate_typemap_config.py
-+++ b/mojo/public/tools/bindings/validate_typemap_config.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/mojo/public/tools/mojom/check_stable_mojom_compatibility.py b/mojo/public/tools/mojom/check_stable_mojom_compatibility.py
-index 08bd672..d8fd0f4 100755
---- a/mojo/public/tools/mojom/check_stable_mojom_compatibility.py
-+++ b/mojo/public/tools/mojom/check_stable_mojom_compatibility.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/mojo/public/tools/mojom/check_stable_mojom_compatibility_unittest.py b/mojo/public/tools/mojom/check_stable_mojom_compatibility_unittest.py
-index 9f51ea7..e80a297 100755
---- a/mojo/public/tools/mojom/check_stable_mojom_compatibility_unittest.py
-+++ b/mojo/public/tools/mojom/check_stable_mojom_compatibility_unittest.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/mojo/public/tools/mojom/mojom_parser.py b/mojo/public/tools/mojom/mojom_parser.py
-index 07a7ba5..b41c848 100755
---- a/mojo/public/tools/mojom/mojom_parser.py
-+++ b/mojo/public/tools/mojom/mojom_parser.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/mojo/public/tools/run_all_python_unittests.py b/mojo/public/tools/run_all_python_unittests.py
-index b201095..0cc9d9e 100755
---- a/mojo/public/tools/run_all_python_unittests.py
-+++ b/mojo/public/tools/run_all_python_unittests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/net/android/tools/proxy_test_cases.py b/net/android/tools/proxy_test_cases.py
-index ab93f67..f201df6 100755
---- a/net/android/tools/proxy_test_cases.py
-+++ b/net/android/tools/proxy_test_cases.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/net/data/cert_issuer_source_aia_unittest/generate-certs.py b/net/data/cert_issuer_source_aia_unittest/generate-certs.py
-index 011e2d0..1ba0a6d 100755
---- a/net/data/cert_issuer_source_aia_unittest/generate-certs.py
-+++ b/net/data/cert_issuer_source_aia_unittest/generate-certs.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/net/data/cert_issuer_source_static_unittest/generate-certs.py b/net/data/cert_issuer_source_static_unittest/generate-certs.py
-index ebed89d..b4a2baf 100755
---- a/net/data/cert_issuer_source_static_unittest/generate-certs.py
-+++ b/net/data/cert_issuer_source_static_unittest/generate-certs.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/net/data/certificate_policies_unittest/generate_policies.py b/net/data/certificate_policies_unittest/generate_policies.py
-index 20232e4..8de11d8 100755
---- a/net/data/certificate_policies_unittest/generate_policies.py
-+++ b/net/data/certificate_policies_unittest/generate_policies.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/net/data/crl_unittest/generate_crl_test_data.py b/net/data/crl_unittest/generate_crl_test_data.py
-index 484b7e0..c26527f 100755
---- a/net/data/crl_unittest/generate_crl_test_data.py
-+++ b/net/data/crl_unittest/generate_crl_test_data.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/net/data/gencerts/__init__.py b/net/data/gencerts/__init__.py
-index e065a3c..62306c8 100755
---- a/net/data/gencerts/__init__.py
-+++ b/net/data/gencerts/__init__.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/gencerts/openssl_conf.py b/net/data/gencerts/openssl_conf.py
-index 75db467..8f8556d 100755
---- a/net/data/gencerts/openssl_conf.py
-+++ b/net/data/gencerts/openssl_conf.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/name_constraints_unittest/generate_name_constraints.py b/net/data/name_constraints_unittest/generate_name_constraints.py
-index 5d231e4..10a0835 100755
---- a/net/data/name_constraints_unittest/generate_name_constraints.py
-+++ b/net/data/name_constraints_unittest/generate_name_constraints.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/net/data/ocsp_unittest/annotate_test_data.py b/net/data/ocsp_unittest/annotate_test_data.py
-index 9574980..0e4fef9 100755
---- a/net/data/ocsp_unittest/annotate_test_data.py
-+++ b/net/data/ocsp_unittest/annotate_test_data.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/ocsp_unittest/make_ocsp.py b/net/data/ocsp_unittest/make_ocsp.py
-index 974cbc1..1b03aee 100755
---- a/net/data/ocsp_unittest/make_ocsp.py
-+++ b/net/data/ocsp_unittest/make_ocsp.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/ov_name_constraints/generate-certs.py b/net/data/ov_name_constraints/generate-certs.py
-index a015ced..3ea1ba3 100755
---- a/net/data/ov_name_constraints/generate-certs.py
-+++ b/net/data/ov_name_constraints/generate-certs.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/net/data/parse_certificate_unittest/authority_key_identifier/generate.py b/net/data/parse_certificate_unittest/authority_key_identifier/generate.py
-index 63e5c1f..516463a 100755
---- a/net/data/parse_certificate_unittest/authority_key_identifier/generate.py
-+++ b/net/data/parse_certificate_unittest/authority_key_identifier/generate.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/net/data/parse_certificate_unittest/rebase-errors.py b/net/data/parse_certificate_unittest/rebase-errors.py
-index 9ed100e..304e045 100755
---- a/net/data/parse_certificate_unittest/rebase-errors.py
-+++ b/net/data/parse_certificate_unittest/rebase-errors.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/parse_certificate_unittest/regenerate_pem_from_ascii.py b/net/data/parse_certificate_unittest/regenerate_pem_from_ascii.py
-index bf02f4e..c5571b6 100755
---- a/net/data/parse_certificate_unittest/regenerate_pem_from_ascii.py
-+++ b/net/data/parse_certificate_unittest/regenerate_pem_from_ascii.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/path_builder_unittest/key_id_name_and_serial_prioritization/generate-certs.py b/net/data/path_builder_unittest/key_id_name_and_serial_prioritization/generate-certs.py
-index f82b08d..55ba81f 100755
---- a/net/data/path_builder_unittest/key_id_name_and_serial_prioritization/generate-certs.py
-+++ b/net/data/path_builder_unittest/key_id_name_and_serial_prioritization/generate-certs.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/net/data/path_builder_unittest/key_id_prioritization/generate-certs.py b/net/data/path_builder_unittest/key_id_prioritization/generate-certs.py
-index e99688e..f77e0b3 100755
---- a/net/data/path_builder_unittest/key_id_prioritization/generate-certs.py
-+++ b/net/data/path_builder_unittest/key_id_prioritization/generate-certs.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/net/data/path_builder_unittest/validity_date_prioritization/generate-certs.py b/net/data/path_builder_unittest/validity_date_prioritization/generate-certs.py
-index 4c8219b..52aaac9 100755
---- a/net/data/path_builder_unittest/validity_date_prioritization/generate-certs.py
-+++ b/net/data/path_builder_unittest/validity_date_prioritization/generate-certs.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/ssl/root_stores/update_root_stores.py b/net/data/ssl/root_stores/update_root_stores.py
-index 8aca424..34d52f3 100755
---- a/net/data/ssl/root_stores/update_root_stores.py
-+++ b/net/data/ssl/root_stores/update_root_stores.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/net/data/ssl/scripts/crlsetutil.py b/net/data/ssl/scripts/crlsetutil.py
-index 815fa9c..855ab60 100755
---- a/net/data/ssl/scripts/crlsetutil.py
-+++ b/net/data/ssl/scripts/crlsetutil.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/trial_comparison_cert_verifier_unittest/target-multiple-policies/generate-chains.py b/net/data/trial_comparison_cert_verifier_unittest/target-multiple-policies/generate-chains.py
-index 64dd8a3..1f3b4ec 100755
---- a/net/data/trial_comparison_cert_verifier_unittest/target-multiple-policies/generate-chains.py
-+++ b/net/data/trial_comparison_cert_verifier_unittest/target-multiple-policies/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/basic-constraints-pathlen-0-self-issued/generate-chains.py b/net/data/verify_certificate_chain_unittest/basic-constraints-pathlen-0-self-issued/generate-chains.py
-index 872b884..b1f6a33 100755
---- a/net/data/verify_certificate_chain_unittest/basic-constraints-pathlen-0-self-issued/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/basic-constraints-pathlen-0-self-issued/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/expired-intermediate/generate-chains.py b/net/data/verify_certificate_chain_unittest/expired-intermediate/generate-chains.py
-index 85f0bf2..746a303 100755
---- a/net/data/verify_certificate_chain_unittest/expired-intermediate/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/expired-intermediate/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/expired-root/generate-chains.py b/net/data/verify_certificate_chain_unittest/expired-root/generate-chains.py
-index d09de6a..a637e80 100755
---- a/net/data/verify_certificate_chain_unittest/expired-root/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/expired-root/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/expired-target/generate-chains.py b/net/data/verify_certificate_chain_unittest/expired-target/generate-chains.py
-index 33ae072..9e002b2 100755
---- a/net/data/verify_certificate_chain_unittest/expired-target/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/expired-target/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/incorrect-trust-anchor/generate-chains.py b/net/data/verify_certificate_chain_unittest/incorrect-trust-anchor/generate-chains.py
-index b471fdd..b6560fd 100755
---- a/net/data/verify_certificate_chain_unittest/incorrect-trust-anchor/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/incorrect-trust-anchor/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/intermediate-and-target-wrong-signature/generate-chains.py b/net/data/verify_certificate_chain_unittest/intermediate-and-target-wrong-signature/generate-chains.py
-index bf91da2..6722212 100755
---- a/net/data/verify_certificate_chain_unittest/intermediate-and-target-wrong-signature/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/intermediate-and-target-wrong-signature/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/net/data/verify_certificate_chain_unittest/intermediate-basic-constraints-ca-false/generate-chains.py b/net/data/verify_certificate_chain_unittest/intermediate-basic-constraints-ca-false/generate-chains.py
-index efb1860..fddd9cd 100755
---- a/net/data/verify_certificate_chain_unittest/intermediate-basic-constraints-ca-false/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/intermediate-basic-constraints-ca-false/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/intermediate-basic-constraints-not-critical/generate-chains.py b/net/data/verify_certificate_chain_unittest/intermediate-basic-constraints-not-critical/generate-chains.py
-index ee7101d..86a9a73 100755
---- a/net/data/verify_certificate_chain_unittest/intermediate-basic-constraints-not-critical/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/intermediate-basic-constraints-not-critical/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/generate-chains.py b/net/data/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/generate-chains.py
-index 4c41122..f5c3049 100755
---- a/net/data/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/intermediate-eku-any-and-clientauth/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/intermediate-eku-clientauth/generate-chains.py b/net/data/verify_certificate_chain_unittest/intermediate-eku-clientauth/generate-chains.py
-index 937ffee..f7fef0b 100755
---- a/net/data/verify_certificate_chain_unittest/intermediate-eku-clientauth/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/intermediate-eku-clientauth/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/generate-chains.py b/net/data/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/generate-chains.py
-index fb42bca..1e625df 100755
---- a/net/data/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/intermediate-eku-server-gated-crypto/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/intermediate-lacks-basic-constraints/generate-chains.py b/net/data/verify_certificate_chain_unittest/intermediate-lacks-basic-constraints/generate-chains.py
-index d11db5e..dba5c0b 100755
---- a/net/data/verify_certificate_chain_unittest/intermediate-lacks-basic-constraints/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/intermediate-lacks-basic-constraints/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/intermediate-lacks-signing-key-usage/generate-chains.py b/net/data/verify_certificate_chain_unittest/intermediate-lacks-signing-key-usage/generate-chains.py
-index 078ec16..6dd73ab 100755
---- a/net/data/verify_certificate_chain_unittest/intermediate-lacks-signing-key-usage/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/intermediate-lacks-signing-key-usage/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/intermediate-signed-with-md5/generate-chains.py b/net/data/verify_certificate_chain_unittest/intermediate-signed-with-md5/generate-chains.py
-index cb34198..75860d5 100755
---- a/net/data/verify_certificate_chain_unittest/intermediate-signed-with-md5/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/intermediate-signed-with-md5/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/intermediate-unknown-critical-extension/generate-chains.py b/net/data/verify_certificate_chain_unittest/intermediate-unknown-critical-extension/generate-chains.py
-index 6a5ff65..257032f 100755
---- a/net/data/verify_certificate_chain_unittest/intermediate-unknown-critical-extension/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/intermediate-unknown-critical-extension/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/intermediate-unknown-non-critical-extension/generate-chains.py b/net/data/verify_certificate_chain_unittest/intermediate-unknown-non-critical-extension/generate-chains.py
-index 1ebea33..58e4cbc 100755
---- a/net/data/verify_certificate_chain_unittest/intermediate-unknown-non-critical-extension/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/intermediate-unknown-non-critical-extension/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/intermediate-wrong-signature-no-authority-key-identifier/generate-chains.py b/net/data/verify_certificate_chain_unittest/intermediate-wrong-signature-no-authority-key-identifier/generate-chains.py
-index 8a6a55e..37d4342 100755
---- a/net/data/verify_certificate_chain_unittest/intermediate-wrong-signature-no-authority-key-identifier/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/intermediate-wrong-signature-no-authority-key-identifier/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/net/data/verify_certificate_chain_unittest/key-rollover/generate-chains.py b/net/data/verify_certificate_chain_unittest/key-rollover/generate-chains.py
-index 118e7b8..5b532f2 100755
---- a/net/data/verify_certificate_chain_unittest/key-rollover/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/key-rollover/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/many-names/generate-chains.py b/net/data/verify_certificate_chain_unittest/many-names/generate-chains.py
-index 4c55a8f..fe6bbd5 100755
---- a/net/data/verify_certificate_chain_unittest/many-names/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/many-names/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/net/data/verify_certificate_chain_unittest/non-self-signed-root/generate-chains.py b/net/data/verify_certificate_chain_unittest/non-self-signed-root/generate-chains.py
-index 9a5c873..9b6c24e 100755
---- a/net/data/verify_certificate_chain_unittest/non-self-signed-root/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/non-self-signed-root/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/rebase-errors.py b/net/data/verify_certificate_chain_unittest/rebase-errors.py
-index 5c24425..eda1a46 100755
---- a/net/data/verify_certificate_chain_unittest/rebase-errors.py
-+++ b/net/data/verify_certificate_chain_unittest/rebase-errors.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/root-basic-constraints-ca-false/generate-chains.py b/net/data/verify_certificate_chain_unittest/root-basic-constraints-ca-false/generate-chains.py
-index 97e3166..a223696 100755
---- a/net/data/verify_certificate_chain_unittest/root-basic-constraints-ca-false/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/root-basic-constraints-ca-false/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/root-eku-clientauth/generate-chains.py b/net/data/verify_certificate_chain_unittest/root-eku-clientauth/generate-chains.py
-index 6811f47..16a9206 100755
---- a/net/data/verify_certificate_chain_unittest/root-eku-clientauth/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/root-eku-clientauth/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/root-lacks-basic-constraints/generate-chains.py b/net/data/verify_certificate_chain_unittest/root-lacks-basic-constraints/generate-chains.py
-index ec4e1ef..c839c09 100755
---- a/net/data/verify_certificate_chain_unittest/root-lacks-basic-constraints/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/root-lacks-basic-constraints/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/target-and-intermediate/generate-chains.py b/net/data/verify_certificate_chain_unittest/target-and-intermediate/generate-chains.py
-index 98b21cb..c9bb9c8 100755
---- a/net/data/verify_certificate_chain_unittest/target-and-intermediate/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/target-and-intermediate/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/target-eku-clientauth/generate-chains.py b/net/data/verify_certificate_chain_unittest/target-eku-clientauth/generate-chains.py
-index 32fab69..88bfbdc 100755
---- a/net/data/verify_certificate_chain_unittest/target-eku-clientauth/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/target-eku-clientauth/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/target-eku-none/generate-chains.py b/net/data/verify_certificate_chain_unittest/target-eku-none/generate-chains.py
-index a0178ff..a220c42 100755
---- a/net/data/verify_certificate_chain_unittest/target-eku-none/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/target-eku-none/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/target-has-512bit-rsa-key/generate-chains.py b/net/data/verify_certificate_chain_unittest/target-has-512bit-rsa-key/generate-chains.py
-index 2c3c5b4..2318eea 100755
---- a/net/data/verify_certificate_chain_unittest/target-has-512bit-rsa-key/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/target-has-512bit-rsa-key/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/target-has-keycertsign-but-not-ca/generate-chains.py b/net/data/verify_certificate_chain_unittest/target-has-keycertsign-but-not-ca/generate-chains.py
-index 2f46e4f..525c156 100755
---- a/net/data/verify_certificate_chain_unittest/target-has-keycertsign-but-not-ca/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/target-has-keycertsign-but-not-ca/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/target-has-pathlen-but-not-ca/generate-chains.py b/net/data/verify_certificate_chain_unittest/target-has-pathlen-but-not-ca/generate-chains.py
-index 7ee1abd..aacc875 100755
---- a/net/data/verify_certificate_chain_unittest/target-has-pathlen-but-not-ca/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/target-has-pathlen-but-not-ca/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/target-not-end-entity/generate-chains.py b/net/data/verify_certificate_chain_unittest/target-not-end-entity/generate-chains.py
-index dea624f..9e78f32 100755
---- a/net/data/verify_certificate_chain_unittest/target-not-end-entity/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/target-not-end-entity/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/target-serverauth-various-keyusages/generate-chains.py b/net/data/verify_certificate_chain_unittest/target-serverauth-various-keyusages/generate-chains.py
-index 255e451..e3fc798 100755
---- a/net/data/verify_certificate_chain_unittest/target-serverauth-various-keyusages/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/target-serverauth-various-keyusages/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/target-signed-by-512bit-rsa/generate-chains.py b/net/data/verify_certificate_chain_unittest/target-signed-by-512bit-rsa/generate-chains.py
-index b51bb34..225a536 100755
---- a/net/data/verify_certificate_chain_unittest/target-signed-by-512bit-rsa/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/target-signed-by-512bit-rsa/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/target-signed-using-ecdsa/generate-chains.py b/net/data/verify_certificate_chain_unittest/target-signed-using-ecdsa/generate-chains.py
-index 7674755..27bc2a2 100755
---- a/net/data/verify_certificate_chain_unittest/target-signed-using-ecdsa/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/target-signed-using-ecdsa/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/target-signed-with-md5/generate-chains.py b/net/data/verify_certificate_chain_unittest/target-signed-with-md5/generate-chains.py
-index af5297e..64e30dc 100755
---- a/net/data/verify_certificate_chain_unittest/target-signed-with-md5/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/target-signed-with-md5/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/target-unknown-critical-extension/generate-chains.py b/net/data/verify_certificate_chain_unittest/target-unknown-critical-extension/generate-chains.py
-index ed66012..a9c4143 100755
---- a/net/data/verify_certificate_chain_unittest/target-unknown-critical-extension/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/target-unknown-critical-extension/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/target-wrong-signature-no-authority-key-identifier/generate-chains.py b/net/data/verify_certificate_chain_unittest/target-wrong-signature-no-authority-key-identifier/generate-chains.py
-index 4cbffc5..ac789d5 100755
---- a/net/data/verify_certificate_chain_unittest/target-wrong-signature-no-authority-key-identifier/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/target-wrong-signature-no-authority-key-identifier/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/net/data/verify_certificate_chain_unittest/target-wrong-signature/generate-chains.py b/net/data/verify_certificate_chain_unittest/target-wrong-signature/generate-chains.py
-index 1788b7f..c5c7a3f 100755
---- a/net/data/verify_certificate_chain_unittest/target-wrong-signature/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/target-wrong-signature/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/unknown-critical-policy-qualifier/generate-chains.py b/net/data/verify_certificate_chain_unittest/unknown-critical-policy-qualifier/generate-chains.py
-index 109e97f..bec02e2 100755
---- a/net/data/verify_certificate_chain_unittest/unknown-critical-policy-qualifier/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/unknown-critical-policy-qualifier/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/unknown-non-critical-policy-qualifier/generate-chains.py b/net/data/verify_certificate_chain_unittest/unknown-non-critical-policy-qualifier/generate-chains.py
-index 777dab2..dcee39d 100755
---- a/net/data/verify_certificate_chain_unittest/unknown-non-critical-policy-qualifier/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/unknown-non-critical-policy-qualifier/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/violates-basic-constraints-pathlen-0/generate-chains.py b/net/data/verify_certificate_chain_unittest/violates-basic-constraints-pathlen-0/generate-chains.py
-index 7a238b2..e9795d8 100755
---- a/net/data/verify_certificate_chain_unittest/violates-basic-constraints-pathlen-0/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/violates-basic-constraints-pathlen-0/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_certificate_chain_unittest/violates-pathlen-1-from-root/generate-chains.py b/net/data/verify_certificate_chain_unittest/violates-pathlen-1-from-root/generate-chains.py
-index 2f88c06..9578496 100755
---- a/net/data/verify_certificate_chain_unittest/violates-pathlen-1-from-root/generate-chains.py
-+++ b/net/data/verify_certificate_chain_unittest/violates-pathlen-1-from-root/generate-chains.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/data/verify_name_match_unittest/scripts/generate_names.py b/net/data/verify_name_match_unittest/scripts/generate_names.py
-index ed509ce..aba6143 100755
---- a/net/data/verify_name_match_unittest/scripts/generate_names.py
-+++ b/net/data/verify_name_match_unittest/scripts/generate_names.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/net/data/verify_signed_data_unittest/annotate_test_data.py b/net/data/verify_signed_data_unittest/annotate_test_data.py
-index 3d99e45..6c13ac3 100755
---- a/net/data/verify_signed_data_unittest/annotate_test_data.py
-+++ b/net/data/verify_signed_data_unittest/annotate_test_data.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/net/docs/generate-dot-to-png.py b/net/docs/generate-dot-to-png.py
-index efde378..fcf1042 100755
---- a/net/docs/generate-dot-to-png.py
-+++ b/net/docs/generate-dot-to-png.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/net/tools/build_hpack_constants.py b/net/tools/build_hpack_constants.py
-index 3111078..e91eb88 100755
---- a/net/tools/build_hpack_constants.py
-+++ b/net/tools/build_hpack_constants.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2014 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/net/tools/dafsa/make_dafsa.py b/net/tools/dafsa/make_dafsa.py
-index 0461f09..f97056e 100755
---- a/net/tools/dafsa/make_dafsa.py
-+++ b/net/tools/dafsa/make_dafsa.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/net/tools/dafsa/make_dafsa_unittest.py b/net/tools/dafsa/make_dafsa_unittest.py
-index b3519cf..911444d 100755
---- a/net/tools/dafsa/make_dafsa_unittest.py
-+++ b/net/tools/dafsa/make_dafsa_unittest.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/net/tools/net_docs/net_docs.py b/net/tools/net_docs/net_docs.py
-index 2dd30de..7747651 100755
---- a/net/tools/net_docs/net_docs.py
-+++ b/net/tools/net_docs/net_docs.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/net/tools/print_certificates.py b/net/tools/print_certificates.py
-index d033841..8cac062 100755
---- a/net/tools/print_certificates.py
-+++ b/net/tools/print_certificates.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/net/tools/quic/benchmark/run_client.py b/net/tools/quic/benchmark/run_client.py
-index 7df37ab..fe20e28 100755
---- a/net/tools/quic/benchmark/run_client.py
-+++ b/net/tools/quic/benchmark/run_client.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2013 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/net/tools/stitch_net_log_files.py b/net/tools/stitch_net_log_files.py
-index d81d792..1df4b26 100755
---- a/net/tools/stitch_net_log_files.py
-+++ b/net/tools/stitch_net_log_files.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/net/tools/testserver/backoff_server.py b/net/tools/testserver/backoff_server.py
-index ca2c57c..f2f5769 100755
---- a/net/tools/testserver/backoff_server.py
-+++ b/net/tools/testserver/backoff_server.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/net/tools/truncate_net_log.py b/net/tools/truncate_net_log.py
-index 1841b08..450a5a5 100755
---- a/net/tools/truncate_net_log.py
-+++ b/net/tools/truncate_net_log.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/net/tools/update_ios_bundle_data.py b/net/tools/update_ios_bundle_data.py
-index df13b4b..3590dfd 100755
---- a/net/tools/update_ios_bundle_data.py
-+++ b/net/tools/update_ios_bundle_data.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/ppapi/c/documentation/doxy_cleanup.py b/ppapi/c/documentation/doxy_cleanup.py
-index 4988c24..c6ad5d7 100755
---- a/ppapi/c/documentation/doxy_cleanup.py
-+++ b/ppapi/c/documentation/doxy_cleanup.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright (c) 2011 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/ppapi/cpp/documentation/doxy_cleanup.py b/ppapi/cpp/documentation/doxy_cleanup.py
-index fbbc2f6..4a22066 100755
---- a/ppapi/cpp/documentation/doxy_cleanup.py
-+++ b/ppapi/cpp/documentation/doxy_cleanup.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/ppapi/generate_ppapi_include_tests.py b/ppapi/generate_ppapi_include_tests.py
-index f690f3e..c26829c 100755
---- a/ppapi/generate_ppapi_include_tests.py
-+++ b/ppapi/generate_ppapi_include_tests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/ppapi/generate_ppapi_size_checks.py b/ppapi/generate_ppapi_size_checks.py
-index a2b8e7d..fd325dc 100755
---- a/ppapi/generate_ppapi_size_checks.py
-+++ b/ppapi/generate_ppapi_size_checks.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/ppapi/generators/generator.py b/ppapi/generators/generator.py
-index 702bc1b..33f3e70 100755
---- a/ppapi/generators/generator.py
-+++ b/ppapi/generators/generator.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/ppapi/generators/idl_c_header.py b/ppapi/generators/idl_c_header.py
-index d597f71..484664a 100755
---- a/ppapi/generators/idl_c_header.py
-+++ b/ppapi/generators/idl_c_header.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/ppapi/generators/idl_c_proto.py b/ppapi/generators/idl_c_proto.py
-index 8404b79..5847fa5 100755
---- a/ppapi/generators/idl_c_proto.py
-+++ b/ppapi/generators/idl_c_proto.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/ppapi/generators/idl_diff.py b/ppapi/generators/idl_diff.py
-index 7fd83cb..6ca4bd3 100755
---- a/ppapi/generators/idl_diff.py
-+++ b/ppapi/generators/idl_diff.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/ppapi/generators/idl_gen_pnacl.py b/ppapi/generators/idl_gen_pnacl.py
-index dd1ce0c..c9edd48 100755
---- a/ppapi/generators/idl_gen_pnacl.py
-+++ b/ppapi/generators/idl_gen_pnacl.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/ppapi/generators/idl_generator.py b/ppapi/generators/idl_generator.py
-index 0477100..eab096b 100755
---- a/ppapi/generators/idl_generator.py
-+++ b/ppapi/generators/idl_generator.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/ppapi/generators/idl_lexer.py b/ppapi/generators/idl_lexer.py
-index 1c9492e..ed73c36 100755
---- a/ppapi/generators/idl_lexer.py
-+++ b/ppapi/generators/idl_lexer.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/ppapi/generators/idl_namespace.py b/ppapi/generators/idl_namespace.py
-index 5630ae2..9fd0c5a 100755
---- a/ppapi/generators/idl_namespace.py
-+++ b/ppapi/generators/idl_namespace.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/ppapi/generators/idl_node.py b/ppapi/generators/idl_node.py
-index feeb430..2c18605 100755
---- a/ppapi/generators/idl_node.py
-+++ b/ppapi/generators/idl_node.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/ppapi/generators/idl_outfile.py b/ppapi/generators/idl_outfile.py
-index 9b830ad..69a719a 100755
---- a/ppapi/generators/idl_outfile.py
-+++ b/ppapi/generators/idl_outfile.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/ppapi/generators/idl_parser.py b/ppapi/generators/idl_parser.py
-index fdd5e88..ede83c6 100755
---- a/ppapi/generators/idl_parser.py
-+++ b/ppapi/generators/idl_parser.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/ppapi/generators/idl_propertynode.py b/ppapi/generators/idl_propertynode.py
-index 9152ed7..39aa552 100755
---- a/ppapi/generators/idl_propertynode.py
-+++ b/ppapi/generators/idl_propertynode.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/ppapi/generators/idl_release.py b/ppapi/generators/idl_release.py
-index ce95ec8..105b9e1 100755
---- a/ppapi/generators/idl_release.py
-+++ b/ppapi/generators/idl_release.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/ppapi/generators/idl_tests.py b/ppapi/generators/idl_tests.py
-index 7b732bc..ad327d4 100755
---- a/ppapi/generators/idl_tests.py
-+++ b/ppapi/generators/idl_tests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/ppapi/generators/idl_thunk.py b/ppapi/generators/idl_thunk.py
-index ff7bdfd..aacffda 100755
---- a/ppapi/generators/idl_thunk.py
-+++ b/ppapi/generators/idl_thunk.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/ppapi/native_client/irt_debuglink.py b/ppapi/native_client/irt_debuglink.py
-index a68b67b..496d48e 100755
---- a/ppapi/native_client/irt_debuglink.py
-+++ b/ppapi/native_client/irt_debuglink.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/ppapi/native_client/src/untrusted/pnacl_support_extension/pnacl_component_crx_gen.py b/ppapi/native_client/src/untrusted/pnacl_support_extension/pnacl_component_crx_gen.py
-index b0cf22f..7d9fa2b 100755
---- a/ppapi/native_client/src/untrusted/pnacl_support_extension/pnacl_component_crx_gen.py
-+++ b/ppapi/native_client/src/untrusted/pnacl_support_extension/pnacl_component_crx_gen.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/ppapi/native_client/tests/breakpad_crash_test/crash_dump_tester.py b/ppapi/native_client/tests/breakpad_crash_test/crash_dump_tester.py
-index 25de90e..51de605 100755
---- a/ppapi/native_client/tests/breakpad_crash_test/crash_dump_tester.py
-+++ b/ppapi/native_client/tests/breakpad_crash_test/crash_dump_tester.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/ppapi/native_client/tools/browser_tester/browser_tester.py b/ppapi/native_client/tools/browser_tester/browser_tester.py
-index 565546e..64b41c0 100755
---- a/ppapi/native_client/tools/browser_tester/browser_tester.py
-+++ b/ppapi/native_client/tools/browser_tester/browser_tester.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/ppapi/native_client/tools/browser_tester/browsertester/browserlauncher.py b/ppapi/native_client/tools/browser_tester/browsertester/browserlauncher.py
-index 0720000..0954c21 100755
---- a/ppapi/native_client/tools/browser_tester/browsertester/browserlauncher.py
-+++ b/ppapi/native_client/tools/browser_tester/browsertester/browserlauncher.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/ppapi/native_client/tools/browser_tester/browsertester/browserprocess.py b/ppapi/native_client/tools/browser_tester/browsertester/browserprocess.py
-index 7e8fa9b..9c065cf 100755
---- a/ppapi/native_client/tools/browser_tester/browsertester/browserprocess.py
-+++ b/ppapi/native_client/tools/browser_tester/browsertester/browserprocess.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/ppapi/native_client/tools/browser_tester/browsertester/rpclistener.py b/ppapi/native_client/tools/browser_tester/browsertester/rpclistener.py
-index 1337b55..895ea94 100755
---- a/ppapi/native_client/tools/browser_tester/browsertester/rpclistener.py
-+++ b/ppapi/native_client/tools/browser_tester/browsertester/rpclistener.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/ppapi/tests/create_nonsfi_test_nmf.py b/ppapi/tests/create_nonsfi_test_nmf.py
-index a2a8f9f..aaf3cbe 100755
---- a/ppapi/tests/create_nonsfi_test_nmf.py
-+++ b/ppapi/tests/create_nonsfi_test_nmf.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/printing/backend/tools/code_generator.py b/printing/backend/tools/code_generator.py
-index 3951c6b..fde61eb 100755
---- a/printing/backend/tools/code_generator.py
-+++ b/printing/backend/tools/code_generator.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/printing/cups_config_helper.py b/printing/cups_config_helper.py
-index 373c244..cca0367 100755
---- a/printing/cups_config_helper.py
-+++ b/printing/cups_config_helper.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/remoting/host/installer/build-installer-archive.py b/remoting/host/installer/build-installer-archive.py
-index 71f30c1..370b9c7 100755
---- a/remoting/host/installer/build-installer-archive.py
-+++ b/remoting/host/installer/build-installer-archive.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/remoting/tools/build/remoting_copy_locales.py b/remoting/tools/build/remoting_copy_locales.py
-index f5ab78f..940bd2c 100755
---- a/remoting/tools/build/remoting_copy_locales.py
-+++ b/remoting/tools/build/remoting_copy_locales.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2013 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.
-diff --git a/remoting/tools/build/remoting_ios_localize.py b/remoting/tools/build/remoting_ios_localize.py
-index bc4ddc4..af21b31 100755
---- a/remoting/tools/build/remoting_ios_localize.py
-+++ b/remoting/tools/build/remoting_ios_localize.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/remoting/tools/build/remoting_localize.py b/remoting/tools/build/remoting_localize.py
-index 13d26af..77054da 100755
---- a/remoting/tools/build/remoting_localize.py
-+++ b/remoting/tools/build/remoting_localize.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2013 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.
-diff --git a/remoting/tools/build/shader_to_header.py b/remoting/tools/build/shader_to_header.py
-index fdfc18c..b901b05 100755
---- a/remoting/tools/build/shader_to_header.py
-+++ b/remoting/tools/build/shader_to_header.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/remoting/tools/extract_android_native_lib.py b/remoting/tools/extract_android_native_lib.py
-index 6ef2023..685fa80 100755
---- a/remoting/tools/extract_android_native_lib.py
-+++ b/remoting/tools/extract_android_native_lib.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2015 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/remoting/tools/jscompile.py b/remoting/tools/jscompile.py
-index 025ecc8..bc6e161 100755
---- a/remoting/tools/jscompile.py
-+++ b/remoting/tools/jscompile.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/remoting/tools/native_messaging_host_test.py b/remoting/tools/native_messaging_host_test.py
-index 5ed6777..7b04735 100755
---- a/remoting/tools/native_messaging_host_test.py
-+++ b/remoting/tools/native_messaging_host_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2013 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.
-diff --git a/remoting/tools/remove_spaces.py b/remoting/tools/remove_spaces.py
-index 953ac17..e3b9de5 100755
---- a/remoting/tools/remove_spaces.py
-+++ b/remoting/tools/remove_spaces.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2016 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/remoting/tools/runclient.py b/remoting/tools/runclient.py
-index 76e1af2..2c96ea9 100755
---- a/remoting/tools/runclient.py
-+++ b/remoting/tools/runclient.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/remoting/tools/verify_resources.py b/remoting/tools/verify_resources.py
-index 25acf28..a80dc48 100755
---- a/remoting/tools/verify_resources.py
-+++ b/remoting/tools/verify_resources.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/remoting/tools/zip2msi.py b/remoting/tools/zip2msi.py
-index fe41172..c81041f 100755
---- a/remoting/tools/zip2msi.py
-+++ b/remoting/tools/zip2msi.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/sandbox/policy/mac/generate_params.py b/sandbox/policy/mac/generate_params.py
-index 685d941..8d5ba32 100755
---- a/sandbox/policy/mac/generate_params.py
-+++ b/sandbox/policy/mac/generate_params.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2021 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/sandbox/policy/mac/package_sb_file.py b/sandbox/policy/mac/package_sb_file.py
-index f5048b7..363cfb5 100755
---- a/sandbox/policy/mac/package_sb_file.py
-+++ b/sandbox/policy/mac/package_sb_file.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/styleguide/c++/chromium-cpp/main.py b/styleguide/c++/chromium-cpp/main.py
-index aef55ab..6c23c47 100755
---- a/styleguide/c++/chromium-cpp/main.py
-+++ b/styleguide/c++/chromium-cpp/main.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2014 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/testing/chromoting/browser_test_commands_linux.txt b/testing/chromoting/browser_test_commands_linux.txt
-index df1a6fd..6687b5e 100644
---- a/testing/chromoting/browser_test_commands_linux.txt
-+++ b/testing/chromoting/browser_test_commands_linux.txt
-@@ -1,3 +1,3 @@
--/usr/bin/python ../xvfb.py #PROD_DIR#/browser_tests --gtest_filter=RemoteDesktopBrowserTest.MANUAL_Launch:RemoteDesktopBrowserTest.MANUAL_Auth --run-manual --ui-test-action-timeout=100000 --webapp-unpacked=#PROD_DIR#/remoting/remoting.webapp.v2 --extension-name=Chromoting --accounts-file=../../remoting/tools/internal/test_accounts.json --account-type=gmail
--/usr/bin/python ../xvfb.py #PROD_DIR#/browser_tests --gtest_filter=Me2MeBrowserTest.MANUAL_Me2Me_Connect_Remote_Host --run-manual --ui-test-action-timeout=100000 --webapp-unpacked=#PROD_DIR#/remoting/remoting.webapp.v2 --extension-name=Chromoting --accounts-file=../../remoting/tools/internal/test_accounts.json --account-type=gmail --me2me-pin=123456 --override-user-data-dir=/tmp/chromoting_test_profile --remote-host-name=crd-precise.kir.corp.google.com
--/usr/bin/python ../xvfb.py #PROD_DIR#/browser_tests --gtest_filter=It2MeBrowserTest.MANUAL_CancelShare --run-manual --ui-test-action-timeout=100000 --webapp-unpacked=#PROD_DIR#/remoting/remoting.webapp.v2 --extension-name=Chromoting --accounts-file=../../remoting/tools/internal/test_accounts.json --account-type=gmail --override-user-data-dir=/tmp/chromoting_test_profile
-+/usr/bin/python2 ../xvfb.py #PROD_DIR#/browser_tests --gtest_filter=RemoteDesktopBrowserTest.MANUAL_Launch:RemoteDesktopBrowserTest.MANUAL_Auth --run-manual --ui-test-action-timeout=100000 --webapp-unpacked=#PROD_DIR#/remoting/remoting.webapp.v2 --extension-name=Chromoting --accounts-file=../../remoting/tools/internal/test_accounts.json --account-type=gmail
-+/usr/bin/python2 ../xvfb.py #PROD_DIR#/browser_tests --gtest_filter=Me2MeBrowserTest.MANUAL_Me2Me_Connect_Remote_Host --run-manual --ui-test-action-timeout=100000 --webapp-unpacked=#PROD_DIR#/remoting/remoting.webapp.v2 --extension-name=Chromoting --accounts-file=../../remoting/tools/internal/test_accounts.json --account-type=gmail --me2me-pin=123456 --override-user-data-dir=/tmp/chromoting_test_profile --remote-host-name=crd-precise.kir.corp.google.com
-+/usr/bin/python2 ../xvfb.py #PROD_DIR#/browser_tests --gtest_filter=It2MeBrowserTest.MANUAL_CancelShare --run-manual --ui-test-action-timeout=100000 --webapp-unpacked=#PROD_DIR#/remoting/remoting.webapp.v2 --extension-name=Chromoting --accounts-file=../../remoting/tools/internal/test_accounts.json --account-type=gmail --override-user-data-dir=/tmp/chromoting_test_profile
-diff --git a/testing/generate_location_tags.py b/testing/generate_location_tags.py
-index 19b275d..285f8b5 100755
---- a/testing/generate_location_tags.py
-+++ b/testing/generate_location_tags.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2021 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/testing/libfuzzer/fuzzers/generate_javascript_parser_proto.py b/testing/libfuzzer/fuzzers/generate_javascript_parser_proto.py
-index a2bac4f..7f82bcc 100755
---- a/testing/libfuzzer/fuzzers/generate_javascript_parser_proto.py
-+++ b/testing/libfuzzer/fuzzers/generate_javascript_parser_proto.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2017 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/testing/libfuzzer/fuzzers/generate_v8_inspector_fuzzer_corpus.py b/testing/libfuzzer/fuzzers/generate_v8_inspector_fuzzer_corpus.py
-index e86eda8..3d31e14 100755
---- a/testing/libfuzzer/fuzzers/generate_v8_inspector_fuzzer_corpus.py
-+++ b/testing/libfuzzer/fuzzers/generate_v8_inspector_fuzzer_corpus.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/testing/merge_scripts/code_coverage/merge_results.py b/testing/merge_scripts/code_coverage/merge_results.py
-index b921e7f..936dee6 100755
---- a/testing/merge_scripts/code_coverage/merge_results.py
-+++ b/testing/merge_scripts/code_coverage/merge_results.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/merge_scripts/code_coverage/merge_steps.py b/testing/merge_scripts/code_coverage/merge_steps.py
-index 75215ca..d10db72 100755
---- a/testing/merge_scripts/code_coverage/merge_steps.py
-+++ b/testing/merge_scripts/code_coverage/merge_steps.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/merge_scripts/noop_merge.py b/testing/merge_scripts/noop_merge.py
-index f7a93cd..e1a18da 100755
---- a/testing/merge_scripts/noop_merge.py
-+++ b/testing/merge_scripts/noop_merge.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/merge_scripts/noop_merge_test.py b/testing/merge_scripts/noop_merge_test.py
-index 4cda1bf..6b29a47 100755
---- a/testing/merge_scripts/noop_merge_test.py
-+++ b/testing/merge_scripts/noop_merge_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/merge_scripts/perf_results.py b/testing/merge_scripts/perf_results.py
-index ded9131..47ddc4c 100755
---- a/testing/merge_scripts/perf_results.py
-+++ b/testing/merge_scripts/perf_results.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/merge_scripts/results_merger.py b/testing/merge_scripts/results_merger.py
-index 3b23d82..3c81363 100755
---- a/testing/merge_scripts/results_merger.py
-+++ b/testing/merge_scripts/results_merger.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/merge_scripts/standard_gtest_merge.py b/testing/merge_scripts/standard_gtest_merge.py
-index 99adf7b..df6d0d8 100755
---- a/testing/merge_scripts/standard_gtest_merge.py
-+++ b/testing/merge_scripts/standard_gtest_merge.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/merge_scripts/standard_isolated_script_merge.py b/testing/merge_scripts/standard_isolated_script_merge.py
-index cd4829a..d46a7d2 100755
---- a/testing/merge_scripts/standard_isolated_script_merge.py
-+++ b/testing/merge_scripts/standard_isolated_script_merge.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/run_with_dummy_home.py b/testing/run_with_dummy_home.py
-index 3d28e06..3f9aa9c 100755
---- a/testing/run_with_dummy_home.py
-+++ b/testing/run_with_dummy_home.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/scripts/blink_lint_expectations.py b/testing/scripts/blink_lint_expectations.py
-index bb26b91..fa63a32 100755
---- a/testing/scripts/blink_lint_expectations.py
-+++ b/testing/scripts/blink_lint_expectations.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/scripts/blink_python_tests.py b/testing/scripts/blink_python_tests.py
-index c7f14e6..4647c8b 100755
---- a/testing/scripts/blink_python_tests.py
-+++ b/testing/scripts/blink_python_tests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/scripts/check_gn_headers.py b/testing/scripts/check_gn_headers.py
-index 6530ada..a637971 100755
---- a/testing/scripts/check_gn_headers.py
-+++ b/testing/scripts/check_gn_headers.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/scripts/check_network_annotations.py b/testing/scripts/check_network_annotations.py
-index 9dde4ed..4d79abd 100755
---- a/testing/scripts/check_network_annotations.py
-+++ b/testing/scripts/check_network_annotations.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/scripts/check_static_initializers.py b/testing/scripts/check_static_initializers.py
-index 222c83b..f0311ee 100755
---- a/testing/scripts/check_static_initializers.py
-+++ b/testing/scripts/check_static_initializers.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/scripts/checkdeps.py b/testing/scripts/checkdeps.py
-index e772ae8..b144f3f 100755
---- a/testing/scripts/checkdeps.py
-+++ b/testing/scripts/checkdeps.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/scripts/checklicenses.py b/testing/scripts/checklicenses.py
-index 43342d0..c79f427 100755
---- a/testing/scripts/checklicenses.py
-+++ b/testing/scripts/checklicenses.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/scripts/checkperms.py b/testing/scripts/checkperms.py
-index 8adb025..9e97c46 100755
---- a/testing/scripts/checkperms.py
-+++ b/testing/scripts/checkperms.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/scripts/content_shell_crash_test.py b/testing/scripts/content_shell_crash_test.py
-index 20d5d99..3c14dd9 100755
---- a/testing/scripts/content_shell_crash_test.py
-+++ b/testing/scripts/content_shell_crash_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/scripts/get_compile_targets.py b/testing/scripts/get_compile_targets.py
-index 8f3c6ae..6c0c0f9 100755
---- a/testing/scripts/get_compile_targets.py
-+++ b/testing/scripts/get_compile_targets.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/scripts/grit_python_unittests.py b/testing/scripts/grit_python_unittests.py
-index 532e4b1..bc7a32c 100755
---- a/testing/scripts/grit_python_unittests.py
-+++ b/testing/scripts/grit_python_unittests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/scripts/headless_python_unittests.py b/testing/scripts/headless_python_unittests.py
-index 881cff4..d0395bd 100755
---- a/testing/scripts/headless_python_unittests.py
-+++ b/testing/scripts/headless_python_unittests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/scripts/host_info.py b/testing/scripts/host_info.py
-index 6aa9b8a..604e611 100755
---- a/testing/scripts/host_info.py
-+++ b/testing/scripts/host_info.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/scripts/metrics_python_tests.py b/testing/scripts/metrics_python_tests.py
-index 72cecb8..bbdd57f 100755
---- a/testing/scripts/metrics_python_tests.py
-+++ b/testing/scripts/metrics_python_tests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2021 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/testing/scripts/run_chromedriver_tests.py b/testing/scripts/run_chromedriver_tests.py
-index 5abcf74..87ff78f 100755
---- a/testing/scripts/run_chromedriver_tests.py
-+++ b/testing/scripts/run_chromedriver_tests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/scripts/run_devtools_check.py b/testing/scripts/run_devtools_check.py
-index 5c1302c..920ac45 100755
---- a/testing/scripts/run_devtools_check.py
-+++ b/testing/scripts/run_devtools_check.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/scripts/run_flatbuffers_unittests.py b/testing/scripts/run_flatbuffers_unittests.py
-index 69436b4..186c35f 100755
---- a/testing/scripts/run_flatbuffers_unittests.py
-+++ b/testing/scripts/run_flatbuffers_unittests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/scripts/run_gpu_integration_test_as_googletest.py b/testing/scripts/run_gpu_integration_test_as_googletest.py
-index fd48ec4..769bd78 100755
---- a/testing/scripts/run_gpu_integration_test_as_googletest.py
-+++ b/testing/scripts/run_gpu_integration_test_as_googletest.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/scripts/run_isolated_script_test.py b/testing/scripts/run_isolated_script_test.py
-index 685eded..3ac737c 100755
---- a/testing/scripts/run_isolated_script_test.py
-+++ b/testing/scripts/run_isolated_script_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/scripts/run_performance_tests.py b/testing/scripts/run_performance_tests.py
-index d2d2e36..ae22cb9 100755
---- a/testing/scripts/run_performance_tests.py
-+++ b/testing/scripts/run_performance_tests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/scripts/run_rendering_benchmark_with_gated_performance.py b/testing/scripts/run_rendering_benchmark_with_gated_performance.py
-index 0721aeb..6e5bea6 100755
---- a/testing/scripts/run_rendering_benchmark_with_gated_performance.py
-+++ b/testing/scripts/run_rendering_benchmark_with_gated_performance.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/scripts/test_buildbucket_api_gpu_use_cases.py b/testing/scripts/test_buildbucket_api_gpu_use_cases.py
-index 648d8d4..5f44144 100755
---- a/testing/scripts/test_buildbucket_api_gpu_use_cases.py
-+++ b/testing/scripts/test_buildbucket_api_gpu_use_cases.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/scripts/test_traffic_annotation_auditor.py b/testing/scripts/test_traffic_annotation_auditor.py
-index 160dbc3..21acb72 100755
---- a/testing/scripts/test_traffic_annotation_auditor.py
-+++ b/testing/scripts/test_traffic_annotation_auditor.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/test_env.py b/testing/test_env.py
-index e04afa0..397925d 100755
---- a/testing/test_env.py
-+++ b/testing/test_env.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/testing/test_env_test_script.py b/testing/test_env_test_script.py
-index 4957ee6..3d80c24 100755
---- a/testing/test_env_test_script.py
-+++ b/testing/test_env_test_script.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/test_env_unittest.py b/testing/test_env_unittest.py
-index 707c65e..25b5714 100755
---- a/testing/test_env_unittest.py
-+++ b/testing/test_env_unittest.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/test_env_user_script.py b/testing/test_env_user_script.py
-index 1d94387..68992c7 100755
---- a/testing/test_env_user_script.py
-+++ b/testing/test_env_user_script.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/trigger_scripts/base_test_triggerer.py b/testing/trigger_scripts/base_test_triggerer.py
-index 5ab7bfc..e662ab6 100755
---- a/testing/trigger_scripts/base_test_triggerer.py
-+++ b/testing/trigger_scripts/base_test_triggerer.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/trigger_scripts/chromeos_device_trigger.py b/testing/trigger_scripts/chromeos_device_trigger.py
-index fb1fc4c..55712c2 100755
---- a/testing/trigger_scripts/chromeos_device_trigger.py
-+++ b/testing/trigger_scripts/chromeos_device_trigger.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/trigger_scripts/perf_device_trigger.py b/testing/trigger_scripts/perf_device_trigger.py
-index b85278b..845b2d4 100755
---- a/testing/trigger_scripts/perf_device_trigger.py
-+++ b/testing/trigger_scripts/perf_device_trigger.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/xvfb_test_script.py b/testing/xvfb_test_script.py
-index 8a5b17c..2ff90a7 100755
---- a/testing/xvfb_test_script.py
-+++ b/testing/xvfb_test_script.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/testing/xvfb_unittest.py b/testing/xvfb_unittest.py
-index f28b6d2..bc7990b 100755
---- a/testing/xvfb_unittest.py
-+++ b/testing/xvfb_unittest.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/abseil-cpp/conanfile.py b/third_party/abseil-cpp/conanfile.py
-index 926ec5c..62d24d3 100755
---- a/third_party/abseil-cpp/conanfile.py
-+++ b/third_party/abseil-cpp/conanfile.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # -*- coding: utf-8 -*-
- 
- # Note: Conan is supported on a best-effort basis. Abseil doesn't use Conan
-diff --git a/third_party/abseil-cpp/generate_def_files.py b/third_party/abseil-cpp/generate_def_files.py
-index 3f0d03b..7b6ef18 100755
---- a/third_party/abseil-cpp/generate_def_files.py
-+++ b/third_party/abseil-cpp/generate_def_files.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # NOTE: This script requires python 3.
- 
-diff --git a/third_party/abseil-cpp/roll_abseil.py b/third_party/abseil-cpp/roll_abseil.py
-index 6d54e4f..5a7293c 100755
---- a/third_party/abseil-cpp/roll_abseil.py
-+++ b/third_party/abseil-cpp/roll_abseil.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # NOTE: This script requires python 3.
- 
-diff --git a/third_party/afl/update.py b/third_party/afl/update.py
-index 186d946..7b4125e 100755
---- a/third_party/afl/update.py
-+++ b/third_party/afl/update.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/third_party/blink/renderer/bindings/scripts/generate_event_interfaces.py b/third_party/blink/renderer/bindings/scripts/generate_event_interfaces.py
-index 1d5482b..86dbac7 100755
---- a/third_party/blink/renderer/bindings/scripts/generate_event_interfaces.py
-+++ b/third_party/blink/renderer/bindings/scripts/generate_event_interfaces.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright (C) 2013 Google Inc. All rights reserved.
- #
-diff --git a/third_party/blink/renderer/build/scripts/core/css/css_properties.py b/third_party/blink/renderer/build/scripts/core/css/css_properties.py
-index 535a8ed..d5118fe 100755
---- a/third_party/blink/renderer/build/scripts/core/css/css_properties.py
-+++ b/third_party/blink/renderer/build/scripts/core/css/css_properties.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/blink/renderer/build/scripts/core/css/make_css_primitive_value_unit_trie.py b/third_party/blink/renderer/build/scripts/core/css/make_css_primitive_value_unit_trie.py
-index 16edce1..f5c01f2 100755
---- a/third_party/blink/renderer/build/scripts/core/css/make_css_primitive_value_unit_trie.py
-+++ b/third_party/blink/renderer/build/scripts/core/css/make_css_primitive_value_unit_trie.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/blink/renderer/build/scripts/core/css/make_css_property_names.py b/third_party/blink/renderer/build/scripts/core/css/make_css_property_names.py
-index cc27dfc..74cd971 100755
---- a/third_party/blink/renderer/build/scripts/core/css/make_css_property_names.py
-+++ b/third_party/blink/renderer/build/scripts/core/css/make_css_property_names.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- from core.css import css_properties
- import gperf
-diff --git a/third_party/blink/renderer/build/scripts/core/css/make_css_tokenizer_codepoints.py b/third_party/blink/renderer/build/scripts/core/css/make_css_tokenizer_codepoints.py
-index 3c76325..c3b5492 100755
---- a/third_party/blink/renderer/build/scripts/core/css/make_css_tokenizer_codepoints.py
-+++ b/third_party/blink/renderer/build/scripts/core/css/make_css_tokenizer_codepoints.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2014 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/third_party/blink/renderer/build/scripts/core/css/make_css_value_id_mappings.py b/third_party/blink/renderer/build/scripts/core/css/make_css_value_id_mappings.py
-index 996b82d..e741f57 100755
---- a/third_party/blink/renderer/build/scripts/core/css/make_css_value_id_mappings.py
-+++ b/third_party/blink/renderer/build/scripts/core/css/make_css_value_id_mappings.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/blink/renderer/build/scripts/core/css/make_css_value_keywords.py b/third_party/blink/renderer/build/scripts/core/css/make_css_value_keywords.py
-index eabb6ae..2a4558f 100755
---- a/third_party/blink/renderer/build/scripts/core/css/make_css_value_keywords.py
-+++ b/third_party/blink/renderer/build/scripts/core/css/make_css_value_keywords.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- import subprocess
- from name_utilities import enum_key_for_css_keyword
-diff --git a/third_party/blink/renderer/build/scripts/core/css/make_cssom_types.py b/third_party/blink/renderer/build/scripts/core/css/make_cssom_types.py
-index 5d7c6bf..afd7913 100755
---- a/third_party/blink/renderer/build/scripts/core/css/make_cssom_types.py
-+++ b/third_party/blink/renderer/build/scripts/core/css/make_cssom_types.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/blink/renderer/build/scripts/core/css/make_media_feature_names.py b/third_party/blink/renderer/build/scripts/core/css/make_media_feature_names.py
-index 6ae5b44..987b80a 100755
---- a/third_party/blink/renderer/build/scripts/core/css/make_media_feature_names.py
-+++ b/third_party/blink/renderer/build/scripts/core/css/make_media_feature_names.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2014 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/third_party/blink/renderer/build/scripts/core/css/make_media_features.py b/third_party/blink/renderer/build/scripts/core/css/make_media_features.py
-index 5ea622f..2c88519 100755
---- a/third_party/blink/renderer/build/scripts/core/css/make_media_features.py
-+++ b/third_party/blink/renderer/build/scripts/core/css/make_media_features.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2014 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/third_party/blink/renderer/build/scripts/core/css/make_style_shorthands.py b/third_party/blink/renderer/build/scripts/core/css/make_style_shorthands.py
-index 5f43ffa..edc3831 100755
---- a/third_party/blink/renderer/build/scripts/core/css/make_style_shorthands.py
-+++ b/third_party/blink/renderer/build/scripts/core/css/make_style_shorthands.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (C) 2013 Intel Corporation. All rights reserved.
- #
- # Redistribution and use in source and binary forms, with or without
-diff --git a/third_party/blink/renderer/build/scripts/core/css/parser/make_atrule_names.py b/third_party/blink/renderer/build/scripts/core/css/parser/make_atrule_names.py
-index 8ef5239..e556df9 100755
---- a/third_party/blink/renderer/build/scripts/core/css/parser/make_atrule_names.py
-+++ b/third_party/blink/renderer/build/scripts/core/css/parser/make_atrule_names.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_instances.py b/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_instances.py
-index f72aade..c40610d 100755
---- a/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_instances.py
-+++ b/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_instances.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_subclasses.py b/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_subclasses.py
-index 2730c96..ebf6062 100755
---- a/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_subclasses.py
-+++ b/third_party/blink/renderer/build/scripts/core/css/properties/make_css_property_subclasses.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/blink/renderer/build/scripts/core/style/make_computed_style_base.py b/third_party/blink/renderer/build/scripts/core/style/make_computed_style_base.py
-index 7fc70a8..41808e6 100755
---- a/third_party/blink/renderer/build/scripts/core/style/make_computed_style_base.py
-+++ b/third_party/blink/renderer/build/scripts/core/style/make_computed_style_base.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/blink/renderer/build/scripts/core/style/make_computed_style_initial_values.py b/third_party/blink/renderer/build/scripts/core/style/make_computed_style_initial_values.py
-index c596a09..365ae02 100755
---- a/third_party/blink/renderer/build/scripts/core/style/make_computed_style_initial_values.py
-+++ b/third_party/blink/renderer/build/scripts/core/style/make_computed_style_initial_values.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/blink/renderer/build/scripts/in_file_unittest.py b/third_party/blink/renderer/build/scripts/in_file_unittest.py
-index eb93ee5..40e062a 100755
---- a/third_party/blink/renderer/build/scripts/in_file_unittest.py
-+++ b/third_party/blink/renderer/build/scripts/in_file_unittest.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (C) 2013 Google Inc. All rights reserved.
- #
- # Redistribution and use in source and binary forms, with or without
-diff --git a/third_party/blink/renderer/build/scripts/make_element_factory.py b/third_party/blink/renderer/build/scripts/make_element_factory.py
-index bb3e5f4..3442d69 100755
---- a/third_party/blink/renderer/build/scripts/make_element_factory.py
-+++ b/third_party/blink/renderer/build/scripts/make_element_factory.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (C) 2013 Google Inc. All rights reserved.
- #
- # Redistribution and use in source and binary forms, with or without
-diff --git a/third_party/blink/renderer/build/scripts/make_element_lookup_trie.py b/third_party/blink/renderer/build/scripts/make_element_lookup_trie.py
-index 8ae7e67..1acb1e4 100755
---- a/third_party/blink/renderer/build/scripts/make_element_lookup_trie.py
-+++ b/third_party/blink/renderer/build/scripts/make_element_lookup_trie.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (C) 2013 Google Inc. All rights reserved.
- #
- # Redistribution and use in source and binary forms, with or without
-diff --git a/third_party/blink/renderer/build/scripts/make_element_type_helpers.py b/third_party/blink/renderer/build/scripts/make_element_type_helpers.py
-index 29a43f3..b4f64d4 100755
---- a/third_party/blink/renderer/build/scripts/make_element_type_helpers.py
-+++ b/third_party/blink/renderer/build/scripts/make_element_type_helpers.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/blink/renderer/build/scripts/make_event_factory.py b/third_party/blink/renderer/build/scripts/make_event_factory.py
-index a7ceb45..5a5ae23 100755
---- a/third_party/blink/renderer/build/scripts/make_event_factory.py
-+++ b/third_party/blink/renderer/build/scripts/make_event_factory.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (C) 2013 Google Inc. All rights reserved.
- #
- # Redistribution and use in source and binary forms, with or without
-diff --git a/third_party/blink/renderer/build/scripts/make_html_entity_table.py b/third_party/blink/renderer/build/scripts/make_html_entity_table.py
-index f02bb2a..3a37d62 100755
---- a/third_party/blink/renderer/build/scripts/make_html_entity_table.py
-+++ b/third_party/blink/renderer/build/scripts/make_html_entity_table.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2010 Google Inc. All rights reserved.
- #
- # Redistribution and use in source and binary forms, with or without
-diff --git a/third_party/blink/renderer/build/scripts/make_internal_runtime_flags.py b/third_party/blink/renderer/build/scripts/make_internal_runtime_flags.py
-index 3ea26d7..6e69b0b 100755
---- a/third_party/blink/renderer/build/scripts/make_internal_runtime_flags.py
-+++ b/third_party/blink/renderer/build/scripts/make_internal_runtime_flags.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (C) 2013 Google Inc. All rights reserved.
- #
- # Redistribution and use in source and binary forms, with or without
-diff --git a/third_party/blink/renderer/build/scripts/make_internal_settings.py b/third_party/blink/renderer/build/scripts/make_internal_settings.py
-index 148fe6d..0d79341 100755
---- a/third_party/blink/renderer/build/scripts/make_internal_settings.py
-+++ b/third_party/blink/renderer/build/scripts/make_internal_settings.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (C) 2013 Google Inc. All rights reserved.
- # Copyright (C) 2013 Igalia S.L. All rights reserved.
- #
-diff --git a/third_party/blink/renderer/build/scripts/make_names.py b/third_party/blink/renderer/build/scripts/make_names.py
-index 3f7520a..f893d72 100755
---- a/third_party/blink/renderer/build/scripts/make_names.py
-+++ b/third_party/blink/renderer/build/scripts/make_names.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (C) 2013 Google Inc. All rights reserved.
- #
- # Redistribution and use in source and binary forms, with or without
-diff --git a/third_party/blink/renderer/build/scripts/make_origin_trials.py b/third_party/blink/renderer/build/scripts/make_origin_trials.py
-index db5b93a..ce8cffc 100755
---- a/third_party/blink/renderer/build/scripts/make_origin_trials.py
-+++ b/third_party/blink/renderer/build/scripts/make_origin_trials.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (C) 2015 Google Inc. All rights reserved.
- #
- # Redistribution and use in source and binary forms, with or without
-diff --git a/third_party/blink/renderer/build/scripts/make_qualified_names.py b/third_party/blink/renderer/build/scripts/make_qualified_names.py
-index bb5c73e..20b2682 100755
---- a/third_party/blink/renderer/build/scripts/make_qualified_names.py
-+++ b/third_party/blink/renderer/build/scripts/make_qualified_names.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (C) 2013 Google Inc. All rights reserved.
- #
- # Redistribution and use in source and binary forms, with or without
-diff --git a/third_party/blink/renderer/build/scripts/make_runtime_features.py b/third_party/blink/renderer/build/scripts/make_runtime_features.py
-index 6925a4f..0ed90da 100755
---- a/third_party/blink/renderer/build/scripts/make_runtime_features.py
-+++ b/third_party/blink/renderer/build/scripts/make_runtime_features.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (C) 2013 Google Inc. All rights reserved.
- #
- # Redistribution and use in source and binary forms, with or without
-diff --git a/third_party/blink/renderer/build/scripts/make_settings.py b/third_party/blink/renderer/build/scripts/make_settings.py
-index 59e0a2b..d3e264a 100755
---- a/third_party/blink/renderer/build/scripts/make_settings.py
-+++ b/third_party/blink/renderer/build/scripts/make_settings.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (C) 2013 Google Inc. All rights reserved.
- # Copyright (C) 2013 Igalia S.L. All rights reserved.
- #
-diff --git a/third_party/blink/renderer/build/scripts/make_style_builder.py b/third_party/blink/renderer/build/scripts/make_style_builder.py
-index bf88ea5..c1ed0d7 100755
---- a/third_party/blink/renderer/build/scripts/make_style_builder.py
-+++ b/third_party/blink/renderer/build/scripts/make_style_builder.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (C) 2013 Google Inc. All rights reserved.
- #
- # Redistribution and use in source and binary forms, with or without
-diff --git a/third_party/blink/renderer/build/scripts/make_web_origin_trials.py b/third_party/blink/renderer/build/scripts/make_web_origin_trials.py
-index d698f9c..35b7eff 100755
---- a/third_party/blink/renderer/build/scripts/make_web_origin_trials.py
-+++ b/third_party/blink/renderer/build/scripts/make_web_origin_trials.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/blink/renderer/build/scripts/rule_bison.py b/third_party/blink/renderer/build/scripts/rule_bison.py
-index ddb34bc..37f6aa5 100755
---- a/third_party/blink/renderer/build/scripts/rule_bison.py
-+++ b/third_party/blink/renderer/build/scripts/rule_bison.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright (C) 2009 Google Inc. All rights reserved.
- #
-diff --git a/third_party/blink/renderer/build/scripts/run_with_pythonpath.py b/third_party/blink/renderer/build/scripts/run_with_pythonpath.py
-index c6ea8aa..3fcf560 100755
---- a/third_party/blink/renderer/build/scripts/run_with_pythonpath.py
-+++ b/third_party/blink/renderer/build/scripts/run_with_pythonpath.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/blink/renderer/modules/sanitizer_api/build_corpus.py b/third_party/blink/renderer/modules/sanitizer_api/build_corpus.py
-index 397851f..d8d194f 100755
---- a/third_party/blink/renderer/modules/sanitizer_api/build_corpus.py
-+++ b/third_party/blink/renderer/modules/sanitizer_api/build_corpus.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2021 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/third_party/chevron/chevron/main.py b/third_party/chevron/chevron/main.py
-index 35934ee..bbe16c1 100755
---- a/third_party/chevron/chevron/main.py
-+++ b/third_party/chevron/chevron/main.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- import io
- import sys
-diff --git a/third_party/chromevox/third_party/closure-library/closure/bin/build/treescan.py b/third_party/chromevox/third_party/closure-library/closure/bin/build/treescan.py
-index 6694593..7676fc2 100755
---- a/third_party/chromevox/third_party/closure-library/closure/bin/build/treescan.py
-+++ b/third_party/chromevox/third_party/closure-library/closure/bin/build/treescan.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2010 The Closure Library Authors. All Rights Reserved.
- #
-diff --git a/third_party/crashpad/crashpad/build/gyp_crashpad.py b/third_party/crashpad/crashpad/build/gyp_crashpad.py
-index 41ab4b9..30e645c 100755
---- a/third_party/crashpad/crashpad/build/gyp_crashpad.py
-+++ b/third_party/crashpad/crashpad/build/gyp_crashpad.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2014 The Crashpad Authors. All rights reserved.
- #
-diff --git a/third_party/crashpad/crashpad/build/gyp_crashpad_android.py b/third_party/crashpad/crashpad/build/gyp_crashpad_android.py
-index baeadf9..2038922 100755
---- a/third_party/crashpad/crashpad/build/gyp_crashpad_android.py
-+++ b/third_party/crashpad/crashpad/build/gyp_crashpad_android.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2017 The Crashpad Authors. All rights reserved.
- #
-diff --git a/third_party/crashpad/crashpad/build/ios/convert_gn_xcodeproj.py b/third_party/crashpad/crashpad/build/ios/convert_gn_xcodeproj.py
-index d546279..3a245ad 100755
---- a/third_party/crashpad/crashpad/build/ios/convert_gn_xcodeproj.py
-+++ b/third_party/crashpad/crashpad/build/ios/convert_gn_xcodeproj.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2020 The Crashpad Authors. All rights reserved.
- #
-diff --git a/third_party/crashpad/crashpad/build/ios/setup_ios_gn.py b/third_party/crashpad/crashpad/build/ios/setup_ios_gn.py
-index 9522ce6..4765436 100755
---- a/third_party/crashpad/crashpad/build/ios/setup_ios_gn.py
-+++ b/third_party/crashpad/crashpad/build/ios/setup_ios_gn.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2020 The Crashpad Authors. All rights reserved.
- #
-diff --git a/third_party/crashpad/crashpad/build/run_tests.py b/third_party/crashpad/crashpad/build/run_tests.py
-index f48652f..017b729 100755
---- a/third_party/crashpad/crashpad/build/run_tests.py
-+++ b/third_party/crashpad/crashpad/build/run_tests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # coding: utf-8
- 
- # Copyright 2014 The Crashpad Authors. All rights reserved.
-diff --git a/third_party/crashpad/crashpad/doc/support/generate_doxygen.py b/third_party/crashpad/crashpad/doc/support/generate_doxygen.py
-index 577b51e..34f97a5 100755
---- a/third_party/crashpad/crashpad/doc/support/generate_doxygen.py
-+++ b/third_party/crashpad/crashpad/doc/support/generate_doxygen.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2017 The Crashpad Authors. All rights reserved.
- #
-diff --git a/third_party/crashpad/crashpad/snapshot/win/end_to_end_test.py b/third_party/crashpad/crashpad/snapshot/win/end_to_end_test.py
-index b1919ad..35b8121 100755
---- a/third_party/crashpad/crashpad/snapshot/win/end_to_end_test.py
-+++ b/third_party/crashpad/crashpad/snapshot/win/end_to_end_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2015 The Crashpad Authors. All rights reserved.
- #
-diff --git a/third_party/crashpad/crashpad/third_party/fuchsia/runner.py b/third_party/crashpad/crashpad/third_party/fuchsia/runner.py
-index 229d8a4..660b745 100755
---- a/third_party/crashpad/crashpad/third_party/fuchsia/runner.py
-+++ b/third_party/crashpad/crashpad/third_party/fuchsia/runner.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2018 The Crashpad Authors. All rights reserved.
- #
-diff --git a/third_party/crashpad/crashpad/util/mach/mig.py b/third_party/crashpad/crashpad/util/mach/mig.py
-index 53a7a5b..d43840f 100755
---- a/third_party/crashpad/crashpad/util/mach/mig.py
-+++ b/third_party/crashpad/crashpad/util/mach/mig.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2019 The Crashpad Authors. All rights reserved.
- #
-diff --git a/third_party/crashpad/crashpad/util/mach/mig_fix.py b/third_party/crashpad/crashpad/util/mach/mig_fix.py
-index 037746f..dd20bd7 100755
---- a/third_party/crashpad/crashpad/util/mach/mig_fix.py
-+++ b/third_party/crashpad/crashpad/util/mach/mig_fix.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # coding: utf-8
- 
- # Copyright 2019 The Crashpad Authors. All rights reserved.
-diff --git a/third_party/crashpad/crashpad/util/mach/mig_gen.py b/third_party/crashpad/crashpad/util/mach/mig_gen.py
-index 99b4f7e..5373158 100755
---- a/third_party/crashpad/crashpad/util/mach/mig_gen.py
-+++ b/third_party/crashpad/crashpad/util/mach/mig_gen.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2019 The Crashpad Authors. All rights reserved.
- #
-diff --git a/third_party/crashpad/crashpad/util/net/generate_test_server_key.py b/third_party/crashpad/crashpad/util/net/generate_test_server_key.py
-index 3db08ad..6610073 100755
---- a/third_party/crashpad/crashpad/util/net/generate_test_server_key.py
-+++ b/third_party/crashpad/crashpad/util/net/generate_test_server_key.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2018 The Crashpad Authors. All rights reserved.
- #
-diff --git a/third_party/crashpad/update.py b/third_party/crashpad/update.py
-index f99640f..8dda0b7 100755
---- a/third_party/crashpad/update.py
-+++ b/third_party/crashpad/update.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # coding: utf-8
- 
- # Copyright 2015 The Chromium Authors. All rights reserved.
-diff --git a/third_party/dav1d/generate_configs.py b/third_party/dav1d/generate_configs.py
-index c65b9f9..46b1135 100755
---- a/third_party/dav1d/generate_configs.py
-+++ b/third_party/dav1d/generate_configs.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2019 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/third_party/dav1d/generate_source.py b/third_party/dav1d/generate_source.py
-index 833dc00..db8bd66 100755
---- a/third_party/dav1d/generate_source.py
-+++ b/third_party/dav1d/generate_source.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2019 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/third_party/google-closure-library/closure/bin/build/closurebuilder.py b/third_party/google-closure-library/closure/bin/build/closurebuilder.py
-index b542bd0..f242138 100755
---- a/third_party/google-closure-library/closure/bin/build/closurebuilder.py
-+++ b/third_party/google-closure-library/closure/bin/build/closurebuilder.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2009 The Closure Library Authors. All Rights Reserved.
- #
-diff --git a/third_party/google-closure-library/closure/bin/build/depstree_test.py b/third_party/google-closure-library/closure/bin/build/depstree_test.py
-index eb4c999..85765fb 100755
---- a/third_party/google-closure-library/closure/bin/build/depstree_test.py
-+++ b/third_party/google-closure-library/closure/bin/build/depstree_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2009 The Closure Library Authors. All Rights Reserved.
- #
-diff --git a/third_party/google-closure-library/closure/bin/build/depswriter.py b/third_party/google-closure-library/closure/bin/build/depswriter.py
-index dc5a101..d6e3daf 100755
---- a/third_party/google-closure-library/closure/bin/build/depswriter.py
-+++ b/third_party/google-closure-library/closure/bin/build/depswriter.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2009 The Closure Library Authors. All Rights Reserved.
- #
-diff --git a/third_party/google-closure-library/closure/bin/build/depswriter_test.py b/third_party/google-closure-library/closure/bin/build/depswriter_test.py
-index 30b840c..c67a1a0 100755
---- a/third_party/google-closure-library/closure/bin/build/depswriter_test.py
-+++ b/third_party/google-closure-library/closure/bin/build/depswriter_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2010 The Closure Library Authors. All Rights Reserved.
- #
-diff --git a/third_party/google-closure-library/closure/bin/build/jscompiler_test.py b/third_party/google-closure-library/closure/bin/build/jscompiler_test.py
-index 38a98eb..511906f 100755
---- a/third_party/google-closure-library/closure/bin/build/jscompiler_test.py
-+++ b/third_party/google-closure-library/closure/bin/build/jscompiler_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2013 The Closure Library Authors. All Rights Reserved.
- #
-diff --git a/third_party/google-closure-library/closure/bin/build/source_test.py b/third_party/google-closure-library/closure/bin/build/source_test.py
-index 063cb3a..47e3987 100755
---- a/third_party/google-closure-library/closure/bin/build/source_test.py
-+++ b/third_party/google-closure-library/closure/bin/build/source_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2010 The Closure Library Authors. All Rights Reserved.
- #
-diff --git a/third_party/google-closure-library/closure/bin/build/treescan.py b/third_party/google-closure-library/closure/bin/build/treescan.py
-index 6694593..7676fc2 100755
---- a/third_party/google-closure-library/closure/bin/build/treescan.py
-+++ b/third_party/google-closure-library/closure/bin/build/treescan.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2010 The Closure Library Authors. All Rights Reserved.
- #
-diff --git a/third_party/google-closure-library/closure/bin/calcdeps.py b/third_party/google-closure-library/closure/bin/calcdeps.py
-index 0f80ea7..9ec3375 100755
---- a/third_party/google-closure-library/closure/bin/calcdeps.py
-+++ b/third_party/google-closure-library/closure/bin/calcdeps.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2006 The Closure Library Authors. All Rights Reserved.
- #
-diff --git a/third_party/google-closure-library/closure/bin/labs/code/generate_jsdoc.py b/third_party/google-closure-library/closure/bin/labs/code/generate_jsdoc.py
-index fc5ca45..0809bce 100755
---- a/third_party/google-closure-library/closure/bin/labs/code/generate_jsdoc.py
-+++ b/third_party/google-closure-library/closure/bin/labs/code/generate_jsdoc.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2013 The Closure Library Authors. All Rights Reserved.
- #
-diff --git a/third_party/google-closure-library/closure/bin/labs/code/generate_jsdoc_test.py b/third_party/google-closure-library/closure/bin/labs/code/generate_jsdoc_test.py
-index 470bab4..bd2c25d 100755
---- a/third_party/google-closure-library/closure/bin/labs/code/generate_jsdoc_test.py
-+++ b/third_party/google-closure-library/closure/bin/labs/code/generate_jsdoc_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2013 The Closure Library Authors. All Rights Reserved.
- #
-diff --git a/third_party/google-closure-library/scripts/http/simple_http_server.py b/third_party/google-closure-library/scripts/http/simple_http_server.py
-index 1ed16da..e07be79 100755
---- a/third_party/google-closure-library/scripts/http/simple_http_server.py
-+++ b/third_party/google-closure-library/scripts/http/simple_http_server.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2018 The Closure Library Authors. All Rights Reserved.
- #
-diff --git a/third_party/google_input_tools/builder.py b/third_party/google_input_tools/builder.py
-index cffcb6b..72739f1 100755
---- a/third_party/google_input_tools/builder.py
-+++ b/third_party/google_input_tools/builder.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- # 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.
-diff --git a/third_party/google_input_tools/third_party/closure_library/closure/bin/build/closurebuilder.py b/third_party/google_input_tools/third_party/closure_library/closure/bin/build/closurebuilder.py
-index 1ea8120..2490658 100755
---- a/third_party/google_input_tools/third_party/closure_library/closure/bin/build/closurebuilder.py
-+++ b/third_party/google_input_tools/third_party/closure_library/closure/bin/build/closurebuilder.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2009 The Closure Library Authors. All Rights Reserved.
- #
-diff --git a/third_party/google_input_tools/third_party/closure_library/closure/bin/build/depstree.py b/third_party/google_input_tools/third_party/closure_library/closure/bin/build/depstree.py
-index 418f601..4376f35 100755
---- a/third_party/google_input_tools/third_party/closure_library/closure/bin/build/depstree.py
-+++ b/third_party/google_input_tools/third_party/closure_library/closure/bin/build/depstree.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2009 The Closure Library Authors. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
-diff --git a/third_party/google_input_tools/third_party/closure_library/closure/bin/build/depstree_test.py b/third_party/google_input_tools/third_party/closure_library/closure/bin/build/depstree_test.py
-index eb4c999..85765fb 100755
---- a/third_party/google_input_tools/third_party/closure_library/closure/bin/build/depstree_test.py
-+++ b/third_party/google_input_tools/third_party/closure_library/closure/bin/build/depstree_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2009 The Closure Library Authors. All Rights Reserved.
- #
-diff --git a/third_party/google_input_tools/third_party/closure_library/closure/bin/build/depswriter.py b/third_party/google_input_tools/third_party/closure_library/closure/bin/build/depswriter.py
-index dfecc4b..9b5e82d 100755
---- a/third_party/google_input_tools/third_party/closure_library/closure/bin/build/depswriter.py
-+++ b/third_party/google_input_tools/third_party/closure_library/closure/bin/build/depswriter.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2009 The Closure Library Authors. All Rights Reserved.
- #
-diff --git a/third_party/google_input_tools/third_party/closure_library/closure/bin/build/jscompiler.py b/third_party/google_input_tools/third_party/closure_library/closure/bin/build/jscompiler.py
-index 783b5d7..3ccc4f7 100755
---- a/third_party/google_input_tools/third_party/closure_library/closure/bin/build/jscompiler.py
-+++ b/third_party/google_input_tools/third_party/closure_library/closure/bin/build/jscompiler.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2010 The Closure Library Authors. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
-diff --git a/third_party/google_input_tools/third_party/closure_library/closure/bin/build/source.py b/third_party/google_input_tools/third_party/closure_library/closure/bin/build/source.py
-index d4d1dbab..703b16c 100755
---- a/third_party/google_input_tools/third_party/closure_library/closure/bin/build/source.py
-+++ b/third_party/google_input_tools/third_party/closure_library/closure/bin/build/source.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2009 The Closure Library Authors. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
-diff --git a/third_party/google_input_tools/third_party/closure_library/closure/bin/build/source_test.py b/third_party/google_input_tools/third_party/closure_library/closure/bin/build/source_test.py
-index c9e4d12..a66d299 100755
---- a/third_party/google_input_tools/third_party/closure_library/closure/bin/build/source_test.py
-+++ b/third_party/google_input_tools/third_party/closure_library/closure/bin/build/source_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2010 The Closure Library Authors. All Rights Reserved.
- #
-diff --git a/third_party/google_input_tools/third_party/closure_library/closure/bin/build/treescan.py b/third_party/google_input_tools/third_party/closure_library/closure/bin/build/treescan.py
-index 6694593..7676fc2 100755
---- a/third_party/google_input_tools/third_party/closure_library/closure/bin/build/treescan.py
-+++ b/third_party/google_input_tools/third_party/closure_library/closure/bin/build/treescan.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2010 The Closure Library Authors. All Rights Reserved.
- #
-diff --git a/third_party/google_input_tools/third_party/closure_library/closure/bin/calcdeps.py b/third_party/google_input_tools/third_party/closure_library/closure/bin/calcdeps.py
-index 9cb1a6d..7b11cc2 100755
---- a/third_party/google_input_tools/third_party/closure_library/closure/bin/calcdeps.py
-+++ b/third_party/google_input_tools/third_party/closure_library/closure/bin/calcdeps.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2006 The Closure Library Authors. All Rights Reserved.
- #
-diff --git a/third_party/google_input_tools/third_party/closure_library/closure/bin/scopify.py b/third_party/google_input_tools/third_party/closure_library/closure/bin/scopify.py
-index d8057ef..ffb04cb 100755
---- a/third_party/google_input_tools/third_party/closure_library/closure/bin/scopify.py
-+++ b/third_party/google_input_tools/third_party/closure_library/closure/bin/scopify.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- #
- # Copyright 2010 The Closure Library Authors. All Rights Reserved.
- #
-diff --git a/third_party/google_input_tools/update.py b/third_party/google_input_tools/update.py
-index a9341ab..2dacf1f 100755
---- a/third_party/google_input_tools/update.py
-+++ b/third_party/google_input_tools/update.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- # 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.
-diff --git a/third_party/hyphenation-patterns/src/de/create_chr.py b/third_party/hyphenation-patterns/src/de/create_chr.py
-index eed4d66..0991a28 100755
---- a/third_party/hyphenation-patterns/src/de/create_chr.py
-+++ b/third_party/hyphenation-patterns/src/de/create_chr.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright (C) 2015 The Android Open Source Project
- #
-diff --git a/third_party/inspector_protocol/check_protocol_compatibility.py b/third_party/inspector_protocol/check_protocol_compatibility.py
-index d2df244..87896cb 100755
---- a/third_party/inspector_protocol/check_protocol_compatibility.py
-+++ b/third_party/inspector_protocol/check_protocol_compatibility.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2011 Google Inc. All rights reserved.
- #
- # Redistribution and use in source and binary forms, with or without
-diff --git a/third_party/inspector_protocol/code_generator.py b/third_party/inspector_protocol/code_generator.py
-index 92ca530..c53c47c 100755
---- a/third_party/inspector_protocol/code_generator.py
-+++ b/third_party/inspector_protocol/code_generator.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/inspector_protocol/concatenate_protocols.py b/third_party/inspector_protocol/concatenate_protocols.py
-index 42ecc7f..ef4a503 100755
---- a/third_party/inspector_protocol/concatenate_protocols.py
-+++ b/third_party/inspector_protocol/concatenate_protocols.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/inspector_protocol/convert_protocol_to_json.py b/third_party/inspector_protocol/convert_protocol_to_json.py
-index f98bebc..8984036 100755
---- a/third_party/inspector_protocol/convert_protocol_to_json.py
-+++ b/third_party/inspector_protocol/convert_protocol_to_json.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/inspector_protocol/roll.py b/third_party/inspector_protocol/roll.py
-index 3d6096b..5e63ed1 100755
---- a/third_party/inspector_protocol/roll.py
-+++ b/third_party/inspector_protocol/roll.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/js_code_coverage/clean_json_attrs.py b/third_party/js_code_coverage/clean_json_attrs.py
-index 0ee0026..a8e7afe 100755
---- a/third_party/js_code_coverage/clean_json_attrs.py
-+++ b/third_party/js_code_coverage/clean_json_attrs.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- import json
- import os
-diff --git a/third_party/js_code_coverage/coverage_modules.py b/third_party/js_code_coverage/coverage_modules.py
-index 889027f..cc2db0f 100755
---- a/third_party/js_code_coverage/coverage_modules.py
-+++ b/third_party/js_code_coverage/coverage_modules.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2021 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/third_party/jstemplate/compile.py b/third_party/jstemplate/compile.py
-index 26fc928..971dcd6 100755
---- a/third_party/jstemplate/compile.py
-+++ b/third_party/jstemplate/compile.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/libaddressinput/chromium/tools/require_fields.py b/third_party/libaddressinput/chromium/tools/require_fields.py
-index b82afa2..8ed3e20 100755
---- a/third_party/libaddressinput/chromium/tools/require_fields.py
-+++ b/third_party/libaddressinput/chromium/tools/require_fields.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/libaddressinput/chromium/tools/update-strings.py b/third_party/libaddressinput/chromium/tools/update-strings.py
-index 0373fb0..5a044be 100755
---- a/third_party/libaddressinput/chromium/tools/update-strings.py
-+++ b/third_party/libaddressinput/chromium/tools/update-strings.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2014 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/third_party/liblouis/liblouis_list_tables.py b/third_party/liblouis/liblouis_list_tables.py
-index 910b25c..a232629 100755
---- a/third_party/liblouis/liblouis_list_tables.py
-+++ b/third_party/liblouis/liblouis_list_tables.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2013 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.
-diff --git a/third_party/libxml/chromium/roll.py b/third_party/libxml/chromium/roll.py
-index ef23d4c..3a137cb 100755
---- a/third_party/libxml/chromium/roll.py
-+++ b/third_party/libxml/chromium/roll.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2017 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/third_party/lottie/minify_lottie.py b/third_party/lottie/minify_lottie.py
-index 7d03fee..f658e4e 100755
---- a/third_party/lottie/minify_lottie.py
-+++ b/third_party/lottie/minify_lottie.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2021 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/third_party/mako/examples/wsgi/run_wsgi.py b/third_party/mako/examples/wsgi/run_wsgi.py
-index 270022d..5324558 100755
---- a/third_party/mako/examples/wsgi/run_wsgi.py
-+++ b/third_party/mako/examples/wsgi/run_wsgi.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- from __future__ import absolute_import
- from __future__ import division
-diff --git a/third_party/mako/test/templates/internationalization.html b/third_party/mako/test/templates/internationalization.html
-index da5b61c..42cbc9e 100644
---- a/third_party/mako/test/templates/internationalization.html
-+++ b/third_party/mako/test/templates/internationalization.html
-@@ -282,7 +282,7 @@ but Python 2.4 and above support writing Unicode literals in any encoding as
- long as you declare the encoding being used by including a special comment as
- either the first or second line of the source file:</p>
- <textarea name="code" class="python">
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # -*- coding: latin-1 -*-
- 
- u = u'abcdÃ'
-@@ -293,7 +293,7 @@ default encoding for string literals; in Python 2.4, characters greater than
- 127 still work but result in a warning. For example, the following program has
- no encoding declaration:</p>
- <textarea name="code" class="python">
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- u = u'abcdÃ'
- print ord(u[-1])
- </textarea><p>When you run it with Python 2.4, it will output the following warning:</p>
-diff --git a/third_party/metrics_proto/PRESUBMIT_test.py b/third_party/metrics_proto/PRESUBMIT_test.py
-index c5f7c05..b9ce6d1 100755
---- a/third_party/metrics_proto/PRESUBMIT_test.py
-+++ b/third_party/metrics_proto/PRESUBMIT_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/pefile_py3/pefile.py b/third_party/pefile_py3/pefile.py
-index c162fbd..df36f92 100755
---- a/third_party/pefile_py3/pefile.py
-+++ b/third_party/pefile_py3/pefile.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- # -*- coding: utf-8 -*-
- """pefile, Portable Executable reader module
- 
-diff --git a/third_party/pexpect/FSM.py b/third_party/pexpect/FSM.py
-index c9085dc..18c09e0 100755
---- a/third_party/pexpect/FSM.py
-+++ b/third_party/pexpect/FSM.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- """This module implements a Finite State Machine (FSM). In addition to state
- this FSM also maintains a user defined "memory". So this FSM can be used as a
-diff --git a/third_party/pffft/generate_seed_corpus.py b/third_party/pffft/generate_seed_corpus.py
-index 18c9d31..a05b332 100755
---- a/third_party/pffft/generate_seed_corpus.py
-+++ b/third_party/pffft/generate_seed_corpus.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/polymer/v1_0/css_strip_prefixes_test.py b/third_party/polymer/v1_0/css_strip_prefixes_test.py
-index e23e8df..abe2008 100755
---- a/third_party/polymer/v1_0/css_strip_prefixes_test.py
-+++ b/third_party/polymer/v1_0/css_strip_prefixes_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/polymer/v1_0/rgbify_hex_vars_test.py b/third_party/polymer/v1_0/rgbify_hex_vars_test.py
-index d815c4b..daaa35b 100755
---- a/third_party/polymer/v1_0/rgbify_hex_vars_test.py
-+++ b/third_party/polymer/v1_0/rgbify_hex_vars_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/protobuf/conformance/conformance_python.py b/third_party/protobuf/conformance/conformance_python.py
-index 37ee36e..fad08fb 100755
---- a/third_party/protobuf/conformance/conformance_python.py
-+++ b/third_party/protobuf/conformance/conformance_python.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Protocol Buffers - Google's data interchange format
- # Copyright 2008 Google Inc.  All rights reserved.
- # https://developers.google.com/protocol-buffers/
-diff --git a/third_party/protobuf/conformance/update_failure_list.py b/third_party/protobuf/conformance/update_failure_list.py
-index ad42ed3..8d70e2c 100755
---- a/third_party/protobuf/conformance/update_failure_list.py
-+++ b/third_party/protobuf/conformance/update_failure_list.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Protocol Buffers - Google's data interchange format
- # Copyright 2008 Google Inc.  All rights reserved.
- # https://developers.google.com/protocol-buffers/
-diff --git a/third_party/protobuf/examples/add_person.py b/third_party/protobuf/examples/add_person.py
-index aa0fbca..c0eafd6 100755
---- a/third_party/protobuf/examples/add_person.py
-+++ b/third_party/protobuf/examples/add_person.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- 
- # See README.txt for information and build instructions.
- 
-diff --git a/third_party/protobuf/examples/list_people.py b/third_party/protobuf/examples/list_people.py
-index d2c294c..c170a70 100755
---- a/third_party/protobuf/examples/list_people.py
-+++ b/third_party/protobuf/examples/list_people.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- 
- # See README.txt for information and build instructions.
- 
-diff --git a/third_party/protobuf/generate_changelog.py b/third_party/protobuf/generate_changelog.py
-index 60803c5..ea87fb7 100755
---- a/third_party/protobuf/generate_changelog.py
-+++ b/third_party/protobuf/generate_changelog.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- """Generates a friendly list of changes per language since the last release."""
- 
-diff --git a/third_party/protobuf/objectivec/DevTools/pddm.py b/third_party/protobuf/objectivec/DevTools/pddm.py
-index b572cc7..507c33a 100755
---- a/third_party/protobuf/objectivec/DevTools/pddm.py
-+++ b/third_party/protobuf/objectivec/DevTools/pddm.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/python2
- #
- # Protocol Buffers - Google's data interchange format
- # Copyright 2015 Google Inc.  All rights reserved.
-diff --git a/third_party/protobuf/objectivec/DevTools/pddm_tests.py b/third_party/protobuf/objectivec/DevTools/pddm_tests.py
-index 8184209..f4ddc98 100755
---- a/third_party/protobuf/objectivec/DevTools/pddm_tests.py
-+++ b/third_party/protobuf/objectivec/DevTools/pddm_tests.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/python2
- #
- # Protocol Buffers - Google's data interchange format
- # Copyright 2015 Google Inc.  All rights reserved.
-diff --git a/third_party/protobuf/python/compatibility_tests/v2.5.0/setup.py b/third_party/protobuf/python/compatibility_tests/v2.5.0/setup.py
-index bf67536..341ca51 100755
---- a/third_party/protobuf/python/compatibility_tests/v2.5.0/setup.py
-+++ b/third_party/protobuf/python/compatibility_tests/v2.5.0/setup.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- #
- import glob
- import os
-diff --git a/third_party/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/descriptor_test.py b/third_party/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/descriptor_test.py
-index c74f882..3c4f69e 100755
---- a/third_party/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/descriptor_test.py
-+++ b/third_party/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/descriptor_test.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/python2
- #
- # Protocol Buffers - Google's data interchange format
- # Copyright 2008 Google Inc.  All rights reserved.
-diff --git a/third_party/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/generator_test.py b/third_party/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/generator_test.py
-index feb7752..1c5bcca 100755
---- a/third_party/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/generator_test.py
-+++ b/third_party/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/generator_test.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/python2
- #
- # Protocol Buffers - Google's data interchange format
- # Copyright 2008 Google Inc.  All rights reserved.
-diff --git a/third_party/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/message_test.py b/third_party/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/message_test.py
-index e71b295..f909c55 100755
---- a/third_party/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/message_test.py
-+++ b/third_party/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/message_test.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/python2
- #
- # Protocol Buffers - Google's data interchange format
- # Copyright 2008 Google Inc.  All rights reserved.
-diff --git a/third_party/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/service_reflection_test.py b/third_party/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/service_reflection_test.py
-index 9b7356f..9645925 100755
---- a/third_party/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/service_reflection_test.py
-+++ b/third_party/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/service_reflection_test.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/python2
- #
- # Protocol Buffers - Google's data interchange format
- # Copyright 2008 Google Inc.  All rights reserved.
-diff --git a/third_party/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/text_format_test.py b/third_party/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/text_format_test.py
-index 0bee668..7971707 100755
---- a/third_party/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/text_format_test.py
-+++ b/third_party/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/text_format_test.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/python2
- #
- # Protocol Buffers - Google's data interchange format
- # Copyright 2008 Google Inc.  All rights reserved.
-diff --git a/third_party/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/wire_format_test.py b/third_party/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/wire_format_test.py
-index 7600778..bcfaa0f 100755
---- a/third_party/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/wire_format_test.py
-+++ b/third_party/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/wire_format_test.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/python2
- #
- # Protocol Buffers - Google's data interchange format
- # Copyright 2008 Google Inc.  All rights reserved.
-diff --git a/third_party/protobuf/python/docs/generate_docs.py b/third_party/protobuf/python/docs/generate_docs.py
-index e024aaa..c08cc6d 100755
---- a/third_party/protobuf/python/docs/generate_docs.py
-+++ b/third_party/protobuf/python/docs/generate_docs.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Protocol Buffers - Google's data interchange format
- # Copyright 2008 Google Inc.  All rights reserved.
- # https://developers.google.com/protocol-buffers/
-diff --git a/third_party/protobuf/python/google/protobuf/internal/_parameterized.py b/third_party/protobuf/python/google/protobuf/internal/_parameterized.py
-index 4cba1d4..41c7e20 100755
---- a/third_party/protobuf/python/google/protobuf/internal/_parameterized.py
-+++ b/third_party/protobuf/python/google/protobuf/internal/_parameterized.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- #
- # Protocol Buffers - Google's data interchange format
- # Copyright 2008 Google Inc.  All rights reserved.
-diff --git a/third_party/protobuf/python/google/protobuf/internal/descriptor_database_test.py b/third_party/protobuf/python/google/protobuf/internal/descriptor_database_test.py
-index 619779a..64e2738 100755
---- a/third_party/protobuf/python/google/protobuf/internal/descriptor_database_test.py
-+++ b/third_party/protobuf/python/google/protobuf/internal/descriptor_database_test.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- #
- # Protocol Buffers - Google's data interchange format
- # Copyright 2008 Google Inc.  All rights reserved.
-diff --git a/third_party/protobuf/python/google/protobuf/internal/descriptor_pool_test.py b/third_party/protobuf/python/google/protobuf/internal/descriptor_pool_test.py
-index fed82bf..e86aabe 100755
---- a/third_party/protobuf/python/google/protobuf/internal/descriptor_pool_test.py
-+++ b/third_party/protobuf/python/google/protobuf/internal/descriptor_pool_test.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- #
- # Protocol Buffers - Google's data interchange format
- # Copyright 2008 Google Inc.  All rights reserved.
-diff --git a/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py b/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py
-index 5e3b0a9..f9cf515 100755
---- a/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py
-+++ b/third_party/protobuf/python/google/protobuf/internal/descriptor_test.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- #
- # Protocol Buffers - Google's data interchange format
- # Copyright 2008 Google Inc.  All rights reserved.
-diff --git a/third_party/protobuf/python/google/protobuf/internal/generator_test.py b/third_party/protobuf/python/google/protobuf/internal/generator_test.py
-index ab16d17..b3692b5 100755
---- a/third_party/protobuf/python/google/protobuf/internal/generator_test.py
-+++ b/third_party/protobuf/python/google/protobuf/internal/generator_test.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- #
- # Protocol Buffers - Google's data interchange format
- # Copyright 2008 Google Inc.  All rights reserved.
-diff --git a/third_party/protobuf/python/google/protobuf/internal/json_format_test.py b/third_party/protobuf/python/google/protobuf/internal/json_format_test.py
-index 4310115..d554395 100755
---- a/third_party/protobuf/python/google/protobuf/internal/json_format_test.py
-+++ b/third_party/protobuf/python/google/protobuf/internal/json_format_test.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- #
- # Protocol Buffers - Google's data interchange format
- # Copyright 2008 Google Inc.  All rights reserved.
-diff --git a/third_party/protobuf/python/google/protobuf/internal/keywords_test.py b/third_party/protobuf/python/google/protobuf/internal/keywords_test.py
-index 8744928..7438824 100755
---- a/third_party/protobuf/python/google/protobuf/internal/keywords_test.py
-+++ b/third_party/protobuf/python/google/protobuf/internal/keywords_test.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- #
- # Protocol Buffers - Google's data interchange format
- # Copyright 2008 Google Inc.  All rights reserved.
-diff --git a/third_party/protobuf/python/google/protobuf/internal/message_factory_test.py b/third_party/protobuf/python/google/protobuf/internal/message_factory_test.py
-index 24b79ec..0fa3dd5 100755
---- a/third_party/protobuf/python/google/protobuf/internal/message_factory_test.py
-+++ b/third_party/protobuf/python/google/protobuf/internal/message_factory_test.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- #
- # Protocol Buffers - Google's data interchange format
- # Copyright 2008 Google Inc.  All rights reserved.
-diff --git a/third_party/protobuf/python/google/protobuf/internal/message_test.py b/third_party/protobuf/python/google/protobuf/internal/message_test.py
-index a4d62a8..277e4c1 100755
---- a/third_party/protobuf/python/google/protobuf/internal/message_test.py
-+++ b/third_party/protobuf/python/google/protobuf/internal/message_test.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- # -*- coding: utf-8 -*-
- #
- # Protocol Buffers - Google's data interchange format
-diff --git a/third_party/protobuf/python/google/protobuf/internal/proto_builder_test.py b/third_party/protobuf/python/google/protobuf/internal/proto_builder_test.py
-index 36dfbfd..ae27697 100755
---- a/third_party/protobuf/python/google/protobuf/internal/proto_builder_test.py
-+++ b/third_party/protobuf/python/google/protobuf/internal/proto_builder_test.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- #
- # Protocol Buffers - Google's data interchange format
- # Copyright 2008 Google Inc.  All rights reserved.
-diff --git a/third_party/protobuf/python/google/protobuf/internal/reflection_test.py b/third_party/protobuf/python/google/protobuf/internal/reflection_test.py
-index e052776..5f67126 100755
---- a/third_party/protobuf/python/google/protobuf/internal/reflection_test.py
-+++ b/third_party/protobuf/python/google/protobuf/internal/reflection_test.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- # -*- coding: utf-8 -*-
- #
- # Protocol Buffers - Google's data interchange format
-diff --git a/third_party/protobuf/python/google/protobuf/internal/service_reflection_test.py b/third_party/protobuf/python/google/protobuf/internal/service_reflection_test.py
-index 77239f4..0560855 100755
---- a/third_party/protobuf/python/google/protobuf/internal/service_reflection_test.py
-+++ b/third_party/protobuf/python/google/protobuf/internal/service_reflection_test.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- #
- # Protocol Buffers - Google's data interchange format
- # Copyright 2008 Google Inc.  All rights reserved.
-diff --git a/third_party/protobuf/python/google/protobuf/internal/symbol_database_test.py b/third_party/protobuf/python/google/protobuf/internal/symbol_database_test.py
-index af42681..c3fa787 100755
---- a/third_party/protobuf/python/google/protobuf/internal/symbol_database_test.py
-+++ b/third_party/protobuf/python/google/protobuf/internal/symbol_database_test.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- #
- # Protocol Buffers - Google's data interchange format
- # Copyright 2008 Google Inc.  All rights reserved.
-diff --git a/third_party/protobuf/python/google/protobuf/internal/text_encoding_test.py b/third_party/protobuf/python/google/protobuf/internal/text_encoding_test.py
-index c7d182c..dd87a83 100755
---- a/third_party/protobuf/python/google/protobuf/internal/text_encoding_test.py
-+++ b/third_party/protobuf/python/google/protobuf/internal/text_encoding_test.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- #
- # Protocol Buffers - Google's data interchange format
- # Copyright 2008 Google Inc.  All rights reserved.
-diff --git a/third_party/protobuf/python/google/protobuf/internal/text_format_test.py b/third_party/protobuf/python/google/protobuf/internal/text_format_test.py
-index 987116a..902f52f 100755
---- a/third_party/protobuf/python/google/protobuf/internal/text_format_test.py
-+++ b/third_party/protobuf/python/google/protobuf/internal/text_format_test.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- # -*- coding: utf-8 -*-
- #
- # Protocol Buffers - Google's data interchange format
-diff --git a/third_party/protobuf/python/google/protobuf/internal/unknown_fields_test.py b/third_party/protobuf/python/google/protobuf/internal/unknown_fields_test.py
-index 277603d..d3662ba 100755
---- a/third_party/protobuf/python/google/protobuf/internal/unknown_fields_test.py
-+++ b/third_party/protobuf/python/google/protobuf/internal/unknown_fields_test.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- # -*- coding: utf-8 -*-
- #
- # Protocol Buffers - Google's data interchange format
-diff --git a/third_party/protobuf/python/google/protobuf/internal/well_known_types_test.py b/third_party/protobuf/python/google/protobuf/internal/well_known_types_test.py
-index 8089f03..aa0bcb9 100755
---- a/third_party/protobuf/python/google/protobuf/internal/well_known_types_test.py
-+++ b/third_party/protobuf/python/google/protobuf/internal/well_known_types_test.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- #
- # Protocol Buffers - Google's data interchange format
- # Copyright 2008 Google Inc.  All rights reserved.
-diff --git a/third_party/protobuf/python/google/protobuf/internal/wire_format_test.py b/third_party/protobuf/python/google/protobuf/internal/wire_format_test.py
-index da120f3..39a49a6 100755
---- a/third_party/protobuf/python/google/protobuf/internal/wire_format_test.py
-+++ b/third_party/protobuf/python/google/protobuf/internal/wire_format_test.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- #
- # Protocol Buffers - Google's data interchange format
- # Copyright 2008 Google Inc.  All rights reserved.
-diff --git a/third_party/protobuf/python/setup.py b/third_party/protobuf/python/setup.py
-index d003c96..2789fe1 100755
---- a/third_party/protobuf/python/setup.py
-+++ b/third_party/protobuf/python/setup.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- #
- # See README for usage instructions.
- from distutils import util
-diff --git a/third_party/protobuf/update_compatibility_version.py b/third_party/protobuf/update_compatibility_version.py
-index f93479b..883c257 100755
---- a/third_party/protobuf/update_compatibility_version.py
-+++ b/third_party/protobuf/update_compatibility_version.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- """Compatibility tests between last released and the current version.
- 
- Usage: ./update_compatibility_version.py <MAJOR>.<MINOR>.<MICRO> [<RC version>]
-diff --git a/third_party/protobuf/update_version.py b/third_party/protobuf/update_version.py
-index 470e425..9424b5a 100755
---- a/third_party/protobuf/update_version.py
-+++ b/third_party/protobuf/update_version.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Usage: ./update_version.py <MAJOR>.<MINOR>.<MICRO> [<RC version>]
- #
- # Example:
-diff --git a/third_party/pyjson5/src/benchmarks/run.py b/third_party/pyjson5/src/benchmarks/run.py
-index 63eb296..e0b4c20 100755
---- a/third_party/pyjson5/src/benchmarks/run.py
-+++ b/third_party/pyjson5/src/benchmarks/run.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2017 Google Inc. All rights reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
-diff --git a/third_party/pyjson5/src/run b/third_party/pyjson5/src/run
-index c28ba07..4b75ad0 100755
---- a/third_party/pyjson5/src/run
-+++ b/third_party/pyjson5/src/run
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- from __future__ import print_function
- 
-diff --git a/third_party/pylint/pylint/__main__.py b/third_party/pylint/pylint/__main__.py
-index 7716361..dae7041 100755
---- a/third_party/pylint/pylint/__main__.py
-+++ b/third_party/pylint/pylint/__main__.py
-@@ -1,3 +1,3 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- import pylint
- pylint.run_pylint()
-diff --git a/third_party/robolectric/3pp/fetch.py b/third_party/robolectric/3pp/fetch.py
-index eb40e19..7f039ff 100755
---- a/third_party/robolectric/3pp/fetch.py
-+++ b/third_party/robolectric/3pp/fetch.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2021 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/third_party/tlslite/scripts/tls.py b/third_party/tlslite/scripts/tls.py
-index 48035ce..9729bb3 100755
---- a/third_party/tlslite/scripts/tls.py
-+++ b/third_party/tlslite/scripts/tls.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Authors: 
- #   Trevor Perrin
-diff --git a/third_party/tlslite/scripts/tlsdb.py b/third_party/tlslite/scripts/tlsdb.py
-index 476d618..5c03476 100755
---- a/third_party/tlslite/scripts/tlsdb.py
-+++ b/third_party/tlslite/scripts/tlsdb.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Authors: 
- #   Trevor Perrin
-diff --git a/third_party/tlslite/setup.py b/third_party/tlslite/setup.py
-index 3ce281a..79970e9 100755
---- a/third_party/tlslite/setup.py
-+++ b/third_party/tlslite/setup.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Author: Trevor Perrin
- # See the LICENSE file for legal information regarding use of this file.
-diff --git a/third_party/tlslite/tests/httpsclient.py b/third_party/tlslite/tests/httpsclient.py
-index 1a764d7..f466200 100755
---- a/third_party/tlslite/tests/httpsclient.py
-+++ b/third_party/tlslite/tests/httpsclient.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- from __future__ import print_function
- from tlslite import HTTPTLSConnection, HandshakeSettings
- 
-diff --git a/third_party/tlslite/tests/tlstest.py b/third_party/tlslite/tests/tlstest.py
-index 7985d23..816668a 100755
---- a/third_party/tlslite/tests/tlstest.py
-+++ b/third_party/tlslite/tests/tlstest.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Authors: 
- #   Trevor Perrin
-diff --git a/third_party/turbine/3pp/fetch.py b/third_party/turbine/3pp/fetch.py
-index 2648206..5e3afcb 100755
---- a/third_party/turbine/3pp/fetch.py
-+++ b/third_party/turbine/3pp/fetch.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2021 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/third_party/wayland/wayland_scanner_wrapper.py b/third_party/wayland/wayland_scanner_wrapper.py
-index 3beab73..bbda24e 100755
---- a/third_party/wayland/wayland_scanner_wrapper.py
-+++ b/third_party/wayland/wayland_scanner_wrapper.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/webgpu-cts/scripts/compile_src.py b/third_party/webgpu-cts/scripts/compile_src.py
-index 80e2686..58b5d60 100755
---- a/third_party/webgpu-cts/scripts/compile_src.py
-+++ b/third_party/webgpu-cts/scripts/compile_src.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2021 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/third_party/webgpu-cts/scripts/gen_ts_dep_lists.py b/third_party/webgpu-cts/scripts/gen_ts_dep_lists.py
-index 85c942b..a8c8079 100755
---- a/third_party/webgpu-cts/scripts/gen_ts_dep_lists.py
-+++ b/third_party/webgpu-cts/scripts/gen_ts_dep_lists.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2021 The Chromium Authors.  All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/third_party/webgpu-cts/scripts/run_regenerate_internal_cts_html.py b/third_party/webgpu-cts/scripts/run_regenerate_internal_cts_html.py
-index 4d39311..d528514 100755
---- a/third_party/webgpu-cts/scripts/run_regenerate_internal_cts_html.py
-+++ b/third_party/webgpu-cts/scripts/run_regenerate_internal_cts_html.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2021 The Chromium Authors.  All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/third_party/webgpu-cts/scripts/tsc_ignore_errors.py b/third_party/webgpu-cts/scripts/tsc_ignore_errors.py
-index c05136c..f5f95a3 100755
---- a/third_party/webgpu-cts/scripts/tsc_ignore_errors.py
-+++ b/third_party/webgpu-cts/scripts/tsc_ignore_errors.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2021 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/third_party/webxr_test_pages/make_ot_samples_folder.py b/third_party/webxr_test_pages/make_ot_samples_folder.py
-index 93ad0c9..bae2227 100755
---- a/third_party/webxr_test_pages/make_ot_samples_folder.py
-+++ b/third_party/webxr_test_pages/make_ot_samples_folder.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/webxr_test_pages/update_bucket.py b/third_party/webxr_test_pages/update_bucket.py
-index 1e2f133..09e2751 100755
---- a/third_party/webxr_test_pages/update_bucket.py
-+++ b/third_party/webxr_test_pages/update_bucket.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/third_party/weston/generate_configs.py b/third_party/weston/generate_configs.py
-index cbe85b0..607e07c 100755
---- a/third_party/weston/generate_configs.py
-+++ b/third_party/weston/generate_configs.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/third_party/wpt_tools/wpt/tools/manifest/update.py b/third_party/wpt_tools/wpt/tools/manifest/update.py
-index a86ef7c..3869dd4 100755
---- a/third_party/wpt_tools/wpt/tools/manifest/update.py
-+++ b/third_party/wpt_tools/wpt/tools/manifest/update.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- import argparse
- import os
- 
-diff --git a/third_party/wpt_tools/wpt/tools/third_party/html5lib/parse.py b/third_party/wpt_tools/wpt/tools/third_party/html5lib/parse.py
-index e6806b4..66be980 100755
---- a/third_party/wpt_tools/wpt/tools/third_party/html5lib/parse.py
-+++ b/third_party/wpt_tools/wpt/tools/third_party/html5lib/parse.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- """
- Parse a document to a tree, with optional profiling
- """
-diff --git a/third_party/wpt_tools/wpt/tools/third_party/pywebsocket3/mod_pywebsocket/memorizingfile.py b/third_party/wpt_tools/wpt/tools/third_party/pywebsocket3/mod_pywebsocket/memorizingfile.py
-index d353967..2433bf4 100644
---- a/third_party/wpt_tools/wpt/tools/third_party/pywebsocket3/mod_pywebsocket/memorizingfile.py
-+++ b/third_party/wpt_tools/wpt/tools/third_party/pywebsocket3/mod_pywebsocket/memorizingfile.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2011, Google Inc.
- # All rights reserved.
-diff --git a/third_party/wpt_tools/wpt/tools/third_party/pywebsocket3/mod_pywebsocket/standalone.py b/third_party/wpt_tools/wpt/tools/third_party/pywebsocket3/mod_pywebsocket/standalone.py
-index 0a3bcdb..f203dc1 100755
---- a/third_party/wpt_tools/wpt/tools/third_party/pywebsocket3/mod_pywebsocket/standalone.py
-+++ b/third_party/wpt_tools/wpt/tools/third_party/pywebsocket3/mod_pywebsocket/standalone.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2012, Google Inc.
- # All rights reserved.
-diff --git a/third_party/wpt_tools/wpt/tools/third_party/pywebsocket3/setup.py b/third_party/wpt_tools/wpt/tools/third_party/pywebsocket3/setup.py
-index b65904c..7e2041a 100755
---- a/third_party/wpt_tools/wpt/tools/third_party/pywebsocket3/setup.py
-+++ b/third_party/wpt_tools/wpt/tools/third_party/pywebsocket3/setup.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2012, Google Inc.
- # All rights reserved.
-diff --git a/third_party/wpt_tools/wpt/tools/third_party/websockets/README.rst b/third_party/wpt_tools/wpt/tools/third_party/websockets/README.rst
-index 1e15ba1..20be2c2 100644
---- a/third_party/wpt_tools/wpt/tools/third_party/websockets/README.rst
-+++ b/third_party/wpt_tools/wpt/tools/third_party/websockets/README.rst
-@@ -45,7 +45,7 @@ Here's how a client sends and receives messages:
- 
- .. code:: python
- 
--    #!/usr/bin/env python
-+    #!/usr/bin/env python2
- 
-     import asyncio
-     import websockets
-@@ -62,7 +62,7 @@ And here's an echo server:
- 
- .. code:: python
- 
--    #!/usr/bin/env python
-+    #!/usr/bin/env python2
- 
-     import asyncio
-     import websockets
-diff --git a/third_party/wpt_tools/wpt/tools/third_party/websockets/performance/mem_client.py b/third_party/wpt_tools/wpt/tools/third_party/websockets/performance/mem_client.py
-index 890216e..6e596ab 100644
---- a/third_party/wpt_tools/wpt/tools/third_party/websockets/performance/mem_client.py
-+++ b/third_party/wpt_tools/wpt/tools/third_party/websockets/performance/mem_client.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- import asyncio
- import statistics
-diff --git a/third_party/wpt_tools/wpt/tools/third_party/websockets/performance/mem_server.py b/third_party/wpt_tools/wpt/tools/third_party/websockets/performance/mem_server.py
-index 0a4a29f..4e68799 100644
---- a/third_party/wpt_tools/wpt/tools/third_party/websockets/performance/mem_server.py
-+++ b/third_party/wpt_tools/wpt/tools/third_party/websockets/performance/mem_server.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- import asyncio
- import signal
-diff --git a/third_party/wpt_tools/wpt/tools/wptserve/wptserve/wptserve.py b/third_party/wpt_tools/wpt/tools/wptserve/wptserve/wptserve.py
-index 816c8a5..8cef4f6 100755
---- a/third_party/wpt_tools/wpt/tools/wptserve/wptserve/wptserve.py
-+++ b/third_party/wpt_tools/wpt/tools/wptserve/wptserve/wptserve.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- import argparse
- import os
- 
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/basic_auth_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/basic_auth_wsh.py
-index 72e920a..3b3f8e3 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/basic_auth_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/basic_auth_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- """A WebSocket handler that enforces basic HTTP authentication. Username is
- 'foo' and password is 'bar'."""
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/delayed-passive-close_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/delayed-passive-close_wsh.py
-index 7d55b88..6bd7fa4 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/delayed-passive-close_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/delayed-passive-close_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- from mod_pywebsocket import common
- import time
- 
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/echo-cookie_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/echo-cookie_wsh.py
-index 98620b6..0e5d890 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/echo-cookie_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/echo-cookie_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- from mod_pywebsocket import msgutil
- 
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/echo-query_v13_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/echo-query_v13_wsh.py
-index d670e6e..854af4c 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/echo-query_v13_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/echo-query_v13_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- from mod_pywebsocket import msgutil
- 
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/echo-query_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/echo-query_wsh.py
-index 3921913..f14d48a 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/echo-query_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/echo-query_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- from mod_pywebsocket import msgutil
- 
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/echo_close_data_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/echo_close_data_wsh.py
-index 31ffcbb..e2df208 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/echo_close_data_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/echo_close_data_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- _GOODBYE_MESSAGE = u'Goodbye'
- 
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/echo_exit_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/echo_exit_wsh.py
-index 8f6f7f8..011edba 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/echo_exit_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/echo_exit_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- _GOODBYE_MESSAGE = u'Goodbye'
- 
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/echo_raw_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/echo_raw_wsh.py
-index e1fc266..8b4a6a9 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/echo_raw_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/echo_raw_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- from mod_pywebsocket import msgutil
- 
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/echo_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/echo_wsh.py
-index 7367b70..c09257a 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/echo_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/echo_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- from mod_pywebsocket import common
- 
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/empty-message_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/empty-message_wsh.py
-index 0eb107f..23ed66c 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/empty-message_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/empty-message_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- from mod_pywebsocket import msgutil
- 
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/handshake_no_extensions_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/handshake_no_extensions_wsh.py
-index 0d0f0a8..9b3bca3 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/handshake_no_extensions_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/handshake_no_extensions_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- 
- def web_socket_do_extra_handshake(request):
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/handshake_no_protocol_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/handshake_no_protocol_wsh.py
-index ffc2ae8..2f59982 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/handshake_no_protocol_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/handshake_no_protocol_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- def web_socket_do_extra_handshake(request):
-     # Trick pywebsocket into believing no subprotocol was requested.
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/handshake_protocol_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/handshake_protocol_wsh.py
-index 2ca20c0..fba7b7a 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/handshake_protocol_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/handshake_protocol_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- def web_socket_do_extra_handshake(request):
-     request.ws_protocol = 'foobar'
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/handshake_sleep_2_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/handshake_sleep_2_wsh.py
-index 78de7c7..2cd9261 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/handshake_sleep_2_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/handshake_sleep_2_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- import time
- 
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/invalid_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/invalid_wsh.py
-index 4bfc3ce..e5f6eb8 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/invalid_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/invalid_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- def web_socket_do_extra_handshake(request):
-     request.connection.write(b"FOO BAR BAZ\r\n\r\n")
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/origin_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/origin_wsh.py
-index ce5f3a7..d2777d5 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/origin_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/origin_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- from mod_pywebsocket import msgutil
- 
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/protocol_array_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/protocol_array_wsh.py
-index be24ee0..eb091f0 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/protocol_array_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/protocol_array_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- from mod_pywebsocket import msgutil
- 
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/protocol_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/protocol_wsh.py
-index 10bdf33..6bbd627 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/protocol_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/protocol_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- from mod_pywebsocket import msgutil
- 
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/receive-backpressure_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/receive-backpressure_wsh.py
-index 9c2e470..5e1c923 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/receive-backpressure_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/receive-backpressure_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- import time
- 
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/referrer_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/referrer_wsh.py
-index 9df652d..0c68fc3 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/referrer_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/referrer_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- from mod_pywebsocket import msgutil
- 
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/send-backpressure_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/send-backpressure_wsh.py
-index d3288d0..1bf54c5 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/send-backpressure_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/send-backpressure_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- import time
- 
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/set-cookie-secure_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/set-cookie-secure_wsh.py
-index 052a882..03b091a 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/set-cookie-secure_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/set-cookie-secure_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- import urllib
- 
- 
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/set-cookie_http_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/set-cookie_http_wsh.py
-index 5331091..5ab63a5 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/set-cookie_http_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/set-cookie_http_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- import urllib
- 
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/set-cookie_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/set-cookie_wsh.py
-index 5fe3ad9..8724ea1 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/set-cookie_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/set-cookie_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- import urllib
- 
- 
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/simple_handshake_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/simple_handshake_wsh.py
-index ad46687..a4c2a04 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/simple_handshake_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/simple_handshake_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- from mod_pywebsocket import common, stream
- from mod_pywebsocket.handshake import AbortedByUserException, hybi
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/sleep_10_v13_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/sleep_10_v13_wsh.py
-index b0f1dde..fbfa054 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/sleep_10_v13_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/sleep_10_v13_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- import sys, urllib, time
- from mod_pywebsocket import msgutil
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/stash_responder_blocking_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/stash_responder_blocking_wsh.py
-index 10ecdfe..0d0080c 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/stash_responder_blocking_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/stash_responder_blocking_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- import json
- import threading
- import wptserve.stash
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/stash_responder_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/stash_responder_wsh.py
-index d18ad3b..91c0f2d 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/stash_responder_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/stash_responder_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- import json
- import urllib
- from mod_pywebsocket import msgutil
-diff --git a/third_party/wpt_tools/wpt/websockets/handlers/wrong_accept_key_wsh.py b/third_party/wpt_tools/wpt/websockets/handlers/wrong_accept_key_wsh.py
-index 43240e1..b01ae51 100755
---- a/third_party/wpt_tools/wpt/websockets/handlers/wrong_accept_key_wsh.py
-+++ b/third_party/wpt_tools/wpt/websockets/handlers/wrong_accept_key_wsh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- import sys, urllib, time
- 
-diff --git a/third_party/zxcvbn-cpp/data-scripts/build_frequency_lists.py b/third_party/zxcvbn-cpp/data-scripts/build_frequency_lists.py
-index 9be1391..a9bbe33 100755
---- a/third_party/zxcvbn-cpp/data-scripts/build_frequency_lists.py
-+++ b/third_party/zxcvbn-cpp/data-scripts/build_frequency_lists.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- import itertools
- import os
- import sys
-diff --git a/third_party/zxcvbn-cpp/data-scripts/build_keyboard_adjacency_graphs.py b/third_party/zxcvbn-cpp/data-scripts/build_keyboard_adjacency_graphs.py
-index 605f2d6..7b0d27e 100755
---- a/third_party/zxcvbn-cpp/data-scripts/build_keyboard_adjacency_graphs.py
-+++ b/third_party/zxcvbn-cpp/data-scripts/build_keyboard_adjacency_graphs.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- import os
- import sys
- import json
-diff --git a/third_party/zxcvbn-cpp/data-scripts/count_us_census.py b/third_party/zxcvbn-cpp/data-scripts/count_us_census.py
-index 1830ed9..43e40c2 100755
---- a/third_party/zxcvbn-cpp/data-scripts/count_us_census.py
-+++ b/third_party/zxcvbn-cpp/data-scripts/count_us_census.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- import sys
- import codecs
- 
-diff --git a/third_party/zxcvbn-cpp/data-scripts/count_wikipedia.py b/third_party/zxcvbn-cpp/data-scripts/count_wikipedia.py
-index aacf8d0..aad0492 100755
---- a/third_party/zxcvbn-cpp/data-scripts/count_wikipedia.py
-+++ b/third_party/zxcvbn-cpp/data-scripts/count_wikipedia.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- import sys
- import os
-diff --git a/third_party/zxcvbn-cpp/data-scripts/count_wiktionary.py b/third_party/zxcvbn-cpp/data-scripts/count_wiktionary.py
-index b538d76..414358b 100755
---- a/third_party/zxcvbn-cpp/data-scripts/count_wiktionary.py
-+++ b/third_party/zxcvbn-cpp/data-scripts/count_wiktionary.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python
-+#!/usr/bin/python2
- 
- import os
- import sys
-diff --git a/tools/accessibility/dump_accessibility_tree_auralinux.py b/tools/accessibility/dump_accessibility_tree_auralinux.py
-index 2a1ca15..d2ccfcd 100755
---- a/tools/accessibility/dump_accessibility_tree_auralinux.py
-+++ b/tools/accessibility/dump_accessibility_tree_auralinux.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/accessibility/nvda/nvda_chrome_tests.py b/tools/accessibility/nvda/nvda_chrome_tests.py
-index 3e0cb3a..af0c4be 100755
---- a/tools/accessibility/nvda/nvda_chrome_tests.py
-+++ b/tools/accessibility/nvda/nvda_chrome_tests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/accessibility/rebase_dump_accessibility_tree_test.py b/tools/accessibility/rebase_dump_accessibility_tree_test.py
-index 8f7a79c..f7d9ea5 100755
---- a/tools/accessibility/rebase_dump_accessibility_tree_test.py
-+++ b/tools/accessibility/rebase_dump_accessibility_tree_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/binary_size/sizes.py b/tools/binary_size/sizes.py
-index 7e9b4a4..5b8f6b1 100755
---- a/tools/binary_size/sizes.py
-+++ b/tools/binary_size/sizes.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/bisect-builds.py b/tools/bisect-builds.py
-index 674fd09..f2f56a1 100755
---- a/tools/bisect-builds.py
-+++ b/tools/bisect-builds.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/tools/boilerplate.py b/tools/boilerplate.py
-index b88ae84..260a100 100755
---- a/tools/boilerplate.py
-+++ b/tools/boilerplate.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/check_ecs_deps/check_ecs_deps.py b/tools/check_ecs_deps/check_ecs_deps.py
-index cad8116..5ddf4c4 100755
---- a/tools/check_ecs_deps/check_ecs_deps.py
-+++ b/tools/check_ecs_deps/check_ecs_deps.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2013 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.
-diff --git a/tools/check_git_config.py b/tools/check_git_config.py
-index 4907d85..eb23258 100755
---- a/tools/check_git_config.py
-+++ b/tools/check_git_config.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/check_grd_for_unused_strings.py b/tools/check_grd_for_unused_strings.py
-index d11c3e1..ad1007b 100755
---- a/tools/check_grd_for_unused_strings.py
-+++ b/tools/check_grd_for_unused_strings.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/tools/checklicenses/checklicenses.py b/tools/checklicenses/checklicenses.py
-index 69820bc..bce365b 100755
---- a/tools/checklicenses/checklicenses.py
-+++ b/tools/checklicenses/checklicenses.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/tools/checkperms/checkperms.py b/tools/checkperms/checkperms.py
-index 3141417..726700d 100755
---- a/tools/checkperms/checkperms.py
-+++ b/tools/checkperms/checkperms.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/tools/checkteamtags/checkteamtags.py b/tools/checkteamtags/checkteamtags.py
-index f168a4f..8c49543 100755
---- a/tools/checkteamtags/checkteamtags.py
-+++ b/tools/checkteamtags/checkteamtags.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/tools/checkteamtags/extract_components.py b/tools/checkteamtags/extract_components.py
-index 73f4586..6ee2fdd 100755
---- a/tools/checkteamtags/extract_components.py
-+++ b/tools/checkteamtags/extract_components.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/tools/chrome_extensions/open_my_editor/myeditor-example/qtcreator-example.py b/tools/chrome_extensions/open_my_editor/myeditor-example/qtcreator-example.py
-index d9a5aa1..2af6a07 100755
---- a/tools/chrome_extensions/open_my_editor/myeditor-example/qtcreator-example.py
-+++ b/tools/chrome_extensions/open_my_editor/myeditor-example/qtcreator-example.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2017 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/tools/chrome_extensions/open_my_editor/myeditor-example/vscode-example.py b/tools/chrome_extensions/open_my_editor/myeditor-example/vscode-example.py
-index ecd8250..bd49331 100755
---- a/tools/chrome_extensions/open_my_editor/myeditor-example/vscode-example.py
-+++ b/tools/chrome_extensions/open_my_editor/myeditor-example/vscode-example.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2017 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/tools/chrome_extensions/open_my_editor/omed.py b/tools/chrome_extensions/open_my_editor/omed.py
-index 2998c68..788af3e 100755
---- a/tools/chrome_extensions/open_my_editor/omed.py
-+++ b/tools/chrome_extensions/open_my_editor/omed.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2017 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/tools/clang/blink_gc_plugin/process-graph.py b/tools/clang/blink_gc_plugin/process-graph.py
-index eac8f36..7182059 100755
---- a/tools/clang/blink_gc_plugin/process-graph.py
-+++ b/tools/clang/blink_gc_plugin/process-graph.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/clang/blink_gc_plugin/tests/test.py b/tools/clang/blink_gc_plugin/tests/test.py
-index a90f549..b8ff295 100755
---- a/tools/clang/blink_gc_plugin/tests/test.py
-+++ b/tools/clang/blink_gc_plugin/tests/test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/clang/plugins/tests/test.py b/tools/clang/plugins/tests/test.py
-index 3439148..0102e7d 100755
---- a/tools/clang/plugins/tests/test.py
-+++ b/tools/clang/plugins/tests/test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/clang/pylib/clang/plugin_testing.py b/tools/clang/pylib/clang/plugin_testing.py
-index 6b2e606..a0e155f 100755
---- a/tools/clang/pylib/clang/plugin_testing.py
-+++ b/tools/clang/pylib/clang/plugin_testing.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/clang/scripts/apply_edits.py b/tools/clang/scripts/apply_edits.py
-index abf95df..4e1e340 100755
---- a/tools/clang/scripts/apply_edits.py
-+++ b/tools/clang/scripts/apply_edits.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2013 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.
-diff --git a/tools/clang/scripts/apply_edits_test.py b/tools/clang/scripts/apply_edits_test.py
-index a2bc63b..402eed0 100755
---- a/tools/clang/scripts/apply_edits_test.py
-+++ b/tools/clang/scripts/apply_edits_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/tools/clang/scripts/apply_fixits.py b/tools/clang/scripts/apply_fixits.py
-index b299711..9d9bdbf 100755
---- a/tools/clang/scripts/apply_fixits.py
-+++ b/tools/clang/scripts/apply_fixits.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/clang/scripts/build.py b/tools/clang/scripts/build.py
-index fc83122..9ac98ae 100755
---- a/tools/clang/scripts/build.py
-+++ b/tools/clang/scripts/build.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/clang/scripts/build_clang_tools_extra.py b/tools/clang/scripts/build_clang_tools_extra.py
-index 7c49391..d725a7c 100755
---- a/tools/clang/scripts/build_clang_tools_extra.py
-+++ b/tools/clang/scripts/build_clang_tools_extra.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/clang/scripts/build_file.py b/tools/clang/scripts/build_file.py
-index 878203f..e7020de 100755
---- a/tools/clang/scripts/build_file.py
-+++ b/tools/clang/scripts/build_file.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/clang/scripts/clang_tidy_tool.py b/tools/clang/scripts/clang_tidy_tool.py
-index afbe12b..32e5b04 100755
---- a/tools/clang/scripts/clang_tidy_tool.py
-+++ b/tools/clang/scripts/clang_tidy_tool.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/clang/scripts/download_objdump.py b/tools/clang/scripts/download_objdump.py
-index 9ecae96..d210883 100755
---- a/tools/clang/scripts/download_objdump.py
-+++ b/tools/clang/scripts/download_objdump.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/clang/scripts/expand_thin_archives.py b/tools/clang/scripts/expand_thin_archives.py
-index b513935..db7b6b0 100755
---- a/tools/clang/scripts/expand_thin_archives.py
-+++ b/tools/clang/scripts/expand_thin_archives.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/clang/scripts/extract_edits.py b/tools/clang/scripts/extract_edits.py
-index 31167fc..3dffcba 100755
---- a/tools/clang/scripts/extract_edits.py
-+++ b/tools/clang/scripts/extract_edits.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/tools/clang/scripts/goma_ld.py b/tools/clang/scripts/goma_ld.py
-index 21a7dd2..3beb259 100755
---- a/tools/clang/scripts/goma_ld.py
-+++ b/tools/clang/scripts/goma_ld.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- # Copyright (c) 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/tools/clang/scripts/goma_link.py b/tools/clang/scripts/goma_link.py
-index a101dc9..704a90d 100755
---- a/tools/clang/scripts/goma_link.py
-+++ b/tools/clang/scripts/goma_link.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python2
- # Copyright (c) 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/tools/clang/scripts/package.py b/tools/clang/scripts/package.py
-index 635634d..f18fba6 100755
---- a/tools/clang/scripts/package.py
-+++ b/tools/clang/scripts/package.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/tools/clang/scripts/process_crashreports.py b/tools/clang/scripts/process_crashreports.py
-index d6d7cd9..38aec96 100755
---- a/tools/clang/scripts/process_crashreports.py
-+++ b/tools/clang/scripts/process_crashreports.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/clang/scripts/run_tool.py b/tools/clang/scripts/run_tool.py
-index 3cd2873..6bdb3cf 100755
---- a/tools/clang/scripts/run_tool.py
-+++ b/tools/clang/scripts/run_tool.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2013 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.
-diff --git a/tools/clang/scripts/test_tool.py b/tools/clang/scripts/test_tool.py
-index 1980441..737a86a 100755
---- a/tools/clang/scripts/test_tool.py
-+++ b/tools/clang/scripts/test_tool.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2013 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.
-diff --git a/tools/clang/scripts/update.py b/tools/clang/scripts/update.py
-index 6b57177..e5b879e 100755
---- a/tools/clang/scripts/update.py
-+++ b/tools/clang/scripts/update.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/tools/clang/scripts/upload_revision.py b/tools/clang/scripts/upload_revision.py
-index 12cc917..f6a59ff 100755
---- a/tools/clang/scripts/upload_revision.py
-+++ b/tools/clang/scripts/upload_revision.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/tools/clang/stack_maps/tests/test.py b/tools/clang/stack_maps/tests/test.py
-index 90b8d8b..26b8691 100755
---- a/tools/clang/stack_maps/tests/test.py
-+++ b/tools/clang/stack_maps/tests/test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/clang/translation_unit/test_translation_unit.py b/tools/clang/translation_unit/test_translation_unit.py
-index 6c0e289..fa262da 100755
---- a/tools/clang/translation_unit/test_translation_unit.py
-+++ b/tools/clang/translation_unit/test_translation_unit.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/tools/code_coverage/coverage_test.py b/tools/code_coverage/coverage_test.py
-index b92850e..2f72e15 100755
---- a/tools/code_coverage/coverage_test.py
-+++ b/tools/code_coverage/coverage_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/code_coverage/run_fuzz_target.py b/tools/code_coverage/run_fuzz_target.py
-index 07ccb5c..901a4ed 100755
---- a/tools/code_coverage/run_fuzz_target.py
-+++ b/tools/code_coverage/run_fuzz_target.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/compile_test/compile_test.py b/tools/compile_test/compile_test.py
-index 77f1ce2..e632c04 100755
---- a/tools/compile_test/compile_test.py
-+++ b/tools/compile_test/compile_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2013 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.
-diff --git a/tools/coverity/coverity.py b/tools/coverity/coverity.py
-index 7091a85..0575e52 100755
---- a/tools/coverity/coverity.py
-+++ b/tools/coverity/coverity.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/determinism/compare_build_artifacts.py b/tools/determinism/compare_build_artifacts.py
-index 82ec95f..c520332 100755
---- a/tools/determinism/compare_build_artifacts.py
-+++ b/tools/determinism/compare_build_artifacts.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/determinism/create_diffs_tarball.py b/tools/determinism/create_diffs_tarball.py
-index fdb7d63..0a68353 100755
---- a/tools/determinism/create_diffs_tarball.py
-+++ b/tools/determinism/create_diffs_tarball.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/diagnose-me.py b/tools/diagnose-me.py
-index 06051f5..661c6ab 100755
---- a/tools/diagnose-me.py
-+++ b/tools/diagnose-me.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/tools/download_optimization_profile.py b/tools/download_optimization_profile.py
-index 6cc5359..64f7d8e 100755
---- a/tools/download_optimization_profile.py
-+++ b/tools/download_optimization_profile.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/dromaeo_benchmark_runner/dromaeo_benchmark_runner.py b/tools/dromaeo_benchmark_runner/dromaeo_benchmark_runner.py
-index 45f70cb..9f59cb0 100755
---- a/tools/dromaeo_benchmark_runner/dromaeo_benchmark_runner.py
-+++ b/tools/dromaeo_benchmark_runner/dromaeo_benchmark_runner.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/dump_process_memory/analyze_dumps.py b/tools/dump_process_memory/analyze_dumps.py
-index d5ef68c..e6597e5 100755
---- a/tools/dump_process_memory/analyze_dumps.py
-+++ b/tools/dump_process_memory/analyze_dumps.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2018 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/tools/dump_process_memory/collect_process_dump.py b/tools/dump_process_memory/collect_process_dump.py
-index 47f4b6e..44aa1b1 100755
---- a/tools/dump_process_memory/collect_process_dump.py
-+++ b/tools/dump_process_memory/collect_process_dump.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2019 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/tools/find_runtime_symbols/find_runtime_symbols.py b/tools/find_runtime_symbols/find_runtime_symbols.py
-index 51d129e..29862d2 100755
---- a/tools/find_runtime_symbols/find_runtime_symbols.py
-+++ b/tools/find_runtime_symbols/find_runtime_symbols.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/tools/find_runtime_symbols/prepare_symbol_info.py b/tools/find_runtime_symbols/prepare_symbol_info.py
-index befe314..31efa21 100755
---- a/tools/find_runtime_symbols/prepare_symbol_info.py
-+++ b/tools/find_runtime_symbols/prepare_symbol_info.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/tools/find_runtime_symbols/reduce_debugline.py b/tools/find_runtime_symbols/reduce_debugline.py
-index 6e67294..fab3647 100755
---- a/tools/find_runtime_symbols/reduce_debugline.py
-+++ b/tools/find_runtime_symbols/reduce_debugline.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2013 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.
-diff --git a/tools/find_runtime_symbols/tests/reduce_debugline_test.py b/tools/find_runtime_symbols/tests/reduce_debugline_test.py
-index 1e3a21a..58f8778 100755
---- a/tools/find_runtime_symbols/tests/reduce_debugline_test.py
-+++ b/tools/find_runtime_symbols/tests/reduce_debugline_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2013 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.
-diff --git a/tools/flags/generate_expired_list.py b/tools/flags/generate_expired_list.py
-index f199aab..d2d7fcb 100755
---- a/tools/flags/generate_expired_list.py
-+++ b/tools/flags/generate_expired_list.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/flags/generate_unexpire_flags.py b/tools/flags/generate_unexpire_flags.py
-index a5565d5..569d47a 100755
---- a/tools/flags/generate_unexpire_flags.py
-+++ b/tools/flags/generate_unexpire_flags.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/tools/flags/generate_unexpire_flags_unittests.py b/tools/flags/generate_unexpire_flags_unittests.py
-index 2d9236a..f274e9f 100755
---- a/tools/flags/generate_unexpire_flags_unittests.py
-+++ b/tools/flags/generate_unexpire_flags_unittests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/tools/flags/list_flags.py b/tools/flags/list_flags.py
-index e43cdf8..85fc9c4 100755
---- a/tools/flags/list_flags.py
-+++ b/tools/flags/list_flags.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/flakiness/find_flakiness.py b/tools/flakiness/find_flakiness.py
-index 52734c9..23e5567 100755
---- a/tools/flakiness/find_flakiness.py
-+++ b/tools/flakiness/find_flakiness.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/flakiness/is_flaky.py b/tools/flakiness/is_flaky.py
-index 896a2b9..7b0e8fe 100755
---- a/tools/flakiness/is_flaky.py
-+++ b/tools/flakiness/is_flaky.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/fuchsia/local-sdk.py b/tools/fuchsia/local-sdk.py
-index 2162657..ca6e0fe 100755
---- a/tools/fuchsia/local-sdk.py
-+++ b/tools/fuchsia/local-sdk.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2017 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/tools/generate_library_loader/generate_library_loader.py b/tools/generate_library_loader/generate_library_loader.py
-index 50fea93..5f0f7ee 100755
---- a/tools/generate_library_loader/generate_library_loader.py
-+++ b/tools/generate_library_loader/generate_library_loader.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/tools/generate_shim_headers/generate_shim_headers.py b/tools/generate_shim_headers/generate_shim_headers.py
-index 1b8e27f..7f8cfc0 100755
---- a/tools/generate_shim_headers/generate_shim_headers.py
-+++ b/tools/generate_shim_headers/generate_shim_headers.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/tools/generate_stubs/generate_stubs.py b/tools/generate_stubs/generate_stubs.py
-index f9ff0e0..25be9ff 100755
---- a/tools/generate_stubs/generate_stubs.py
-+++ b/tools/generate_stubs/generate_stubs.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/tools/generate_stubs/generate_stubs_unittest.py b/tools/generate_stubs/generate_stubs_unittest.py
-index fe4878e..68f5b4e 100755
---- a/tools/generate_stubs/generate_stubs_unittest.py
-+++ b/tools/generate_stubs/generate_stubs_unittest.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/tools/git/for-all-touched-files.py b/tools/git/for-all-touched-files.py
-index a3d347f..6fc62a7 100755
---- a/tools/git/for-all-touched-files.py
-+++ b/tools/git/for-all-touched-files.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/git/git-diff-ide.py b/tools/git/git-diff-ide.py
-index 95a7af3..faeba9f 100755
---- a/tools/git/git-diff-ide.py
-+++ b/tools/git/git-diff-ide.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/tools/git/mass-rename.py b/tools/git/mass-rename.py
-index 3f05bbb..f21b555 100755
---- a/tools/git/mass-rename.py
-+++ b/tools/git/mass-rename.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2013 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.
-diff --git a/tools/git/mffr.py b/tools/git/mffr.py
-index 563eb40..9df05be 100755
---- a/tools/git/mffr.py
-+++ b/tools/git/mffr.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2013 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.
-diff --git a/tools/git/move_source_file.py b/tools/git/move_source_file.py
-index f7a2a20..6c48342 100755
---- a/tools/git/move_source_file.py
-+++ b/tools/git/move_source_file.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/tools/git/suggest_owners.py b/tools/git/suggest_owners.py
-index 4e2181c..272ee6b 100755
---- a/tools/git/suggest_owners.py
-+++ b/tools/git/suggest_owners.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/gn/bootstrap/bootstrap.py b/tools/gn/bootstrap/bootstrap.py
-index 6617d63..20ddef5 100755
---- a/tools/gn/bootstrap/bootstrap.py
-+++ b/tools/gn/bootstrap/bootstrap.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/gn/build/full_test.py b/tools/gn/build/full_test.py
-index 2095ddd..72a0746 100755
---- a/tools/gn/build/full_test.py
-+++ b/tools/gn/build/full_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/gn/build/gen.py b/tools/gn/build/gen.py
-index 922bf46..96dbafa 100755
---- a/tools/gn/build/gen.py
-+++ b/tools/gn/build/gen.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/gn/infra/recipes.py b/tools/gn/infra/recipes.py
-index 2fe0086..4653185 100755
---- a/tools/gn/infra/recipes.py
-+++ b/tools/gn/infra/recipes.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2017 The LUCI Authors. All rights reserved.
- # Use of this source code is governed under the Apache License, Version 2.0
-diff --git a/tools/gn/misc/help_as_html.py b/tools/gn/misc/help_as_html.py
-index f8f1c1b..3e419fe 100755
---- a/tools/gn/misc/help_as_html.py
-+++ b/tools/gn/misc/help_as_html.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/gn/roll_gn.py b/tools/gn/roll_gn.py
-index c88fb5a..308b68c 100755
---- a/tools/gn/roll_gn.py
-+++ b/tools/gn/roll_gn.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/gn/src/gn/json_project_writer_unittest.cc b/tools/gn/src/gn/json_project_writer_unittest.cc
-index 1915c30..1f0ca14 100644
---- a/tools/gn/src/gn/json_project_writer_unittest.cc
-+++ b/tools/gn/src/gn/json_project_writer_unittest.cc
-@@ -37,7 +37,7 @@ TEST_F(JSONWriter, ActionWithResponseFile) {
-       SubstitutionList::MakeForTest("//out/Debug/output1.out");
- 
-   setup.build_settings()->set_python_path(
--      base::FilePath(FILE_PATH_LITERAL("/usr/bin/python")));
-+      base::FilePath(FILE_PATH_LITERAL("/usr/bin/python2")));
-   std::vector<const Target*> targets;
-   targets.push_back(&target);
- #if defined(OS_WIN)
-@@ -498,7 +498,7 @@ TEST_F(JSONWriter, ForEachWithResponseFile) {
-       SubstitutionList::MakeForTest("//out/Debug/{{source_name_part}}.out");
- 
-   setup.build_settings()->set_python_path(
--      base::FilePath(FILE_PATH_LITERAL("/usr/bin/python")));
-+      base::FilePath(FILE_PATH_LITERAL("/usr/bin/python2")));
-   std::vector<const Target*> targets;
-   targets.push_back(&target);
- #if defined(OS_WIN)
-diff --git a/tools/gn/src/gn/ninja_action_target_writer_unittest.cc b/tools/gn/src/gn/ninja_action_target_writer_unittest.cc
-index 80b125b..b371c76 100644
---- a/tools/gn/src/gn/ninja_action_target_writer_unittest.cc
-+++ b/tools/gn/src/gn/ninja_action_target_writer_unittest.cc
-@@ -54,14 +54,14 @@ TEST(NinjaActionTargetWriter, ActionNoSources) {
-   ASSERT_TRUE(target.OnResolved(&err));
- 
-   setup.build_settings()->set_python_path(
--      base::FilePath(FILE_PATH_LITERAL("/usr/bin/python")));
-+      base::FilePath(FILE_PATH_LITERAL("/usr/bin/python2")));
- 
-   std::ostringstream out;
-   NinjaActionTargetWriter writer(&target, out);
-   writer.Run();
- 
-   const char* expected = R"(rule __foo_bar___rule
--  command = /usr/bin/python ../../foo/script.py
-+  command = /usr/bin/python2 ../../foo/script.py
-   description = ACTION //foo:bar()
-   restat = 1
- 
-@@ -96,7 +96,7 @@ TEST(NinjaActionTargetWriter, ActionNoSourcesConsole) {
-   ASSERT_TRUE(target.OnResolved(&err));
- 
-   setup.build_settings()->set_python_path(
--      base::FilePath(FILE_PATH_LITERAL("/usr/bin/python")));
-+      base::FilePath(FILE_PATH_LITERAL("/usr/bin/python2")));
- 
-   std::ostringstream out;
-   NinjaActionTargetWriter writer(&target, out);
-@@ -105,7 +105,7 @@ TEST(NinjaActionTargetWriter, ActionNoSourcesConsole) {
-   // The console pool's name must be mapped exactly to the string "console"
-   // which is a special pre-defined pool name in ninja.
-   const char* expected = R"(rule __foo_bar___rule
--  command = /usr/bin/python ../../foo/script.py
-+  command = /usr/bin/python2 ../../foo/script.py
-   description = ACTION //foo:bar()
-   restat = 1
- 
-@@ -138,7 +138,7 @@ TEST(NinjaActionTargetWriter, ActionWithSources) {
-   ASSERT_TRUE(target.OnResolved(&err));
- 
-   setup.build_settings()->set_python_path(
--      base::FilePath(FILE_PATH_LITERAL("/usr/bin/python")));
-+      base::FilePath(FILE_PATH_LITERAL("/usr/bin/python2")));
- 
-   std::ostringstream out;
-   NinjaActionTargetWriter writer(&target, out);
-@@ -146,7 +146,7 @@ TEST(NinjaActionTargetWriter, ActionWithSources) {
- 
-   const char expected_linux[] =
-       "rule __foo_bar___rule\n"
--      "  command = /usr/bin/python ../../foo/script.py\n"
-+      "  command = /usr/bin/python2 ../../foo/script.py\n"
-       "  description = ACTION //foo:bar()\n"
-       "  restat = 1\n"
-       "\n"
-@@ -207,7 +207,7 @@ TEST(NinjaActionTargetWriter, ForEach) {
-   ASSERT_TRUE(target.OnResolved(&err));
- 
-   setup.build_settings()->set_python_path(
--      base::FilePath(FILE_PATH_LITERAL("/usr/bin/python")));
-+      base::FilePath(FILE_PATH_LITERAL("/usr/bin/python2")));
- 
-   std::ostringstream out;
-   NinjaActionTargetWriter writer(&target, out);
-@@ -215,7 +215,7 @@ TEST(NinjaActionTargetWriter, ForEach) {
- 
-   const char expected_linux[] =
-       "rule __foo_bar___rule\n"
--      "  command = /usr/bin/python ../../foo/script.py -i ${in} "
-+      "  command = /usr/bin/python2 ../../foo/script.py -i ${in} "
- // Escaping is different between Windows and Posix.
- #if defined(OS_WIN)
-       "\"--out=foo$ bar${source_name_part}.o\"\n"
-@@ -273,7 +273,7 @@ TEST(NinjaActionTargetWriter, ForEachWithDepfile) {
-   target.config_values().inputs().push_back(SourceFile("//foo/included.txt"));
- 
-   setup.build_settings()->set_python_path(
--      base::FilePath(FILE_PATH_LITERAL("/usr/bin/python")));
-+      base::FilePath(FILE_PATH_LITERAL("/usr/bin/python2")));
-   setup.build_settings()->set_ninja_required_version(Version{1, 9, 0});
- 
-   std::ostringstream out;
-@@ -282,7 +282,7 @@ TEST(NinjaActionTargetWriter, ForEachWithDepfile) {
- 
-   const char expected_linux[] =
-       "rule __foo_bar___rule\n"
--      "  command = /usr/bin/python ../../foo/script.py -i ${in} "
-+      "  command = /usr/bin/python2 ../../foo/script.py -i ${in} "
- #if defined(OS_WIN)
-       "\"--out=foo$ bar${source_name_part}.o\"\n"
- #else
-@@ -331,7 +331,7 @@ TEST(NinjaActionTargetWriter, ForEachWithResponseFile) {
-       SubstitutionList::MakeForTest("//out/Debug/{{source_name_part}}.out");
- 
-   setup.build_settings()->set_python_path(
--      base::FilePath(FILE_PATH_LITERAL("/usr/bin/python")));
-+      base::FilePath(FILE_PATH_LITERAL("/usr/bin/python2")));
- 
-   std::ostringstream out;
-   NinjaActionTargetWriter writer(&target, out);
-@@ -344,7 +344,7 @@ TEST(NinjaActionTargetWriter, ForEachWithResponseFile) {
-       // These come from rsp_file_contents above.
-       "  rspfile_content = -j ${source_name_part}\n"
-       // These come from the args.
--      "  command = /usr/bin/python ../../foo/script.py ${in} "
-+      "  command = /usr/bin/python2 ../../foo/script.py ${in} "
-       "${source_file_part} ${rspfile}\n"
-       "  description = ACTION //foo:bar()\n"
-       "  restat = 1\n"
-@@ -389,7 +389,7 @@ TEST(NinjaActionTargetWriter, ForEachWithPool) {
-       SubstitutionList::MakeForTest("//out/Debug/{{source_name_part}}.out");
- 
-   setup.build_settings()->set_python_path(
--      base::FilePath(FILE_PATH_LITERAL("/usr/bin/python")));
-+      base::FilePath(FILE_PATH_LITERAL("/usr/bin/python2")));
- 
-   std::ostringstream out;
-   NinjaActionTargetWriter writer(&target, out);
-@@ -398,7 +398,7 @@ TEST(NinjaActionTargetWriter, ForEachWithPool) {
-   const char expected_linux[] =
-       "rule __foo_bar___rule\n"
-       // These come from the args.
--      "  command = /usr/bin/python ../../foo/script.py ${in} "
-+      "  command = /usr/bin/python2 ../../foo/script.py ${in} "
-       "${source_file_part}\n"
-       "  description = ACTION //foo:bar()\n"
-       "  restat = 1\n"
-@@ -418,7 +418,7 @@ TEST(NinjaActionTargetWriter, NoTransitiveHardDeps) {
-   TestWithScope setup;
- 
-   setup.build_settings()->set_python_path(
--      base::FilePath(FILE_PATH_LITERAL("/usr/bin/python")));
-+      base::FilePath(FILE_PATH_LITERAL("/usr/bin/python2")));
- 
-   Target dep(setup.settings(), Label(SourceDir("//foo/"), "dep"));
-   dep.set_output_type(Target::ACTION);
-@@ -445,7 +445,7 @@ TEST(NinjaActionTargetWriter, NoTransitiveHardDeps) {
-     const char expected_linux[] =
-         "rule __foo_foo___rule\n"
-         // These come from the args.
--        "  command = /usr/bin/python ../../foo/script.py\n"
-+        "  command = /usr/bin/python2 ../../foo/script.py\n"
-         "  description = ACTION //foo:foo()\n"
-         "  restat = 1\n"
-         "\n"
-@@ -474,7 +474,7 @@ TEST(NinjaActionTargetWriter, NoTransitiveHardDeps) {
-     const char expected_linux[] =
-         "rule __bar_bar___rule\n"
-         // These come from the args.
--        "  command = /usr/bin/python ../../bar/script.py\n"
-+        "  command = /usr/bin/python2 ../../bar/script.py\n"
-         "  description = ACTION //bar:bar()\n"
-         "  restat = 1\n"
-         "\n"
-diff --git a/tools/gn/tools/find_unreachable.py b/tools/gn/tools/find_unreachable.py
-index 406a312..df81838 100755
---- a/tools/gn/tools/find_unreachable.py
-+++ b/tools/gn/tools/find_unreachable.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/tools/grit/minify_with_uglify.py b/tools/grit/minify_with_uglify.py
-index 5cfb04e..1221555 100755
---- a/tools/grit/minify_with_uglify.py
-+++ b/tools/grit/minify_with_uglify.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/gypv8sh.py b/tools/gypv8sh.py
-index 7658c64..ff993e3 100755
---- a/tools/gypv8sh.py
-+++ b/tools/gypv8sh.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/tools/include_tracer.py b/tools/include_tracer.py
-index 98fadb1..dc9f0f2 100755
---- a/tools/include_tracer.py
-+++ b/tools/include_tracer.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/infra/builder-cache-clobber.py b/tools/infra/builder-cache-clobber.py
-index 79d5cc7..ade79d0 100755
---- a/tools/infra/builder-cache-clobber.py
-+++ b/tools/infra/builder-cache-clobber.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/infra/named-cache-clobber.py b/tools/infra/named-cache-clobber.py
-index ad5b66e..8b6e1cc 100755
---- a/tools/infra/named-cache-clobber.py
-+++ b/tools/infra/named-cache-clobber.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/ipc_messages_log.py b/tools/ipc_messages_log.py
-index 4811925..6d91d49 100755
---- a/tools/ipc_messages_log.py
-+++ b/tools/ipc_messages_log.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/tools/l10n/generate_locales_list.py b/tools/l10n/generate_locales_list.py
-index 18229e2..dda9ac5 100755
---- a/tools/l10n/generate_locales_list.py
-+++ b/tools/l10n/generate_locales_list.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2021 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/tools/licenses.py b/tools/licenses.py
-index d6787f6..1c0cc69 100755
---- a/tools/licenses.py
-+++ b/tools/licenses.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/tools/linux/procfs.py b/tools/linux/procfs.py
-index 7211b98..ff7e50d 100755
---- a/tools/linux/procfs.py
-+++ b/tools/linux/procfs.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2013 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.
-diff --git a/tools/linux/tests/procfs_tests.py b/tools/linux/tests/procfs_tests.py
-index c829199..517b9f4 100755
---- a/tools/linux/tests/procfs_tests.py
-+++ b/tools/linux/tests/procfs_tests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2013 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.
-diff --git a/tools/mac/dump-static-initializers.py b/tools/mac/dump-static-initializers.py
-index 3a389ca..0f9e8e1 100755
---- a/tools/mac/dump-static-initializers.py
-+++ b/tools/mac/dump-static-initializers.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2013 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.
-diff --git a/tools/mac/icons/additional_tools/maketoc.py b/tools/mac/icons/additional_tools/maketoc.py
-index 86e2e07..8c687a5 100755
---- a/tools/mac/icons/additional_tools/maketoc.py
-+++ b/tools/mac/icons/additional_tools/maketoc.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/tools/mac/icons/png_check.py b/tools/mac/icons/png_check.py
-index 12ec506..aedd5a1 100755
---- a/tools/mac/icons/png_check.py
-+++ b/tools/mac/icons/png_check.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/tools/mac/icons/png_make_srgb.py b/tools/mac/icons/png_make_srgb.py
-index 386f6a0..f00c91d 100755
---- a/tools/mac/icons/png_make_srgb.py
-+++ b/tools/mac/icons/png_make_srgb.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/tools/mac/rewrite_modern_objc.py b/tools/mac/rewrite_modern_objc.py
-index 75efd74..aa08c13 100755
---- a/tools/mac/rewrite_modern_objc.py
-+++ b/tools/mac/rewrite_modern_objc.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/mac/show_mod_init_func.py b/tools/mac/show_mod_init_func.py
-index 1dea351..c278d06 100755
---- a/tools/mac/show_mod_init_func.py
-+++ b/tools/mac/show_mod_init_func.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2016 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/tools/mac/symbolicate_crash.py b/tools/mac/symbolicate_crash.py
-index 2dabce4..4c0c92b 100755
---- a/tools/mac/symbolicate_crash.py
-+++ b/tools/mac/symbolicate_crash.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/tools/make-gtest-filter.py b/tools/make-gtest-filter.py
-index 4a6b320..6981502 100755
---- a/tools/make-gtest-filter.py
-+++ b/tools/make-gtest-filter.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/tools/mb/mb.py b/tools/mb/mb.py
-index b4719e7..ee2902a 100755
---- a/tools/mb/mb.py
-+++ b/tools/mb/mb.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/tools/mb/mb_unittest.py b/tools/mb/mb_unittest.py
-index c69eda4..1b107e4 100755
---- a/tools/mb/mb_unittest.py
-+++ b/tools/mb/mb_unittest.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-@@ -47,7 +47,7 @@ class FakeMBW(mb.MetaBuildWrapper):
-       self.chromium_src_dir = '/fake_src'
-       self.default_config = '/fake_src/tools/mb/mb_config.pyl'
-       self.default_isolate_map = '/fake_src/testing/buildbot/gn_isolate_map.pyl'
--      self.executable = '/usr/bin/python'
-+      self.executable = '/usr/bin/python2'
-       self.platform = 'linux2'
-       self.sep = '/'
-       self.cwd = '/fake_src/out/Default'
-diff --git a/tools/mb/mb_validation_unittest.py b/tools/mb/mb_validation_unittest.py
-index 21cc089..5e4320f 100755
---- a/tools/mb/mb_validation_unittest.py
-+++ b/tools/mb/mb_validation_unittest.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/tools/md_browser/md_browser.py b/tools/md_browser/md_browser.py
-index 74259f2..60fee4b 100755
---- a/tools/md_browser/md_browser.py
-+++ b/tools/md_browser/md_browser.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/metrics/actions/extract_actions.py b/tools/metrics/actions/extract_actions.py
-index ef072dc..87fe8b7 100755
---- a/tools/metrics/actions/extract_actions.py
-+++ b/tools/metrics/actions/extract_actions.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright (c) 2012 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/tools/metrics/actions/pretty_print.py b/tools/metrics/actions/pretty_print.py
-index 06cb036..71d95bf 100755
---- a/tools/metrics/actions/pretty_print.py
-+++ b/tools/metrics/actions/pretty_print.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/metrics/histograms/generate_expired_histograms_array.py b/tools/metrics/histograms/generate_expired_histograms_array.py
-index e40e65a..fb3fafa 100755
---- a/tools/metrics/histograms/generate_expired_histograms_array.py
-+++ b/tools/metrics/histograms/generate_expired_histograms_array.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/metrics/histograms/generate_expired_histograms_array_unittest.py b/tools/metrics/histograms/generate_expired_histograms_array_unittest.py
-index 8e2972e..9b45f31 100755
---- a/tools/metrics/histograms/generate_expired_histograms_array_unittest.py
-+++ b/tools/metrics/histograms/generate_expired_histograms_array_unittest.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/metrics/histograms/histogram_ownership.py b/tools/metrics/histograms/histogram_ownership.py
-index bc615de..e8bba00 100755
---- a/tools/metrics/histograms/histogram_ownership.py
-+++ b/tools/metrics/histograms/histogram_ownership.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/metrics/histograms/histogram_paths.py b/tools/metrics/histograms/histogram_paths.py
-index d57faae..6191a25 100755
---- a/tools/metrics/histograms/histogram_paths.py
-+++ b/tools/metrics/histograms/histogram_paths.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/tools/metrics/histograms/merge_xml.py b/tools/metrics/histograms/merge_xml.py
-index ad8f286..47c9245 100755
---- a/tools/metrics/histograms/merge_xml.py
-+++ b/tools/metrics/histograms/merge_xml.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/metrics/histograms/pretty_print.py b/tools/metrics/histograms/pretty_print.py
-index 9459622..f6d2934 100755
---- a/tools/metrics/histograms/pretty_print.py
-+++ b/tools/metrics/histograms/pretty_print.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2013 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.
-diff --git a/tools/metrics/histograms/pretty_print_test.py b/tools/metrics/histograms/pretty_print_test.py
-index 25f6537..149ad05 100755
---- a/tools/metrics/histograms/pretty_print_test.py
-+++ b/tools/metrics/histograms/pretty_print_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/metrics/histograms/print_expanded_histograms.py b/tools/metrics/histograms/print_expanded_histograms.py
-index 3afb8a2..6b77f0f 100755
---- a/tools/metrics/histograms/print_expanded_histograms.py
-+++ b/tools/metrics/histograms/print_expanded_histograms.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/tools/metrics/histograms/print_histogram_names.py b/tools/metrics/histograms/print_histogram_names.py
-index 99819e4..6596022 100755
---- a/tools/metrics/histograms/print_histogram_names.py
-+++ b/tools/metrics/histograms/print_histogram_names.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/metrics/histograms/update_document_policy_enum.py b/tools/metrics/histograms/update_document_policy_enum.py
-index bd1b1e6..467dca5 100755
---- a/tools/metrics/histograms/update_document_policy_enum.py
-+++ b/tools/metrics/histograms/update_document_policy_enum.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/tools/metrics/histograms/update_gpu_driver_bug_workaround_entries.py b/tools/metrics/histograms/update_gpu_driver_bug_workaround_entries.py
-index 6f9cd16..f1a9650 100755
---- a/tools/metrics/histograms/update_gpu_driver_bug_workaround_entries.py
-+++ b/tools/metrics/histograms/update_gpu_driver_bug_workaround_entries.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/metrics/histograms/update_net_error_codes.py b/tools/metrics/histograms/update_net_error_codes.py
-index c676a24..4a0d095 100755
---- a/tools/metrics/histograms/update_net_error_codes.py
-+++ b/tools/metrics/histograms/update_net_error_codes.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/metrics/histograms/update_net_trust_anchors.py b/tools/metrics/histograms/update_net_trust_anchors.py
-index d34a018..92c6320 100755
---- a/tools/metrics/histograms/update_net_trust_anchors.py
-+++ b/tools/metrics/histograms/update_net_trust_anchors.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/metrics/histograms/update_permissions_policy_enum.py b/tools/metrics/histograms/update_permissions_policy_enum.py
-index ba84a1d..5c388d6 100755
---- a/tools/metrics/histograms/update_permissions_policy_enum.py
-+++ b/tools/metrics/histograms/update_permissions_policy_enum.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/metrics/histograms/update_scheduler_enums.py b/tools/metrics/histograms/update_scheduler_enums.py
-index 890f21c..0006d13 100755
---- a/tools/metrics/histograms/update_scheduler_enums.py
-+++ b/tools/metrics/histograms/update_scheduler_enums.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/tools/metrics/histograms/update_use_counter_css.py b/tools/metrics/histograms/update_use_counter_css.py
-index 5b1b78e..95390ab 100755
---- a/tools/metrics/histograms/update_use_counter_css.py
-+++ b/tools/metrics/histograms/update_use_counter_css.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/metrics/histograms/update_use_counter_feature_enum.py b/tools/metrics/histograms/update_use_counter_feature_enum.py
-index eadcab8..cd8b887 100755
---- a/tools/metrics/histograms/update_use_counter_feature_enum.py
-+++ b/tools/metrics/histograms/update_use_counter_feature_enum.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/metrics/histograms/validate_format.py b/tools/metrics/histograms/validate_format.py
-index d2c7e0a..8a82a8c 100755
---- a/tools/metrics/histograms/validate_format.py
-+++ b/tools/metrics/histograms/validate_format.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2013 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.
-diff --git a/tools/metrics/histograms/validate_histograms_index.py b/tools/metrics/histograms/validate_histograms_index.py
-index 4c87002..2681770 100755
---- a/tools/metrics/histograms/validate_histograms_index.py
-+++ b/tools/metrics/histograms/validate_histograms_index.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/tools/metrics/histograms/validate_obsolete_histograms.py b/tools/metrics/histograms/validate_obsolete_histograms.py
-index 91eb902..00ab955 100755
---- a/tools/metrics/histograms/validate_obsolete_histograms.py
-+++ b/tools/metrics/histograms/validate_obsolete_histograms.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/tools/metrics/histograms/validate_prefix.py b/tools/metrics/histograms/validate_prefix.py
-index 9c24c8b..9fbd02d 100755
---- a/tools/metrics/histograms/validate_prefix.py
-+++ b/tools/metrics/histograms/validate_prefix.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/tools/metrics/md2xml.py b/tools/metrics/md2xml.py
-index 6033a57..4554662 100755
---- a/tools/metrics/md2xml.py
-+++ b/tools/metrics/md2xml.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/metrics/metrics_python_tests.py b/tools/metrics/metrics_python_tests.py
-index 209d378..4a74ebe 100755
---- a/tools/metrics/metrics_python_tests.py
-+++ b/tools/metrics/metrics_python_tests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/metrics/structured/pretty_print.py b/tools/metrics/structured/pretty_print.py
-index 749695f..89b6e90 100755
---- a/tools/metrics/structured/pretty_print.py
-+++ b/tools/metrics/structured/pretty_print.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/metrics/ukm/codegen_test.py b/tools/metrics/ukm/codegen_test.py
-index 97748de..20c4d0f 100755
---- a/tools/metrics/ukm/codegen_test.py
-+++ b/tools/metrics/ukm/codegen_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/tools/metrics/ukm/gen_builders.py b/tools/metrics/ukm/gen_builders.py
-index 44e46fa..4d14a6c 100755
---- a/tools/metrics/ukm/gen_builders.py
-+++ b/tools/metrics/ukm/gen_builders.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/metrics/ukm/gen_builders_test.py b/tools/metrics/ukm/gen_builders_test.py
-index 767fd21..fa9225e 100755
---- a/tools/metrics/ukm/gen_builders_test.py
-+++ b/tools/metrics/ukm/gen_builders_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/metrics/ukm/pretty_print.py b/tools/metrics/ukm/pretty_print.py
-index 075e746..cd6e185 100755
---- a/tools/metrics/ukm/pretty_print.py
-+++ b/tools/metrics/ukm/pretty_print.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/metrics/ukm/ukm_model_test.py b/tools/metrics/ukm/ukm_model_test.py
-index f3ab1b5..812675f 100755
---- a/tools/metrics/ukm/ukm_model_test.py
-+++ b/tools/metrics/ukm/ukm_model_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/metrics/ukm/validate_format.py b/tools/metrics/ukm/validate_format.py
-index 921d9ff..70caa01 100755
---- a/tools/metrics/ukm/validate_format.py
-+++ b/tools/metrics/ukm/validate_format.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/multi_process_rss.py b/tools/multi_process_rss.py
-index 733428d..57f7508 100755
---- a/tools/multi_process_rss.py
-+++ b/tools/multi_process_rss.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2013 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.
-diff --git a/tools/omahaproxy.py b/tools/omahaproxy.py
-index 13dc5d3..5982b6a 100755
---- a/tools/omahaproxy.py
-+++ b/tools/omahaproxy.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2013 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.
-diff --git a/tools/origin_trials/check_token.py b/tools/origin_trials/check_token.py
-index 33a0352..b934a6d 100755
---- a/tools/origin_trials/check_token.py
-+++ b/tools/origin_trials/check_token.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/tools/origin_trials/generate_token.py b/tools/origin_trials/generate_token.py
-index 6e49fbf..d3864b8 100755
---- a/tools/origin_trials/generate_token.py
-+++ b/tools/origin_trials/generate_token.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/tools/origin_trials/generate_token_unittest.py b/tools/origin_trials/generate_token_unittest.py
-index 06a2cc9..c16d73f 100755
---- a/tools/origin_trials/generate_token_unittest.py
-+++ b/tools/origin_trials/generate_token_unittest.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/tools/perf/update_wpr b/tools/perf/update_wpr
-index 74d12e1..34b8d57 100755
---- a/tools/perf/update_wpr
-+++ b/tools/perf/update_wpr
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2018 the V8 project authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/tools/perry.py b/tools/perry.py
-index 4a0ed00..4acbaa7 100755
---- a/tools/perry.py
-+++ b/tools/perry.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/polymer/generate_gn.py b/tools/polymer/generate_gn.py
-index 96413fa..119be3e 100755
---- a/tools/polymer/generate_gn.py
-+++ b/tools/polymer/generate_gn.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/polymer/generate_gn_v3.py b/tools/polymer/generate_gn_v3.py
-index 74546b3..ca98a7b 100755
---- a/tools/polymer/generate_gn_v3.py
-+++ b/tools/polymer/generate_gn_v3.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/polymer/html_to_js_test.py b/tools/polymer/html_to_js_test.py
-index 2674fb5..aef33ea 100755
---- a/tools/polymer/html_to_js_test.py
-+++ b/tools/polymer/html_to_js_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/tools/polymer/polymer_test.py b/tools/polymer/polymer_test.py
-index 3eed625..e784849 100755
---- a/tools/polymer/polymer_test.py
-+++ b/tools/polymer/polymer_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/polymer/run_polymer_tools_tests.py b/tools/polymer/run_polymer_tools_tests.py
-index 6a258b0..936bddf 100755
---- a/tools/polymer/run_polymer_tools_tests.py
-+++ b/tools/polymer/run_polymer_tools_tests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/protoc_wrapper/protoc_wrapper_test.py b/tools/protoc_wrapper/protoc_wrapper_test.py
-index ef89a95..b884025 100755
---- a/tools/protoc_wrapper/protoc_wrapper_test.py
-+++ b/tools/protoc_wrapper/protoc_wrapper_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/tools/python/google/gethash_timer.py b/tools/python/google/gethash_timer.py
-index 7d0fb24..226dc34 100755
---- a/tools/python/google/gethash_timer.py
-+++ b/tools/python/google/gethash_timer.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/python/google/httpd_utils.py b/tools/python/google/httpd_utils.py
-index b157197..0c65cdb 100755
---- a/tools/python/google/httpd_utils.py
-+++ b/tools/python/google/httpd_utils.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/real_world_impact/real_world_impact.py b/tools/real_world_impact/real_world_impact.py
-index a1af6a2..c9828f0 100755
---- a/tools/real_world_impact/real_world_impact.py
-+++ b/tools/real_world_impact/real_world_impact.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/remove_duplicate_includes.py b/tools/remove_duplicate_includes.py
-index f09d8cc..2f9dc91 100755
---- a/tools/remove_duplicate_includes.py
-+++ b/tools/remove_duplicate_includes.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/remove_stale_pyc_files.py b/tools/remove_stale_pyc_files.py
-index ff2b87b..37aeeb6 100755
---- a/tools/remove_stale_pyc_files.py
-+++ b/tools/remove_stale_pyc_files.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/resources/filter_resource_allowlist.py b/tools/resources/filter_resource_allowlist.py
-index 4052d4c..fa340a0 100755
---- a/tools/resources/filter_resource_allowlist.py
-+++ b/tools/resources/filter_resource_allowlist.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/resources/find_unused_resources.py b/tools/resources/find_unused_resources.py
-index 8bf838a..e57e019 100755
---- a/tools/resources/find_unused_resources.py
-+++ b/tools/resources/find_unused_resources.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2013 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.
-diff --git a/tools/resources/generate_resource_allowlist.py b/tools/resources/generate_resource_allowlist.py
-index 19b5d8e..17c04b8 100755
---- a/tools/resources/generate_resource_allowlist.py
-+++ b/tools/resources/generate_resource_allowlist.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/resources/list_resources_removed_by_repack.py b/tools/resources/list_resources_removed_by_repack.py
-index fb38531..7066273 100755
---- a/tools/resources/list_resources_removed_by_repack.py
-+++ b/tools/resources/list_resources_removed_by_repack.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/resources/list_unused_grit_header.py b/tools/resources/list_unused_grit_header.py
-index a24fb44..62736c8 100755
---- a/tools/resources/list_unused_grit_header.py
-+++ b/tools/resources/list_unused_grit_header.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/resources/optimize-ico-files.py b/tools/resources/optimize-ico-files.py
-index 5f0f716..ae2682a 100755
---- a/tools/resources/optimize-ico-files.py
-+++ b/tools/resources/optimize-ico-files.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/resources/svgo.py b/tools/resources/svgo.py
-index d44bdd3..3b1745f 100755
---- a/tools/resources/svgo.py
-+++ b/tools/resources/svgo.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/roll_webgl_conformance.py b/tools/roll_webgl_conformance.py
-index a3749f9..537b571 100755
---- a/tools/roll_webgl_conformance.py
-+++ b/tools/roll_webgl_conformance.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/run-swarmed.py b/tools/run-swarmed.py
-index 1224895..9f79c8a 100755
---- a/tools/run-swarmed.py
-+++ b/tools/run-swarmed.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2017 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/tools/security/check_message_owners.py b/tools/security/check_message_owners.py
-index 251c0bc..ce72a67 100755
---- a/tools/security/check_message_owners.py
-+++ b/tools/security/check_message_owners.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/site_compare/command_line.py b/tools/site_compare/command_line.py
-index d2a54e5..4302207 100755
---- a/tools/site_compare/command_line.py
-+++ b/tools/site_compare/command_line.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/site_compare/drivers/win32/keyboard.py b/tools/site_compare/drivers/win32/keyboard.py
-index 0135c9b..b20d7a1 100755
---- a/tools/site_compare/drivers/win32/keyboard.py
-+++ b/tools/site_compare/drivers/win32/keyboard.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/site_compare/drivers/win32/mouse.py b/tools/site_compare/drivers/win32/mouse.py
-index 0096af9..b194020 100755
---- a/tools/site_compare/drivers/win32/mouse.py
-+++ b/tools/site_compare/drivers/win32/mouse.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/site_compare/drivers/win32/windowing.py b/tools/site_compare/drivers/win32/windowing.py
-index 47d63f0..0345eef 100755
---- a/tools/site_compare/drivers/win32/windowing.py
-+++ b/tools/site_compare/drivers/win32/windowing.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/site_compare/scrapers/__init__.py b/tools/site_compare/scrapers/__init__.py
-index 35763b3..4b79f3a 100755
---- a/tools/site_compare/scrapers/__init__.py
-+++ b/tools/site_compare/scrapers/__init__.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/site_compare/scrapers/chrome/__init__.py b/tools/site_compare/scrapers/chrome/__init__.py
-index c5f01c8..bb143d1 100755
---- a/tools/site_compare/scrapers/chrome/__init__.py
-+++ b/tools/site_compare/scrapers/chrome/__init__.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/site_compare/scrapers/chrome/chromebase.py b/tools/site_compare/scrapers/chrome/chromebase.py
-index 2b8f177..e3bbb88 100755
---- a/tools/site_compare/scrapers/chrome/chromebase.py
-+++ b/tools/site_compare/scrapers/chrome/chromebase.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/site_compare/scrapers/firefox/__init__.py b/tools/site_compare/scrapers/firefox/__init__.py
-index d2decca..a51f19c 100755
---- a/tools/site_compare/scrapers/firefox/__init__.py
-+++ b/tools/site_compare/scrapers/firefox/__init__.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/site_compare/scrapers/firefox/firefox2.py b/tools/site_compare/scrapers/firefox/firefox2.py
-index 2181f58..c86ff72 100755
---- a/tools/site_compare/scrapers/firefox/firefox2.py
-+++ b/tools/site_compare/scrapers/firefox/firefox2.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/site_compare/scrapers/ie/__init__.py b/tools/site_compare/scrapers/ie/__init__.py
-index a130490..43c784a 100755
---- a/tools/site_compare/scrapers/ie/__init__.py
-+++ b/tools/site_compare/scrapers/ie/__init__.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/site_compare/scrapers/ie/ie7.py b/tools/site_compare/scrapers/ie/ie7.py
-index dcb83ca..05767a4 100755
---- a/tools/site_compare/scrapers/ie/ie7.py
-+++ b/tools/site_compare/scrapers/ie/ie7.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/site_compare/site_compare.py b/tools/site_compare/site_compare.py
-index 322c2b7..ecca9a0 100755
---- a/tools/site_compare/site_compare.py
-+++ b/tools/site_compare/site_compare.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/sort-headers.py b/tools/sort-headers.py
-index 09427ae..d41bd44 100755
---- a/tools/sort-headers.py
-+++ b/tools/sort-headers.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/tools/sort_sources.py b/tools/sort_sources.py
-index 87d89ba..51adcfb 100755
---- a/tools/sort_sources.py
-+++ b/tools/sort_sources.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/strict_enum_value_checker/strict_enum_value_checker_test.py b/tools/strict_enum_value_checker/strict_enum_value_checker_test.py
-index 4f95efe..efadba4 100755
---- a/tools/strict_enum_value_checker/strict_enum_value_checker_test.py
-+++ b/tools/strict_enum_value_checker/strict_enum_value_checker_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/sublime/compile_current_file.py b/tools/sublime/compile_current_file.py
-index a57cf89..f321993 100755
---- a/tools/sublime/compile_current_file.py
-+++ b/tools/sublime/compile_current_file.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/sublime/ninja_options_script.py b/tools/sublime/ninja_options_script.py
-index 6912b6f..660f43b 100755
---- a/tools/sublime/ninja_options_script.py
-+++ b/tools/sublime/ninja_options_script.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/symsrc/img_fingerprint.py b/tools/symsrc/img_fingerprint.py
-index 6b5cffa..527c142 100755
---- a/tools/symsrc/img_fingerprint.py
-+++ b/tools/symsrc/img_fingerprint.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/symsrc/pdb_fingerprint_from_img.py b/tools/symsrc/pdb_fingerprint_from_img.py
-index 837c4e7..9393c92 100755
---- a/tools/symsrc/pdb_fingerprint_from_img.py
-+++ b/tools/symsrc/pdb_fingerprint_from_img.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/symsrc/source_index.py b/tools/symsrc/source_index.py
-index f6079b0..ad298d2 100755
---- a/tools/symsrc/source_index.py
-+++ b/tools/symsrc/source_index.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/tcmalloc/print-live-objects.py b/tools/tcmalloc/print-live-objects.py
-index 836a56b..502e563 100755
---- a/tools/tcmalloc/print-live-objects.py
-+++ b/tools/tcmalloc/print-live-objects.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/tools/tests/licenses_test.py b/tools/tests/licenses_test.py
-index a52b938..e030043 100755
---- a/tools/tests/licenses_test.py
-+++ b/tools/tests/licenses_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 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.
-diff --git a/tools/traceline/traceline/scripts/alloc.py b/tools/traceline/traceline/scripts/alloc.py
-index c8d7d73..3423e44 100755
---- a/tools/traceline/traceline/scripts/alloc.py
-+++ b/tools/traceline/traceline/scripts/alloc.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/traceline/traceline/scripts/crit_sec.py b/tools/traceline/traceline/scripts/crit_sec.py
-index 9715d71..ad83c4d 100755
---- a/tools/traceline/traceline/scripts/crit_sec.py
-+++ b/tools/traceline/traceline/scripts/crit_sec.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/traceline/traceline/scripts/filter_short.py b/tools/traceline/traceline/scripts/filter_short.py
-index 00d9835..ad528ef 100755
---- a/tools/traceline/traceline/scripts/filter_short.py
-+++ b/tools/traceline/traceline/scripts/filter_short.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/traceline/traceline/scripts/scstats.py b/tools/traceline/traceline/scripts/scstats.py
-index 78263ac..c9ead2f 100755
---- a/tools/traceline/traceline/scripts/scstats.py
-+++ b/tools/traceline/traceline/scripts/scstats.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/traceline/traceline/scripts/split.py b/tools/traceline/traceline/scripts/split.py
-index 6f20e04..99039ed 100755
---- a/tools/traceline/traceline/scripts/split.py
-+++ b/tools/traceline/traceline/scripts/split.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/tools/tracing/profile_chrome_startup b/tools/tracing/profile_chrome_startup
-index c258bb3..1cfcc37 100755
---- a/tools/tracing/profile_chrome_startup
-+++ b/tools/tracing/profile_chrome_startup
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2021 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/tools/tracing/symbolize_trace b/tools/tracing/symbolize_trace
-index ea95061..5ba772f 100755
---- a/tools/tracing/symbolize_trace
-+++ b/tools/tracing/symbolize_trace
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2021 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/tools/traffic_annotation/scripts/annotation_tokenizer_test.py b/tools/traffic_annotation/scripts/annotation_tokenizer_test.py
-index d417b23..8ba28df 100755
---- a/tools/traffic_annotation/scripts/annotation_tokenizer_test.py
-+++ b/tools/traffic_annotation/scripts/annotation_tokenizer_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/traffic_annotation/scripts/check_annotations.py b/tools/traffic_annotation/scripts/check_annotations.py
-index f87f566..ceb6dd5 100755
---- a/tools/traffic_annotation/scripts/check_annotations.py
-+++ b/tools/traffic_annotation/scripts/check_annotations.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/traffic_annotation/scripts/extractor.py b/tools/traffic_annotation/scripts/extractor.py
-index 3bbb09f..bda62ee 100755
---- a/tools/traffic_annotation/scripts/extractor.py
-+++ b/tools/traffic_annotation/scripts/extractor.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/traffic_annotation/scripts/extractor_test.py b/tools/traffic_annotation/scripts/extractor_test.py
-index 9a84721..f034311 100755
---- a/tools/traffic_annotation/scripts/extractor_test.py
-+++ b/tools/traffic_annotation/scripts/extractor_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/traffic_annotation/scripts/generator_utils_tests.py b/tools/traffic_annotation/scripts/generator_utils_tests.py
-index 06dff93..42752fc 100755
---- a/tools/traffic_annotation/scripts/generator_utils_tests.py
-+++ b/tools/traffic_annotation/scripts/generator_utils_tests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/tools/traffic_annotation/scripts/traffic_annotation_auditor_tests.py b/tools/traffic_annotation/scripts/traffic_annotation_auditor_tests.py
-index 2b7ac62..9051e76 100755
---- a/tools/traffic_annotation/scripts/traffic_annotation_auditor_tests.py
-+++ b/tools/traffic_annotation/scripts/traffic_annotation_auditor_tests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/traffic_annotation/scripts/update_annotations_doc_tests.py b/tools/traffic_annotation/scripts/update_annotations_doc_tests.py
-index a6d69bc..88c1c11 100755
---- a/tools/traffic_annotation/scripts/update_annotations_doc_tests.py
-+++ b/tools/traffic_annotation/scripts/update_annotations_doc_tests.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/tools/translation/upload_screenshots.py b/tools/translation/upload_screenshots.py
-index 54f7b2c..3326fa0 100755
---- a/tools/translation/upload_screenshots.py
-+++ b/tools/translation/upload_screenshots.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/translation/upload_screenshots_unittest.py b/tools/translation/upload_screenshots_unittest.py
-index 99b9695..100d18d 100755
---- a/tools/translation/upload_screenshots_unittest.py
-+++ b/tools/translation/upload_screenshots_unittest.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/typescript/ts_library_test.py b/tools/typescript/ts_library_test.py
-index c564c4b..bd7d10c 100755
---- a/tools/typescript/ts_library_test.py
-+++ b/tools/typescript/ts_library_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2021 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/tools/uberblame.py b/tools/uberblame.py
-index 89b6d88..64e18d6 100755
---- a/tools/uberblame.py
-+++ b/tools/uberblame.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/unused-symbols-report.py b/tools/unused-symbols-report.py
-index c324c64..2b6becf 100755
---- a/tools/unused-symbols-report.py
-+++ b/tools/unused-symbols-report.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/update_pgo_profiles.py b/tools/update_pgo_profiles.py
-index f48dbcf..bdece16 100755
---- a/tools/update_pgo_profiles.py
-+++ b/tools/update_pgo_profiles.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-diff --git a/tools/usb_gadget/echo_gadget_test.py b/tools/usb_gadget/echo_gadget_test.py
-index c085741..501a4b1 100755
---- a/tools/usb_gadget/echo_gadget_test.py
-+++ b/tools/usb_gadget/echo_gadget_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/usb_gadget/gadget_test.py b/tools/usb_gadget/gadget_test.py
-index 727665b..edd7620 100755
---- a/tools/usb_gadget/gadget_test.py
-+++ b/tools/usb_gadget/gadget_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/usb_gadget/hid_descriptors_test.py b/tools/usb_gadget/hid_descriptors_test.py
-index 627b095..1b3d38a 100755
---- a/tools/usb_gadget/hid_descriptors_test.py
-+++ b/tools/usb_gadget/hid_descriptors_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/usb_gadget/hid_gadget_test.py b/tools/usb_gadget/hid_gadget_test.py
-index 6ae1a3f..5631df6 100755
---- a/tools/usb_gadget/hid_gadget_test.py
-+++ b/tools/usb_gadget/hid_gadget_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/usb_gadget/keyboard_gadget_test.py b/tools/usb_gadget/keyboard_gadget_test.py
-index 5984f88..da43a24 100755
---- a/tools/usb_gadget/keyboard_gadget_test.py
-+++ b/tools/usb_gadget/keyboard_gadget_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/usb_gadget/mouse_gadget_test.py b/tools/usb_gadget/mouse_gadget_test.py
-index 5a5800e..8e9a26e 100755
---- a/tools/usb_gadget/mouse_gadget_test.py
-+++ b/tools/usb_gadget/mouse_gadget_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/usb_gadget/package.py b/tools/usb_gadget/package.py
-index 1fdbd2a..e6dff0c 100755
---- a/tools/usb_gadget/package.py
-+++ b/tools/usb_gadget/package.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/usb_gadget/server.py b/tools/usb_gadget/server.py
-index 9160172..5490994 100644
---- a/tools/usb_gadget/server.py
-+++ b/tools/usb_gadget/server.py
-@@ -78,7 +78,7 @@ class UpdateHandler(web.RequestHandler):
-     with open(filename, 'wb') as f:
-       f.write(content)
- 
--    args = ['/usr/bin/python', filename,
-+    args = ['/usr/bin/python2', filename,
-             '--interface', interface,
-             '--port', str(port),
-             '--hardware', hardware]
-diff --git a/tools/usb_gadget/usb_descriptors_test.py b/tools/usb_gadget/usb_descriptors_test.py
-index f3e1d6b..d9d200f 100755
---- a/tools/usb_gadget/usb_descriptors_test.py
-+++ b/tools/usb_gadget/usb_descriptors_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/valgrind/asan/asan_symbolize.py b/tools/valgrind/asan/asan_symbolize.py
-index 0d1c880..b94915c 100755
---- a/tools/valgrind/asan/asan_symbolize.py
-+++ b/tools/valgrind/asan/asan_symbolize.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright (c) 2012 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/tools/valgrind/asan/third_party/asan_symbolize.py b/tools/valgrind/asan/third_party/asan_symbolize.py
-index f662a8b..52afd38 100755
---- a/tools/valgrind/asan/third_party/asan_symbolize.py
-+++ b/tools/valgrind/asan/third_party/asan_symbolize.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #===- lib/asan/scripts/asan_symbolize.py -----------------------------------===#
- #
- #                     The LLVM Compiler Infrastructure
-diff --git a/tools/variations/fieldtrial_to_struct.py b/tools/variations/fieldtrial_to_struct.py
-index 9ecf389..3dc18f5 100755
---- a/tools/variations/fieldtrial_to_struct.py
-+++ b/tools/variations/fieldtrial_to_struct.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/vim/tests/chromium.ycm_extra_conf_unittest.py b/tools/vim/tests/chromium.ycm_extra_conf_unittest.py
-index 6c00d2b..026cf95 100755
---- a/tools/vim/tests/chromium.ycm_extra_conf_unittest.py
-+++ b/tools/vim/tests/chromium.ycm_extra_conf_unittest.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- 
- # Copyright 2015 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/tools/web_bluetooth/compact_blocklist.py b/tools/web_bluetooth/compact_blocklist.py
-index 05b31a9..91b864f 100755
---- a/tools/web_bluetooth/compact_blocklist.py
-+++ b/tools/web_bluetooth/compact_blocklist.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/web_bluetooth/compact_blocklist_unittest.py b/tools/web_bluetooth/compact_blocklist_unittest.py
-index a3696ef..19cd731 100755
---- a/tools/web_bluetooth/compact_blocklist_unittest.py
-+++ b/tools/web_bluetooth/compact_blocklist_unittest.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/tools/web_dev_style/eslint.py b/tools/web_dev_style/eslint.py
-index 2567d0d..d9aff13 100755
---- a/tools/web_dev_style/eslint.py
-+++ b/tools/web_dev_style/eslint.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/ui/base/ime/generate_character_composer_data.py b/ui/base/ime/generate_character_composer_data.py
-index a0becd2..4ffa795 100755
---- a/ui/base/ime/generate_character_composer_data.py
-+++ b/ui/base/ime/generate_character_composer_data.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/ui/events/ozone/evdev/capture_device_capabilities.py b/ui/events/ozone/evdev/capture_device_capabilities.py
-index f742575..7aa8015 100755
---- a/ui/events/ozone/evdev/capture_device_capabilities.py
-+++ b/ui/events/ozone/evdev/capture_device_capabilities.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/ui/events/ozone/evdev/capture_test_events.py b/ui/events/ozone/evdev/capture_test_events.py
-index 33907c4..2aaf065 100755
---- a/ui/events/ozone/evdev/capture_test_events.py
-+++ b/ui/events/ozone/evdev/capture_test_events.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/ui/events/ozone/evdev/explain_proc_bus_input_devices.py b/ui/events/ozone/evdev/explain_proc_bus_input_devices.py
-index 714b01d..080b9f0 100755
---- a/ui/events/ozone/evdev/explain_proc_bus_input_devices.py
-+++ b/ui/events/ozone/evdev/explain_proc_bus_input_devices.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/ui/gl/generate_bindings.py b/ui/gl/generate_bindings.py
-index 87c18ac..e08d4b0 100755
---- a/ui/gl/generate_bindings.py
-+++ b/ui/gl/generate_bindings.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright (c) 2012 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.
-diff --git a/ui/ozone/generate_constructor_list.py b/ui/ozone/generate_constructor_list.py
-index 04fa18e..e678729 100755
---- a/ui/ozone/generate_constructor_list.py
-+++ b/ui/ozone/generate_constructor_list.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/ui/ozone/generate_ozone_platform_list.py b/ui/ozone/generate_ozone_platform_list.py
-index 2702b68..0b85341 100755
---- a/ui/ozone/generate_ozone_platform_list.py
-+++ b/ui/ozone/generate_ozone_platform_list.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # Copyright 2013 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.
-diff --git a/ui/webui/resources/tools/generate_grd_test.py b/ui/webui/resources/tools/generate_grd_test.py
-index 70b0c5b..64ade24 100755
---- a/ui/webui/resources/tools/generate_grd_test.py
-+++ b/ui/webui/resources/tools/generate_grd_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/ui/webui/resources/tools/js_modulizer_test.py b/ui/webui/resources/tools/js_modulizer_test.py
-index d0cf6ce..62204cf 100755
---- a/ui/webui/resources/tools/js_modulizer_test.py
-+++ b/ui/webui/resources/tools/js_modulizer_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
-diff --git a/weblayer/browser/android/javatests/weblayer_instrumentation_test_versions_test.py b/weblayer/browser/android/javatests/weblayer_instrumentation_test_versions_test.py
-index de71c81..c3a08ae 100755
---- a/weblayer/browser/android/javatests/weblayer_instrumentation_test_versions_test.py
-+++ b/weblayer/browser/android/javatests/weblayer_instrumentation_test_versions_test.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- #
- # Copyright 2020 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
-diff --git a/weblayer/tools/run_weblayer_shell.py b/weblayer/tools/run_weblayer_shell.py
-index 41391b2..4a366a8 100755
---- a/weblayer/tools/run_weblayer_shell.py
-+++ b/weblayer/tools/run_weblayer_shell.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # 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.
diff --git a/debian/patches/debianization/optimization.patch b/debian/patches/debianization/optimization.patch
index 28b86d0..6b31a8f 100644
--- a/debian/patches/debianization/optimization.patch
+++ b/debian/patches/debianization/optimization.patch
@@ -3,36 +3,36 @@ author: Michael Gilbert <mgilbert@debian.org>
 
 --- a/build/config/compiler/BUILD.gn
 +++ b/build/config/compiler/BUILD.gn
-@@ -2035,7 +2035,7 @@ config("optimize") {
+@@ -1990,7 +1990,7 @@ config("optimize") {
      # - Investigate -Oz here, maybe just for ARM?
      cflags = [ "-Os" ] + common_optimize_on_cflags
    } else {
 -    cflags = [ "-O2" ] + common_optimize_on_cflags
 +    cflags = common_optimize_on_cflags
    }
-   ldflags = common_optimize_on_ldflags
- }
-@@ -2101,7 +2101,7 @@ config("optimize_max") {
+   if (optimize_for_size) {
+     rustflags = [ "-Copt-level=s" ]
+@@ -2061,7 +2061,7 @@ config("optimize_max") {
      } else if (optimize_for_fuzzing) {
        cflags = [ "-O1" ] + common_optimize_on_cflags
      } else {
 -      cflags = [ "-O2" ] + common_optimize_on_cflags
 +      cflags = common_optimize_on_cflags
      }
+     rustflags = [ "-Copt-level=3" ]
    }
- }
-@@ -2133,7 +2133,7 @@ config("optimize_speed") {
+@@ -2094,7 +2094,7 @@ config("optimize_speed") {
      } else if (optimize_for_fuzzing) {
        cflags = [ "-O1" ] + common_optimize_on_cflags
      } else {
 -      cflags = [ "-O3" ] + common_optimize_on_cflags
 +      cflags = common_optimize_on_cflags
      }
+     rustflags = [ "-Copt-level=3" ]
    }
- }
 --- a/tools/gn/build/gen.py
 +++ b/tools/gn/build/gen.py
-@@ -326,10 +326,8 @@ def WriteGNNinja(path, platform, host, o
+@@ -344,10 +344,8 @@ def WriteGNNinja(path, platform, host, o
        cflags.extend(['-O0', '-g'])
      else:
        cflags.append('-DNDEBUG')
diff --git a/debian/patches/disable/angle-perftests.patch b/debian/patches/disable/angle-perftests.patch
index c040e62..9265a41 100644
--- a/debian/patches/disable/angle-perftests.patch
+++ b/debian/patches/disable/angle-perftests.patch
@@ -3,7 +3,7 @@ author: Michel Le Bihan <michel@lebihan.pl>
 
 --- a/chrome/test/BUILD.gn
 +++ b/chrome/test/BUILD.gn
-@@ -3391,10 +3391,6 @@ template("performance_test_suite_template") {
+@@ -4275,10 +4275,6 @@ template("performance_test_suite_templat
        data_deps += [ "//third_party/dawn/src/tests:dawn_perf_tests" ]
      }
  
@@ -14,17 +14,6 @@ author: Michel Le Bihan <michel@lebihan.pl>
      if (!is_android && !is_fuchsia) {
        data_deps += [
          "//chrome/test:load_library_perf_tests",
---- a/third_party/angle/BUILD.gn
-+++ b/third_party/angle/BUILD.gn
-@@ -47,7 +47,7 @@ declare_args() {
-   angle_force_context_check_every_call = false
- 
-   # Indicate if the rapidJSON library is available to build with in third_party/.
--  angle_has_rapidjson = angle_has_build
-+  angle_has_rapidjson = false
- }
- 
- if (angle_build_all) {
 --- a/third_party/angle/build_overrides/angle.gni
 +++ b/third_party/angle/build_overrides/angle.gni
 @@ -6,7 +6,7 @@
@@ -48,7 +37,7 @@ author: Michel Le Bihan <michel@lebihan.pl>
  }
  
  if (is_android) {
-@@ -177,7 +177,6 @@ angle_test("angle_unittests") {
+@@ -178,7 +177,6 @@ angle_test("angle_unittests") {
  
    deps = [
      ":angle_test_expectations",
@@ -56,7 +45,7 @@ author: Michel Le Bihan <michel@lebihan.pl>
      "$angle_root:libANGLE",
      "$angle_root:libEGL_static",
      "$angle_root:libGLESv2_static",
-@@ -315,48 +314,7 @@ config("angle_maybe_has_histograms") {
+@@ -337,48 +335,7 @@ config("angle_maybe_has_histograms") {
    }
  }
  
@@ -106,7 +95,7 @@ author: Michel Le Bihan <michel@lebihan.pl>
    import("angle_perftests.gni")
  
    # This test suite is for perf tests that use ANGLE's internals in some direct way.
-@@ -1534,12 +1492,11 @@ group("angle_tests") {
+@@ -1562,12 +1519,11 @@ group("angle_tests") {
    testonly = true
    deps = [
      ":angle_end2end_tests",
@@ -122,9 +111,18 @@ author: Michel Le Bihan <michel@lebihan.pl>
        ":angle_white_box_tests",
 --- a/third_party/angle/gni/angle.gni
 +++ b/third_party/angle/gni/angle.gni
-@@ -173,7 +173,7 @@ declare_args() {
-   # TODO(jdarpinian): Support enabling CGL and EAGL at the same time using the soft linking code. Also support disabling both for Metal-only builds.
-   angle_enable_cgl = angle_enable_gl && !angle_enable_eagl && is_apple
+@@ -83,7 +83,7 @@ declare_args() {
+   }
+ 
+   # Indicate if the rapidJSON library is available to build with in third_party/.
+-  angle_has_rapidjson = angle_has_build
++  angle_has_rapidjson = false
+ }
+ 
+ declare_args() {
+@@ -227,7 +227,7 @@ declare_args() {
+       is_apple &&
+       (angle_enable_glsl || angle_enable_metal || use_fuzzing_engine)
  
 -  angle_has_histograms = angle_has_build
 +  angle_has_histograms = false
diff --git a/debian/patches/disable/buildbot.patch b/debian/patches/disable/buildbot.patch
index 81aa388..3fa738f 100644
--- a/debian/patches/disable/buildbot.patch
+++ b/debian/patches/disable/buildbot.patch
@@ -3,7 +3,7 @@ author: Michael Gilbert <mgilbert@debian.org>
 
 --- a/BUILD.gn
 +++ b/BUILD.gn
-@@ -1063,7 +1063,6 @@ if (!is_ios) {
+@@ -1119,7 +1119,6 @@ if (!is_ios) {
        "//services/device/public/mojom:usb_js_data_deps",
        "//services/shape_detection/public/mojom:mojom_js_data_deps",
        "//skia/public/mojom:mojom_js_data_deps",
@@ -13,7 +13,7 @@ author: Michael Gilbert <mgilbert@debian.org>
        "//third_party/blink/public/mojom:mojom_platform_js_data_deps",
 --- a/base/BUILD.gn
 +++ b/base/BUILD.gn
-@@ -3190,7 +3190,6 @@ test("base_unittests") {
+@@ -3270,7 +3270,6 @@ test("base_unittests") {
      "//base/test:immediate_crash_test_helper",
      "//base/test:test_child_process",
      "//base/test:test_shared_library",
@@ -23,7 +23,7 @@ author: Michael Gilbert <mgilbert@debian.org>
    if (is_apple) {
 --- a/chrome/test/BUILD.gn
 +++ b/chrome/test/BUILD.gn
-@@ -879,8 +879,6 @@ if (!is_android) {
+@@ -1356,8 +1356,6 @@ if (!is_android && !is_fuchsia) {
        "//ppapi:copy_test_files",
        "//ppapi:copy_test_files2",
        "//ppapi:ppapi_tests",
@@ -32,15 +32,15 @@ author: Michael Gilbert <mgilbert@debian.org>
        "//third_party/mesa_headers",
        "//third_party/widevine/cdm:widevine_test_license_server",
        "//tools/media_engagement_preload:generator",
-@@ -2206,7 +2206,6 @@ if (!is_android) {
-         "//chrome/test/data/webui/cr_components/chromeos/network_health:modulize_runtime_data",
+@@ -3477,7 +3475,6 @@ if (!is_android && !is_fuchsia) {
+         "//chrome/test/data/webui/cr_components/chromeos/cellular_setup:modulize_runtime_data",
          "//chrome/test/data/webui/nearby_share/shared:modulize_runtime_data",
          "//chrome/test/data/webui/settings/chromeos:modulize_runtime_data",
 -        "//testing/buildbot/filters:chromeos_filters",
          "//ui/file_manager:unit_test_data",
        ]
- 
-@@ -4048,7 +4045,6 @@ test("unit_tests") {
+       if (!is_official_build) {
+@@ -5112,7 +5109,6 @@ test("unit_tests") {
    data_deps = [
      "//chrome/test/data/media/engagement/preload:generate_preload_list",
      "//chrome/test/data/media/engagement/preload:test_data",
@@ -48,7 +48,7 @@ author: Michael Gilbert <mgilbert@debian.org>
    ]
  
    data = [
-@@ -5768,7 +5764,6 @@ test("unit_tests") {
+@@ -7392,7 +7388,6 @@ test("unit_tests") {
        "//chrome/browser/chromeos:unit_tests",
        "//chromeos/ime:gencode",
      ]
@@ -56,7 +56,7 @@ author: Michael Gilbert <mgilbert@debian.org>
      sources -=
          [ "../browser/policy/cloud/user_policy_signin_service_unittest.cc" ]
    }
-@@ -8015,7 +8014,6 @@ if (!is_android) {
+@@ -8359,7 +8354,6 @@ if (!is_android && !is_fuchsia) {
        "//chrome:browser_tests_pak",
        "//chrome/test/data:web_ui_test_mojom_js_module",
        "//ppapi:ppapi_tests",
@@ -64,7 +64,7 @@ author: Michael Gilbert <mgilbert@debian.org>
        "//third_party/mesa_headers",
        "//ui/resources:ui_test_pak_data",
      ]
-@@ -8104,7 +8098,6 @@ if (!is_fuchsia && !is_android) {
+@@ -8984,7 +8978,6 @@ if (!is_android && !is_fuchsia) {
  
      data_deps = [
        "//testing:test_scripts_shared",
@@ -74,7 +74,7 @@ author: Michael Gilbert <mgilbert@debian.org>
  
 --- a/third_party/breakpad/BUILD.gn
 +++ b/third_party/breakpad/BUILD.gn
-@@ -711,7 +711,6 @@ if (is_linux || is_chromeos || is_androi
+@@ -741,7 +741,6 @@ if (is_linux || is_chromeos || is_androi
  
      data_deps = [
        ":linux_dumper_unittest_helper",
@@ -84,7 +84,7 @@ author: Michael Gilbert <mgilbert@debian.org>
      include_dirs = [
 --- a/content/test/BUILD.gn
 +++ b/content/test/BUILD.gn
-@@ -1351,7 +1351,6 @@ test("content_browsertests") {
+@@ -1498,7 +1498,6 @@ test("content_browsertests") {
  
    data_deps = [
      "//content/shell:pak",
@@ -92,7 +92,7 @@ author: Michael Gilbert <mgilbert@debian.org>
      "//third_party/mesa_headers",
    ]
  
-@@ -2296,7 +2295,6 @@ test("content_unittests") {
+@@ -2527,7 +2526,6 @@ test("content_unittests") {
    ]
  
    data_deps = [
@@ -102,7 +102,7 @@ author: Michael Gilbert <mgilbert@debian.org>
  
 --- a/media/BUILD.gn
 +++ b/media/BUILD.gn
-@@ -175,7 +175,6 @@ test("media_unittests") {
+@@ -180,7 +180,6 @@ test("media_unittests") {
      "formats/mp4/h264_annex_b_fuzz_corpus/",
    ]
  
@@ -112,7 +112,7 @@ author: Michael Gilbert <mgilbert@debian.org>
      deps += [ "//media/ffmpeg:unit_tests" ]
 --- a/net/BUILD.gn
 +++ b/net/BUILD.gn
-@@ -4579,7 +4579,6 @@ test("net_unittests") {
+@@ -4531,7 +4531,6 @@ test("net_unittests") {
    data = []
    data_deps = [
      "third_party/nist-pkits/",
@@ -122,7 +122,7 @@ author: Michael Gilbert <mgilbert@debian.org>
    if (is_linux || is_chromeos || is_mac || is_win || is_fuchsia) {
 --- a/cc/BUILD.gn
 +++ b/cc/BUILD.gn
-@@ -831,7 +831,6 @@ cc_test("cc_unittests") {
+@@ -863,7 +863,6 @@ cc_test("cc_unittests") {
      "//ui/gl:test_support",
    ]
    data_deps = [
@@ -132,7 +132,7 @@ author: Michael Gilbert <mgilbert@debian.org>
  
 --- a/components/BUILD.gn
 +++ b/components/BUILD.gn
-@@ -185,7 +185,7 @@ test("components_unittests") {
+@@ -201,7 +201,7 @@ test("components_unittests") {
      "//components/webdata_services:unit_tests",
    ]
  
@@ -153,7 +153,7 @@ author: Michael Gilbert <mgilbert@debian.org>
  
 --- a/gpu/BUILD.gn
 +++ b/gpu/BUILD.gn
-@@ -445,7 +445,6 @@ test("gl_tests") {
+@@ -461,7 +461,6 @@ test("gl_tests") {
      ]
    }
  
@@ -163,7 +163,7 @@ author: Michael Gilbert <mgilbert@debian.org>
  test("gpu_unittests") {
 --- a/sandbox/linux/BUILD.gn
 +++ b/sandbox/linux/BUILD.gn
-@@ -199,7 +199,6 @@ test("sandbox_linux_unittests") {
+@@ -203,7 +203,6 @@ test("sandbox_linux_unittests") {
      ":sandbox_linux_unittests_sources",
      "//sandbox/policy:tests",
    ]
@@ -173,7 +173,7 @@ author: Michael Gilbert <mgilbert@debian.org>
    }
 --- a/third_party/blink/renderer/controller/BUILD.gn
 +++ b/third_party/blink/renderer/controller/BUILD.gn
-@@ -128,7 +128,6 @@ test("blink_unittests") {
+@@ -132,7 +132,6 @@ test("blink_unittests") {
    data_deps = [
      ":blink_unittests_data",
      "//content/shell:pak",
@@ -183,7 +183,7 @@ author: Michael Gilbert <mgilbert@debian.org>
    if (is_android) {
 --- a/third_party/crashpad/crashpad/BUILD.gn
 +++ b/third_party/crashpad/crashpad/BUILD.gn
-@@ -31,8 +31,6 @@ if (crashpad_is_in_chromium || crashpad_is_in_fuchsia) {
+@@ -31,8 +31,6 @@ if (crashpad_is_in_chromium || crashpad_
        "util:util_test",
      ]
  
@@ -192,3 +192,27 @@ author: Michael Gilbert <mgilbert@debian.org>
      if (!crashpad_is_ios && !crashpad_is_fuchsia) {
        deps += [ "handler:handler_test" ]
      }
+--- a/ui/views/BUILD.gn
++++ b/ui/views/BUILD.gn
+@@ -1342,11 +1342,6 @@ test("views_unittests") {
+     }
+   }
+
+-  if ((is_linux || is_chromeos_lacros) && use_ozone) {
+-    data_deps +=
+-        [ "//testing/buildbot/filters:linux_ozone_views_unittests_filters" ]
+-  }
+-
+   if (use_atk) {
+     sources +=
+         [ "accessibility/view_ax_platform_node_delegate_auralinux_unittest.cc" ]
+--- a/ui/ozone/BUILD.gn
++++ b/ui/ozone/BUILD.gn
+@@ -366,7 +366,6 @@ test("ozone_unittests") {
+   # 2nd copy of any code via the component.
+   assert_no_deps = [ "//ui/ozone" ]
+
+-  data_deps = [ "//testing/buildbot/filters:ozone_unittests_filters" ]
+ }
+
+ # X11 backend has its own test suite only built when we are using the x11
diff --git a/debian/patches/disable/catapult.patch b/debian/patches/disable/catapult.patch
index 7b7118f..14532ac 100644
--- a/debian/patches/disable/catapult.patch
+++ b/debian/patches/disable/catapult.patch
@@ -3,15 +3,15 @@ author: Michael Gilbert <mgilbert@debian.org>
 
 --- a/BUILD.gn
 +++ b/BUILD.gn
-@@ -256,7 +256,6 @@ group("gn_all") {
+@@ -257,7 +257,6 @@ group("gn_all") {
+     deps += [
        "//google_apis/gcm:mcs_probe",
-       "//media/capture:capture_unittests",
        "//media/cast:cast_unittests",
 -      "//third_party/catapult/telemetry:bitmaptools($host_toolchain)",
      ]
-     if (is_android) {
-       import("//tools/perf/chrome_telemetry_build/android_browser_types.gni")
-@@ -383,7 +382,6 @@ group("gn_all") {
+     if (!is_android) {
+       deps += [ "//chrome/test:telemetry_perf_unittests" ]
+@@ -385,7 +384,6 @@ group("gn_all") {
        "//net/android:net_junit_tests",
        "//services:services_junit_tests",
        "//testing/android/junit:junit_unit_tests",
@@ -19,7 +19,7 @@ author: Michael Gilbert <mgilbert@debian.org>
        "//third_party/r8:custom_d8_java",
        "//tools/android:android_tools",
        "//tools/android:memconsumer",
-@@ -950,7 +948,6 @@ if (is_chromeos) {
+@@ -992,7 +990,6 @@ if (is_chromeos_ash) {
        "//third_party/dawn/src/tests:dawn_unittests",
  
        # Blocked on https://github.com/catapult-project/catapult/issues/2297
@@ -27,7 +27,7 @@ author: Michael Gilbert <mgilbert@debian.org>
        "//tools/perf/clear_system_cache",
        "//ui/ozone/gl:ozone_gl_unittests",
      ]
-@@ -1040,7 +1040,6 @@ if (!is_ios) {
+@@ -1077,7 +1074,6 @@ if (!is_ios) {
          "//chrome:chrome",
          "//chrome/test/chromedriver",
          "//testing:test_scripts_shared",
@@ -35,7 +35,7 @@ author: Michael Gilbert <mgilbert@debian.org>
        ]
        if (is_win) {
          data_deps += [ "//build/win:copy_cdb_to_output" ]
-@@ -1067,7 +1063,6 @@ if (!is_ios) {
+@@ -1116,7 +1112,6 @@ if (!is_ios) {
        "//third_party/blink/public:blink_devtools_inspector_resources",
        "//third_party/blink/public/mojom:mojom_platform_js_data_deps",
        "//third_party/blink/renderer/core:js_files_for_form_controls_web_tests",
@@ -43,7 +43,7 @@ author: Michael Gilbert <mgilbert@debian.org>
        "//third_party/hyphenation-patterns:test_data",
        "//third_party/mesa_headers",
        "//tools/imagediff",
-@@ -1133,7 +1128,6 @@ if (!is_ios) {
+@@ -1182,7 +1177,6 @@ if (!is_ios) {
  
      if (is_android) {
        data += [
@@ -51,7 +51,7 @@ author: Michael Gilbert <mgilbert@debian.org>
          "//build/android/",
        ]
      }
-@@ -1306,10 +1305,6 @@ if (!is_ios) {
+@@ -1475,10 +1469,6 @@ if (!is_ios) {
        "//third_party/blink/web_tests/StaleTestExpectations",
        "//third_party/blink/web_tests/TestExpectations",
        "//third_party/blink/web_tests/VirtualTestSuites",
@@ -64,14 +64,14 @@ author: Michael Gilbert <mgilbert@debian.org>
        "//third_party/depot_tools/pylint_main.py",
 --- a/tools/binary_size/BUILD.gn
 +++ b/tools/binary_size/BUILD.gn
-@@ -18,7 +18,6 @@ python_library("binary_size_trybot_py") {
- python_library("sizes_py") {
-   testonly = true
+@@ -20,7 +20,6 @@ python_library("sizes_py") {
    pydeps_file = "sizes.pydeps"
--  data_deps = [ "//third_party/catapult/tracing:convert_chart_json" ]
+   data_deps = [
+     "//build/util:test_results",
+-    "//third_party/catapult/tracing:convert_chart_json",
+   ]
  }
  
- if (is_linux) {
 --- a/v8/tools/BUILD.gn
 +++ b/v8/tools/BUILD.gn
 @@ -30,10 +30,6 @@ group("v8_android_test_runner_deps") {
@@ -87,7 +87,7 @@ author: Michael Gilbert <mgilbert@debian.org>
  
 --- a/chrome/test/BUILD.gn
 +++ b/chrome/test/BUILD.gn
-@@ -7295,8 +7295,6 @@ if (!is_fuchsia && !is_android) {
+@@ -9224,8 +9224,6 @@ if (!is_android && !is_fuchsia) {
        "//chrome/test/data/password/captured_sites/",
        "//chrome/test/data/web_page_replay_go_helper_scripts/automation_helper.js",
        "//components/test/data/autofill/web_page_replay_support_files/",
@@ -96,7 +96,7 @@ author: Michael Gilbert <mgilbert@debian.org>
      ]
  
      if (is_linux || is_chromeos || is_win) {
-@@ -7333,7 +7331,6 @@ if (!is_fuchsia && !is_android) {
+@@ -9263,7 +9261,6 @@ if (!is_android && !is_fuchsia) {
  
        # TODO(uwyiming@chromium.org) create a gn target for Web Page Replay Go (WPR Go) and only WPR Go.
        # So that test targets requiring WPR Go does not pull down the whole telemetry tool chain.
@@ -104,7 +104,7 @@ author: Michael Gilbert <mgilbert@debian.org>
        "//third_party/hunspell",
        "//third_party/icu",
        "//third_party/libpng",
-@@ -7544,7 +7544,6 @@ if (!is_fuchsia && !is_android) {
+@@ -9421,7 +9418,6 @@ if (!is_android && !is_fuchsia) {
      deps = [ "//tools/perf/chrome_telemetry_build:telemetry_chrome_test" ]
  
      data = [
@@ -112,7 +112,7 @@ author: Michael Gilbert <mgilbert@debian.org>
        "//tools/perf/run_telemetry_tests",
        "//testing/scripts/run_telemetry_as_googletest.py",
      ]
-@@ -9036,7 +9036,6 @@ if (is_mac || is_win || is_android) {
+@@ -9552,7 +9548,6 @@ if (is_mac || is_win || is_android) {
        "//chrome/test/data/perf",
        "//components/variations/service/generate_ui_string_overrider.py",
        "//testing/scripts",
@@ -132,7 +132,7 @@ author: Michael Gilbert <mgilbert@debian.org>
    ]
 --- a/tools/metrics/BUILD.gn
 +++ b/tools/metrics/BUILD.gn
-@@ -48,7 +48,6 @@ group("metrics_python_tests") {
+@@ -45,7 +45,6 @@ group("metrics_python_tests") {
      # The run_isolated_script_test.py script and its dependencies.
      "//testing/scripts/run_isolated_script_test.py",
      "//testing/scripts/common.py",
@@ -142,7 +142,7 @@ author: Michael Gilbert <mgilbert@debian.org>
      "//tools/json_comment_eater/json_comment_eater.py",
 --- a/tools/perf/chrome_telemetry_build/BUILD.gn
 +++ b/tools/perf/chrome_telemetry_build/BUILD.gn
-@@ -136,7 +136,6 @@ group("telemetry_chrome_test_without_chrome") {
+@@ -207,7 +207,6 @@ group("telemetry_chrome_test_without_chr
    ]
    data_deps = [
      "//testing:test_scripts_shared",
@@ -150,7 +150,7 @@ author: Michael Gilbert <mgilbert@debian.org>
      "//tools/metrics:metrics_python_tests",
    ]
  
-@@ -151,7 +150,5 @@ group("telemetry_chrome_test_without_chr
+@@ -251,7 +250,5 @@ group("telemetry_chrome_test_without_chr
        "//build/android:devil_chromium_py",
        "//build/android:stack_tools",
      ]
@@ -160,7 +160,7 @@ author: Michael Gilbert <mgilbert@debian.org>
  }
 --- a/tools/polymer/BUILD.gn
 +++ b/tools/polymer/BUILD.gn
-@@ -8,7 +8,6 @@ group("polymer_tools_python_unittests") {
+@@ -8,7 +8,6 @@ group("polymer_tools_python_unittests")
    data = [
      "//testing/scripts/run_isolated_script_test.py",
      "//tools/polymer/",
@@ -170,22 +170,22 @@ author: Michael Gilbert <mgilbert@debian.org>
  }
 --- a/tools/gritsettings/resource_ids.spec
 +++ b/tools/gritsettings/resource_ids.spec
-@@ -491,12 +491,6 @@
+@@ -683,12 +683,6 @@
    "content/test/web_ui_mojo_test_resources.grd": {
-     "includes": [2950],
+     "includes": [3860],
    },
 -
 -  # This file is generated during the build.
 -  "<(SHARED_INTERMEDIATE_DIR)/content/browser/tracing/tracing_resources.grd": {
 -    "META": {"sizes": {"includes": [20],}},
--    "includes": [2960],
+-    "includes": [3880],
 -  },
    # END content/ section.
  
    # START ios/web/ section.
 --- a/content/browser/BUILD.gn
 +++ b/content/browser/BUILD.gn
-@@ -2213,7 +2213,6 @@ source_set("browser") {
+@@ -2412,7 +2412,6 @@ source_set("browser") {
    if (!is_android) {
      deps += [
        "//components/vector_icons",
@@ -195,7 +195,7 @@ author: Michael Gilbert <mgilbert@debian.org>
  
 --- a/fuchsia/engine/BUILD.gn
 +++ b/fuchsia/engine/BUILD.gn
-@@ -32,7 +32,6 @@ repack("web_engine_pak") {
+@@ -38,7 +38,6 @@ repack("web_engine_pak") {
    sources = [
      "$root_gen_dir/components/components_resources.pak",
      "$root_gen_dir/content/app/resources/content_resources_100_percent.pak",
@@ -203,7 +203,7 @@ author: Michael Gilbert <mgilbert@debian.org>
      "$root_gen_dir/content/content_resources.pak",
      "$root_gen_dir/content/dev_ui_content_resources.pak",
      "$root_gen_dir/mojo/public/js/mojo_bindings_resources.pak",
-@@ -47,7 +46,6 @@ repack("web_engine_pak") {
+@@ -53,7 +52,6 @@ repack("web_engine_pak") {
      "//content:content_resources",
      "//content:dev_ui_content_resources",
      "//content/app/resources",
@@ -213,7 +213,7 @@ author: Michael Gilbert <mgilbert@debian.org>
      "//net:net_resources",
 --- a/headless/BUILD.gn
 +++ b/headless/BUILD.gn
-@@ -31,7 +31,6 @@ repack("pak") {
+@@ -49,7 +49,6 @@ repack("pak") {
      "$root_gen_dir/components/components_resources.pak",
      "$root_gen_dir/components/strings/components_strings_en-US.pak",
      "$root_gen_dir/content/app/resources/content_resources_100_percent.pak",
@@ -221,7 +221,7 @@ author: Michael Gilbert <mgilbert@debian.org>
      "$root_gen_dir/content/content_resources.pak",
      "$root_gen_dir/content/dev_ui_content_resources.pak",
      "$root_gen_dir/headless/headless_lib_resources.pak",
-@@ -60,7 +59,6 @@ repack("pak") {
+@@ -78,7 +77,6 @@ repack("pak") {
      "//content:content_resources",
      "//content:dev_ui_content_resources",
      "//content/app/resources",
@@ -231,7 +231,7 @@ author: Michael Gilbert <mgilbert@debian.org>
      "//third_party/blink/public:resources",
 --- a/chrome/chrome_paks.gni
 +++ b/chrome/chrome_paks.gni
-@@ -151,7 +151,6 @@ template("chrome_extra_paks") {
+@@ -154,7 +154,6 @@ template("chrome_extra_paks") {
          "$root_gen_dir/chrome/webid_resources_100_percent.pak",
          "$root_gen_dir/chrome/whats_new_resources.pak",
          "$root_gen_dir/content/browser/devtools/devtools_resources.pak",
@@ -239,7 +239,7 @@ author: Michael Gilbert <mgilbert@debian.org>
          "$root_gen_dir/headless/headless_lib_resources.pak",
        ]
        deps += [
-@@ -176,7 +175,6 @@ template("chrome_extra_paks") {
+@@ -181,7 +180,6 @@ template("chrome_extra_paks") {
          "//chrome/browser/resources/tab_search:resources",
          "//chrome/browser/resources/whats_new:resources",
          "//content/browser/devtools:devtools_resources",
@@ -249,7 +249,7 @@ author: Michael Gilbert <mgilbert@debian.org>
        if (is_chrome_branded) {
 --- a/content/shell/BUILD.gn
 +++ b/content/shell/BUILD.gn
-@@ -452,11 +452,6 @@ repack("pak") {
+@@ -448,11 +448,6 @@ repack("pak") {
      "//ui/strings",
    ]
  
@@ -313,7 +313,7 @@ author: Michael Gilbert <mgilbert@debian.org>
  #include "content/browser/tracing/tracing_controller_impl.h"
  #include "content/public/browser/browser_context.h"
  #include "content/public/browser/browser_thread.h"
-@@ -241,8 +241,6 @@ TracingUI::TracingUI(WebUI* web_ui)
+@@ -242,8 +241,6 @@ TracingUI::TracingUI(WebUI* web_ui)
    WebUIDataSource* source = WebUIDataSource::Create(kChromeUITracingHost);
    source->DisableTrustedTypesCSP();
    source->UseStringsJs();
@@ -324,7 +324,7 @@ author: Michael Gilbert <mgilbert@debian.org>
                             base::BindRepeating(OnTracingRequest));
 --- a/testing/BUILD.gn
 +++ b/testing/BUILD.gn
-@@ -29,7 +29,6 @@ group("run_perf_test") {
+@@ -35,7 +35,6 @@ group("run_perf_test") {
  
    data_deps = [
      ":test_scripts_shared",
@@ -343,7 +343,7 @@ author: Michael Gilbert <mgilbert@debian.org>
  }
 --- a/third_party/webrtc/test/BUILD.gn
 +++ b/third_party/webrtc/test/BUILD.gn
-@@ -262,10 +262,6 @@ rtc_library("perf_test") {
+@@ -268,10 +268,6 @@ rtc_library("perf_test") {
    ]
    if (rtc_enable_protobuf) {
      sources += [ "testsupport/perf_test_histogram_writer.cc" ]
@@ -354,7 +354,7 @@ author: Michael Gilbert <mgilbert@debian.org>
    } else {
      sources += [ "testsupport/perf_test_histogram_writer_no_protobuf.cc" ]
    }
-@@ -560,7 +556,6 @@ if (rtc_include_tests) {
+@@ -580,7 +576,6 @@ if (rtc_include_tests && !build_with_chr
  
      if (rtc_enable_protobuf) {
        sources += [ "testsupport/perf_test_histogram_writer_unittest.cc" ]
@@ -374,7 +374,7 @@ author: Michael Gilbert <mgilbert@debian.org>
    data = [
 --- a/weblayer/shell/BUILD.gn
 +++ b/weblayer/shell/BUILD.gn
-@@ -195,9 +195,6 @@ repack("support_pak") {
+@@ -185,9 +185,6 @@ repack("support_pak") {
    }
    if (is_android) {
      deps += [ "//ui/android:ui_java_resources" ]
diff --git a/debian/patches/disable/devtools-unittests.patch b/debian/patches/disable/devtools-unittests.patch
index be8342b..10eb8b2 100644
--- a/debian/patches/disable/devtools-unittests.patch
+++ b/debian/patches/disable/devtools-unittests.patch
@@ -205,7 +205,7 @@
  
    deps = [
 -    "../../../../../test/unittests/front_end/helpers",
-     "../../../../panels/emulation/components:bundle",
+     "../../../../panels/settings/emulation/components:bundle",
      "../../../../ui/components/helpers:bundle",
    ]
 --- a/third_party/devtools-frontend/src/front_end/ui/components/docs/webvitals/BUILD.gn
@@ -218,3 +218,43 @@
      "../../../../panels/timeline/components:bundle",
      "../../../../ui/components/helpers:bundle",
    ]
+--- a/third_party/devtools-frontend/src/front_end/ui/components/docs/text_editor/BUILD.gn
++++ b/third_party/devtools-frontend/src/front_end/ui/components/docs/text_editor/BUILD.gn
+@@ -10,7 +10,6 @@ ts_library("ts") {
+   sources = [ "basic.ts" ]
+
+   deps = [
+-    "../../../../../test/unittests/front_end/helpers",
+     "../../../../ui/components/helpers:bundle",
+     "../../../../ui/components/text_editor:bundle",
+   ]
+--- a/third_party/devtools-frontend/src/front_end/ui/components/docs/text_prompt/BUILD.gn
++++ b/third_party/devtools-frontend/src/front_end/ui/components/docs/text_prompt/BUILD.gn
+@@ -10,7 +10,6 @@ ts_library("ts") {
+   sources = [ "basic.ts" ]
+
+   deps = [
+-    "../../../../../test/unittests/front_end/helpers",
+     "../../../../ui/components/text_prompt:bundle",
+   ]
+ }
+--- a/third_party/devtools-frontend/src/front_end/ui/components/docs/button/BUILD.gn
++++ b/third_party/devtools-frontend/src/front_end/ui/components/docs/button/BUILD.gn
+@@ -10,7 +10,6 @@ ts_library("ts") {
+   sources = [ "basic.ts" ]
+
+   deps = [
+-    "../../../../../test/unittests/front_end/helpers",
+     "../../buttons:bundle",
+   ]
+ }
+--- a/third_party/devtools-frontend/src/front_end/ui/components/docs/input/BUILD.gn
++++ b/third_party/devtools-frontend/src/front_end/ui/components/docs/input/BUILD.gn
+@@ -10,7 +10,6 @@ ts_library("ts") {
+   sources = [ "basic.ts" ]
+
+   deps = [
+-    "../../../../../test/unittests/front_end/helpers",
+     "../../input:bundle",
+   ]
+ }
diff --git a/debian/patches/disable/font-tests.patch b/debian/patches/disable/font-tests.patch
index 985ab55..53df446 100644
--- a/debian/patches/disable/font-tests.patch
+++ b/debian/patches/disable/font-tests.patch
@@ -3,7 +3,7 @@ author: Michael Gilbert <mgilbert@debian.org>
 
 --- a/skia/BUILD.gn
 +++ b/skia/BUILD.gn
-@@ -873,7 +873,7 @@ group("test_fonts_resources") {
+@@ -863,7 +863,7 @@ group("test_fonts_resources") {
    if (is_apple) {
      deps += [ ":test_fonts_bundle_data" ]
      data_deps += [ ":test_fonts_bundle_data" ]
@@ -14,24 +14,11 @@ author: Michael Gilbert <mgilbert@debian.org>
    }
 --- a/base/test/BUILD.gn
 +++ b/base/test/BUILD.gn
-@@ -197,10 +197,6 @@ static_library("test_support") {
+@@ -198,7 +198,6 @@ static_library("test_support") {
+ 
    if (is_linux || is_chromeos) {
      sources += [ "test_file_util_linux.cc" ]
-     public_deps += [ ":fontconfig_util_linux" ]
--    data_deps += [ "//third_party/test_fonts" ]
--    if (current_toolchain == host_toolchain) {
--      data_deps += [ ":do_generate_fontconfig_caches" ]
--    }
+-    public_deps += [ "//third_party/test_fonts/fontconfig:test_support" ]
    }
  
    if (is_mac) {
-@@ -433,9 +429,6 @@ if (is_linux || is_chromeos) {
-       testonly = true
-       tool = ":generate_fontconfig_caches"
- 
--      # The copied test fonts are inputs to generate_fontconfig_caches, so must
--      # be listed in deps, not data_deps (https://crbug.com/919422).
--      deps = [ "//third_party/test_fonts" ]
-       args = []
-       outputs = [ "$root_out_dir/fontconfig_caches/fb5c91b2895aa445d23aebf7f9e2189c-le64.cache-7" ]
-     }
diff --git a/debian/patches/disable/fuzzers.patch b/debian/patches/disable/fuzzers.patch
index 8ed6f60..0766dbe 100644
--- a/debian/patches/disable/fuzzers.patch
+++ b/debian/patches/disable/fuzzers.patch
@@ -4,7 +4,7 @@ author: Michael Gilbert <mgilbert@debian.org>
 --- a/BUILD.gn
 +++ b/BUILD.gn
 @@ -788,8 +788,7 @@ group("gn_all") {
-     deps += [ "//ui/gtk:gtk_unittests" ]
+     }
    }
  
 -  if (((is_linux || is_chromeos) && !is_chromecast) ||
diff --git a/debian/patches/disable/glmark.patch b/debian/patches/disable/glmark.patch
index bb1e08a..ef14014 100644
--- a/debian/patches/disable/glmark.patch
+++ b/debian/patches/disable/glmark.patch
@@ -3,9 +3,9 @@ author: Michael Gilbert <mgilbert@debian.org>
 
 --- a/third_party/angle/src/tests/BUILD.gn
 +++ b/third_party/angle/src/tests/BUILD.gn
-@@ -436,13 +436,13 @@ if (build_angle_perftests) {
- 
-     data_deps += [ "//testing:run_perf_test" ]
+@@ -467,13 +467,13 @@ if (build_angle_perftests) {
+       "//testing:run_perf_test",
+     ]
  
 -    if (is_win || is_linux || is_chromeos) {
 +    if (false) {
diff --git a/debian/patches/disable/google-api-warning.patch b/debian/patches/disable/google-api-warning.patch
index d89b5be..698f7cb 100644
--- a/debian/patches/disable/google-api-warning.patch
+++ b/debian/patches/disable/google-api-warning.patch
@@ -3,9 +3,9 @@ author: Michael Gilbert <mgilbert@debian.org>
 
 --- a/chrome/browser/ui/startup/startup_browser_creator_impl.cc
 +++ b/chrome/browser/ui/startup/startup_browser_creator_impl.cc
-@@ -652,9 +652,6 @@ void StartupBrowserCreatorImpl::AddInfoBarsIfNecessary(
-     }
- #endif
+@@ -672,9 +672,6 @@ void StartupBrowserCreatorImpl::AddInfoB
+     infobars::ContentInfoBarManager* infobar_manager =
+         infobars::ContentInfoBarManager::FromWebContents(web_contents);
  
 -    if (!google_apis::HasAPIKeyConfigured())
 -      GoogleApiKeysInfoBarDelegate::Create(infobar_manager);
diff --git a/debian/patches/disable/installer.patch b/debian/patches/disable/installer.patch
index 3e249d4..e259ac1 100644
--- a/debian/patches/disable/installer.patch
+++ b/debian/patches/disable/installer.patch
@@ -3,10 +3,10 @@ author: Michael Gilbert <mgilbert@debian.org>
 
 --- a/BUILD.gn
 +++ b/BUILD.gn
-@@ -72,8 +72,6 @@ group("gn_all") {
+@@ -79,8 +79,6 @@ group("gn_all") {
+     ":gn_visibility",
      "//base:base_perftests",
      "//base:base_unittests",
-     "//base/util:base_util_unittests",
 -    "//chrome/installer",
 -    "//chrome/updater",
      "//codelabs",
@@ -14,7 +14,7 @@ author: Michael Gilbert <mgilbert@debian.org>
      "//components/gwp_asan:gwp_asan_unittests",
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -6329,7 +6329,6 @@ source_set("active_use_util") {
+@@ -7074,7 +7074,6 @@ source_set("active_use_util") {
    deps = [
      "//base",
      "//chrome/common:constants",
diff --git a/debian/patches/disable/ios.patch b/debian/patches/disable/ios.patch
deleted file mode 100644
index 4d9754e..0000000
--- a/debian/patches/disable/ios.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/components/crash/core/common/BUILD.gn
-+++ b/components/crash/core/common/BUILD.gn
-@@ -4,7 +4,6 @@
- 
- import("//build/buildflag_header.gni")
- import("//components/gwp_asan/buildflags/buildflags.gni")
--import("//ios/features.gni")
- 
- declare_args() {
-   # If set to true, this will stub out and disable the entire crash key system.
diff --git a/debian/patches/disable/openh264.patch b/debian/patches/disable/openh264.patch
index 0bf2454..d380808 100644
--- a/debian/patches/disable/openh264.patch
+++ b/debian/patches/disable/openh264.patch
@@ -3,7 +3,7 @@ author: Michael Gilbert <mgilbert@debian.org>
 
 --- a/third_party/webrtc/webrtc.gni
 +++ b/third_party/webrtc/webrtc.gni
-@@ -151,8 +151,7 @@ declare_args() {
+@@ -169,8 +169,7 @@ declare_args() {
    #
    # Enabling H264 when building with MSVC is currently not supported, see
    # bugs.webrtc.org/9213#c13 for more info.
@@ -15,7 +15,7 @@ author: Michael Gilbert <mgilbert@debian.org>
    rtc_use_absl_mutex = false
 --- a/media/media_options.gni
 +++ b/media/media_options.gni
-@@ -59,12 +59,9 @@ declare_args() {
+@@ -32,12 +32,9 @@ declare_args() {
      media_use_libvpx = false
    }
  
diff --git a/debian/patches/disable/ozone-unittests.patch b/debian/patches/disable/ozone-unittests.patch
deleted file mode 100644
index 9e559ff..0000000
--- a/debian/patches/disable/ozone-unittests.patch
+++ /dev/null
@@ -1,44 +0,0 @@
---- a/ui/ozone/BUILD.gn
-+++ b/ui/ozone/BUILD.gn
-@@ -340,19 +340,6 @@ action("generate_test_support_constructo
-   deps = [ ":generate_ozone_platform_list" ]
- }
- 
--test("ozone_unittests") {
--  deps = [ ":test_support" ]
--
--  # Add tests of platform internals.
--  deps += ozone_platform_test_deps
--
--  # Platform tests link ozone statically. Make sure we're not getting a
--  # 2nd copy of any code via the component.
--  assert_no_deps = [ "//ui/ozone" ]
--
--  data_deps = [ "//testing/buildbot/filters:ozone_unittests_filters" ]
--}
--
- # X11 backend has its own test suite only built when we are using the x11
- # backend.
- if (ozone_platform_x11) {
-@@ -381,7 +368,6 @@ group("unittests") {
-   visibility += [ "*" ]
- 
-   deps = [
--    ":ozone_unittests",
-     "//ui/ozone/gl:ozone_gl_unittests",
-   ]
- 
---- a/ui/views/BUILD.gn
-+++ b/ui/views/BUILD.gn
-@@ -1352,11 +1352,6 @@ test("views_unittests") {
-     }
-   }
- 
--  if ((is_linux || is_chromeos_lacros) && use_ozone) {
--    data_deps +=
--        [ "//testing/buildbot/filters:linux_ozone_views_unittests_filters" ]
--  }
--
-   if (use_atk) {
-     sources +=
-         [ "accessibility/view_ax_platform_node_delegate_auralinux_unittest.cc" ]
diff --git a/debian/patches/disable/signin.patch b/debian/patches/disable/signin.patch
index 551431e..94b5415 100644
--- a/debian/patches/disable/signin.patch
+++ b/debian/patches/disable/signin.patch
@@ -3,7 +3,7 @@ origin: https://raw.githubusercontent.com/Eloston/ungoogled-chromium/master/reso
 
 --- a/chrome/browser/ui/webui/signin/inline_login_handler_impl.cc
 +++ b/chrome/browser/ui/webui/signin/inline_login_handler_impl.cc
-@@ -408,17 +408,6 @@ void InlineSigninHelper::OnClientOAuthSuccessAndBrowserOpened(
+@@ -421,17 +421,6 @@ void InlineSigninHelper::OnClientOAuthSu
  
      signin_metrics::LogSigninReason(signin_metrics::Reason::kReauthentication);
    } else {
@@ -23,7 +23,7 @@ origin: https://raw.githubusercontent.com/Eloston/ungoogled-chromium/master/reso
  
 --- a/components/signin/internal/identity_manager/primary_account_manager.cc
 +++ b/components/signin/internal/identity_manager/primary_account_manager.cc
-@@ -53,9 +53,9 @@ void PrimaryAccountManager::RegisterProfilePrefs(PrefRegistrySimple* registry) {
+@@ -53,9 +53,9 @@ void PrimaryAccountManager::RegisterProf
                                 std::string());
    registry->RegisterStringPref(prefs::kGoogleServicesAccountId, std::string());
    registry->RegisterBooleanPref(prefs::kGoogleServicesConsentedToSync, false);
@@ -32,6 +32,6 @@ origin: https://raw.githubusercontent.com/Eloston/ungoogled-chromium/master/reso
    registry->RegisterListPref(prefs::kReverseAutologinRejectedEmailList);
 -  registry->RegisterBooleanPref(prefs::kSigninAllowed, true);
 +  registry->RegisterBooleanPref(prefs::kSigninAllowed, false);
-   registry->RegisterBooleanPref(prefs::kSigninAllowedByPolicy, true);
    registry->RegisterBooleanPref(prefs::kSignedInWithCredentialProvider, false);
  }
+ 
diff --git a/debian/patches/disable/swiftshader-2.patch b/debian/patches/disable/swiftshader-2.patch
new file mode 100644
index 0000000..75091f1
--- /dev/null
+++ b/debian/patches/disable/swiftshader-2.patch
@@ -0,0 +1,120 @@
+description: additional swiftshader stuff exposed by official builds
+author: Andres Salomon <dilinger@debian.org>
+
+--- a/chrome/BUILD.gn
++++ b/chrome/BUILD.gn
+@@ -959,6 +959,7 @@ if (is_win) {
+       public_deps = [ "//ui/gl:angle_library_copy" ]
+     }
+ 
++if (false) {
+     # Add the SwiftShader .dylibs in the MODULE_DIR of Chromium.app
+     bundle_data("swiftshader_binaries") {
+       sources = [
+@@ -973,6 +974,7 @@ if (is_win) {
+         "//ui/gl:swiftshader_vk_library_copy",
+       ]
+     }
++}
+   }
+ 
+   group("angle_library") {
+@@ -981,12 +983,6 @@ if (is_win) {
+     }
+   }
+ 
+-  group("swiftshader_library") {
+-    if (bundle_egl_libraries) {
+-      deps = [ ":swiftshader_binaries" ]
+-    }
+-  }
+-
+   if (bundle_widevine_cdm) {
+     bundle_data("widevine_cdm_library_binaries") {
+       sources = [ "$root_out_dir/$widevine_cdm_path/libwidevinecdm.dylib" ]
+@@ -1155,7 +1151,6 @@ if (is_win) {
+       ":chrome_framework_plugins",
+       ":chrome_framework_resources",
+       ":keystone_registration_framework",
+-      ":swiftshader_library",
+       ":widevine_cdm_library",
+       "//chrome/browser/resources/media/mei_preload:component_bundle",
+     ]
+@@ -1243,9 +1238,6 @@ if (is_win) {
+       "$root_out_dir/chrome_crashpad_handler",
+       "$root_out_dir/libEGL.dylib",
+       "$root_out_dir/libGLESv2.dylib",
+-      "$root_out_dir/libswiftshader_libEGL.dylib",
+-      "$root_out_dir/libswiftshader_libGLESv2.dylib",
+-      "$root_out_dir/libvk_swiftshader.dylib",
+       _framework_binary_path,
+     ]
+ 
+@@ -1278,9 +1270,6 @@ if (is_win) {
+         "//third_party/angle:libEGL",
+         "//third_party/angle:libGLESv2",
+         "//third_party/breakpad:dump_syms",
+-        "//third_party/swiftshader/src/OpenGL/libEGL:swiftshader_libEGL",
+-        "//third_party/swiftshader/src/OpenGL/libGLESv2:swiftshader_libGLESv2",
+-        "//third_party/swiftshader/src/Vulkan:swiftshader_libvulkan",
+       ]
+ 
+       foreach(helper_params, chrome_mac_helpers) {
+@@ -1301,9 +1290,6 @@ if (is_win) {
+         "$root_out_dir/chrome_crashpad_handler.dSYM",
+         "$root_out_dir/libEGL.dylib.dSYM",
+         "$root_out_dir/libGLESv2.dylib.dSYM",
+-        "$root_out_dir/libswiftshader_libEGL.dylib.dSYM",
+-        "$root_out_dir/libswiftshader_libGLESv2.dylib.dSYM",
+-        "$root_out_dir/libvk_swiftshader.dylib.dSYM",
+       ]
+ 
+       deps = [
+@@ -1312,9 +1298,6 @@ if (is_win) {
+         "//components/crash/core/app:chrome_crashpad_handler",
+         "//third_party/angle:libEGL",
+         "//third_party/angle:libGLESv2",
+-        "//third_party/swiftshader/src/OpenGL/libEGL:swiftshader_libEGL",
+-        "//third_party/swiftshader/src/OpenGL/libGLESv2:swiftshader_libGLESv2",
+-        "//third_party/swiftshader/src/Vulkan:swiftshader_libvulkan",
+       ]
+ 
+       foreach(helper_params, chrome_mac_helpers) {
+@@ -1722,12 +1705,7 @@ if (is_linux || is_chromeos) {
+         ":angle_gles_symbols",
+         ":chrome_crashpad_symbols",
+         ":chrome_symbols",
+-        ":swiftshader_egl_symbols",
+-        ":swiftshader_gles_symbols",
+       ]
+-      if (is_linux) {
+-        deps += [ ":swiftshader_vk_symbols" ]
+-      }
+       if (!is_chromeos) {
+         deps += [ ":angle_libvulkan_symbols" ]
+       }
+@@ -1756,6 +1734,7 @@ if (is_linux || is_chromeos) {
+ 
+       deps = [ "//components/crash/core/app:chrome_crashpad_handler" ]
+     }
++if (false) {
+     extract_symbols("swiftshader_egl_symbols") {
+       binary = "$root_out_dir/swiftshader/libEGL.so"
+ 
+@@ -1766,8 +1745,6 @@ if (is_linux || is_chromeos) {
+         symbol_file = "$root_out_dir/swiftshader_libegl.breakpad.$current_cpu"
+       }
+ 
+-      deps =
+-          [ "//third_party/swiftshader/src/OpenGL/libEGL:swiftshader_libEGL" ]
+     }
+     extract_symbols("swiftshader_gles_symbols") {
+       binary = "$root_out_dir/swiftshader/libGLESv2.so"
+@@ -1795,6 +1772,7 @@ if (is_linux || is_chromeos) {
+ 
+       deps = [ "//third_party/swiftshader/src/Vulkan:swiftshader_libvulkan" ]
+     }
++}
+     extract_symbols("angle_egl_symbols") {
+       binary = "$root_out_dir/libEGL.so"
+ 
diff --git a/debian/patches/disable/tests.patch b/debian/patches/disable/tests.patch
index 5db6b54..934b938 100644
--- a/debian/patches/disable/tests.patch
+++ b/debian/patches/disable/tests.patch
@@ -1,6 +1,6 @@
 --- a/media/BUILD.gn
 +++ b/media/BUILD.gn
-@@ -159,7 +159,6 @@ test("media_unittests") {
+@@ -164,7 +164,6 @@ test("media_unittests") {
      "//media/device_monitors:unit_tests",
      "//media/filters:unit_tests",
      "//media/formats:unit_tests",
@@ -28,7 +28,7 @@
 -    "//ui/gl:test_support",
 -  ]
 -  sources = [ "h264_decoder_unittest.cc" ]
--  if (proprietary_codecs && enable_platform_hevc) {
+-  if (enable_platform_hevc_decoding) {
 -    sources += [ "h265_decoder_unittest.cc" ]
 -  }
 -  if (is_chromeos_ash && (use_v4l2_codec || use_vaapi)) {
@@ -79,7 +79,7 @@
    test("video_decode_accelerator_tests") {
 --- a/third_party/devtools-frontend/src/BUILD.gn
 +++ b/third_party/devtools-frontend/src/BUILD.gn
-@@ -226,7 +226,6 @@ devtools_frontend_resources_deps = [
+@@ -136,7 +136,6 @@ foreach(module_file, non_autostart_non_r
  devtools_frontend_resources_deps = [
    ":build_release_devtools",
    "front_end",
diff --git a/debian/patches/disable/third-party-cookies.patch b/debian/patches/disable/third-party-cookies.patch
index 055e8db..7c776b6 100644
--- a/debian/patches/disable/third-party-cookies.patch
+++ b/debian/patches/disable/third-party-cookies.patch
@@ -1,14 +1,20 @@
 description: disable third-party cookies by default
-author: Chad Miller <chad.miller@canonical.com>
+author: Andres Salomon <dilinger@debian.org>
 
---- a/chrome/browser/prefs/browser_prefs.cc
-+++ b/chrome/browser/prefs/browser_prefs.cc
-@@ -549,7 +549,7 @@ void RegisterProfilePrefsForMigration(
- 
-   registry->RegisterDictionaryPref(kObservedSessionTime);
- 
--  registry->RegisterBooleanPref(kBlockThirdPartyCookies, false);
-+  registry->RegisterBooleanPref(kBlockThirdPartyCookies, true);
- 
-   registry->RegisterTimePref(kPluginsDeprecationInfobarLastShown, base::Time());
+This is easily configured in
+  Settings -> Security & Privacy -> Cookies & other site data
+
+With this patch, we just change the default on a new chromium profile.
+
+
+--- a/components/content_settings/core/browser/cookie_settings.cc
++++ b/components/content_settings/core/browser/cookie_settings.cc
+@@ -63,7 +63,7 @@ void CookieSettings::RegisterProfilePref
+     user_prefs::PrefRegistrySyncable* registry) {
+   registry->RegisterIntegerPref(
+       prefs::kCookieControlsMode,
+-      static_cast<int>(CookieControlsMode::kIncognitoOnly),
++      static_cast<int>(CookieControlsMode::kBlockThirdParty),
+       user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
+ }
  
diff --git a/debian/patches/disable/unrar.patch b/debian/patches/disable/unrar.patch
index 936ea3c..f870fb0 100644
--- a/debian/patches/disable/unrar.patch
+++ b/debian/patches/disable/unrar.patch
@@ -4,7 +4,7 @@ bug: http://bugs.debian.org/914487
 
 --- a/chrome/common/safe_browsing/BUILD.gn
 +++ b/chrome/common/safe_browsing/BUILD.gn
-@@ -43,39 +43,6 @@ if (safe_browsing_mode == 1) {
+@@ -58,39 +58,6 @@ if (safe_browsing_mode == 1) {
      public_deps = [ "//components/safe_browsing/core/common/proto:csd_proto" ]
    }
  
@@ -41,10 +41,10 @@ bug: http://bugs.debian.org/914487
 -    public_deps = [ "//components/safe_browsing/core/common/proto:csd_proto" ]
 -  }
 -
-   if (is_mac) {
-     source_set("disk_image_type_sniffer_mac") {
+   if (is_linux || is_win) {
+     source_set("document_analyzer") {
        sources = [
-@@ -149,7 +116,6 @@ source_set("safe_browsing") {
+@@ -189,7 +156,6 @@ source_set("safe_browsing") {
        ":archive_analyzer_results",
        ":binary_feature_extractor",
        ":download_type_util",
@@ -54,14 +54,14 @@ bug: http://bugs.debian.org/914487
  
 --- a/chrome/services/file_util/BUILD.gn
 +++ b/chrome/services/file_util/BUILD.gn
-@@ -50,7 +50,6 @@ source_set("file_util") {
+@@ -60,7 +60,6 @@ source_set("file_util") {
      deps += [
        "//chrome/common/safe_browsing",
        "//chrome/common/safe_browsing:archive_analyzer_results",
 -      "//chrome/common/safe_browsing:rar_analyzer",
      ]
-   }
  
+     if (is_linux || is_win) {
 --- a/chrome/services/file_util/safe_archive_analyzer.cc
 +++ b/chrome/services/file_util/safe_archive_analyzer.cc
 @@ -7,7 +7,6 @@
@@ -84,7 +84,7 @@ bug: http://bugs.debian.org/914487
  }
 --- a/chrome/browser/safe_browsing/download_protection/file_analyzer.cc
 +++ b/chrome/browser/safe_browsing/download_protection/file_analyzer.cc
-@@ -90,7 +90,7 @@ void FileAnalyzer::Start(const base::Fil
+@@ -95,7 +95,7 @@ void FileAnalyzer::Start(const base::Fil
    if (inspection_type == DownloadFileType::ZIP) {
      StartExtractZipFeatures();
    } else if (inspection_type == DownloadFileType::RAR) {
diff --git a/debian/patches/fixes/chromeos_devicetype.patch b/debian/patches/fixes/chromeos_devicetype.patch
deleted file mode 100644
index a719119..0000000
--- a/debian/patches/fixes/chromeos_devicetype.patch
+++ /dev/null
@@ -1,59 +0,0 @@
---- /dev/null
-+++ b/ui/chromeos/devicetype_utils.h
-@@ -0,0 +1,34 @@
-+// 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 UI_CHROMEOS_DEVICETYPE_UTILS_H_
-+#define UI_CHROMEOS_DEVICETYPE_UTILS_H_
-+
-+#include "base/strings/string16.h"
-+#include "ui/chromeos/ui_chromeos_export.h"
-+
-+namespace ui {
-+
-+// Assuming the given localization resources takes a device type parameter, this
-+// will substitute the appropriate device in (e.g. Chromebook, Chromebox).
-+UI_CHROMEOS_EXPORT base::string16 SubstituteChromeOSDeviceType(int resource_id);
-+
-+// Returns the name of the Chrome device type (e.g. Chromebook, Chromebox).
-+UI_CHROMEOS_EXPORT base::string16 GetChromeOSDeviceName();
-+
-+// Returns the resource ID for the current Chrome device type (e.g. Chromebook,
-+// Chromebox).
-+UI_CHROMEOS_EXPORT int GetChromeOSDeviceTypeResourceId();
-+
-+// Returns the name (plural forms) of the Chrome device type (e.g. Chromebooks,
-+// Chromeboxes).
-+UI_CHROMEOS_EXPORT base::string16 GetChromeOSDeviceNameInPlural();
-+
-+// Returns the resource ID for the current Chrome device type in plural forms
-+// (e.g. Chromebooks, Chromeboxes).
-+UI_CHROMEOS_EXPORT int GetChromeOSDeviceTypeInPluralResourceId();
-+
-+}  // namespace ui
-+
-+#endif  // UI_CHROMEOS_DEVICETYPE_UTILS_H_
---- /dev/null
-+++ b/ui/chromeos/ui_chromeos_export.h
-@@ -0,0 +1,19 @@
-+// 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 UI_CHROMEOS_CHROMEOS_EXPORT_H_
-+#define UI_CHROMEOS_CHROMEOS_EXPORT_H_
-+
-+#if defined(COMPONENT_BUILD)
-+#if defined(UI_CHROMEOS_IMPLEMENTATION)
-+#define UI_CHROMEOS_EXPORT __attribute__((visibility("default")))
-+#else
-+#define UI_CHROMEOS_EXPORT
-+#endif
-+
-+#else  // defined(COMPONENT_BUILD)
-+#define UI_CHROMEOS_EXPORT
-+#endif
-+
-+#endif  // UI_CHROMEOS_CHROMEOS_EXPORT_H_
diff --git a/debian/patches/fixes/clang-and-gcc11.patch b/debian/patches/fixes/clang-and-gcc11.patch
new file mode 100644
index 0000000..9944075
--- /dev/null
+++ b/debian/patches/fixes/clang-and-gcc11.patch
@@ -0,0 +1,218 @@
+description: In order to build w/ libstdc++ >= 11 and clang, this patch is needed.
+author: https://bugs.gentoo.org/786597#c14
+Index: chromium-96.0.4664.110/sql/recover_module/btree.cc
+===================================================================
+--- chromium-96.0.4664.110.orig/sql/recover_module/btree.cc
++++ chromium-96.0.4664.110/sql/recover_module/btree.cc
+@@ -136,16 +136,25 @@ static_assert(std::is_trivially_destruct
+               "Move the destructor to the .cc file if it's non-trival");
+ #endif  // !DCHECK_IS_ON()
+ 
+-LeafPageDecoder::LeafPageDecoder(DatabasePageReader* db_reader) noexcept
+-    : page_id_(db_reader->page_id()),
+-      db_reader_(db_reader),
+-      cell_count_(ComputeCellCount(db_reader)),
+-      next_read_index_(0),
+-      last_record_size_(0) {
++void LeafPageDecoder::Initialize(DatabasePageReader* db_reader) {
++  DCHECK(db_reader);
+   DCHECK(IsOnValidPage(db_reader));
++  page_id_ = db_reader->page_id();
++  db_reader_ = db_reader;
++  cell_count_ = ComputeCellCount(db_reader);
++  next_read_index_ = 0;
++  last_record_size_ = 0;
+   DCHECK(DatabasePageReader::IsValidPageId(page_id_));
+ }
+ 
++void LeafPageDecoder::Reset() {
++  db_reader_ = nullptr;
++  page_id_ = 0;
++  cell_count_ = 0;
++  next_read_index_ = 0;
++  last_record_size_ = 0;
++}
++
+ bool LeafPageDecoder::TryAdvance() {
+   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+   DCHECK(CanAdvance());
+Index: chromium-96.0.4664.110/sql/recover_module/btree.h
+===================================================================
+--- chromium-96.0.4664.110.orig/sql/recover_module/btree.h
++++ chromium-96.0.4664.110/sql/recover_module/btree.h
+@@ -103,7 +103,7 @@ class LeafPageDecoder {
+   //
+   // |db_reader| must have been used to read an inner page of a table B-tree.
+   // |db_reader| must outlive this instance.
+-  explicit LeafPageDecoder(DatabasePageReader* db_reader) noexcept;
++  explicit LeafPageDecoder() noexcept = default;
+   ~LeafPageDecoder() noexcept = default;
+ 
+   LeafPageDecoder(const LeafPageDecoder&) = delete;
+@@ -151,6 +151,15 @@ class LeafPageDecoder {
+   // read as long as CanAdvance() returns true.
+   bool TryAdvance();
+ 
++  // Initialize with DatabasePageReader
++  void Initialize(DatabasePageReader* db_reader);
++
++  // Reset internal DatabasePageReader
++  void Reset();
++
++  // True if DatabasePageReader is valid
++  bool IsValid() { return (db_reader_ != nullptr); }
++
+   // True if the given reader may point to an inner page in a table B-tree.
+   //
+   // The last ReadPage() call on |db_reader| must have succeeded.
+@@ -164,14 +173,14 @@ class LeafPageDecoder {
+   static int ComputeCellCount(DatabasePageReader* db_reader);
+ 
+   // The number of the B-tree page this reader is reading.
+-  const int64_t page_id_;
++  int64_t page_id_;
+   // Used to read the tree page.
+   //
+   // Raw pointer usage is acceptable because this instance's owner is expected
+   // to ensure that the DatabasePageReader outlives this.
+-  DatabasePageReader* const db_reader_;
++  DatabasePageReader* db_reader_;
+   // Caches the ComputeCellCount() value for this reader's page.
+-  const int cell_count_ = ComputeCellCount(db_reader_);
++  int cell_count_;
+ 
+   // The reader's cursor state.
+   //
+Index: chromium-96.0.4664.110/sql/recover_module/cursor.cc
+===================================================================
+--- chromium-96.0.4664.110.orig/sql/recover_module/cursor.cc
++++ chromium-96.0.4664.110/sql/recover_module/cursor.cc
+@@ -28,7 +28,7 @@ VirtualCursor::~VirtualCursor() {
+ int VirtualCursor::First() {
+   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+   inner_decoders_.clear();
+-  leaf_decoder_ = nullptr;
++  leaf_decoder_.Reset();
+ 
+   AppendPageDecoder(table_->root_page_id());
+   return Next();
+@@ -38,18 +38,18 @@ int VirtualCursor::Next() {
+   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+   record_reader_.Reset();
+ 
+-  while (!inner_decoders_.empty() || leaf_decoder_.get()) {
+-    if (leaf_decoder_.get()) {
+-      if (!leaf_decoder_->CanAdvance()) {
++  while (!inner_decoders_.empty() || leaf_decoder_.IsValid()) {
++    if (leaf_decoder_.IsValid()) {
++      if (!leaf_decoder_.CanAdvance()) {
+         // The leaf has been exhausted. Remove it from the DFS stack.
+-        leaf_decoder_ = nullptr;
++        leaf_decoder_.Reset();
+         continue;
+       }
+-      if (!leaf_decoder_->TryAdvance())
++      if (!leaf_decoder_.TryAdvance())
+         continue;
+ 
+-      if (!payload_reader_.Initialize(leaf_decoder_->last_record_size(),
+-                                      leaf_decoder_->last_record_offset())) {
++      if (!payload_reader_.Initialize(leaf_decoder_.last_record_size(),
++                                      leaf_decoder_.last_record_offset())) {
+         continue;
+       }
+       if (!record_reader_.Initialize())
+@@ -101,13 +101,13 @@ int VirtualCursor::ReadColumn(int column
+ int64_t VirtualCursor::RowId() {
+   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+   DCHECK(record_reader_.IsInitialized());
+-  DCHECK(leaf_decoder_.get());
+-  return leaf_decoder_->last_record_rowid();
++  DCHECK(leaf_decoder_.IsValid());
++  return leaf_decoder_.last_record_rowid();
+ }
+ 
+ void VirtualCursor::AppendPageDecoder(int page_id) {
+   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+-  DCHECK(leaf_decoder_.get() == nullptr)
++  DCHECK(!leaf_decoder_.IsValid())
+       << __func__
+       << " must only be called when the current path has no leaf decoder";
+ 
+@@ -115,7 +115,7 @@ void VirtualCursor::AppendPageDecoder(in
+     return;
+ 
+   if (LeafPageDecoder::IsOnValidPage(&db_reader_)) {
+-    leaf_decoder_ = std::make_unique<LeafPageDecoder>(&db_reader_);
++    leaf_decoder_.Initialize(&db_reader_);
+     return;
+   }
+ 
+Index: chromium-96.0.4664.110/sql/recover_module/cursor.h
+===================================================================
+--- chromium-96.0.4664.110.orig/sql/recover_module/cursor.h
++++ chromium-96.0.4664.110/sql/recover_module/cursor.h
+@@ -129,7 +129,7 @@ class VirtualCursor {
+   std::vector<std::unique_ptr<InnerPageDecoder>> inner_decoders_;
+ 
+   // Decodes the leaf page containing records.
+-  std::unique_ptr<LeafPageDecoder> leaf_decoder_;
++  LeafPageDecoder leaf_decoder_;
+ 
+   SEQUENCE_CHECKER(sequence_checker_);
+ };
+Index: chromium-96.0.4664.110/sql/recover_module/pager.cc
+===================================================================
+--- chromium-96.0.4664.110.orig/sql/recover_module/pager.cc
++++ chromium-96.0.4664.110/sql/recover_module/pager.cc
+@@ -23,8 +23,7 @@ static_assert(DatabasePageReader::kMaxPa
+               "ints are not appropriate for representing page IDs");
+ 
+ DatabasePageReader::DatabasePageReader(VirtualTable* table)
+-    : page_data_(std::make_unique<uint8_t[]>(table->page_size())),
+-      table_(table) {
++    : page_data_(), table_(table) {
+   DCHECK(table != nullptr);
+   DCHECK(IsValidPageSize(table->page_size()));
+ }
+@@ -57,8 +56,8 @@ int DatabasePageReader::ReadPage(int pag
+                     std::numeric_limits<int64_t>::max(),
+                 "The |read_offset| computation above may overflow");
+ 
+-  int sqlite_status =
+-      RawRead(sqlite_file, read_size, read_offset, page_data_.get());
++  int sqlite_status = RawRead(sqlite_file, read_size, read_offset,
++                              const_cast<uint8_t*>(page_data_.data()));
+ 
+   // |page_id_| needs to be set to kInvalidPageId if the read failed.
+   // Otherwise, future ReadPage() calls with the previous |page_id_| value
+Index: chromium-96.0.4664.110/sql/recover_module/pager.h
+===================================================================
+--- chromium-96.0.4664.110.orig/sql/recover_module/pager.h
++++ chromium-96.0.4664.110/sql/recover_module/pager.h
+@@ -5,6 +5,7 @@
+ #ifndef SQL_RECOVER_MODULE_PAGER_H_
+ #define SQL_RECOVER_MODULE_PAGER_H_
+ 
++#include <array>
+ #include <cstdint>
+ #include <memory>
+ #include <ostream>
+@@ -71,7 +72,7 @@ class DatabasePageReader {
+     DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+     DCHECK_NE(page_id_, kInvalidPageId)
+         << "Successful ReadPage() required before accessing pager state";
+-    return page_data_.get();
++    return page_data_.data();
+   }
+ 
+   // The number of bytes in the page read by the last ReadPage() call.
+@@ -138,7 +139,7 @@ class DatabasePageReader {
+   int page_id_ = kInvalidPageId;
+   // Stores the bytes of the last page successfully read by ReadPage().
+   // The content is undefined if the last call to ReadPage() did not succeed.
+-  const std::unique_ptr<uint8_t[]> page_data_;
++  const std::array<uint8_t, kMaxPageSize> page_data_;
+   // Raw pointer usage is acceptable because this instance's owner is expected
+   // to ensure that the VirtualTable outlives this.
+   VirtualTable* const table_;
diff --git a/debian/patches/fixes/closure.patch b/debian/patches/fixes/closure.patch
index 72a2dd5..7958c59 100644
--- a/debian/patches/fixes/closure.patch
+++ b/debian/patches/fixes/closure.patch
@@ -44,7 +44,7 @@ author: Michael Gilbert <mgilbert@debian.org>
 --- /dev/null
 +++ b/third_party/closure_compiler/compiler.py
 @@ -0,0 +1,314 @@
-+#!/usr/bin/python2
++#!/usr/bin/python3
 +# 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.
diff --git a/debian/patches/fixes/gnu-as.patch b/debian/patches/fixes/gnu-as.patch
index c6346c8..6287e7b 100644
--- a/debian/patches/fixes/gnu-as.patch
+++ b/debian/patches/fixes/gnu-as.patch
@@ -3,10 +3,10 @@ author: Michael Gilbert <mgilbert@debian.org>
 
 --- a/build/config/compiler/BUILD.gn
 +++ b/build/config/compiler/BUILD.gn
-@@ -1127,7 +1127,7 @@ config("compiler_deterministic") {
-       "-Xclang",
-       ".",
-     ]
+@@ -1261,7 +1261,7 @@ config("compiler_deterministic") {
+       # and -fcoverage-compilation-dir=.
+       cflags += [ "-ffile-compilation-dir=." ]
+     }
 -    if (!is_win) {
 +    if (false) {
        # We don't use clang -cc1as on Windows (yet? https://crbug.com/762167)
diff --git a/debian/patches/fixes/inspector.patch b/debian/patches/fixes/inspector.patch
deleted file mode 100644
index fa0ce6f..0000000
--- a/debian/patches/fixes/inspector.patch
+++ /dev/null
@@ -1,258 +0,0 @@
-description: use inspector_protocol from top level third_party dir
-author: Michael Gilbert <mgilbert@debian.org>
-
---- a/v8/src/inspector/BUILD.gn
-+++ b/v8/src/inspector/BUILD.gn
-@@ -4,7 +4,7 @@
- 
- import("../../gni/v8.gni")
- 
--_inspector_protocol = v8_path_prefix + "/third_party/inspector_protocol"
-+_inspector_protocol = "../../../third_party/inspector_protocol"
- import("$_inspector_protocol/inspector_protocol.gni")
- 
- _protocol_generated = [
-@@ -84,7 +84,7 @@ v8_source_set("inspector") {
-     ":inspector_string_conversions",
-     "../..:v8_tracing",
-     "../..:v8_version",
--    "../../third_party/inspector_protocol:crdtp",
-+    "../../../third_party/inspector_protocol:crdtp",
-   ]
- 
-   public_deps = [
---- a/v8/test/unittests/BUILD.gn
-+++ b/v8/test/unittests/BUILD.gn
-@@ -491,7 +491,7 @@ v8_source_set("unittests_sources") {
-     "../..:v8_libbase",
-     "../..:v8_libplatform",
-     "../..:v8_shared_internal_headers",
--    "../../third_party/inspector_protocol:crdtp_test",
-+    "../../../third_party/inspector_protocol:crdtp_test",
-     "//build/win:default_exe_manifest",
-     "//testing/gmock",
-     "//testing/gtest",
---- a/v8/src/inspector/inspector_protocol_config.json
-+++ b/v8/src/inspector/inspector_protocol_config.json
-@@ -48,6 +48,6 @@
-     },
- 
-     "crdtp": {
--        "namespace": "v8_crdtp"
-+        "namespace": "crdtp"
-     }
- }
---- a/v8/src/inspector/v8-inspector-session-impl.cc
-+++ b/v8/src/inspector/v8-inspector-session-impl.cc
-@@ -26,12 +26,12 @@
- 
- namespace v8_inspector {
- namespace {
--using v8_crdtp::span;
--using v8_crdtp::SpanFrom;
--using v8_crdtp::Status;
--using v8_crdtp::cbor::CheckCBORMessage;
--using v8_crdtp::json::ConvertCBORToJSON;
--using v8_crdtp::json::ConvertJSONToCBOR;
-+using crdtp::span;
-+using crdtp::SpanFrom;
-+using crdtp::Status;
-+using crdtp::cbor::CheckCBORMessage;
-+using crdtp::json::ConvertCBORToJSON;
-+using crdtp::json::ConvertJSONToCBOR;
- 
- bool IsCBORMessage(StringView msg) {
-   return msg.is8Bit() && msg.length() >= 2 && msg.characters8()[0] == 0xd8 &&
-@@ -196,8 +196,8 @@ void V8InspectorSessionImpl::SendProtoco
- }
- 
- void V8InspectorSessionImpl::FallThrough(int callId,
--                                         const v8_crdtp::span<uint8_t> method,
--                                         v8_crdtp::span<uint8_t> message) {
-+                                         const crdtp::span<uint8_t> method,
-+                                         crdtp::span<uint8_t> message) {
-   // There's no other layer to handle the command.
-   UNREACHABLE();
- }
-@@ -344,8 +344,8 @@ void V8InspectorSessionImpl::reportAllCo
- }
- 
- void V8InspectorSessionImpl::dispatchProtocolMessage(StringView message) {
--  using v8_crdtp::span;
--  using v8_crdtp::SpanFrom;
-+  using crdtp::span;
-+  using crdtp::SpanFrom;
-   span<uint8_t> cbor;
-   std::vector<uint8_t> converted_cbor;
-   if (IsCBORMessage(message)) {
-@@ -358,21 +358,21 @@ void V8InspectorSessionImpl::dispatchPro
-     auto status = ConvertToCBOR(message, &converted_cbor);
-     if (!status.ok()) {
-       m_channel->sendNotification(
--          serializeForFrontend(v8_crdtp::CreateErrorNotification(
--              v8_crdtp::DispatchResponse::ParseError(status.ToASCIIString()))));
-+          serializeForFrontend(crdtp::CreateErrorNotification(
-+              crdtp::DispatchResponse::ParseError(status.ToASCIIString()))));
-       return;
-     }
-     cbor = SpanFrom(converted_cbor);
-   }
--  v8_crdtp::Dispatchable dispatchable(cbor);
-+  crdtp::Dispatchable dispatchable(cbor);
-   if (!dispatchable.ok()) {
-     if (dispatchable.HasCallId()) {
-       m_channel->sendNotification(serializeForFrontend(
--          v8_crdtp::CreateErrorNotification(dispatchable.DispatchError())));
-+          crdtp::CreateErrorNotification(dispatchable.DispatchError())));
-     } else {
-       m_channel->sendResponse(
-           dispatchable.CallId(),
--          serializeForFrontend(v8_crdtp::CreateErrorResponse(
-+          serializeForFrontend(crdtp::CreateErrorResponse(
-               dispatchable.CallId(), dispatchable.DispatchError())));
-     }
-     return;
---- a/v8/src/inspector/string-16.cc
-+++ b/v8/src/inspector/string-16.cc
-@@ -239,7 +239,7 @@ std::string String16::utf8() const {
- 
- }  // namespace v8_inspector
- 
--namespace v8_crdtp {
-+namespace crdtp {
- void SerializerTraits<v8_inspector::String16>::Serialize(
-     const v8_inspector::String16& str, std::vector<uint8_t>* out) {
-   cbor::EncodeFromUTF16(
---- a/v8/src/inspector/string-16.h
-+++ b/v8/src/inspector/string-16.h
-@@ -169,7 +169,7 @@ struct hash<v8_inspector::String16> {
- #endif  // !defined(__APPLE__) || defined(_LIBCPP_VERSION)
- 
- // See third_party/inspector_protocol/crdtp/serializer_traits.h.
--namespace v8_crdtp {
-+namespace crdtp {
- template <>
- struct SerializerTraits<v8_inspector::String16> {
-   static void Serialize(const v8_inspector::String16& str,
---- a/v8/src/inspector/v8-inspector-session-impl.h
-+++ b/v8/src/inspector/v8-inspector-session-impl.h
-@@ -105,8 +105,8 @@ class V8InspectorSessionImpl : public V8
-       int callId, std::unique_ptr<protocol::Serializable> message) override;
-   void SendProtocolNotification(
-       std::unique_ptr<protocol::Serializable> message) override;
--  void FallThrough(int callId, v8_crdtp::span<uint8_t> method,
--                   v8_crdtp::span<uint8_t> message) override;
-+  void FallThrough(int callId, crdtp::span<uint8_t> method,
-+                   crdtp::span<uint8_t> message) override;
-   void FlushProtocolNotifications() override;
- 
-   std::unique_ptr<StringBuffer> serializeForFrontend(
---- a/v8/src/inspector/injected-script.cc
-+++ b/v8/src/inspector/injected-script.cc
-@@ -724,8 +724,8 @@ Response InjectedScript::resolveCallArgu
-     String16 value;
-     if (callArgument->hasValue()) {
-       std::vector<uint8_t> json;
--      v8_crdtp::json::ConvertCBORToJSON(
--          v8_crdtp::SpanFrom(callArgument->getValue(nullptr)->Serialize()),
-+      crdtp::json::ConvertCBORToJSON(
-+          crdtp::SpanFrom(callArgument->getValue(nullptr)->Serialize()),
-           &json);
-       value =
-           "(" +
---- a/v8/src/inspector/custom-preview.cc
-+++ b/v8/src/inspector/custom-preview.cc
-@@ -121,7 +121,7 @@ bool substituteObjectTags(int sessionId,
-       return false;
-     }
-     std::vector<uint8_t> json;
--    v8_crdtp::json::ConvertCBORToJSON(v8_crdtp::SpanFrom(wrapper->Serialize()),
-+    crdtp::json::ConvertCBORToJSON(crdtp::SpanFrom(wrapper->Serialize()),
-                                       &json);
-     v8::Local<v8::Value> jsonWrapper;
-     v8_inspector::StringView serialized(json.data(), json.size());
---- a/v8/src/inspector/v8-stack-trace-impl.cc
-+++ b/v8/src/inspector/v8-stack-trace-impl.cc
-@@ -11,9 +11,9 @@
- #include "src/inspector/v8-inspector-impl.h"
- #include "src/tracing/trace-event.h"
- 
--using v8_crdtp::SpanFrom;
--using v8_crdtp::json::ConvertCBORToJSON;
--using v8_crdtp::json::ConvertJSONToCBOR;
-+using crdtp::SpanFrom;
-+using crdtp::json::ConvertCBORToJSON;
-+using crdtp::json::ConvertJSONToCBOR;
- 
- namespace v8_inspector {
- 
-@@ -139,10 +139,10 @@ V8StackTraceId::V8StackTraceId(StringVie
-   std::vector<uint8_t> cbor;
-   if (json.is8Bit()) {
-     ConvertJSONToCBOR(
--        v8_crdtp::span<uint8_t>(json.characters8(), json.length()), &cbor);
-+        crdtp::span<uint8_t>(json.characters8(), json.length()), &cbor);
-   } else {
-     ConvertJSONToCBOR(
--        v8_crdtp::span<uint16_t>(json.characters16(), json.length()), &cbor);
-+        crdtp::span<uint16_t>(json.characters16(), json.length()), &cbor);
-   }
-   auto dict = protocol::DictionaryValue::cast(
-       protocol::Value::parseBinary(cbor.data(), cbor.size()));
-@@ -169,7 +169,7 @@ std::unique_ptr<StringBuffer> V8StackTra
-   dict->setString(kDebuggerId, V8DebuggerId(debugger_id).toString());
-   dict->setBoolean(kShouldPause, should_pause);
-   std::vector<uint8_t> json;
--  v8_crdtp::json::ConvertCBORToJSON(v8_crdtp::SpanFrom(dict->Serialize()),
-+  crdtp::json::ConvertCBORToJSON(crdtp::SpanFrom(dict->Serialize()),
-                                     &json);
-   return StringBufferFrom(std::move(json));
- }
---- a/v8/src/inspector/string-util.cc
-+++ b/v8/src/inspector/string-util.cc
-@@ -245,7 +245,7 @@ String16 stackTraceIdToString(uintptr_t
- 
- }  // namespace v8_inspector
- 
--namespace v8_crdtp {
-+namespace crdtp {
- 
- using v8_inspector::String16;
- using v8_inspector::protocol::Binary;
---- a/v8/src/inspector/string-util.h
-+++ b/v8/src/inspector/string-util.h
-@@ -86,7 +86,7 @@ String16 stackTraceIdToString(uintptr_t
- }  // namespace v8_inspector
- 
- // See third_party/inspector_protocol/crdtp/serializer_traits.h.
--namespace v8_crdtp {
-+namespace crdtp {
- 
- template <>
- struct ProtocolTypeTraits<v8_inspector::String16> {
---- a/v8/src/inspector/v8-debugger-agent-impl.cc
-+++ b/v8/src/inspector/v8-debugger-agent-impl.cc
-@@ -1607,8 +1607,8 @@ void V8DebuggerAgentImpl::didParseSource
-     // execution context id.
-     const String16& aux = inspected->auxData();
-     std::vector<uint8_t> cbor;
--    v8_crdtp::json::ConvertJSONToCBOR(
--        v8_crdtp::span<uint16_t>(aux.characters16(), aux.length()), &cbor);
-+    crdtp::json::ConvertJSONToCBOR(
-+        crdtp::span<uint16_t>(aux.characters16(), aux.length()), &cbor);
-     executionContextAuxData = protocol::DictionaryValue::cast(
-         protocol::Value::parseBinary(cbor.data(), cbor.size()));
-   }
---- a/v8/src/inspector/v8-runtime-agent-impl.cc
-+++ b/v8/src/inspector/v8-runtime-agent-impl.cc
-@@ -870,8 +870,8 @@ void V8RuntimeAgentImpl::reportExecution
-   const String16& aux = context->auxData();
-   if (!aux.isEmpty()) {
-     std::vector<uint8_t> cbor;
--    v8_crdtp::json::ConvertJSONToCBOR(
--        v8_crdtp::span<uint16_t>(aux.characters16(), aux.length()), &cbor);
-+    crdtp::json::ConvertJSONToCBOR(
-+        crdtp::span<uint16_t>(aux.characters16(), aux.length()), &cbor);
-     description->setAuxData(protocol::DictionaryValue::cast(
-         protocol::Value::parseBinary(cbor.data(), cbor.size())));
-   }
diff --git a/debian/patches/fixes/missing-includes.patch b/debian/patches/fixes/missing-includes.patch
deleted file mode 100644
index d3aedc0..0000000
--- a/debian/patches/fixes/missing-includes.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-description: add include statements that are missing
-author: Michael Gilbert <mgilbert@debian.org>
-
---- a/cc/base/list_container_helper.cc
-+++ b/cc/base/list_container_helper.cc
-@@ -5,6 +5,7 @@
- #include "cc/base/list_container_helper.h"
- 
- #include <stddef.h>
-+#include <string.h>
- 
- #include <algorithm>
- #include <cstring>
---- a/chrome/browser/devtools/devtools_embedder_message_dispatcher.h
-+++ b/chrome/browser/devtools/devtools_embedder_message_dispatcher.h
-@@ -8,6 +8,7 @@
- #include <map>
- #include <memory>
- #include <string>
-+#include <vector>
- 
- #include "base/callback.h"
- #include "ui/gfx/geometry/insets.h"
---- a/extensions/browser/extension_dialog_auto_confirm.cc
-+++ b/extensions/browser/extension_dialog_auto_confirm.cc
-@@ -4,6 +4,7 @@
- 
- #include "extensions/browser/extension_dialog_auto_confirm.h"
- 
-+#include <cstring>
- #include <utility>
- 
- #include "base/check.h"
---- a/net/base/test_data_stream.cc
-+++ b/net/base/test_data_stream.cc
-@@ -5,6 +5,7 @@
- #include "net/base/test_data_stream.h"
- 
- #include <algorithm>
-+#include <string.h>
- 
- namespace net {
- 
---- a/ui/base/class_property.h
-+++ b/ui/base/class_property.h
-@@ -8,6 +8,7 @@
- #include <stdint.h>
- 
- #include <map>
-+#include <memory>
- #include <set>
- #include <type_traits>
- 
---- a/ui/base/clipboard/test/clipboard_test_util.h
-+++ b/ui/base/clipboard/test/clipboard_test_util.h
-@@ -6,6 +6,7 @@
- #define UI_BASE_CLIPBOARD_TEST_CLIPBOARD_TEST_UTIL_H_
- 
- #include <vector>
-+#include <stdint.h>
- 
- class SkBitmap;
- 
---- a/device/bluetooth/bluetooth_low_energy_scan_filter.h
-+++ b/device/bluetooth/bluetooth_low_energy_scan_filter.h
-@@ -8,6 +8,7 @@
- #include <stddef.h>
- #include <stdint.h>
- #include <vector>
-+#include <memory>
- 
- #include "base/time/time.h"
- #include "device/bluetooth/bluetooth_export.h"
---- a/components/password_manager/core/browser/hash_password_manager.h
-+++ b/components/password_manager/core/browser/hash_password_manager.h
-@@ -6,6 +6,7 @@
- #define COMPONENTS_PASSWORD_MANAGER_CORE_BROWSER_HASH_PASSWORD_MANAGER_H_
- 
- #include <string>
-+#include <vector>
- 
- #include "base/callback.h"
- #include "base/callback_list.h"
---- a/third_party/crashpad/crashpad/util/net/http_multipart_builder.cc
-+++ b/third_party/crashpad/crashpad/util/net/http_multipart_builder.cc
-@@ -17,6 +17,7 @@
- #include <string.h>
- #include <sys/types.h>
- 
-+#include <cstring>
- #include <utility>
- #include <vector>
- 
---- a/third_party/crashpad/crashpad/util/process/process_memory.cc
-+++ b/third_party/crashpad/crashpad/util/process/process_memory.cc
-@@ -16,6 +16,7 @@
- 
- #include <string.h>
- 
-+#include <cstring>
- #include <algorithm>
- 
- #include "base/check_op.h"
---- a/third_party/crashpad/crashpad/util/stream/log_output_stream.cc
-+++ b/third_party/crashpad/crashpad/util/stream/log_output_stream.cc
-@@ -16,6 +16,7 @@
- 
- #include <string.h>
- 
-+#include <cstring>
- #include <algorithm>
- 
- #include "base/check.h"
---- a/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h
-+++ b/third_party/webrtc/modules/audio_processing/aec3/clockdrift_detector.h
-@@ -14,6 +14,7 @@
- #include <stddef.h>
- 
- #include <array>
-+#include <cstddef>
- 
- namespace webrtc {
- 
---- a/chrome/browser/search/background/ntp_backgrounds.h
-+++ b/chrome/browser/search/background/ntp_backgrounds.h
-@@ -8,6 +8,7 @@
- #include <stddef.h>
- 
- #include <array>
-+#include <cstddef>
- 
- class GURL;
- 
---- a/third_party/pdfium/core/fxcodec/jpx/cjpx_decoder.cpp
-+++ b/third_party/pdfium/core/fxcodec/jpx/cjpx_decoder.cpp
-@@ -6,6 +6,7 @@
- 
- #include "core/fxcodec/jpx/cjpx_decoder.h"
- 
-+#include <string.h>
- #include <algorithm>
- #include <limits>
- #include <utility>
---- a/third_party/pdfium/core/fxcodec/png/png_decoder.cpp
-+++ b/third_party/pdfium/core/fxcodec/png/png_decoder.cpp
-@@ -10,6 +10,7 @@
- 
- #include "core/fxcodec/cfx_codec_memory.h"
- #include "core/fxcodec/fx_codec.h"
-+#include "core/fxcodec/fx_codec_def.h"
- #include "core/fxcrt/unowned_ptr.h"
- #include "core/fxge/dib/fx_dib.h"
- #include "third_party/base/compiler_specific.h"
diff --git a/debian/patches/fixes/multiple-destruction.patch b/debian/patches/fixes/multiple-destruction.patch
deleted file mode 100644
index 6a21614..0000000
--- a/debian/patches/fixes/multiple-destruction.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-description: suggest proxy misconfiguration when network is unreachable
-author: Michael Gilbert <mgilbert@debian.org>
-
---- a/base/supports_user_data.cc
-+++ b/base/supports_user_data.cc
-@@ -42,6 +42,10 @@ void SupportsUserData::SetUserData(const
- 
- void SupportsUserData::RemoveUserData(const void* key) {
-   DCHECK(sequence_checker_.CalledOnValidSequence());
-+
-+  std::unique_ptr<Data> to_be_deleted =
-+  std::move(user_data_[key]);
-+  DCHECK(to_be_deleted);
-   user_data_.erase(key);
- }
- 
diff --git a/debian/patches/fixes/nomerge.patch b/debian/patches/fixes/nomerge.patch
index f3c655f..0c99dfc 100644
--- a/debian/patches/fixes/nomerge.patch
+++ b/debian/patches/fixes/nomerge.patch
@@ -1,3 +1,13 @@
+description: fix build error
+
+../../base/check.h:88:3: error: 'nomerge' attribute cannot be applied to a declaration
+  NOMERGE ~CheckError();
+  ^       ~
+../../base/compiler_specific.h:369:19: note: expanded from macro 'NOMERGE'
+#define NOMERGE [[clang::nomerge]]
+                  ^
+1 error generated.
+
 --- a/base/check.h
 +++ b/base/check.h
 @@ -85,7 +85,7 @@ class BASE_EXPORT CheckError {
diff --git a/debian/patches/fixes/nullptr-dereference.patch b/debian/patches/fixes/nullptr-dereference.patch
deleted file mode 100644
index b7060cd..0000000
--- a/debian/patches/fixes/nullptr-dereference.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-description: use a meaningful string to avoid possible nullptr dereference
-author: Michael Gilbert
-
---- a/base/location.cc
-+++ b/base/location.cc
-@@ -92,7 +92,7 @@ NOINLINE Location Location::Current(cons
- #else
- // static
- NOINLINE Location Location::Current() {
--  return Location(nullptr, RETURN_ADDRESS());
-+  return Location("[unknown file]", RETURN_ADDRESS());
- }
- #endif
- 
diff --git a/debian/patches/fixes/sequence-point.patch b/debian/patches/fixes/sequence-point.patch
index 1106f91..7b48ab0 100644
--- a/debian/patches/fixes/sequence-point.patch
+++ b/debian/patches/fixes/sequence-point.patch
@@ -3,7 +3,7 @@ author: Michael Gilbert <mgilbert@debian.org>
 
 --- a/components/download/internal/common/download_item_impl.cc
 +++ b/components/download/internal/common/download_item_impl.cc
-@@ -646,7 +646,9 @@ void DownloadItemImpl::UpdateResumptionInfo(bool user_resume) {
+@@ -676,7 +676,9 @@ void DownloadItemImpl::UpdateResumptionI
      bytes_wasted_ = 0;
    }
  
@@ -16,7 +16,7 @@ author: Michael Gilbert <mgilbert@debian.org>
  }
 --- a/third_party/blink/renderer/modules/animationworklet/animation_worklet_proxy_client.cc
 +++ b/third_party/blink/renderer/modules/animationworklet/animation_worklet_proxy_client.cc
-@@ -186,7 +186,7 @@ AnimationWorkletProxyClient::SelectGloba
+@@ -188,7 +188,7 @@ AnimationWorkletProxyClient::SelectGloba
    if (--next_global_scope_switch_countdown_ < 0) {
      int last_global_scope_index = current_global_scope_index_;
      current_global_scope_index_ =
@@ -27,12 +27,12 @@ author: Michael Gilbert <mgilbert@debian.org>
      // Introduce an element of randomness in the switching interval to make
 --- a/chrome/browser/notifications/scheduler/internal/impression_history_tracker.cc
 +++ b/chrome/browser/notifications/scheduler/internal/impression_history_tracker.cc
-@@ -412,7 +412,7 @@ void ImpressionHistoryTrackerImpl::Apply
+@@ -414,7 +414,7 @@ void ImpressionHistoryTrackerImpl::Apply
  
    // Increase |current_max_daily_show| by 1.
    client_state->current_max_daily_show =
--      base::ClampToRange(++client_state->current_max_daily_show, 0,
-+      base::ClampToRange(client_state->current_max_daily_show + 1, 0,
-                          config_.max_daily_shown_per_type);
+-      base::clamp(++client_state->current_max_daily_show, 0,
++      base::clamp(client_state->current_max_daily_show + 1, 0,
+                   config_.max_daily_shown_per_type);
  }
  
diff --git a/debian/patches/gn/explicit-python2.patch b/debian/patches/gn/explicit-python2.patch
deleted file mode 100644
index ffc12dd..0000000
--- a/debian/patches/gn/explicit-python2.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-Description: use explicit python2 in gn
-Author: Peter Michael Green <plugwash@raspbian.org>
-
----
-The information above should follow the Patch Tagging Guidelines, please
-checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
-are templates for supplementary fields that you might want to add:
-
-Origin: <vendor|upstream|other>, <url of original patch>
-Bug: <url in upstream bugtracker>
-Bug-Debian: https://bugs.debian.org/<bugnumber>
-Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
-Forwarded: <no|not-needed|url proving that it has been forwarded>
-Reviewed-By: <name and email of someone who approved the patch>
-Last-Update: 2020-08-13
-
---- a/tools/gn/src/gn/function_exec_script.cc
-+++ b/tools/gn/src/gn/function_exec_script.cc
-@@ -79,7 +79,7 @@ const char kExecScript_Help[] =
-   rebase_path() function to make file names relative to this path (see "gn help
-   rebase_path").
- 
--  The default script interpreter is Python ("python" on POSIX, "python.exe" or
-+  The default script interpreter is Python ("python2" on POSIX, "python.exe" or
-   "python.bat" on Windows). This can be configured by the script_executable
-   variable, see "gn help dotfile".
- 
---- a/tools/gn/src/gn/setup.cc
-+++ b/tools/gn/src/gn/setup.cc
-@@ -795,7 +795,7 @@ bool Setup::FillPythonPath(const base::CommandLine& cmdline, Err* err) {
-     }
-     build_settings_.set_python_path(python_path);
- #else
--    build_settings_.set_python_path(base::FilePath("python"));
-+    build_settings_.set_python_path(base::FilePath("python2"));
- #endif
-   }
-   return true;
diff --git a/debian/patches/gn/libcxx.patch b/debian/patches/gn/libcxx.patch
deleted file mode 100644
index 2b5f097..0000000
--- a/debian/patches/gn/libcxx.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-description: avoid chromium's embedded C++ library when bootstrapping gn
-author: Michael Gilbert <mgilbert@debian.org>
-
---- a/tools/gn/bootstrap/bootstrap.py
-+++ b/tools/gn/bootstrap/bootstrap.py
-@@ -111,6 +111,7 @@ def main(argv):
-   cmd = [
-       sys.executable,
-       os.path.join(GN_ROOT, 'build', 'gen.py'),
-+      '--no-static-libstdc++',
-       '--no-last-commit-position',
-       '--out-path=' + gn_build_dir,
-   ]
diff --git a/debian/patches/gn/parallel.patch b/debian/patches/gn/parallel.patch
deleted file mode 100644
index 77e0110..0000000
--- a/debian/patches/gn/parallel.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-description: respect specified number of parallel jobs while bootstrapping gn
-author: Michael Gilbert <mgilbert@debian.org>
-
---- a/tools/gn/bootstrap/bootstrap.py
-+++ b/tools/gn/bootstrap/bootstrap.py
-@@ -47,6 +47,7 @@ def main(argv):
-       help='The directory in which to build gn, '
-       'relative to the src directory. (eg. out/Release)')
-   parser.add_option('-v', '--verbose', help='ignored')
-+  parser.add_option('-j', '--jobs', help='Number of jobs')
-   parser.add_option(
-       '--skip-generate-buildfiles',
-       action='store_true',
-@@ -121,8 +122,12 @@ def main(argv):
- 
-   shutil.copy2(
-       os.path.join(BOOTSTRAP_DIR, 'last_commit_position.h'), gn_build_dir)
--  subprocess.check_call(
--      [ninja_binary, '-C', gn_build_dir, '-w', 'dupbuild=err', 'gn'])
-+  if options.jobs:
-+    subprocess.check_call(
-+        [ninja_binary, '-C', gn_build_dir, '-w', 'dupbuild=err', '-j'+str(options.jobs), 'gn'])
-+  else:
-+    subprocess.check_call(
-+        [ninja_binary, '-C', gn_build_dir, '-w', 'dupbuild=err', 'gn'])
-   shutil.copy2(os.path.join(gn_build_dir, 'gn'), gn_path)
- 
-   if not options.skip_generate_buildfiles:
diff --git a/debian/patches/series b/debian/patches/series
index d2e492e..d1ad4d8 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -2,26 +2,20 @@ debianization/manpage.patch
 debianization/sandbox.patch
 debianization/optimization.patch
 debianization/master-preferences.patch
-debianization/explicit-python2.patch
-
-gn/libcxx.patch
-gn/parallel.patch
-gn/explicit-python2.patch
 
 fixes/gnu-as.patch
 fixes/closure.patch
 fixes/ps-print.patch
-fixes/inspector.patch
+fixes/clang-and-gcc11.patch
 fixes/sequence-point.patch
-fixes/missing-includes.patch
 fixes/widevine-revision.patch
 fixes/widevine-locations.patch
 fixes/connection-message.patch
-fixes/nullptr-dereference.patch
-fixes/multiple-destruction.patch
-fixes/chromeos_devicetype.patch
 fixes/nomerge.patch
 
+upstream/skia-freetype-api.patch
+upstream/quiche-include.patch
+
 disable/mojo.patch
 disable/tests.patch
 disable/unrar.patch
@@ -36,6 +30,7 @@ disable/catapult.patch
 disable/installer.patch
 disable/font-tests.patch
 disable/swiftshader.patch
+disable/swiftshader-2.patch
 disable/welcome-page.patch
 disable/google-api-warning.patch
 disable/third-party-cookies.patch
@@ -43,35 +38,30 @@ disable/driver-chrome-path.patch
 disable/widevine-cdm-cu.patch
 disable/angle-perftests.patch
 disable/web-ui-tests.patch
-disable/ozone-unittests.patch
 disable/devtools-unittests.patch
-disable/ios.patch
 disable/libaom-arm.patch
 
 warnings/restrict.patch
 warnings/multichar.patch
 warnings/deprecated.patch
-warnings/gcc-diagnostic.patch
-warnings/null-destination.patch
-warnings/stringop-overflow.patch
-warnings/int-in-bool-context.patch
 warnings/unused-but.patch
 
 system/icu.patch
+system/icu-shim.patch
 system/jpeg.patch
 system/node.patch
 system/nspr.patch
 system/zlib.patch
 system/event.patch
-system/ffmpeg.patch
 system/jsoncpp.patch
 system/harfbuzz.patch
 system/openjpeg.patch
 system/convertutf.patch
 system/clang-format.patch
-system/use-desktop-gl-as-default.patch
 system/opus.patch
 system/eu-strip.patch
 
 bullseye/icu-types.patch
-bullseye/ffmpeg.patch
+bullseye/clang11.patch
+bullseye/node-tsc.patch
+bullseye/blink-constexpr.patch
diff --git a/debian/patches/system/ffmpeg.patch b/debian/patches/system/ffmpeg.patch
deleted file mode 100644
index 12dc453..0000000
--- a/debian/patches/system/ffmpeg.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-description: ffmpeg decoders before version 4.0 require explicit initialization
-author: Michael Gilbert <mgilbert@debian.org>
-origin: chromium 66 authors
-
---- a/media/filters/ffmpeg_audio_decoder.cc
-+++ b/media/filters/ffmpeg_audio_decoder.cc
-@@ -95,6 +95,8 @@ void FFmpegAudioDecoder::Initialize(cons
-     return;
-   }
- 
-+  FFmpegGlue::InitializeFFmpeg();
-+
-   if (!ConfigureDecoder(config)) {
-     av_sample_format_ = 0;
-     std::move(bound_init_cb).Run(StatusCode::kDecoderFailedInitialization);
---- a/media/cdm/library_cdm/clear_key_cdm/clear_key_cdm.cc
-+++ b/media/cdm/library_cdm/clear_key_cdm/clear_key_cdm.cc
-@@ -149,6 +149,7 @@ void ConvertCdmKeysInfo(const media::Cdm
- void INITIALIZE_CDM_MODULE() {
-   DVLOG(1) << __func__;
-   media::InitializeMediaLibrary();
-+  av_register_all();
-   g_is_cdm_module_initialized = true;
- }
- 
---- a/media/filters/ffmpeg_glue.cc
-+++ b/media/filters/ffmpeg_glue.cc
-@@ -65,7 +65,13 @@ static void LogContainer(bool is_local_f
-     base::UmaHistogramSparse("Media.DetectedContainer.Local", container);
- }
- 
-+void FFmpegGlue::InitializeFFmpeg() {
-+  av_register_all();
-+}
-+
- FFmpegGlue::FFmpegGlue(FFmpegURLProtocol* protocol) {
-+  InitializeFFmpeg();
-+
-   // Initialize an AVIOContext using our custom read and seek operations.  Don't
-   // keep pointers to the buffer since FFmpeg may reallocate it on the fly.  It
-   // will be cleaned up
---- a/media/filters/ffmpeg_glue.h
-+++ b/media/filters/ffmpeg_glue.h
-@@ -59,6 +59,8 @@ class MEDIA_EXPORT FFmpegURLProtocol {
- 
- class MEDIA_EXPORT FFmpegGlue {
-  public:
-+  static void InitializeFFmpeg();
-+
-   // See file documentation for usage.  |protocol| must outlive FFmpegGlue.
-   explicit FFmpegGlue(FFmpegURLProtocol* protocol);
-   ~FFmpegGlue();
---- a/media/filters/ffmpeg_video_decoder.cc
-+++ b/media/filters/ffmpeg_video_decoder.cc
-@@ -23,6 +23,7 @@
- #include "media/base/video_util.h"
- #include "media/ffmpeg/ffmpeg_common.h"
- #include "media/ffmpeg/ffmpeg_decoding_loop.h"
-+#include "media/filters/ffmpeg_glue.h"
- 
- namespace media {
- 
-@@ -80,6 +81,7 @@ static void ReleaseVideoBufferImpl(void*
- 
- // static
- bool FFmpegVideoDecoder::IsCodecSupported(VideoCodec codec) {
-+  FFmpegGlue::InitializeFFmpeg();
-   return avcodec_find_decoder(VideoCodecToCodecID(codec)) != nullptr;
- }
- 
-@@ -218,6 +220,8 @@ void FFmpegVideoDecoder::Initialize(cons
-     return;
-   }
- 
-+  FFmpegGlue::InitializeFFmpeg();
-+
-   if (!ConfigureDecoder(config, low_delay)) {
-     std::move(bound_init_cb).Run(StatusCode::kDecoderFailedInitialization);
-     return;
diff --git a/debian/patches/system/harfbuzz.patch b/debian/patches/system/harfbuzz.patch
index 1ae0059..1ed5e05 100644
--- a/debian/patches/system/harfbuzz.patch
+++ b/debian/patches/system/harfbuzz.patch
@@ -3,9 +3,9 @@ author: Michael Gilbert <mgilbert@debian.org>
 
 --- a/third_party/skia/src/pdf/SkPDFSubsetFont.cpp
 +++ b/third_party/skia/src/pdf/SkPDFSubsetFont.cpp
-@@ -7,6 +7,9 @@
- #include "SkLoadICU.h"
- #endif
+@@ -3,6 +3,9 @@
+ 
+ #include "src/pdf/SkPDFSubsetFont.h"
  
 +#undef SK_PDF_USE_SFNTLY
 +#undef SK_PDF_USE_HARFBUZZ_SUBSET
@@ -35,16 +35,15 @@ author: Michael Gilbert <mgilbert@debian.org>
  #include <memory>
 --- a/components/paint_preview/common/serial_utils.cc
 +++ b/components/paint_preview/common/serial_utils.cc
-@@ -65,12 +65,8 @@ sk_sp<SkData> SerializeTypeface(SkTypefa
-   if (usage_it == context->usage->end())
-     return typeface->serialize(SkTypeface::SerializeBehavior::kDontIncludeData);
+@@ -85,12 +85,8 @@ sk_sp<SkData> SerializeTypeface(SkTypefa
+   }
+ #endif
  
 -  auto subset_data = SubsetFont(typeface, *usage_it->second);
--  // This will fail if the font cannot be subsetted properly. In such cases
--  // all typeface data should be added for portability.
--  if (!subset_data)
-+  if (true)
-     return typeface->serialize(SkTypeface::SerializeBehavior::kDoIncludeData);
+-  if (!subset_data) {
+     return typeface->serialize(
+         SkTypeface::SerializeBehavior::kIncludeDataIfLocal);
+-  }
 -  return subset_data;
  }
  
@@ -62,7 +61,7 @@ author: Michael Gilbert <mgilbert@debian.org>
    ]
 --- a/third_party/skia/BUILD.gn
 +++ b/third_party/skia/BUILD.gn
-@@ -989,7 +989,6 @@ optional("pdf") {
+@@ -1060,7 +1060,6 @@ optional("pdf") {
    sources_when_disabled = [ "src/pdf/SkDocument_PDF_None.cpp" ]
    if (skia_use_icu && skia_use_harfbuzz && skia_pdf_subset_harfbuzz) {
      deps += [ "//third_party/harfbuzz" ]
diff --git a/debian/patches/system/icu-shim.patch b/debian/patches/system/icu-shim.patch
new file mode 100644
index 0000000..06586f4
--- /dev/null
+++ b/debian/patches/system/icu-shim.patch
@@ -0,0 +1,19 @@
+description: allow building against system icu even when is_offical_build=true
+author: Andres Salomon <dilinger@debian.org>
+
+I noticed this when switching to an official build and trying to build against
+the system's libicu, but it may be necessary for other system libs as well.
+If we switch to using the bundled icu, we can see if it's possible to get rid
+of it.
+
+--- a/tools/generate_shim_headers/generate_shim_headers.py
++++ b/tools/generate_shim_headers/generate_shim_headers.py
+@@ -18,7 +18,7 @@ import sys
+ 
+ 
+ SHIM_TEMPLATE = """
+-#if defined(OFFICIAL_BUILD)
++#if defined(DONT_TELL_ME_WHAT_TO_DO_GOOGLE)
+ #error shim headers must not be used in official builds!
+ #endif
+ """
diff --git a/debian/patches/system/node.patch b/debian/patches/system/node.patch
index 58485ff..cf14497 100644
--- a/debian/patches/system/node.patch
+++ b/debian/patches/system/node.patch
@@ -11,10 +11,10 @@ author: Michael Gilbert <mgilbert@debian.org>
 +    "noEmitOnError": false,
      "pretty": true,
  
-     "incremental": true,
+     "forceConsistentCasingInFileNames": true,
 --- a/third_party/devtools-frontend/src/scripts/devtools_paths.py
 +++ b/third_party/devtools-frontend/src/scripts/devtools_paths.py
-@@ -37,13 +37,7 @@ def third_party_path():
+@@ -38,13 +38,7 @@ def third_party_path():
  
  # This points to the node binary downloaded as part of the checkout.
  def node_path():
@@ -31,7 +31,7 @@ author: Michael Gilbert <mgilbert@debian.org>
  def devtools_root_path():
 --- a/third_party/lottie/minify_lottie.py
 +++ b/third_party/lottie/minify_lottie.py
-@@ -12,16 +12,14 @@ _SRC_PATH = os.path.normpath(os.path.join(_HERE_PATH, '..', '..'))
+@@ -12,16 +12,14 @@ _SRC_PATH = os.path.normpath(os.path.joi
  
  sys.path.append(os.path.join(_SRC_PATH, 'third_party', 'node'))
  import node
@@ -70,7 +70,7 @@ author: Michael Gilbert <mgilbert@debian.org>
 +}
 --- /dev/null
 +++ b/third_party/node/node_modules.py
-@@ -0,0 +1,12 @@
+@@ -0,0 +1,27 @@
 +#!/usr/bin/python3
 +# Copyright 2016 The Chromium Authors. All rights reserved.
 +# Use of this source code is governed by a BSD-style license that can be
@@ -78,11 +78,26 @@ author: Michael Gilbert <mgilbert@debian.org>
 +
 +from os import path as os_path
 +
++NODE_MODULES = os_path.join(os_path.dirname(__file__), 'node_modules')
++
++def _path_in_node_modules(*args):
++  return os_path.join(NODE_MODULES, *args)
++
 +
 +# Typescript is not approved for general use in Chromium. Email chromium-dev
 +# if you want to use it.
 +def PathToTypescript():
 +  return '/usr/bin/tsc'
++
++def PathToRollup():
++  return '/usr/share/nodejs/rollup/dist/bin/rollup'
++
++def PathToPolymerCssBuild():
++  return _path_in_node_modules('polymer-css-build', 'bin', 'polymer-css-build')
++
++def PathToTerser():
++  return _path_in_node_modules('terser', 'bin', 'terser')
++
 --- /dev/null
 +++ b/third_party/node/node.py
 @@ -0,0 +1,36 @@
diff --git a/debian/patches/system/nspr.patch b/debian/patches/system/nspr.patch
index e233758..32342ec 100644
--- a/debian/patches/system/nspr.patch
+++ b/debian/patches/system/nspr.patch
@@ -14,9 +14,9 @@ author: Michael Gilbert <mgilbert@debian.org>
  #include "testing/gtest/include/gtest/gtest.h"
 --- a/base/time/time.cc
 +++ b/base/time/time.cc
-@@ -18,7 +18,7 @@
- #include <utility>
+@@ -20,7 +20,7 @@
  
+ #include "base/compiler_specific.h"
  #include "base/strings/stringprintf.h"
 -#include "base/third_party/nspr/prtime.h"
 +#include <nspr/prtime.h>
@@ -25,7 +25,7 @@ author: Michael Gilbert <mgilbert@debian.org>
  #include "third_party/abseil-cpp/absl/types/optional.h"
 --- a/base/BUILD.gn
 +++ b/base/BUILD.gn
-@@ -113,6 +113,12 @@ if (is_android) {
+@@ -148,6 +148,12 @@ config("perfetto_config") {
    }
  }
  
@@ -38,7 +38,7 @@ author: Michael Gilbert <mgilbert@debian.org>
  # Base and everything it depends on should be a static library rather than
  # a source set. Base is more of a "library" in the classic sense in that many
  # small parts of it are used in many different contexts. This combined with a
-@@ -712,8 +718,6 @@ component("base") {
+@@ -784,8 +790,6 @@ component("base") {
      "third_party/cityhash_v103/src/city_v103.cc",
      "third_party/cityhash_v103/src/city_v103.h",
      "third_party/icu/icu_utf.h",
diff --git a/debian/patches/system/openjpeg.patch b/debian/patches/system/openjpeg.patch
index d30bd33..f68e437 100644
--- a/debian/patches/system/openjpeg.patch
+++ b/debian/patches/system/openjpeg.patch
@@ -3,9 +3,9 @@ author: Michael Gilbert <mgilbert@debian.org>
 
 --- a/third_party/pdfium/BUILD.gn
 +++ b/third_party/pdfium/BUILD.gn
-@@ -17,7 +17,7 @@ group("freetype_common") {
- config("pdfium_common_config") {
+@@ -19,7 +19,7 @@ config("pdfium_common_config") {
    cflags = []
+   cflags_cc = []
    ldflags = []
 -  include_dirs = [ "." ]
 +  include_dirs = [ ".", "/usr/include/openjpeg-2.3", "/usr/include/openjpeg-2.4" ]
diff --git a/debian/patches/system/opus.patch b/debian/patches/system/opus.patch
index 0b3eb67..a764db5 100644
--- a/debian/patches/system/opus.patch
+++ b/debian/patches/system/opus.patch
@@ -1,9 +1,9 @@
 --- a/media/audio/audio_opus_encoder.h
 +++ b/media/audio/audio_opus_encoder.h
-@@ -14,7 +14,7 @@
+@@ -13,7 +13,7 @@
+ #include "media/base/audio_encoder.h"
  #include "media/base/audio_push_fifo.h"
  #include "media/base/audio_timestamp_helper.h"
- #include "third_party/abseil-cpp/absl/types/optional.h"
 -#include "third_party/opus/src/include/opus.h"
 +#include <opus/opus.h>
  
diff --git a/debian/patches/system/use-desktop-gl-as-default.patch b/debian/patches/system/use-desktop-gl-as-default.patch
deleted file mode 100644
index 5e45949..0000000
--- a/debian/patches/system/use-desktop-gl-as-default.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-Description: Use desktop gl implementation as default
-Author: Jan Luca Naumann <j.naumann@fu-berlin.de>
-Bug-Debian: https://bugs.debian.org/979135
-Forwarded: not-needed
-Last-Update: 2021-01-07
---- a/ui/gl/init/gl_factory.cc
-+++ b/ui/gl/init/gl_factory.cc
-@@ -66,6 +66,16 @@ GLImplementation GetRequestedGLImplement
-     }
-   }
- 
-+  // Use desktop implementation as default if allowed
-+  {
-+    auto iter = std::find(allowed_impls.begin(), allowed_impls.end(),
-+                          kGLImplementationDesktopGL);
-+    if (iter != allowed_impls.end()) {
-+      allowed_impls.erase(iter);
-+      allowed_impls.insert(allowed_impls.begin(), kGLImplementationDesktopGL);
-+    }
-+  }
-+
-   if (allowed_impls.empty()) {
-     LOG(ERROR) << "List of allowed GL implementations is empty.";
-     return GLImplementationParts(kGLImplementationNone);
diff --git a/debian/patches/upstream/quiche-include.patch b/debian/patches/upstream/quiche-include.patch
new file mode 100644
index 0000000..6411114
--- /dev/null
+++ b/debian/patches/upstream/quiche-include.patch
@@ -0,0 +1,19 @@
+description: fix undefined strerror_r compile error
+author: Andres Salomon <dilinger@debian.org>
+
+NOTE: this fix is now upstream in the quiche repo:
+https://quiche.googlesource.com/quiche/+/a72e0f686c33b4ba8e134a61a154ae0ffefa74aa%5E%21/epoll_server/simple_epoll_server.cc
+
+This patch can be dropped once chromium syncs their quiche repo and
+releases a new version.
+
+--- a/net/third_party/quiche/src/epoll_server/simple_epoll_server.cc
++++ b/net/third_party/quiche/src/epoll_server/simple_epoll_server.cc
+@@ -4,6 +4,7 @@
+ 
+ #include "epoll_server/simple_epoll_server.h"
+ 
++#include <string.h>
+ #include <errno.h>   // for errno and strerror_r
+ #include <stdlib.h>  // for abort
+ #include <unistd.h>  // For read, pipe, close and write.
diff --git a/debian/patches/upstream/skia-freetype-api.patch b/debian/patches/upstream/skia-freetype-api.patch
new file mode 100644
index 0000000..23f0728
--- /dev/null
+++ b/debian/patches/upstream/skia-freetype-api.patch
@@ -0,0 +1,76 @@
+description: build fix from (skia) upstream -
+	upstream used freetype 2.11.1 API stuff, realized everyone was
+	still on 2.11.0, and added this workaround to support older ft.
+        Unfortunately not in time for the chromium 96 release, though.
+	This comes from Skia upstream:
+	https://github.com/google/skia/commit/b65f0fa084c47e1ea688d61a65d0fc8dfdf9eb03
+	Drop this once either chromium updates skia or debian updates
+	ft to 2.11.1.
+
+
+Avoid using FreeType 2.11.0 COLRv1 headers
+
+Skia relies on the existence of FT_COLR_COMPOSITE_PLUS, FT_ClipBox, and
+FT_Get_Color_Glyph_ClipBox for COLRv1 support. However, these were not
+available in the released FreeType 2.11.0 headers since the
+specification later changed to require these. In addition, since 2.11.0,
+FT_PaintRadialGradient changed the types of two of its members and the
+Skia code must depend on this change.
+
+Unrelated, the FT_STATIC_CAST macro was added after these changes. So
+undefine TT_SUPPORT_COLRV1 if FreeType is less than 2.11.1 unless
+FT_STATIC_CAST is defined.
+
+Change-Id: Id827de5a6500fad900f9d9f2a11b1c69cfbd6aa8
+Reviewed-on: https://skia-review.googlesource.com/c/skia/+/475646
+Reviewed-by: Herb Derby <herb@google.com>
+Commit-Queue: Ben Wagner <bungeman@google.com>
+
+--- a/third_party/skia/src/ports/SkFontHost_FreeType_common.cpp
++++ b/third_party/skia/src/ports/SkFontHost_FreeType_common.cpp
+@@ -31,7 +31,20 @@
+ #include FT_SYNTHESIS_H
+ 
+ #ifdef TT_SUPPORT_COLRV1
+-#include "src/core/SkScopeExit.h"
++// FT_ClipBox and FT_Get_Color_Glyph_ClipBox introduced VER-2-11-0-18-g47cf8ebf4
++// FT_COLR_COMPOSITE_PLUS and renumbering introduced VER-2-11-0-21-ge40ae7569
++// FT_SIZEOF_LONG_LONG introduced VER-2-11-0-31-gffdac8d67
++// FT_PaintRadialGradient changed size and layout at VER-2-11-0-147-gd3d3ff76d
++// FT_STATIC_CAST introduced VER-2-11-0-172-g9079c5d91
++// So undefine TT_SUPPORT_COLRV1 before 2.11.1 but not if FT_STATIC_CAST is defined.
++#if (((FREETYPE_MAJOR)  < 2) || \
++     ((FREETYPE_MAJOR) == 2 && (FREETYPE_MINOR)  < 11) || \
++     ((FREETYPE_MAJOR) == 2 && (FREETYPE_MINOR) == 11 && (FREETYPE_PATCH) < 1)) && \
++    !defined(FT_STATIC_CAST)
++#    undef TT_SUPPORT_COLRV1
++#else
++#    include "src/core/SkScopeExit.h"
++#endif
+ #endif
+ 
+ // FT_LOAD_COLOR and the corresponding FT_Pixel_Mode::FT_PIXEL_MODE_BGRA
+--- a/third_party/skia/src/ports/SkFontHost_FreeType.cpp
++++ b/third_party/skia/src/ports/SkFontHost_FreeType.cpp
+@@ -67,6 +67,21 @@
+ #  include <dlfcn.h>
+ #endif
+ 
++#ifdef TT_SUPPORT_COLRV1
++// FT_ClipBox and FT_Get_Color_Glyph_ClipBox introduced VER-2-11-0-18-g47cf8ebf4
++// FT_COLR_COMPOSITE_PLUS and renumbering introduced VER-2-11-0-21-ge40ae7569
++// FT_SIZEOF_LONG_LONG introduced VER-2-11-0-31-gffdac8d67
++// FT_PaintRadialGradient changed size and layout at VER-2-11-0-147-gd3d3ff76d
++// FT_STATIC_CAST introduced VER-2-11-0-172-g9079c5d91
++// So undefine TT_SUPPORT_COLRV1 before 2.11.1 but not if FT_STATIC_CAST is defined.
++#if (((FREETYPE_MAJOR)  < 2) || \
++     ((FREETYPE_MAJOR) == 2 && (FREETYPE_MINOR)  < 11) || \
++     ((FREETYPE_MAJOR) == 2 && (FREETYPE_MINOR) == 11 && (FREETYPE_PATCH) < 1)) && \
++    !defined(FT_STATIC_CAST)
++#    undef TT_SUPPORT_COLRV1
++#endif
++#endif
++
+ //#define ENABLE_GLYPH_SPEW     // for tracing calls
+ //#define DUMP_STRIKE_CREATION
+ //#define SK_FONTHOST_FREETYPE_RUNTIME_VERSION
diff --git a/debian/patches/warnings/gcc-diagnostic.patch b/debian/patches/warnings/gcc-diagnostic.patch
deleted file mode 100644
index e8e32ac..0000000
--- a/debian/patches/warnings/gcc-diagnostic.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-description: avoid clang warnings about gcc specific compiler flag
-author: Michael Gilbert <mgilbert@debian.org>
-
---- a/third_party/blink/renderer/platform/heap/impl/finalizer_traits.h
-+++ b/third_party/blink/renderer/platform/heap/impl/finalizer_traits.h
-@@ -43,10 +43,7 @@ struct FinalizerTraitImpl<T, true> {
- // an object's base class has a virtual destructor. In case there is no virtual
- // destructor present, the object is always finalized through its leaf type. In
- // other words: there is no finalization through a base pointer.
--#pragma GCC diagnostic push
--#pragma GCC diagnostic ignored "-Wdelete-non-virtual-dtor"
-       static_cast<T*>(obj)->~T();
--#pragma GCC diagnostic pop
-     }
-   };
-   using FinalizeImpl =
diff --git a/debian/patches/warnings/int-in-bool-context.patch b/debian/patches/warnings/int-in-bool-context.patch
deleted file mode 100644
index 65c030d..0000000
--- a/debian/patches/warnings/int-in-bool-context.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-description: fix int-in-bool-context gcc warnings
-author: Michael Gilbert <mgilbert@debian.org>
-
---- a/third_party/webrtc/modules/video_processing/video_denoiser.cc
-+++ b/third_party/webrtc/modules/video_processing/video_denoiser.cc
-@@ -180,7 +180,7 @@ void VideoDenoiser::CopySrcOnMOB(const uint8_t* y_src,
-       // artifacts.
-       if (mb_filter_decision_[mb_index] != FILTER_BLOCK ||
-           IsTrailingBlock(moving_edge_, mb_row, mb_col) ||
--          (x_density_[mb_col] * y_density_[mb_row] &&
-+          (x_density_[mb_col] * y_density_[mb_row] != 0 &&
-            moving_object_[mb_row * mb_cols_ + mb_col])) {
-         // Copy y source.
-         libyuv::CopyPlane(mb_src, stride_src, mb_dst, stride_dst, 16, 16);
---- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
-+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
-@@ -16511,7 +16511,8 @@ bool GLES2DecoderImpl::GetUniformSetup(G
-   }
-   uint32_t checked_size = 0;
-   if (!SizedResult<T>::ComputeSize(num_elements).AssignIfValid(&checked_size)) {
--    return error::kOutOfBounds;
-+    *error = error::kOutOfBounds;
-+    return false;
-   }
-   result = GetSharedMemoryAs<SizedResult<T>*>(shm_id, shm_offset, checked_size);
-   if (!result) {
---- a/content/browser/renderer_host/render_widget_host_view_base.cc
-+++ b/content/browser/renderer_host/render_widget_host_view_base.cc
-@@ -294,15 +294,16 @@ void RenderWidgetHostViewBase::SetBackgr
-   if (default_background_color_ == color)
-     return;
- 
--  bool opaque = default_background_color_
--                    ? SkColorGetA(*default_background_color_)
--                    : SK_AlphaOPAQUE;
-+  bool opaque_background = true;
-+  if (default_background_color_)
-+    opaque_background = (SkColorGetA(*default_background_color_) == SK_AlphaOPAQUE);
-   default_background_color_ = color;
-   UpdateBackgroundColor();
--  if (opaque != (SkColorGetA(color) == SK_AlphaOPAQUE)) {
-+
-+  bool opaque_foreground = (SkColorGetA(color) == SK_AlphaOPAQUE);
-+  if (opaque_background != opaque_foreground) {
-     if (host()->owner_delegate()) {
--      host()->owner_delegate()->SetBackgroundOpaque(SkColorGetA(color) ==
--                                                    SK_AlphaOPAQUE);
-+      host()->owner_delegate()->SetBackgroundOpaque(opaque_foreground);
-     }
-   }
- }
---- a/third_party/blink/renderer/core/html/parser/html_tree_builder.cc
-+++ b/third_party/blink/renderer/core/html/parser/html_tree_builder.cc
-@@ -1054,7 +1054,7 @@ void HTMLTreeBuilder::ProcessStartTagFor
-   }
-   if (token->GetName() == html_names::kColTag) {
-     ProcessFakeStartTag(html_names::kColgroupTag);
--    DCHECK(kInColumnGroupMode);
-+    DCHECK_EQ(GetInsertionMode(), kInColumnGroupMode);
-     ProcessStartTag(token);
-     return;
-   }
---- a/extensions/browser/api/socket/tcp_socket.cc
-+++ b/extensions/browser/api/socket/tcp_socket.cc
-@@ -213,7 +213,7 @@ void TCPSocket::SetKeepAlive(bool enable
-                              int delay,
-                              SetKeepAliveCallback callback) {
-   if (!client_socket_) {
--    std::move(callback).Run(net::ERR_FAILED);
-+    std::move(callback).Run(false);
-     return;
-   }
-   client_socket_->SetKeepAlive(enable, delay, std::move(callback));
-@@ -221,7 +221,7 @@ void TCPSocket::SetKeepAlive(bool enable
- 
- void TCPSocket::SetNoDelay(bool no_delay, SetNoDelayCallback callback) {
-   if (!client_socket_) {
--    std::move(callback).Run(net::ERR_FAILED);
-+    std::move(callback).Run(false);
-     return;
-   }
-   client_socket_->SetNoDelay(no_delay, std::move(callback));
---- a/chrome/renderer/searchbox/searchbox.cc
-+++ b/chrome/renderer/searchbox/searchbox.cc
-@@ -290,11 +290,11 @@ void SearchBox::Paste(const base::string
- }
- 
- void SearchBox::StartCapturingKeyStrokes() {
--  embedded_search_service_->FocusOmnibox(page_seq_no_, OMNIBOX_FOCUS_INVISIBLE);
-+  embedded_search_service_->FocusOmnibox(page_seq_no_, true);
- }
- 
- void SearchBox::StopCapturingKeyStrokes() {
--  embedded_search_service_->FocusOmnibox(page_seq_no_, OMNIBOX_FOCUS_NONE);
-+  embedded_search_service_->FocusOmnibox(page_seq_no_, false);
- }
- 
- void SearchBox::UndoAllMostVisitedDeletions() {
diff --git a/debian/patches/warnings/null-destination.patch b/debian/patches/warnings/null-destination.patch
deleted file mode 100644
index e929ec5..0000000
--- a/debian/patches/warnings/null-destination.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-description: use stack_buf before possible branching (see gcc bug #83139)
-author: Michael Gilbert <mgilbert@debian.org>
-
---- a/base/strings/stringprintf.cc
-+++ b/base/strings/stringprintf.cc
-@@ -67,14 +67,14 @@ static void StringAppendVT(std::basic_st
-   int result = vsnprintfT(stack_buf, base::size(stack_buf), format, ap_copy);
-   va_end(ap_copy);
- 
--  if (result >= 0 && result < static_cast<int>(base::size(stack_buf))) {
-+  int mem_length = static_cast<int>(base::size(stack_buf));
-+  if (result >= 0 && result < mem_length) {
-     // It fit.
-     dst->append(stack_buf, result);
-     return;
-   }
- 
-   // Repeatedly increase buffer size until it fits.
--  int mem_length = base::size(stack_buf);
-   while (true) {
-     if (result < 0) {
- #if defined(OS_WIN)
diff --git a/debian/patches/warnings/stringop-overflow.patch b/debian/patches/warnings/stringop-overflow.patch
deleted file mode 100644
index af1fa4f..0000000
--- a/debian/patches/warnings/stringop-overflow.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-description: https://gcc.gnu.org/bugzilla//show_bug.cgi?id=85783
-author: Michael Gilbert <mgilbert@debian.org>
-
---- a/third_party/skia/include/private/SkMalloc.h
-+++ b/third_party/skia/include/private/SkMalloc.h
-@@ -116,7 +116,7 @@ static inline void sk_bzero(void* buffer
- static inline void* sk_careful_memcpy(void* dst, const void* src, size_t len) {
-     // When we pass >0 len we had better already be passing valid pointers.
-     // So we just need to skip calling memcpy when len == 0.
--    if (len) {
-+    if (len && len <= PTRDIFF_MAX) {
-         memcpy(dst,src,len);
-     }
-     return dst;
diff --git a/debian/patches/warnings/unused-but.patch b/debian/patches/warnings/unused-but.patch
index e185ec2..3ee6e99 100644
--- a/debian/patches/warnings/unused-but.patch
+++ b/debian/patches/warnings/unused-but.patch
@@ -1,13 +1,11 @@
 --- a/build/config/compiler/BUILD.gn
 +++ b/build/config/compiler/BUILD.gn
-@@ -1620,10 +1620,6 @@ config("default_warnings") {
+@@ -1687,8 +1687,6 @@ config("no_chromium_code") {
+     ]
+     if (!is_nacl && (current_toolchain == host_toolchain || !use_xcode_clang)) {
+       cflags += [
+-        # Disabled for similar reasons as -Wunused-variable.
+-        "-Wno-unused-but-set-variable",
  
-           # TODO(https://crbug.com/1050281): Clean up, enable.
-           "-Wno-non-c-typedef-for-linkage",
--
--          # TODO(https://crbug.com/1203071): Clean up and enable.
--          "-Wno-unused-but-set-parameter",
--          "-Wno-unused-but-set-variable",
-         ]
- 
-         cflags_c += [
+         # TODO(https://crbug.com/1202159): Clean up and enable.
+         "-Wno-misleading-indentation",
diff --git a/debian/rules b/debian/rules
index 4c1cc2d..16e826c 100755
--- a/debian/rules
+++ b/debian/rules
@@ -55,13 +55,12 @@ ifeq (arm64,$(DEB_HOST_ARCH))
 defines+=host_cpu=\"arm64\" use_vaapi=true
 endif
 ifeq (armhf,$(DEB_HOST_ARCH))
-defines+=host_cpu=\"arm\" use_vaapi=false arm_use_neon=false symbol_level=0
+defines+=host_cpu=\"arm\" use_vaapi=false arm_use_neon=false
 endif
 
 # disabled features
 defines+=is_debug=false \
          use_goma=false \
-         use_ozone=false \
          use_sysroot=false \
          use_allocator=\"none\" \
          use_libjpeg_turbo=true \
@@ -80,9 +79,14 @@ defines+=is_debug=false \
          angle_has_histograms=false \
          enable_js_type_check=false \
          treat_warnings_as_errors=false \
+         is_cfi=false \
+         use_thin_lto=false \
+         chrome_pgo_phase=0 \
 
 # enabled features
 defines+=use_gio=true \
+         is_official_build=true \
+         symbol_level=0 \
          use_pulseaudio=true \
          link_pulseaudio=true \
          enable_widevine=true \
@@ -108,17 +112,14 @@ endif
 %:
 	dh $@
 
-out/Release/gn:
-	./tools/gn/bootstrap/bootstrap.py --skip-generate-buildfiles -j$(njobs)
-
 override_dh_auto_configure:
 	# output compiler information
 	$(CXX) --version
 	# prefer unbundled (system) libraries
 	./debian/scripts/unbundle
 
-override_dh_auto_build-arch: out/Release/gn
-	./out/Release/gn gen out/Release --args="$(defines)"
+override_dh_auto_build-arch:
+	gn gen out/Release --args="$(defines)"
 	ninja -j$(njobs) -C out/Release chrome chrome_sandbox content_shell chromedriver
 	cp out/Release/chrome out/Release/chromium
 	cp out/Release/content_shell out/Release/chromium-shell
@@ -128,8 +129,8 @@ override_dh_auto_build-arch: out/Release/gn
 	sed -e s/@@PACKAGE@@/chromium/g -e s/@@MENUNAME@@/chromium/g \
 	    < chrome/app/resources/manpage.1.in > out/Release/chromium.1
 
-override_dh_auto_build-indep: out/Release/gn
-	./out/Release/gn gen out/Release --args="$(defines)"
+override_dh_auto_build-indep:
+	gn gen out/Release --args="$(defines)"
 	ninja -j$(njobs) -C out/Release packed_resources
 	rm -f out/Release/locales/en-US.pak
 
diff --git a/debian/scripts/chromium b/debian/scripts/chromium
index 7b0286d..c52ce6b 100644
--- a/debian/scripts/chromium
+++ b/debian/scripts/chromium
@@ -58,6 +58,10 @@ export CHROME_DESKTOP="chromium.desktop"
 DIST=`cat /etc/debian_version`
 export CHROME_VERSION_EXTRA="built on Debian $BUILD_DIST, running on Debian $DIST"
 
+if [ -n "$WAYLAND_DISPLAY" ]; then
+  CHROMIUM_FLAGS="$CHROMIUM_FLAGS --ozone-platform=wayland"
+fi
+
 want_debug=0
 want_temp_profile=0
 while [ $# -gt 0 ]; do
diff --git a/debian/scripts/unbundle b/debian/scripts/unbundle
index 6f7b049..4bc5118 100755
--- a/debian/scripts/unbundle
+++ b/debian/scripts/unbundle
@@ -8,7 +8,7 @@ sys.path.append("build/linux/unbundle")
 
 import replace_gn_files
 
-keepers = ('libvpx')
+keepers = ('ffmpeg', 'libvpx')
 
 for lib,rule in replace_gn_files.REPLACEMENTS.items():
     if lib not in keepers:
