public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/chromium] epel9-next: - update to 122.0.6261.57
@ 2026-08-07 16:06 Than Ngo
  0 siblings, 0 replies; only message in thread
From: Than Ngo @ 2026-08-07 16:06 UTC (permalink / raw)
  To: git-commits

         A new commit has been pushed.

         Repo   : rpms/chromium
         Branch : epel9-next
         Commit : 09195bfaaa32c66e8da67538c626e07daa536fa6
         Author : Than Ngo <than@redhat.com>
         Date   : 2024-02-21T12:43:02+01:00
         Stats  : +1347/-1868 in 22 file(s)
         URL    : https://src.fedoraproject.org/rpms/chromium/c/09195bfaaa32c66e8da67538c626e07daa536fa6?branch=epel9-next

         Log:
         - update to 122.0.6261.57
* High CVE-2024-1669: Out of bounds memory access in Blink
* High CVE-2024-1670: Use after free in Mojo
* Medium CVE-2024-1671: Inappropriate implementation in Site Isolation
* Medium CVE-2024-1672: Inappropriate implementation in Content Security Policy
* Medium CVE-2024-1673: Use after free in Accessibility
* Medium CVE-2024-1674: Inappropriate implementation in Navigation
* Medium CVE-2024-1675: Insufficient policy enforcement in Download
* Low CVE-2024-1676: Inappropriate implementation in Navigation.

---
diff --git a/chromium-105.0.5195.52-python-six-1.16.0.patch b/chromium-105.0.5195.52-python-six-1.16.0.patch
deleted file mode 100644
index 497c2df..0000000
--- a/chromium-105.0.5195.52-python-six-1.16.0.patch
+++ /dev/null
@@ -1,134 +0,0 @@
-diff -up chromium-103.0.5060.53/third_party/catapult/third_party/six/six.py.116 chromium-103.0.5060.53/third_party/catapult/third_party/six/six.py
---- chromium-103.0.5060.53/third_party/catapult/third_party/six/six.py.116	2022-07-05 13:31:29.434673638 +0000
-+++ chromium-103.0.5060.53/third_party/catapult/third_party/six/six.py	2022-07-05 21:52:01.884578748 +0000
-@@ -29,7 +29,7 @@ import sys
- import types
- 
- __author__ = "Benjamin Peterson <benjamin@python.org>"
--__version__ = "1.15.0"
-+__version__ = "1.16.0"
- 
- 
- # Useful for very coarse version differentiation.
-@@ -71,6 +71,11 @@ else:
-             MAXSIZE = int((1 << 63) - 1)
-         del X
- 
-+if PY34:
-+    from importlib.util import spec_from_loader
-+else:
-+    spec_from_loader = None
-+
- 
- def _add_doc(func, doc):
-     """Add documentation to a function."""
-@@ -186,6 +191,11 @@ class _SixMetaPathImporter(object):
-             return self
-         return None
- 
-+    def find_spec(self, fullname, path, target=None):
-+        if fullname in self.known_modules:
-+            return spec_from_loader(fullname, self)
-+        return None
-+
-     def __get_module(self, fullname):
-         try:
-             return self.known_modules[fullname]
-@@ -223,6 +233,12 @@ class _SixMetaPathImporter(object):
-         return None
-     get_source = get_code  # same as get_code
- 
-+    def create_module(self, spec):
-+        return self.load_module(spec.name)
-+
-+    def exec_module(self, module):
-+        pass
-+
- _importer = _SixMetaPathImporter(__name__)
- 
- 
-diff -up chromium-103.0.5060.53/third_party/six/src/six.py.116 chromium-103.0.5060.53/third_party/six/src/six.py
---- chromium-103.0.5060.53/third_party/six/src/six.py.116	2022-07-05 13:32:28.916687658 +0000
-+++ chromium-103.0.5060.53/third_party/six/src/six.py	2022-07-05 21:59:42.561240407 +0000
-@@ -29,7 +29,7 @@ import sys
- import types
- 
- __author__ = "Benjamin Peterson <benjamin@python.org>"
--__version__ = "1.14.0"
-+__version__ = "1.16.0"
- 
- 
- # Useful for very coarse version differentiation.
-@@ -71,6 +71,11 @@ else:
-             MAXSIZE = int((1 << 63) - 1)
-         del X
- 
-+if PY34:
-+    from importlib.util import spec_from_loader
-+else:
-+    spec_from_loader = None
-+
- 
- def _add_doc(func, doc):
-     """Add documentation to a function."""
-@@ -186,6 +191,11 @@ class _SixMetaPathImporter(object):
-             return self
-         return None
- 
-+    def find_spec(self, fullname, path, target=None):
-+        if fullname in self.known_modules:
-+            return spec_from_loader(fullname, self)
-+        return None
-+
-     def __get_module(self, fullname):
-         try:
-             return self.known_modules[fullname]
-@@ -223,6 +233,12 @@ class _SixMetaPathImporter(object):
-         return None
-     get_source = get_code  # same as get_code
- 
-+    def create_module(self, spec):
-+        return self.load_module(spec.name)
-+
-+    def exec_module(self, module):
-+        pass
-+
- _importer = _SixMetaPathImporter(__name__)
- 
- 
-@@ -890,12 +906,11 @@ def ensure_binary(s, encoding='utf-8', e
-       - `str` -> encoded to `bytes`
-       - `bytes` -> `bytes`
-     """
-+    if isinstance(s, binary_type):
-+        return s
-     if isinstance(s, text_type):
-         return s.encode(encoding, errors)
--    elif isinstance(s, binary_type):
--        return s
--    else:
--        raise TypeError("not expecting type '%s'" % type(s))
-+    raise TypeError("not expecting type '%s'" % type(s))
- 
- 
- def ensure_str(s, encoding='utf-8', errors='strict'):
-@@ -909,12 +924,15 @@ def ensure_str(s, encoding='utf-8', erro
-       - `str` -> `str`
-       - `bytes` -> decoded to `str`
-     """
--    if not isinstance(s, (text_type, binary_type)):
--        raise TypeError("not expecting type '%s'" % type(s))
-+    # Optimization: Fast return for the common case.
-+    if type(s) is str:
-+        return s
-     if PY2 and isinstance(s, text_type):
--        s = s.encode(encoding, errors)
-+        return s.encode(encoding, errors)
-     elif PY3 and isinstance(s, binary_type):
--        s = s.decode(encoding, errors)
-+        return s.decode(encoding, errors)
-+    elif not isinstance(s, (text_type, binary_type)):
-+        raise TypeError("not expecting type '%s'" % type(s))
-     return s
- 
- 

diff --git a/chromium-119-norar.patch b/chromium-119-norar.patch
deleted file mode 100644
index 51b7155..0000000
--- a/chromium-119-norar.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-diff -up chromium-119.0.6045.105/chrome/browser/safe_browsing/download_protection/file_analyzer.cc.nounrar chromium-119.0.6045.105/chrome/browser/safe_browsing/download_protection/file_analyzer.cc
---- chromium-119.0.6045.105/chrome/browser/safe_browsing/download_protection/file_analyzer.cc.nounrar	2023-11-01 19:10:13.000000000 +0100
-+++ chromium-119.0.6045.105/chrome/browser/safe_browsing/download_protection/file_analyzer.cc	2023-11-06 17:16:55.630255973 +0100
-@@ -77,8 +77,6 @@ void FileAnalyzer::Start(const base::Fil
- 
-   if (inspection_type == DownloadFileType::ZIP) {
-     StartExtractZipFeatures();
--  } else if (inspection_type == DownloadFileType::RAR) {
--    StartExtractRarFeatures();
- #if BUILDFLAG(IS_MAC)
-   } else if (inspection_type == DownloadFileType::DMG) {
-     StartExtractDmgFeatures();
-diff -up chromium-119.0.6045.105/chrome/common/safe_browsing/BUILD.gn.nounrar chromium-119.0.6045.105/chrome/common/safe_browsing/BUILD.gn
---- chromium-119.0.6045.105/chrome/common/safe_browsing/BUILD.gn.nounrar	2023-11-01 19:10:16.000000000 +0100
-+++ chromium-119.0.6045.105/chrome/common/safe_browsing/BUILD.gn	2023-11-06 17:16:55.630255973 +0100
-@@ -143,7 +143,6 @@ source_set("safe_browsing") {
-       "//components/safe_browsing/content/common:file_type_policies",
-       "//components/safe_browsing/core/common",
-       "//third_party/lzma_sdk/google:seven_zip_reader",
--      "//third_party/unrar:unrar",
-     ]
- 
-     public_deps = [
-diff -up chromium-119.0.6045.105/chrome/services/file_util/safe_archive_analyzer.cc.nounrar chromium-119.0.6045.105/chrome/services/file_util/safe_archive_analyzer.cc
---- chromium-119.0.6045.105/chrome/services/file_util/safe_archive_analyzer.cc.nounrar	2023-11-06 18:07:30.549291823 +0100
-+++ chromium-119.0.6045.105/chrome/services/file_util/safe_archive_analyzer.cc	2023-11-06 18:08:00.510076945 +0100
-@@ -74,6 +74,7 @@ void SafeArchiveAnalyzer::AnalyzeRarFile
-     const absl::optional<std::string>& password,
-     mojo::PendingRemote<chrome::mojom::TemporaryFileGetter> temp_file_getter,
-     AnalyzeRarFileCallback callback) {
-+#if 0
-   DCHECK(rar_file.IsValid());
-   temp_file_getter_.Bind(std::move(temp_file_getter));
-   callback_ = std::move(callback);
-@@ -90,6 +91,9 @@ void SafeArchiveAnalyzer::AnalyzeRarFile
-                         /*password=*/password,
-                         std::move(analysis_finished_callback),
-                         std::move(temp_file_getter_callback), &results_);
-+#else
-+  NOTREACHED();
-+#endif
- }
- 
- void SafeArchiveAnalyzer::AnalyzeSevenZipFile(
-diff -up chromium-119.0.6045.105/chrome/services/file_util/safe_archive_analyzer.h.nounrar chromium-119.0.6045.105/chrome/services/file_util/safe_archive_analyzer.h
---- chromium-119.0.6045.105/chrome/services/file_util/safe_archive_analyzer.h.nounrar	2023-11-01 19:10:16.000000000 +0100
-+++ chromium-119.0.6045.105/chrome/services/file_util/safe_archive_analyzer.h	2023-11-06 17:16:55.630255973 +0100
-@@ -7,7 +7,6 @@
- 
- #include "chrome/common/safe_browsing/archive_analyzer_results.h"
- #include "chrome/services/file_util/public/mojom/safe_archive_analyzer.mojom.h"
--#include "chrome/utility/safe_browsing/rar_analyzer.h"
- #include "chrome/utility/safe_browsing/seven_zip_analyzer.h"
- #include "chrome/utility/safe_browsing/zip_analyzer.h"
- #include "mojo/public/cpp/bindings/remote.h"
-@@ -66,7 +65,6 @@ class SafeArchiveAnalyzer : public chrom
-   void Timeout();
- 
-   safe_browsing::ZipAnalyzer zip_analyzer_;
--  safe_browsing::RarAnalyzer rar_analyzer_;
-   safe_browsing::SevenZipAnalyzer seven_zip_analyzer_;
- #if BUILDFLAG(IS_MAC)
-   safe_browsing::dmg::DMGAnalyzer dmg_analyzer_;

diff --git a/chromium-120-clang16-disable-auto-upgrade-debug-info.patch b/chromium-120-clang16-disable-auto-upgrade-debug-info.patch
deleted file mode 100644
index ea2f483..0000000
--- a/chromium-120-clang16-disable-auto-upgrade-debug-info.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up chromium-120.0.6099.62/build/config/compiler/BUILD.gn.than chromium-120.0.6099.62/build/config/compiler/BUILD.gn
---- chromium-120.0.6099.62/build/config/compiler/BUILD.gn.than	2023-12-06 19:28:25.998327318 +0100
-+++ chromium-120.0.6099.62/build/config/compiler/BUILD.gn	2023-12-06 19:28:34.190528906 +0100
-@@ -787,7 +787,7 @@ config("compiler") {
-         # toolchain has this flag.
-         # We only use one version of LLVM within a build so there's no need to
-         # upgrade debug info, which can be expensive since it runs the verifier.
--        ldflags += [ "-Wl,-mllvm,-disable-auto-upgrade-debug-info" ]
-+        ldflags += [ "" ]
-       }
-     }
- 

diff --git a/chromium-120-disable-FFmpegAllowLists.patch b/chromium-120-disable-FFmpegAllowLists.patch
deleted file mode 100644
index 98216dd..0000000
--- a/chromium-120-disable-FFmpegAllowLists.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up chromium-120.0.6099.56/media/base/media_switches.cc.me chromium-120.0.6099.56/media/base/media_switches.cc
---- chromium-120.0.6099.56/media/base/media_switches.cc.me	2023-12-02 11:43:21.990775897 +0100
-+++ chromium-120.0.6099.56/media/base/media_switches.cc	2023-12-02 11:45:23.248006377 +0100
-@@ -1636,7 +1636,7 @@ BASE_FEATURE(kUseSharedImagesForPepperVi
- // Enables FFmpeg allow lists for supported codecs / containers.
- BASE_FEATURE(kFFmpegAllowLists,
-              "FFmpegAllowLists",
--             base::FEATURE_ENABLED_BY_DEFAULT);
-+             base::FEATURE_DISABLED_BY_DEFAULT);
- 
- #if BUILDFLAG(ENABLE_FFMPEG_VIDEO_DECODERS)
- // Allows decoding of theora / vp3 content.

diff --git a/chromium-121-arm64-memory_tagging.patch b/chromium-121-arm64-memory_tagging.patch
deleted file mode 100644
index cf807dd..0000000
--- a/chromium-121-arm64-memory_tagging.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -up chromium-121.0.6167.57/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h.me chromium-121.0.6167.57/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h
---- chromium-121.0.6167.57/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h.me	2024-01-16 14:20:52.401890657 +0100
-+++ chromium-121.0.6167.57/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_config.h	2024-01-16 15:08:04.070156474 +0100
-@@ -162,7 +162,8 @@ static_assert(sizeof(void*) != 8, "");
- 
- #if defined(ARCH_CPU_ARM64) && defined(__clang__) && \
-     !defined(ADDRESS_SANITIZER) &&                   \
--    (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID))
-+    (BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID)) && \
-+    __GLIBC_PREREQ(2, 29)
- #define PA_CONFIG_HAS_MEMORY_TAGGING() 1
- #else
- #define PA_CONFIG_HAS_MEMORY_TAGGING() 0

diff --git a/chromium-121-constexpr.patch b/chromium-121-constexpr.patch
deleted file mode 100644
index a0b7166..0000000
--- a/chromium-121-constexpr.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up chromium-121.0.6167.57/components/performance_manager/resource_attribution/query_params.h.me chromium-121.0.6167.57/components/performance_manager/resource_attribution/query_params.h
---- chromium-121.0.6167.57/components/performance_manager/resource_attribution/query_params.h.me	2024-01-18 17:00:24.791582422 +0100
-+++ chromium-121.0.6167.57/components/performance_manager/resource_attribution/query_params.h	2024-01-18 17:22:21.521682845 +0100
-@@ -27,7 +27,7 @@ struct QueryParams {
-   QueryParams(const QueryParams& other);
-   QueryParams& operator=(const QueryParams& other);
- 
--  friend constexpr bool operator==(const QueryParams&,
-+  friend bool operator==(const QueryParams&,
-                                    const QueryParams&) = default;
- 
-   // Individual resource contexts to measure.

diff --git a/chromium-121-el8-support-64kpage.patch b/chromium-121-el8-support-64kpage.patch
deleted file mode 100644
index 556fc65..0000000
--- a/chromium-121-el8-support-64kpage.patch
+++ /dev/null
@@ -1,126 +0,0 @@
-diff -up chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_bucket.h.el8-support-64kpage.patch chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_bucket.h
---- chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_bucket.h.el8-support-64kpage.patch	2024-01-30 21:24:10.000000000 +0100
-+++ chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_bucket.h	2024-02-01 17:20:37.178877448 +0100
-@@ -146,7 +146,13 @@ struct PartitionBucket {
-   // Returns a slot number starting from the beginning of the slot span.
-   PA_ALWAYS_INLINE size_t GetSlotNumber(size_t offset_in_slot_span) const {
-     // See the static assertion for `kReciprocalShift` above.
--    PA_DCHECK(offset_in_slot_span <= kMaxBucketed);
-+    // TODO(casey.smalley@arm.com): triggers on Aarch64/Linux
-+    // systems with 64k system pages. Constants need to be
-+    // adjusted to prevent different parts of the allocator
-+    // from overlapping. For now this will allow 64k pages
-+    // to function on Aarch64/Linux systems, albeit not
-+    // very efficiently.
-+    // PA_DCHECK(offset_in_slot_span <= kMaxBucketed);
-     PA_DCHECK(slot_size <= kMaxBucketed);
- 
-     const size_t offset_in_slot =
-diff -up chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_page_constants.h.el8-support-64kpage.patch chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_page_constants.h
---- chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_page_constants.h.el8-support-64kpage.patch	2024-02-01 17:20:37.178877448 +0100
-+++ chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_page_constants.h	2024-02-01 17:31:08.500268457 +0100
-@@ -17,10 +17,8 @@ namespace partition_alloc::internal {
- // PartitionPageSize() is 4 times the OS page size.
- static constexpr size_t kMaxSlotsPerSlotSpan = 4 * (1 << 14) / kSmallestBucket;
- #elif BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64)
--// System page size can be 4, 16, or 64 kiB on Linux on arm64. 64 kiB is
--// currently (kMaxSlotsPerSlotSpanBits == 13) not supported by the code,
--// so we use the 16 kiB maximum (64 kiB will crash).
--static constexpr size_t kMaxSlotsPerSlotSpan = 4 * (1 << 14) / kSmallestBucket;
-+// System page size can be 4, 16, or 64 kiB on Linux on AArch64.
-+static constexpr size_t kMaxSlotsPerSlotSpan = 4 * (1 << 16) / kSmallestBucket;
- #else
- // A slot span can "span" multiple PartitionPages, but then its slot size is
- // larger, so it doesn't have as many slots.
-diff -up chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_page.h.el8-support-64kpage.patch chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_page.h
---- chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_page.h.el8-support-64kpage.patch	2024-01-30 21:24:10.000000000 +0100
-+++ chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_page.h	2024-02-01 17:20:37.178877448 +0100
-@@ -95,26 +95,25 @@ struct SlotSpanMetadata {
- 
-   // CHECK()ed in AllocNewSlotSpan().
-   // The maximum number of bits needed to cover all currently supported OSes.
--  static constexpr size_t kMaxSlotsPerSlotSpanBits = 13;
-+  static constexpr size_t kMaxSlotsPerSlotSpanBits = 15;
-   static_assert(kMaxSlotsPerSlotSpan < (1 << kMaxSlotsPerSlotSpanBits), "");
- 
--  // |marked_full| isn't equivalent to being full. Slot span is marked as full
--  // iff it isn't on the active slot span list (or any other list).
--  uint32_t marked_full : 1;
-   // |num_allocated_slots| is 0 for empty or decommitted slot spans, which can
-   // be further differentiated by checking existence of the freelist.
--  uint32_t num_allocated_slots : kMaxSlotsPerSlotSpanBits;
--  uint32_t num_unprovisioned_slots : kMaxSlotsPerSlotSpanBits;
-+  uint16_t num_allocated_slots : kMaxSlotsPerSlotSpanBits;
-+  uint16_t num_unprovisioned_slots : kMaxSlotsPerSlotSpanBits;
-+
-+  // |marked_full| isn't equivalent to being full. Slot span is marked as full
-+  // iff it isn't on the active slot span list (or any other list).
-+  bool marked_full : 1;
- 
-  private:
--  const uint32_t can_store_raw_size_ : 1;
--  uint32_t freelist_is_sorted_ : 1;
--  uint32_t unused1_ : (32 - 1 - 2 * kMaxSlotsPerSlotSpanBits - 1 - 1);
-+  const uint8_t can_store_raw_size_ : 1;
-+  uint8_t freelist_is_sorted_ : 1;
-   // If |in_empty_cache_|==1, |empty_cache_index| is undefined and mustn't be
-   // used.
--  uint16_t in_empty_cache_ : 1;
--  uint16_t empty_cache_index_ : kEmptyCacheIndexBits;  // < kMaxFreeableSpans.
--  uint16_t unused2_ : (16 - 1 - kEmptyCacheIndexBits);
-+  bool in_empty_cache_ : 1;
-+  uint8_t empty_cache_index_ : kEmptyCacheIndexBits;  // < kMaxFreeableSpans.
-   // Can use only 48 bits (6B) in this bitfield, as this structure is embedded
-   // in PartitionPage which has 2B worth of fields and must fit in 32B.
- 
-@@ -279,18 +278,13 @@ static_assert(sizeof(SlotSpanMetadata) <
-               "SlotSpanMetadata must fit into a Page Metadata slot.");
- 
- inline constexpr SlotSpanMetadata::SlotSpanMetadata() noexcept
--    : marked_full(0),
--      num_allocated_slots(0),
-+    : num_allocated_slots(0),
-       num_unprovisioned_slots(0),
-+      marked_full(0),
-       can_store_raw_size_(false),
-       freelist_is_sorted_(true),
--      unused1_(0),
-       in_empty_cache_(0),
--      empty_cache_index_(0),
--      unused2_(0) {
--  (void)unused1_;
--  (void)unused2_;
--}
-+      empty_cache_index_(0) {}
- 
- inline SlotSpanMetadata::SlotSpanMetadata(const SlotSpanMetadata&) = default;
- 
-@@ -883,7 +877,7 @@ PA_ALWAYS_INLINE void SlotSpanMetadata::
- 
-   size_t num_slots_per_span = bucket->get_slots_per_span();
-   PA_DCHECK(num_slots_per_span <= kMaxSlotsPerSlotSpan);
--  num_unprovisioned_slots = static_cast<uint32_t>(num_slots_per_span);
-+  num_unprovisioned_slots = static_cast<uint16_t>(num_slots_per_span);
-   PA_DCHECK(num_unprovisioned_slots);
- 
-   ToSuperPageExtent()->IncrementNumberOfNonemptySlotSpans();
-diff -up chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_root.cc.el8-support-64kpage.patch chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_root.cc
---- chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_root.cc.el8-support-64kpage.patch	2024-01-30 21:24:10.000000000 +0100
-+++ chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_root.cc	2024-02-01 17:20:37.178877448 +0100
-@@ -950,12 +950,11 @@ void PartitionRoot::Init(PartitionOption
-              (internal::SystemPageSize() == (size_t{1} << 14)));
- #elif BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64)
-     // Check runtime pagesize. Though the code is currently the same, it is
--    // not merged with the IS_APPLE case above as a 1 << 16 case needs to be
--    // added here in the future, to allow 64 kiB pagesize. That is only
--    // supported on Linux on arm64, not on IS_APPLE, but not yet present here
--    // as the rest of the partition allocator does not currently support it.
-+    // not merged with the IS_APPLE case above as a 1 << 16 case is only
-+    // supported on Linux on AArch64.
-     PA_CHECK((internal::SystemPageSize() == (size_t{1} << 12)) ||
--             (internal::SystemPageSize() == (size_t{1} << 14)));
-+             (internal::SystemPageSize() == (size_t{1} << 14)) ||
-+             (internal::SystemPageSize() == (size_t{1} << 16)));
- #endif
- 
-     ::partition_alloc::internal::ScopedGuard guard{lock_};

diff --git a/chromium-121-missing-header-files.patch b/chromium-121-missing-header-files.patch
deleted file mode 100644
index b686ed7..0000000
--- a/chromium-121-missing-header-files.patch
+++ /dev/null
@@ -1,515 +0,0 @@
-diff -up chromium-119.0.6045.105/base/check_op.h.missing-header-files chromium-119.0.6045.105/base/check_op.h
---- chromium-119.0.6045.105/base/check_op.h.missing-header-files	2023-11-01 19:10:05.000000000 +0100
-+++ chromium-119.0.6045.105/base/check_op.h	2023-11-06 14:34:01.808868982 +0100
-@@ -5,6 +5,7 @@
- #ifndef BASE_CHECK_OP_H_
- #define BASE_CHECK_OP_H_
- 
-+#include <cstdint>
- #include <cstddef>
- #include <string>
- #include <string_view>
-diff -up chromium-119.0.6045.105/base/containers/flat_map.h.missing-header-files chromium-119.0.6045.105/base/containers/flat_map.h
---- chromium-119.0.6045.105/base/containers/flat_map.h.missing-header-files	2023-11-01 19:10:05.000000000 +0100
-+++ chromium-119.0.6045.105/base/containers/flat_map.h	2023-11-06 14:34:01.813869089 +0100
-@@ -5,6 +5,7 @@
- #ifndef BASE_CONTAINERS_FLAT_MAP_H_
- #define BASE_CONTAINERS_FLAT_MAP_H_
- 
-+#include <cstdint>
- #include <functional>
- #include <tuple>
- #include <type_traits>
-diff -up chromium-119.0.6045.105/base/debug/profiler.h.missing-header-files chromium-119.0.6045.105/base/debug/profiler.h
---- chromium-119.0.6045.105/base/debug/profiler.h.missing-header-files	2023-11-01 19:10:05.000000000 +0100
-+++ chromium-119.0.6045.105/base/debug/profiler.h	2023-11-06 14:34:01.809869004 +0100
-@@ -8,6 +8,7 @@
- #include <stddef.h>
- #include <stdint.h>
- 
-+#include <cstdint>
- #include <string>
- 
- #include "base/base_export.h"
-diff -up chromium-119.0.6045.105/base/memory/ref_counted.h.missing-header-files chromium-119.0.6045.105/base/memory/ref_counted.h
---- chromium-119.0.6045.105/base/memory/ref_counted.h.missing-header-files	2023-11-01 19:10:05.000000000 +0100
-+++ chromium-119.0.6045.105/base/memory/ref_counted.h	2023-11-06 14:34:01.808868982 +0100
-@@ -6,6 +6,7 @@
- #define BASE_MEMORY_REF_COUNTED_H_
- 
- #include <stddef.h>
-+#include <limits>
- 
- #include <limits>
- #include <utility>
-diff -up chromium-119.0.6045.105/chrome/browser/privacy_budget/encountered_surface_tracker.h.missing-header-files chromium-119.0.6045.105/chrome/browser/privacy_budget/encountered_surface_tracker.h
---- chromium-119.0.6045.105/chrome/browser/privacy_budget/encountered_surface_tracker.h.missing-header-files	2023-11-01 19:10:13.000000000 +0100
-+++ chromium-119.0.6045.105/chrome/browser/privacy_budget/encountered_surface_tracker.h	2023-11-06 14:34:01.814869110 +0100
-@@ -7,6 +7,7 @@
- 
- #include <stdint.h>
- 
-+#include <cstdint>
- #include <map>
- 
- #include "base/containers/flat_set.h"
-diff -up chromium-119.0.6045.105/chrome/browser/webauthn/authenticator_request_dialog_model.h.missing-header-files chromium-119.0.6045.105/chrome/browser/webauthn/authenticator_request_dialog_model.h
---- chromium-119.0.6045.105/chrome/browser/webauthn/authenticator_request_dialog_model.h.missing-header-files	2023-11-01 19:10:16.000000000 +0100
-+++ chromium-119.0.6045.105/chrome/browser/webauthn/authenticator_request_dialog_model.h	2023-11-06 14:34:01.817869174 +0100
-@@ -8,6 +8,7 @@
- #include <memory>
- #include <string>
- #include <vector>
-+#include <variant>
- 
- #include "base/containers/span.h"
- #include "base/functional/callback_forward.h"
-diff -up chromium-119.0.6045.105/chrome/test/chromedriver/chrome/web_view_impl.cc.missing-header-files chromium-119.0.6045.105/chrome/test/chromedriver/chrome/web_view_impl.cc
---- chromium-119.0.6045.105/chrome/test/chromedriver/chrome/web_view_impl.cc.missing-header-files	2023-11-01 19:10:16.000000000 +0100
-+++ chromium-119.0.6045.105/chrome/test/chromedriver/chrome/web_view_impl.cc	2023-11-06 14:34:01.818869196 +0100
-@@ -11,6 +11,7 @@
- #include <queue>
- #include <utility>
- #include <vector>
-+#include <cstring>
- 
- #include "base/check.h"
- #include "base/files/file_path.h"
-diff -up chromium-119.0.6045.105/components/autofill/core/browser/autofill_ablation_study.h.missing-header-files chromium-119.0.6045.105/components/autofill/core/browser/autofill_ablation_study.h
---- chromium-119.0.6045.105/components/autofill/core/browser/autofill_ablation_study.h.missing-header-files	2023-11-01 19:10:19.000000000 +0100
-+++ chromium-119.0.6045.105/components/autofill/core/browser/autofill_ablation_study.h	2023-11-06 14:34:01.815869132 +0100
-@@ -7,6 +7,7 @@
- 
- #include <stdint.h>
- 
-+#include <cstdint>
- #include <string>
- 
- class GURL;
-diff -up chromium-119.0.6045.105/components/crash/core/app/crash_reporter_client.h.missing-header-files chromium-119.0.6045.105/components/crash/core/app/crash_reporter_client.h
---- chromium-119.0.6045.105/components/crash/core/app/crash_reporter_client.h.missing-header-files	2023-11-01 19:10:20.000000000 +0100
-+++ chromium-119.0.6045.105/components/crash/core/app/crash_reporter_client.h	2023-11-06 14:34:01.813869089 +0100
-@@ -7,6 +7,7 @@
- 
- #include <stdint.h>
- 
-+#include <cstdint>
- #include <string>
- 
- #include "build/build_config.h"
-diff -up chromium-119.0.6045.105/components/feature_engagement/internal/event_storage_validator.h.missing-header-files chromium-119.0.6045.105/components/feature_engagement/internal/event_storage_validator.h
---- chromium-119.0.6045.105/components/feature_engagement/internal/event_storage_validator.h.missing-header-files	2023-11-01 19:10:21.000000000 +0100
-+++ chromium-119.0.6045.105/components/feature_engagement/internal/event_storage_validator.h	2023-11-06 14:34:01.814869110 +0100
-@@ -7,6 +7,7 @@
- 
- #include <stdint.h>
- 
-+#include <cstdint>
- #include <string>
- 
- namespace feature_engagement {
-diff -up chromium-119.0.6045.105/components/feature_engagement/internal/never_event_storage_validator.h.missing-header-files chromium-119.0.6045.105/components/feature_engagement/internal/never_event_storage_validator.h
---- chromium-119.0.6045.105/components/feature_engagement/internal/never_event_storage_validator.h.missing-header-files	2023-11-01 19:10:21.000000000 +0100
-+++ chromium-119.0.6045.105/components/feature_engagement/internal/never_event_storage_validator.h	2023-11-06 14:34:01.814869110 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_NEVER_EVENT_STORAGE_VALIDATOR_H_
- #define COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_NEVER_EVENT_STORAGE_VALIDATOR_H_
- 
-+#include <cstdint>
- #include <string>
- 
- #include "components/feature_engagement/internal/event_storage_validator.h"
-diff -up chromium-119.0.6045.105/components/omnibox/browser/on_device_head_model.h.missing-header-files chromium-119.0.6045.105/components/omnibox/browser/on_device_head_model.h
---- chromium-119.0.6045.105/components/omnibox/browser/on_device_head_model.h.missing-header-files	2023-11-01 19:10:21.000000000 +0100
-+++ chromium-119.0.6045.105/components/omnibox/browser/on_device_head_model.h	2023-11-06 14:34:01.815869132 +0100
-@@ -7,6 +7,7 @@
- 
- #include <stdint.h>
- 
-+#include <cstdint>
- #include <string>
- #include <utility>
- #include <vector>
-diff -up chromium-119.0.6045.105/components/password_manager/core/browser/generation/password_generator.h.missing-header-files chromium-119.0.6045.105/components/password_manager/core/browser/generation/password_generator.h
---- chromium-119.0.6045.105/components/password_manager/core/browser/generation/password_generator.h.missing-header-files	2023-11-01 19:10:21.000000000 +0100
-+++ chromium-119.0.6045.105/components/password_manager/core/browser/generation/password_generator.h	2023-11-06 14:34:01.814869110 +0100
-@@ -7,6 +7,7 @@
- 
- #include <stdint.h>
- 
-+#include <cstdint>
- #include <string>
- 
- 
-diff -up chromium-119.0.6045.105/components/payments/content/utility/fingerprint_parser.h.missing-header-files chromium-119.0.6045.105/components/payments/content/utility/fingerprint_parser.h
---- chromium-119.0.6045.105/components/payments/content/utility/fingerprint_parser.h.missing-header-files	2023-11-01 19:10:21.000000000 +0100
-+++ chromium-119.0.6045.105/components/payments/content/utility/fingerprint_parser.h	2023-11-06 14:34:01.815869132 +0100
-@@ -5,6 +5,7 @@
- #ifndef COMPONENTS_PAYMENTS_CONTENT_UTILITY_FINGERPRINT_PARSER_H_
- #define COMPONENTS_PAYMENTS_CONTENT_UTILITY_FINGERPRINT_PARSER_H_
- 
-+#include <cstdint>
- #include <stddef.h>
- #include <stdint.h>
- 
-diff -up chromium-119.0.6045.105/gin/time_clamper.h.missing-header-files chromium-119.0.6045.105/gin/time_clamper.h
---- chromium-119.0.6045.105/gin/time_clamper.h.missing-header-files	2023-11-01 19:10:28.000000000 +0100
-+++ chromium-119.0.6045.105/gin/time_clamper.h	2023-11-06 14:34:01.818869196 +0100
-@@ -48,7 +48,7 @@ class GIN_EXPORT TimeClamper {
-     const int64_t micros = now_micros % 1000;
-     // abs() is necessary for devices with times before unix-epoch (most likely
-     // configured incorrectly).
--    if (abs(micros) + kResolutionMicros < 1000) {
-+    if (std::abs(micros) + kResolutionMicros < 1000) {
-       return now_micros / 1000;
-     }
-     return ClampTimeResolution(now_micros) / 1000;
-diff -up chromium-119.0.6045.105/gpu/config/gpu_feature_info.h.missing-header-files chromium-119.0.6045.105/gpu/config/gpu_feature_info.h
---- chromium-119.0.6045.105/gpu/config/gpu_feature_info.h.missing-header-files	2023-11-01 19:10:28.000000000 +0100
-+++ chromium-119.0.6045.105/gpu/config/gpu_feature_info.h	2023-11-06 14:34:01.809869004 +0100
-@@ -7,6 +7,7 @@
- 
- #include <stdint.h>
- 
-+#include <cstdint>
- #include <string>
- #include <vector>
- 
-diff -up chromium-119.0.6045.105/net/base/net_export.h.missing-header-files chromium-119.0.6045.105/net/base/net_export.h
---- chromium-119.0.6045.105/net/base/net_export.h.missing-header-files	2023-11-01 19:10:32.000000000 +0100
-+++ chromium-119.0.6045.105/net/base/net_export.h	2023-11-06 14:34:01.809869004 +0100
-@@ -5,6 +5,8 @@
- #ifndef NET_BASE_NET_EXPORT_H_
- #define NET_BASE_NET_EXPORT_H_
- 
-+#include <cstdint>
-+
- // Defines NET_EXPORT so that functionality implemented by the net module can
- // be exported to consumers, and NET_EXPORT_PRIVATE that allows unit tests to
- // access features not intended to be used directly by real consumers.
-diff -up chromium-119.0.6045.105/pdf/document_attachment_info.h.missing-header-files chromium-119.0.6045.105/pdf/document_attachment_info.h
---- chromium-119.0.6045.105/pdf/document_attachment_info.h.missing-header-files	2023-11-01 19:10:34.000000000 +0100
-+++ chromium-119.0.6045.105/pdf/document_attachment_info.h	2023-11-06 14:34:01.815869132 +0100
-@@ -7,6 +7,7 @@
- 
- #include <stdint.h>
- 
-+#include <cstdint>
- #include <string>
- 
- 
-diff -up chromium-119.0.6045.105/sandbox/linux/syscall_broker/broker_file_permission.h.missing-header-files chromium-119.0.6045.105/sandbox/linux/syscall_broker/broker_file_permission.h
---- chromium-119.0.6045.105/sandbox/linux/syscall_broker/broker_file_permission.h.missing-header-files	2023-11-01 19:10:34.000000000 +0100
-+++ chromium-119.0.6045.105/sandbox/linux/syscall_broker/broker_file_permission.h	2023-11-06 14:34:01.809869004 +0100
-@@ -5,6 +5,7 @@
- #ifndef SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_
- #define SANDBOX_LINUX_SYSCALL_BROKER_BROKER_FILE_PERMISSION_H_
- 
-+#include <cstdint>
- #include <bitset>
- #include <cstdint>
- #include <string>
-diff -up chromium-119.0.6045.105/services/device/public/cpp/generic_sensor/sensor_reading.h.missing-header-files chromium-119.0.6045.105/services/device/public/cpp/generic_sensor/sensor_reading.h
---- chromium-119.0.6045.105/services/device/public/cpp/generic_sensor/sensor_reading.h.missing-header-files	2023-11-01 19:10:35.000000000 +0100
-+++ chromium-119.0.6045.105/services/device/public/cpp/generic_sensor/sensor_reading.h	2023-11-06 14:34:01.820869238 +0100
-@@ -8,6 +8,9 @@
- #include <stddef.h>
- #include <stdint.h>
- 
-+#include <cstddef>
-+#include <cstdint>
-+
- #include <type_traits>
- 
- namespace device {
-diff -up chromium-119.0.6045.105/skia/ext/skcolorspace_trfn.cc.missing-header-files chromium-119.0.6045.105/skia/ext/skcolorspace_trfn.cc
---- chromium-119.0.6045.105/skia/ext/skcolorspace_trfn.cc.missing-header-files	2023-11-01 19:10:35.000000000 +0100
-+++ chromium-119.0.6045.105/skia/ext/skcolorspace_trfn.cc	2023-11-06 14:34:01.818869196 +0100
-@@ -3,6 +3,7 @@
- // found in the LICENSE file.
- 
- #include "skia/ext/skcolorspace_trfn.h"
-+#include <cmath>
- 
- #include <cmath>
- 
-diff -up chromium-119.0.6045.105/third_party/abseil-cpp/absl/strings/string_view.h.missing-header-files chromium-119.0.6045.105/third_party/abseil-cpp/absl/strings/string_view.h
---- chromium-119.0.6045.105/third_party/abseil-cpp/absl/strings/string_view.h.missing-header-files	2023-11-01 19:10:36.000000000 +0100
-+++ chromium-119.0.6045.105/third_party/abseil-cpp/absl/strings/string_view.h	2023-11-06 14:34:01.809869004 +0100
-@@ -27,6 +27,7 @@
- #ifndef ABSL_STRINGS_STRING_VIEW_H_
- #define ABSL_STRINGS_STRING_VIEW_H_
- 
-+#include <cstdint>
- #include <algorithm>
- #include <cassert>
- #include <cstddef>
-diff -up chromium-119.0.6045.105/third_party/angle/include/GLSLANG/ShaderVars.h.missing-header-files chromium-119.0.6045.105/third_party/angle/include/GLSLANG/ShaderVars.h
---- chromium-119.0.6045.105/third_party/angle/include/GLSLANG/ShaderVars.h.missing-header-files	2023-11-01 19:11:59.000000000 +0100
-+++ chromium-119.0.6045.105/third_party/angle/include/GLSLANG/ShaderVars.h	2023-11-06 14:34:01.810869025 +0100
-@@ -10,6 +10,7 @@
- #ifndef GLSLANG_SHADERVARS_H_
- #define GLSLANG_SHADERVARS_H_
- 
-+#include <cstdint>
- #include <algorithm>
- #include <array>
- #include <cstdint>
-diff -up chromium-119.0.6045.105/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h.missing-header-files chromium-119.0.6045.105/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h
---- chromium-119.0.6045.105/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h.missing-header-files	2023-11-01 19:10:37.000000000 +0100
-+++ chromium-119.0.6045.105/third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h	2023-11-06 14:34:01.810869025 +0100
-@@ -7,6 +7,7 @@
- 
- #include <stdint.h>
- 
-+#include <cstdint>
- #include <array>
- #include <cstdint>
- #include <functional>
-diff -up chromium-119.0.6045.105/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h.missing-header-files chromium-119.0.6045.105/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h
---- chromium-119.0.6045.105/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h.missing-header-files	2023-11-01 19:13:50.000000000 +0100
-+++ chromium-119.0.6045.105/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h	2023-11-06 14:34:01.810869025 +0100
-@@ -15,6 +15,7 @@
- #ifndef SRC_TINT_LANG_SPIRV_READER_AST_PARSER_NAMER_H_
- #define SRC_TINT_LANG_SPIRV_READER_AST_PARSER_NAMER_H_
- 
-+#include <cstdint>
- #include <string>
- #include <unordered_map>
- #include <vector>
-diff -up chromium-119.0.6045.105/third_party/ipcz/src/ipcz/router_link.h.missing-header-files chromium-119.0.6045.105/third_party/ipcz/src/ipcz/router_link.h
---- chromium-119.0.6045.105/third_party/ipcz/src/ipcz/router_link.h.missing-header-files	2023-11-01 19:11:20.000000000 +0100
-+++ chromium-119.0.6045.105/third_party/ipcz/src/ipcz/router_link.h	2023-11-06 14:34:01.819869217 +0100
-@@ -5,6 +5,7 @@
- #ifndef IPCZ_SRC_IPCZ_ROUTER_LINK_H_
- #define IPCZ_SRC_IPCZ_ROUTER_LINK_H_
- 
-+#include <memory>
- #include <cstddef>
- #include <functional>
- #include <memory>
-diff -up chromium-119.0.6045.105/third_party/material_color_utilities/src/cpp/palettes/tones.cc.missing-header-files chromium-119.0.6045.105/third_party/material_color_utilities/src/cpp/palettes/tones.cc
---- chromium-119.0.6045.105/third_party/material_color_utilities/src/cpp/palettes/tones.cc.missing-header-files	2023-11-01 19:11:53.000000000 +0100
-+++ chromium-119.0.6045.105/third_party/material_color_utilities/src/cpp/palettes/tones.cc	2023-11-06 14:34:01.819869217 +0100
-@@ -14,6 +14,7 @@
-  * limitations under the License.
-  */
- 
-+#include <cmath>
- #include "cpp/palettes/tones.h"
- 
- #include "cpp/cam/cam.h"
-diff -up chromium-119.0.6045.105/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h.missing-header-files chromium-119.0.6045.105/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h
---- chromium-119.0.6045.105/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h.missing-header-files	2023-11-01 19:11:59.000000000 +0100
-+++ chromium-119.0.6045.105/third_party/openscreen/src/discovery/dnssd/public/dns_sd_txt_record.h	2023-11-06 14:34:01.810869025 +0100
-@@ -7,6 +7,7 @@
- 
- #include <stdint.h>
- 
-+#include <cstdint>
- #include <functional>
- #include <map>
- #include <set>
-diff -up chromium-119.0.6045.105/third_party/pdfium/constants/annotation_flags.h.missing-header-files chromium-119.0.6045.105/third_party/pdfium/constants/annotation_flags.h
---- chromium-119.0.6045.105/third_party/pdfium/constants/annotation_flags.h.missing-header-files	2023-11-01 19:14:48.000000000 +0100
-+++ chromium-119.0.6045.105/third_party/pdfium/constants/annotation_flags.h	2023-11-06 14:34:01.815869132 +0100
-@@ -7,6 +7,8 @@
- 
- #include <stdint.h>
- 
-+#include <cstdint>
-+
- namespace pdfium {
- namespace annotation_flags {
- 
-diff -up chromium-119.0.6045.105/third_party/ruy/src/ruy/profiler/instrumentation.h.missing-header-files chromium-119.0.6045.105/third_party/ruy/src/ruy/profiler/instrumentation.h
---- chromium-119.0.6045.105/third_party/ruy/src/ruy/profiler/instrumentation.h.missing-header-files	2023-11-01 19:12:02.000000000 +0100
-+++ chromium-119.0.6045.105/third_party/ruy/src/ruy/profiler/instrumentation.h	2023-11-06 14:34:01.813869089 +0100
-@@ -17,6 +17,7 @@ limitations under the License.
- #define RUY_RUY_PROFILER_INSTRUMENTATION_H_
- 
- #ifdef RUY_PROFILER
-+#include <string>
- #include <cstdio>
- #include <mutex>
- #include <vector>
-diff -up chromium-119.0.6045.105/third_party/swiftshader/src/System/LRUCache.hpp.missing-header-files chromium-119.0.6045.105/third_party/swiftshader/src/System/LRUCache.hpp
---- chromium-119.0.6045.105/third_party/swiftshader/src/System/LRUCache.hpp.missing-header-files	2023-11-01 19:12:15.000000000 +0100
-+++ chromium-119.0.6045.105/third_party/swiftshader/src/System/LRUCache.hpp	2023-11-06 14:34:01.810869025 +0100
-@@ -17,6 +17,7 @@
- 
- #include "System/Debug.hpp"
- 
-+#include <cstdint>
- #include <cstddef>
- #include <cstdint>
- #include <functional>
-diff -up chromium-119.0.6045.105/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc.missing-header-files chromium-119.0.6045.105/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc
---- chromium-119.0.6045.105/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc.missing-header-files	2023-11-01 19:12:42.000000000 +0100
-+++ chromium-119.0.6045.105/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc	2023-11-06 14:34:01.814869110 +0100
-@@ -45,6 +45,7 @@
- #include "llvm/Support/SaveAndRestore.h"
- #include "llvm/Support/raw_ostream.h"
- #include <algorithm>
-+#include <cstdint>
- #include <string>
- #include <sysexits.h>
- #ifdef HAVE_BACKTRACE
-diff -up chromium-119.0.6045.105/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h.missing-header-files chromium-119.0.6045.105/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h
---- chromium-119.0.6045.105/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h.missing-header-files	2023-11-01 19:13:20.000000000 +0100
-+++ chromium-119.0.6045.105/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h	2023-11-06 14:34:01.813869089 +0100
-@@ -31,6 +31,7 @@ limitations under the License.
- #ifndef TENSORFLOW_LITE_KERNELS_INTERNAL_SPECTROGRAM_H_
- #define TENSORFLOW_LITE_KERNELS_INTERNAL_SPECTROGRAM_H_
- 
-+#include <cstdint>
- #include <complex>
- #include <deque>
- #include <vector>
-diff -up chromium-119.0.6045.105/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h.missing-header-files chromium-119.0.6045.105/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h
---- chromium-119.0.6045.105/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h.missing-header-files	2023-11-01 19:12:45.000000000 +0100
-+++ chromium-119.0.6045.105/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h	2023-11-06 14:34:01.817869174 +0100
-@@ -2884,6 +2884,7 @@ static void vma_aligned_free(void* VMA_N
- 
- // Define this macro to 1 to enable functions: vmaBuildStatsString, vmaFreeStatsString.
- #if VMA_STATS_STRING_ENABLED
-+#include <stdio.h>
-     static inline void VmaUint32ToStr(char* VMA_NOT_NULL outStr, size_t strLen, uint32_t num)
-     {
-         snprintf(outStr, strLen, "%u", static_cast<unsigned int>(num));
-diff -up chromium-119.0.6045.105/third_party/webrtc/audio/utility/channel_mixer.cc.missing-header-files chromium-119.0.6045.105/third_party/webrtc/audio/utility/channel_mixer.cc
---- chromium-119.0.6045.105/third_party/webrtc/audio/utility/channel_mixer.cc.missing-header-files	2023-11-01 19:14:05.000000000 +0100
-+++ chromium-119.0.6045.105/third_party/webrtc/audio/utility/channel_mixer.cc	2023-11-06 14:34:01.819869217 +0100
-@@ -8,6 +8,8 @@
-  *  be found in the AUTHORS file in the root of the source tree.
-  */
- 
-+#include <cstring>
-+
- #include "audio/utility/channel_mixer.h"
- 
- #include "audio/utility/channel_mixing_matrix.h"
-diff -up chromium-119.0.6045.105/third_party/webrtc/common_video/h264/sps_parser.h.missing-header-files chromium-119.0.6045.105/third_party/webrtc/common_video/h264/sps_parser.h
---- chromium-119.0.6045.105/third_party/webrtc/common_video/h264/sps_parser.h.missing-header-files	2023-11-01 19:14:06.000000000 +0100
-+++ chromium-119.0.6045.105/third_party/webrtc/common_video/h264/sps_parser.h	2023-11-06 14:34:01.819869217 +0100
-@@ -11,6 +11,7 @@
- #ifndef COMMON_VIDEO_H264_SPS_PARSER_H_
- #define COMMON_VIDEO_H264_SPS_PARSER_H_
- 
-+#include <cstdint>
- #include "absl/types/optional.h"
- #include "rtc_base/bitstream_reader.h"
- 
-diff -up chromium-119.0.6045.105/third_party/webrtc/modules/include/module_common_types_public.h.missing-header-files chromium-119.0.6045.105/third_party/webrtc/modules/include/module_common_types_public.h
---- chromium-119.0.6045.105/third_party/webrtc/modules/include/module_common_types_public.h.missing-header-files	2023-11-01 19:14:11.000000000 +0100
-+++ chromium-119.0.6045.105/third_party/webrtc/modules/include/module_common_types_public.h	2023-11-06 14:34:01.819869217 +0100
-@@ -11,6 +11,7 @@
- #ifndef MODULES_INCLUDE_MODULE_COMMON_TYPES_PUBLIC_H_
- #define MODULES_INCLUDE_MODULE_COMMON_TYPES_PUBLIC_H_
- 
-+#include <cstdint>
- #include <limits>
- 
- #include "absl/types/optional.h"
-diff -up chromium-119.0.6045.105/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc.missing-header-files chromium-119.0.6045.105/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc
---- chromium-119.0.6045.105/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc.missing-header-files	2023-11-01 19:14:12.000000000 +0100
-+++ chromium-119.0.6045.105/third_party/webrtc/modules/video_coding/utility/ivf_file_reader.cc	2023-11-06 14:34:01.819869217 +0100
-@@ -10,6 +10,7 @@
- 
- #include "modules/video_coding/utility/ivf_file_reader.h"
- 
-+#include <cstring>
- #include <string>
- #include <vector>
- 
-diff -up chromium-119.0.6045.105/ui/base/prediction/kalman_filter.h.missing-header-files chromium-119.0.6045.105/ui/base/prediction/kalman_filter.h
---- chromium-119.0.6045.105/ui/base/prediction/kalman_filter.h.missing-header-files	2023-11-01 19:11:28.000000000 +0100
-+++ chromium-119.0.6045.105/ui/base/prediction/kalman_filter.h	2023-11-06 14:34:01.814869110 +0100
-@@ -7,6 +7,8 @@
- 
- #include <stdint.h>
- 
-+#include <cstdint>
-+
- #include "base/component_export.h"
- #include "ui/gfx/geometry/matrix3_f.h"
- 
-diff -up chromium-119.0.6045.105/ui/gfx/geometry/linear_gradient.h.missing-header-files chromium-119.0.6045.105/ui/gfx/geometry/linear_gradient.h
---- chromium-119.0.6045.105/ui/gfx/geometry/linear_gradient.h.missing-header-files	2023-11-01 19:11:28.000000000 +0100
-+++ chromium-119.0.6045.105/ui/gfx/geometry/linear_gradient.h	2023-11-06 14:34:01.812869068 +0100
-@@ -7,6 +7,7 @@
- 
- #include <stdint.h>
- 
-+#include <cstdint>
- #include <array>
- #include <cstddef>
- #include <cstdint>
-diff -up chromium-119.0.6045.105/ui/gfx/linux/drm_util_linux.h.missing-header-files chromium-119.0.6045.105/ui/gfx/linux/drm_util_linux.h
---- chromium-119.0.6045.105/ui/gfx/linux/drm_util_linux.h.missing-header-files	2023-11-01 19:11:28.000000000 +0100
-+++ chromium-119.0.6045.105/ui/gfx/linux/drm_util_linux.h	2023-11-06 14:34:01.819869217 +0100
-@@ -9,6 +9,8 @@
- 
- #include "ui/gfx/buffer_types.h"
- 
-+#include <cstdint>
-+
- namespace ui {
- 
- int GetFourCCFormatFromBufferFormat(gfx::BufferFormat format);
-diff -up chromium-121.0.6167.139/crypto/hkdf.h.me chromium-121.0.6167.139/crypto/hkdf.h
---- chromium-121.0.6167.139/crypto/hkdf.h.me	2024-02-03 17:24:49.957949670 +0100
-+++ chromium-121.0.6167.139/crypto/hkdf.h	2024-02-03 17:26:05.753312178 +0100
-@@ -7,6 +7,7 @@
- 
- #include <stddef.h>
- 
-+#include <vector>
- #include <string>
- #include <string_view>
- 
-diff -up chromium-121.0.6167.139/ui/display/types/display_color_management.h.me chromium-121.0.6167.139/ui/display/types/display_color_management.h
---- chromium-121.0.6167.139/ui/display/types/display_color_management.h.me	2024-02-03 18:55:34.889499101 +0100
-+++ chromium-121.0.6167.139/ui/display/types/display_color_management.h	2024-02-03 18:55:59.608945624 +0100
-@@ -6,6 +6,7 @@
- #define UI_DISPLAY_TYPES_DISPLAY_COLOR_MANAGEMENT_H_
- 
- #include <vector>
-+#include <memory>
- 
- #include "third_party/skia/modules/skcms/skcms.h"
- #include "ui/display/types/display_types_export.h"
-diff -up chromium-121.0.6167.139/ui/gfx/x/visual_manager.cc.me chromium-121.0.6167.139/ui/gfx/x/visual_manager.cc
---- chromium-121.0.6167.139/ui/gfx/x/visual_manager.cc.me	2024-02-03 21:20:32.126285578 +0100
-+++ chromium-121.0.6167.139/ui/gfx/x/visual_manager.cc	2024-02-03 21:20:50.272607248 +0100
-@@ -2,6 +2,8 @@
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- 
-+#include <bitset>
-+
- #include "ui/gfx/x/visual_manager.h"
- 
- #include "base/strings/string_number_conversions.h"
-diff -up chromium-121.0.6167.139/third_party/blink/renderer/platform/fonts/simple_font_data.h.me chromium-121.0.6167.139/third_party/blink/renderer/platform/fonts/simple_font_data.h
---- chromium-121.0.6167.139/third_party/blink/renderer/platform/fonts/simple_font_data.h.me	2024-02-03 22:47:05.632713381 +0100
-+++ chromium-121.0.6167.139/third_party/blink/renderer/platform/fonts/simple_font_data.h	2024-02-03 22:47:30.788293027 +0100
-@@ -26,6 +26,7 @@
- 
- #include <memory>
- #include <utility>
-+#include <mutex>
- 
- #include "build/build_config.h"
- #include "third_party/blink/renderer/platform/fonts/canvas_rotation_in_vertical.h"
-diff -up chromium-121.0.6167.139/chrome/browser/performance_manager/policies/probability_distribution.h.me chromium-121.0.6167.139/chrome/browser/performance_manager/policies/probability_distribution.h
---- chromium-121.0.6167.139/chrome/browser/performance_manager/policies/probability_distribution.h.me	2024-02-04 09:26:02.239427860 +0100
-+++ chromium-121.0.6167.139/chrome/browser/performance_manager/policies/probability_distribution.h	2024-02-04 09:26:10.051565081 +0100
-@@ -5,6 +5,7 @@
- #ifndef CHROME_BROWSER_PERFORMANCE_MANAGER_POLICIES_PROBABILITY_DISTRIBUTION_H_
- #define CHROME_BROWSER_PERFORMANCE_MANAGER_POLICIES_PROBABILITY_DISTRIBUTION_H_
- 
-+#include <cstdint>
- #include <utility>
- #include <vector>
- 

diff --git a/chromium-121-python3-invalid-escape-sequence.patch b/chromium-121-python3-invalid-escape-sequence.patch
deleted file mode 100644
index c2bf5b4..0000000
--- a/chromium-121-python3-invalid-escape-sequence.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-diff -up chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py.me chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py
---- chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py.me	2024-01-15 20:48:28.177397102 +0100
-+++ chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/html_generation_controller.py	2024-01-15 20:48:46.427768328 +0100
-@@ -18,7 +18,7 @@ class HTMLGenerationController(object):
- 
-   def GetHTMLForInlineStylesheet(self, contents):
-     if self.current_module is None:
--      if re.search('url\(.+\)', contents):
-+      if re.search(r'url\(.+\)', contents):
-         raise Exception(
-             'Default HTMLGenerationController cannot handle inline style urls')
-       return contents
-diff -up chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py.me chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py
---- chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py.me	2024-01-15 20:49:39.363845083 +0100
-+++ chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/js_utils.py	2024-01-15 20:49:57.407212098 +0100
-@@ -4,4 +4,4 @@
- 
- 
- def EscapeJSIfNeeded(js):
--  return js.replace('</script>', '<\/script>')
-+  return js.replace(r'</script>', r'<\/script>')
-diff -up chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py.me chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py
---- chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py.me	2024-01-15 20:50:11.819505254 +0100
-+++ chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/parse_html_deps.py	2024-01-15 20:50:38.611050213 +0100
-@@ -293,6 +293,6 @@ class HTMLModuleParser():
-       html = ''
-     else:
-       if html.find('< /script>') != -1:
--        raise Exception('Escape script tags with <\/script>')
-+        raise Exception(r'Escape script tags with <\/script>')
- 
-     return HTMLModuleParserResults(html)
-diff -up chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py.me chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py
---- chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py.me	2024-01-15 20:48:59.917042709 +0100
-+++ chromium-121.0.6167.57/third_party/catapult/common/py_vulcanize/py_vulcanize/style_sheet.py	2024-01-15 20:49:24.402540761 +0100
-@@ -60,7 +60,7 @@ class ParsedStyleSheet(object):
-       return 'url(data:image/%s;base64,%s)' % (ext[1:], data.decode('utf-8'))
- 
-     # I'm assuming we only have url()'s associated with images
--    return re.sub('url\((?P<quote>"|\'|)(?P<url>[^"\'()]*)(?P=quote)\)',
-+    return re.sub(r'url\((?P<quote>"|\'|)(?P<url>[^"\'()]*)(?P=quote)\)',
-                   InlineUrl, self.contents)
- 
-   def AppendDirectlyDependentFilenamesTo(self, dependent_filenames):
-@@ -72,7 +72,7 @@ class ParsedStyleSheet(object):
-       raise Exception('@imports are not supported')
- 
-     matches = re.findall(
--        'url\((?:["|\']?)([^"\'()]*)(?:["|\']?)\)',
-+        r'url\((?:["|\']?)([^"\'()]*)(?:["|\']?)\)',
-         self.contents)
- 
-     def resolve_url(url):
-diff -up chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-tools/src/scripts/gn/generate_vulkan_icd_json.py.me chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-tools/src/scripts/gn/generate_vulkan_icd_json.py
---- chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-tools/src/scripts/gn/generate_vulkan_icd_json.py.me	2024-01-15 20:50:56.810420400 +0100
-+++ chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-tools/src/scripts/gn/generate_vulkan_icd_json.py	2024-01-15 20:52:33.506387261 +0100
-@@ -28,7 +28,7 @@ import platform
- import sys
- 
- def glob_slash(dirname):
--    """Like regular glob but replaces \ with / in returned paths."""
-+    """Like regular glob but replaces \\ with / in returned paths."""
-     return [s.replace('\\', '/') for s in glob.glob(dirname)]
- 
- def main():
-diff -up chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-validation-layers/src/scripts/gn/generate_vulkan_layers_json.py.me chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-validation-layers/src/scripts/gn/generate_vulkan_layers_json.py
---- chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-validation-layers/src/scripts/gn/generate_vulkan_layers_json.py.me	2024-01-15 20:52:38.016479000 +0100
-+++ chromium-121.0.6167.57/third_party/vulkan-deps/vulkan-validation-layers/src/scripts/gn/generate_vulkan_layers_json.py	2024-01-15 20:52:48.863699640 +0100
-@@ -28,7 +28,7 @@ import platform
- import sys
- 
- def glob_slash(dirname):
--    """Like regular glob but replaces \ with / in returned paths."""
-+    """Like regular glob but replaces \\ with / in returned paths."""
-     return [s.replace('\\', '/') for s in glob.glob(dirname)]
- 
- def main():

diff --git a/chromium-121-revert-av1enc-el9.patch b/chromium-121-revert-av1enc-el9.patch
deleted file mode 100644
index 3debbe6..0000000
--- a/chromium-121-revert-av1enc-el9.patch
+++ /dev/null
@@ -1,121 +0,0 @@
-diff -up chromium-114.0.5735.35/media/gpu/vaapi/vaapi_video_encode_accelerator.cc.me chromium-114.0.5735.35/media/gpu/vaapi/vaapi_video_encode_accelerator.cc
---- chromium-114.0.5735.35/media/gpu/vaapi/vaapi_video_encode_accelerator.cc.me	2023-05-21 10:05:00.357860329 +0200
-+++ chromium-114.0.5735.35/media/gpu/vaapi/vaapi_video_encode_accelerator.cc	2023-05-21 10:18:09.665432735 +0200
-@@ -41,7 +41,6 @@
- #include "media/gpu/gpu_video_encode_accelerator_helpers.h"
- #include "media/gpu/h264_dpb.h"
- #include "media/gpu/macros.h"
--#include "media/gpu/vaapi/av1_vaapi_video_encoder_delegate.h"
- #include "media/gpu/vaapi/h264_vaapi_video_encoder_delegate.h"
- #include "media/gpu/vaapi/va_surface.h"
- #include "media/gpu/vaapi/vaapi_common.h"
-@@ -200,7 +199,7 @@ bool VaapiVideoEncodeAccelerator::Initia
- 
-   const VideoCodec codec = VideoCodecProfileToVideoCodec(config.output_profile);
-   if (codec != VideoCodec::kH264 && codec != VideoCodec::kVP8 &&
--      codec != VideoCodec::kVP9 && codec != VideoCodec::kAV1) {
-+      codec != VideoCodec::kVP9) {
-     MEDIA_LOG(ERROR, media_log.get())
-         << "Unsupported profile: " << GetProfileName(config.output_profile);
-     return false;
-@@ -293,7 +292,6 @@ void VaapiVideoEncodeAccelerator::Initia
-         break;
-       case VideoCodec::kVP8:
-       case VideoCodec::kVP9:
--      case VideoCodec::kAV1:
-         mode = VaapiWrapper::kEncodeConstantQuantizationParameter;
-         break;
-       default:
-@@ -356,12 +354,6 @@ void VaapiVideoEncodeAccelerator::Initia
-             vaapi_wrapper_, error_cb);
-       }
-       break;
--    case VideoCodec::kAV1:
--      if (!IsConfiguredForTesting()) {
--        encoder_ = std::make_unique<AV1VaapiVideoEncoderDelegate>(
--            vaapi_wrapper_, error_cb);
--      }
--      break;
-     default:
-       NOTREACHED() << "Unsupported codec type " << GetCodecName(output_codec_);
-       return;
-@@ -835,10 +827,6 @@ VaapiVideoEncodeAccelerator::CreateEncod
-     case VideoCodec::kVP9:
-       picture = new VaapiVP9Picture(std::move(reconstructed_surface));
-       break;
--    case VideoCodec::kAV1:
--      picture = new VaapiAV1Picture(/*display_va_surface=*/nullptr,
--                                    std::move(reconstructed_surface));
--      break;
-     default:
-       return nullptr;
-   }
-diff -up chromium-114.0.5735.35/media/gpu/vaapi/BUILD.gn.revert-av1enc chromium-114.0.5735.35/media/gpu/vaapi/BUILD.gn
---- chromium-114.0.5735.35/media/gpu/vaapi/BUILD.gn.revert-av1enc	2023-05-18 00:37:57.000000000 +0200
-+++ chromium-114.0.5735.35/media/gpu/vaapi/BUILD.gn	2023-05-20 13:14:10.756183626 +0200
-@@ -38,8 +38,6 @@ source_set("vaapi") {
-   sources = [
-     "av1_vaapi_video_decoder_delegate.cc",
-     "av1_vaapi_video_decoder_delegate.h",
--    "av1_vaapi_video_encoder_delegate.cc",
--    "av1_vaapi_video_encoder_delegate.h",
-     "h264_vaapi_video_decoder_delegate.cc",
-     "h264_vaapi_video_decoder_delegate.h",
-     "h264_vaapi_video_encoder_delegate.cc",
-@@ -107,7 +105,6 @@ source_set("vaapi") {
-     "//media/gpu/chromeos:common",
-     "//media/parsers",
-     "//mojo/public/cpp/bindings",
--    "//third_party/libaom:libaomrc",
-     "//third_party/libvpx:libvpxrc",
-     "//third_party/libyuv",
-     "//ui/gfx",
-diff -up chromium-119.0.6045.105/media/gpu/vaapi/vaapi_wrapper.cc.me chromium-119.0.6045.105/media/gpu/vaapi/vaapi_wrapper.cc
---- chromium-119.0.6045.105/media/gpu/vaapi/vaapi_wrapper.cc.me	2023-11-02 15:08:30.921325747 +0100
-+++ chromium-119.0.6045.105/media/gpu/vaapi/vaapi_wrapper.cc	2023-11-02 15:09:46.123692602 +0100
-@@ -3124,6 +3124,7 @@ bool VaapiWrapper::GetSupportedPackedHea
-   return true;
- }
- 
-+#if 0 //disable AV1 due to old libva on epel9
- bool VaapiWrapper::GetMinAV1SegmentSize(VideoCodecProfile profile,
-                                         uint32_t& min_seg_size) {
-   CHECK(!enforce_sequence_affinity_ ||
-@@ -3141,6 +3142,7 @@ bool VaapiWrapper::GetMinAV1SegmentSize(
- 
-   return true;
- }
-+#endif
- 
- bool VaapiWrapper::BlitSurface(const VASurface& va_surface_src,
-                                const VASurface& va_surface_dest,
-diff -up chromium-119.0.6045.105/media/gpu/vaapi/vaapi_wrapper.h.me chromium-119.0.6045.105/media/gpu/vaapi/vaapi_wrapper.h
---- chromium-119.0.6045.105/media/gpu/vaapi/vaapi_wrapper.h.me	2023-11-02 15:09:58.973928395 +0100
-+++ chromium-119.0.6045.105/media/gpu/vaapi/vaapi_wrapper.h	2023-11-02 15:10:45.990791114 +0100
-@@ -553,9 +553,11 @@ class MEDIA_GPU_EXPORT VaapiWrapper
-       bool& packed_pps,
-       bool& packed_slice);
- 
-+#if 0 //disable AV1 due to old libva on epel9
-   // Gets the minimum segment block size supported for AV1 encoding.
-   [[nodiscard]] bool GetMinAV1SegmentSize(VideoCodecProfile profile,
-                                           uint32_t& min_seg_size);
-+#endif
- 
-   // Blits a VASurface |va_surface_src| into another VASurface
-   // |va_surface_dest| applying pixel format conversion, cropping
-diff -up chromium-121.0.6167.57/media/gpu/BUILD.gn.than chromium-121.0.6167.57/media/gpu/BUILD.gn
---- chromium-121.0.6167.57/media/gpu/BUILD.gn.than	2024-01-15 22:09:21.010029147 +0100
-+++ chromium-121.0.6167.57/media/gpu/BUILD.gn	2024-01-15 22:10:05.192259340 +0100
-@@ -391,10 +391,7 @@ source_set("common") {
-       "vp9_svc_layers_stateful.h",
-     ]
-     configs += [ "//third_party/libvpx:libvpx_config" ]
--    deps += [
--      "//third_party/libaom:libaomrc",
--      "//third_party/libvpx:libvpxrc",
--    ]
-+    deps += [ "//third_party/libvpx:libvpxrc" ]
-   }
-   if (use_libgav1_parser) {
-     sources += [

diff --git a/chromium-121-v8-c++20.patch b/chromium-121-v8-c++20.patch
deleted file mode 100644
index 3b3bb50..0000000
--- a/chromium-121-v8-c++20.patch
+++ /dev/null
@@ -1,743 +0,0 @@
-commit 940af9f2c87b436559b97c53763aa9eaaf1254eb
-Author: Jeremy Roman <jbroman@chromium.org>
-Date:   Wed Nov 15 16:24:54 2023 +0000
-
-    Use C++20 features to simplify blink::NativeValueTraitsBase.
-    
-    These allow some of the metaprogramming bits to be simplified a little.
-    
-    Change-Id: I052b4397586d21348401616e1792afdb9662f975
-    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5030335
-    Reviewed-by: Yuki Shiino <yukishiino@chromium.org>
-    Commit-Queue: Jeremy Roman <jbroman@chromium.org>
-    Cr-Commit-Position: refs/heads/main@{#1224978}
-
-diff --git a/third_party/blink/renderer/bindings/core/v8/native_value_traits.h b/third_party/blink/renderer/bindings/core/v8/native_value_traits.h
-index 7fc91d14acc71..1e5a0790df6da 100644
---- a/third_party/blink/renderer/bindings/core/v8/native_value_traits.h
-+++ b/third_party/blink/renderer/bindings/core/v8/native_value_traits.h
-@@ -5,6 +5,7 @@
- #ifndef THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_NATIVE_VALUE_TRAITS_H_
- #define THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_NATIVE_VALUE_TRAITS_H_
- 
-+#include <concepts>
- #include <type_traits>
- 
- #include "third_party/blink/renderer/bindings/core/v8/idl_types_base.h"
-@@ -30,7 +31,7 @@ class ExceptionState;
- //     return toInt32(isolate, value, exceptionState, NormalConversion);
- //   }
- // }
--template <typename T, typename SFINAEHelper = void>
-+template <typename T>
- struct NativeValueTraits;
- 
- // This declaration serves only as a blueprint for specializations: the
-@@ -45,22 +46,15 @@ struct NativeValueTraits;
- 
- namespace bindings {
- 
--template <typename T, typename = void>
--struct NativeValueTraitsHasIsNull : std::false_type {};
--
- template <typename T>
--struct NativeValueTraitsHasIsNull<
--    T,
--    std::void_t<decltype(std::declval<T>().IsNull())>> : std::true_type {};
-+struct ImplTypeFor {
-+  using type = T;
-+};
- 
- template <typename T>
--struct NativeValueTraitsHasNullValue {
--  // true if |T| supports IDL null value.
--  static constexpr bool value =
--      // ScriptValue, String, and union types have IsNull member function.
--      bindings::NativeValueTraitsHasIsNull<T>::value ||
--      // Pointer types have nullptr as IDL null value.
--      std::is_pointer<T>::value;
-+  requires std::derived_from<T, IDLBase>
-+struct ImplTypeFor<T> {
-+  using type = typename T::ImplType;
- };
- 
- }  // namespace bindings
-@@ -78,37 +72,17 @@ struct NativeValueTraitsHasNullValue {
- // If present, |NullValue()| will be used when converting from the nullable type
- // T?, and should be used if the impl type has an existing "null" state. If not
- // present, WTF::Optional will be used to wrap the type.
--template <typename T, typename SFINAEHelper = void>
--struct NativeValueTraitsBase {
--  STATIC_ONLY(NativeValueTraitsBase);
--
--  using ImplType = T;
--
--  static constexpr bool has_null_value =
--      bindings::NativeValueTraitsHasNullValue<ImplType>::value;
--
--  template <typename... ExtraArgs>
--  static decltype(auto) ArgumentValue(v8::Isolate* isolate,
--                                      int argument_index,
--                                      v8::Local<v8::Value> value,
--                                      ExceptionState& exception_state,
--                                      ExtraArgs... extra_args) {
--    return NativeValueTraits<std::remove_pointer_t<T>>::NativeValue(
--        isolate, value, exception_state,
--        std::forward<ExtraArgs>(extra_args)...);
--  }
--};
--
- template <typename T>
--struct NativeValueTraitsBase<
--    T,
--    std::enable_if_t<std::is_base_of<IDLBase, T>::value>> {
-+struct NativeValueTraitsBase {
-   STATIC_ONLY(NativeValueTraitsBase);
- 
--  using ImplType = typename T::ImplType;
-+  using ImplType = bindings::ImplTypeFor<T>::type;
- 
-+  // Pointer types have nullptr as IDL null value.
-+  // ScriptValue, String, and union types have IsNull member function.
-   static constexpr bool has_null_value =
--      bindings::NativeValueTraitsHasNullValue<ImplType>::value;
-+      std::is_pointer_v<ImplType> ||
-+      requires(ImplType value) { value.IsNull(); };
- 
-   template <typename... ExtraArgs>
-   static decltype(auto) ArgumentValue(v8::Isolate* isolate,
-diff --git a/third_party/blink/renderer/bindings/core/v8/native_value_traits_buffer_sources.cc b/third_party/blink/renderer/bindings/core/v8/native_value_traits_buffer_sources.cc
-index 508ea6d8eea48..18de71d84023f 100644
---- a/third_party/blink/renderer/bindings/core/v8/native_value_traits_buffer_sources.cc
-+++ b/third_party/blink/renderer/bindings/core/v8/native_value_traits_buffer_sources.cc
-@@ -7,6 +7,7 @@
- #include "third_party/blink/renderer/core/core_export.h"
- #include "third_party/blink/renderer/core/execution_context/execution_context.h"
- #include "third_party/blink/renderer/core/frame/web_feature.h"
-+#include "third_party/blink/renderer/core/typed_arrays/flexible_array_buffer_view.h"
- #include "third_party/blink/renderer/core/typed_arrays/typed_flexible_array_buffer_view.h"
- 
- namespace blink {
-@@ -698,12 +699,11 @@ DOMArrayBufferBase* NativeValueTraits<
- // ArrayBufferView
- 
- template <typename T>
--NotShared<T> NativeValueTraits<
--    NotShared<T>,
--    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
--    NativeValue(v8::Isolate* isolate,
--                v8::Local<v8::Value> value,
--                ExceptionState& exception_state) {
-+  requires std::derived_from<T, DOMArrayBufferView>
-+NotShared<T> NativeValueTraits<NotShared<T>>::NativeValue(
-+    v8::Isolate* isolate,
-+    v8::Local<v8::Value> value,
-+    ExceptionState& exception_state) {
-   return NativeValueImpl<
-       RecipeTrait<NotShared<T>>, ToDOMViewType<T, kNotShared>,
-       Nullablity::kIsNotNullable, BufferSizeCheck::kCheck,
-@@ -712,13 +712,12 @@ NotShared<T> NativeValueTraits<
- }
- 
- template <typename T>
--NotShared<T> NativeValueTraits<
--    NotShared<T>,
--    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
--    ArgumentValue(v8::Isolate* isolate,
--                  int argument_index,
--                  v8::Local<v8::Value> value,
--                  ExceptionState& exception_state) {
-+  requires std::derived_from<T, DOMArrayBufferView>
-+NotShared<T> NativeValueTraits<NotShared<T>>::ArgumentValue(
-+    v8::Isolate* isolate,
-+    int argument_index,
-+    v8::Local<v8::Value> value,
-+    ExceptionState& exception_state) {
-   return ArgumentValueImpl<
-       RecipeTrait<NotShared<T>>, ToDOMViewType<T, kNotShared>,
-       Nullablity::kIsNotNullable, BufferSizeCheck::kCheck,
-@@ -729,12 +728,11 @@ NotShared<T> NativeValueTraits<
- // [AllowShared] ArrayBufferView
- 
- template <typename T>
--MaybeShared<T> NativeValueTraits<
--    MaybeShared<T>,
--    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
--    NativeValue(v8::Isolate* isolate,
--                v8::Local<v8::Value> value,
--                ExceptionState& exception_state) {
-+  requires std::derived_from<T, DOMArrayBufferView>
-+MaybeShared<T> NativeValueTraits<MaybeShared<T>>::NativeValue(
-+    v8::Isolate* isolate,
-+    v8::Local<v8::Value> value,
-+    ExceptionState& exception_state) {
-   return NativeValueImpl<RecipeTrait<MaybeShared<T>>,
-                          ToDOMViewType<T, kMaybeShared>,
-                          Nullablity::kIsNotNullable, BufferSizeCheck::kCheck,
-@@ -743,13 +741,12 @@ MaybeShared<T> NativeValueTraits<
- }
- 
- template <typename T>
--MaybeShared<T> NativeValueTraits<
--    MaybeShared<T>,
--    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
--    ArgumentValue(v8::Isolate* isolate,
--                  int argument_index,
--                  v8::Local<v8::Value> value,
--                  ExceptionState& exception_state) {
-+  requires std::derived_from<T, DOMArrayBufferView>
-+MaybeShared<T> NativeValueTraits<MaybeShared<T>>::ArgumentValue(
-+    v8::Isolate* isolate,
-+    int argument_index,
-+    v8::Local<v8::Value> value,
-+    ExceptionState& exception_state) {
-   return ArgumentValueImpl<RecipeTrait<MaybeShared<T>>,
-                            ToDOMViewType<T, kMaybeShared>,
-                            Nullablity::kIsNotNullable, BufferSizeCheck::kCheck,
-@@ -760,12 +757,12 @@ MaybeShared<T> NativeValueTraits<
- // [AllowShared, BufferSourceTypeNoSizeLimit] ArrayBufferView
- 
- template <typename T>
--MaybeShared<T> NativeValueTraits<
--    IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>,
--    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
--    NativeValue(v8::Isolate* isolate,
--                v8::Local<v8::Value> value,
--                ExceptionState& exception_state) {
-+  requires std::derived_from<T, DOMArrayBufferView>
-+MaybeShared<T>
-+NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>::NativeValue(
-+    v8::Isolate* isolate,
-+    v8::Local<v8::Value> value,
-+    ExceptionState& exception_state) {
-   return NativeValueImpl<
-       RecipeTrait<MaybeShared<T>>, ToDOMViewType<T, kMaybeShared>,
-       Nullablity::kIsNotNullable, BufferSizeCheck::kDoNotCheck,
-@@ -774,13 +771,12 @@ MaybeShared<T> NativeValueTraits<
- }
- 
- template <typename T>
--MaybeShared<T> NativeValueTraits<
--    IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>,
--    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
--    ArgumentValue(v8::Isolate* isolate,
--                  int argument_index,
--                  v8::Local<v8::Value> value,
--                  ExceptionState& exception_state) {
-+  requires std::derived_from<T, DOMArrayBufferView>
-+MaybeShared<T> NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<
-+    MaybeShared<T>>>::ArgumentValue(v8::Isolate* isolate,
-+                                    int argument_index,
-+                                    v8::Local<v8::Value> value,
-+                                    ExceptionState& exception_state) {
-   return ArgumentValueImpl<
-       RecipeTrait<MaybeShared<T>>, ToDOMViewType<T, kMaybeShared>,
-       Nullablity::kIsNotNullable, BufferSizeCheck::kDoNotCheck,
-@@ -791,12 +787,11 @@ MaybeShared<T> NativeValueTraits<
- // Nullable ArrayBufferView
- 
- template <typename T>
--NotShared<T> NativeValueTraits<
--    IDLNullable<NotShared<T>>,
--    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
--    NativeValue(v8::Isolate* isolate,
--                v8::Local<v8::Value> value,
--                ExceptionState& exception_state) {
-+  requires std::derived_from<T, DOMArrayBufferView>
-+NotShared<T> NativeValueTraits<IDLNullable<NotShared<T>>>::NativeValue(
-+    v8::Isolate* isolate,
-+    v8::Local<v8::Value> value,
-+    ExceptionState& exception_state) {
-   return NativeValueImpl<
-       RecipeTrait<NotShared<T>>, ToDOMViewType<T, kNotShared>,
-       Nullablity::kIsNullable, BufferSizeCheck::kCheck,
-@@ -805,13 +800,12 @@ NotShared<T> NativeValueTraits<
- }
- 
- template <typename T>
--NotShared<T> NativeValueTraits<
--    IDLNullable<NotShared<T>>,
--    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
--    ArgumentValue(v8::Isolate* isolate,
--                  int argument_index,
--                  v8::Local<v8::Value> value,
--                  ExceptionState& exception_state) {
-+  requires std::derived_from<T, DOMArrayBufferView>
-+NotShared<T> NativeValueTraits<IDLNullable<NotShared<T>>>::ArgumentValue(
-+    v8::Isolate* isolate,
-+    int argument_index,
-+    v8::Local<v8::Value> value,
-+    ExceptionState& exception_state) {
-   return ArgumentValueImpl<
-       RecipeTrait<NotShared<T>>, ToDOMViewType<T, kNotShared>,
-       Nullablity::kIsNullable, BufferSizeCheck::kCheck,
-@@ -822,12 +816,11 @@ NotShared<T> NativeValueTraits<
- // Nullable [AllowShared] ArrayBufferView
- 
- template <typename T>
--MaybeShared<T> NativeValueTraits<
--    IDLNullable<MaybeShared<T>>,
--    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
--    NativeValue(v8::Isolate* isolate,
--                v8::Local<v8::Value> value,
--                ExceptionState& exception_state) {
-+  requires std::derived_from<T, DOMArrayBufferView>
-+MaybeShared<T> NativeValueTraits<IDLNullable<MaybeShared<T>>>::NativeValue(
-+    v8::Isolate* isolate,
-+    v8::Local<v8::Value> value,
-+    ExceptionState& exception_state) {
-   return NativeValueImpl<RecipeTrait<MaybeShared<T>>,
-                          ToDOMViewType<T, kMaybeShared>,
-                          Nullablity::kIsNullable, BufferSizeCheck::kCheck,
-@@ -836,13 +829,12 @@ MaybeShared<T> NativeValueTraits<
- }
- 
- template <typename T>
--MaybeShared<T> NativeValueTraits<
--    IDLNullable<MaybeShared<T>>,
--    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
--    ArgumentValue(v8::Isolate* isolate,
--                  int argument_index,
--                  v8::Local<v8::Value> value,
--                  ExceptionState& exception_state) {
-+  requires std::derived_from<T, DOMArrayBufferView>
-+MaybeShared<T> NativeValueTraits<IDLNullable<MaybeShared<T>>>::ArgumentValue(
-+    v8::Isolate* isolate,
-+    int argument_index,
-+    v8::Local<v8::Value> value,
-+    ExceptionState& exception_state) {
-   return ArgumentValueImpl<RecipeTrait<MaybeShared<T>>,
-                            ToDOMViewType<T, kMaybeShared>,
-                            Nullablity::kIsNullable, BufferSizeCheck::kCheck,
-@@ -853,9 +845,9 @@ MaybeShared<T> NativeValueTraits<
- // Nullable [AllowShared, BufferSourceTypeNoSizeLimit] ArrayBufferView
- 
- template <typename T>
--MaybeShared<T> NativeValueTraits<
--    IDLNullable<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>,
--    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
-+  requires std::derived_from<T, DOMArrayBufferView>
-+MaybeShared<T>
-+NativeValueTraits<IDLNullable<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>>::
-     ArgumentValue(v8::Isolate* isolate,
-                   int argument_index,
-                   v8::Local<v8::Value> value,
-@@ -870,13 +862,11 @@ MaybeShared<T> NativeValueTraits<
- // [AllowShared, FlexibleArrayBufferView] ArrayBufferView
- 
- template <typename T>
--T NativeValueTraits<T,
--                    typename std::enable_if_t<
--                        std::is_base_of<FlexibleArrayBufferView, T>::value>>::
--    ArgumentValue(v8::Isolate* isolate,
--                  int argument_index,
--                  v8::Local<v8::Value> value,
--                  ExceptionState& exception_state) {
-+  requires std::derived_from<T, FlexibleArrayBufferView>
-+T NativeValueTraits<T>::ArgumentValue(v8::Isolate* isolate,
-+                                      int argument_index,
-+                                      v8::Local<v8::Value> value,
-+                                      ExceptionState& exception_state) {
-   return ArgumentValueImpl<RecipeTrait<T>, ToFlexibleArrayBufferView,
-                            Nullablity::kIsNotNullable, BufferSizeCheck::kCheck,
-                            ResizableAllowance::kDisallowResizable,
-@@ -888,13 +878,12 @@ T NativeValueTraits<T,
- // ArrayBufferView
- 
- template <typename T>
--T NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<T>,
--                    typename std::enable_if_t<
--                        std::is_base_of<FlexibleArrayBufferView, T>::value>>::
--    ArgumentValue(v8::Isolate* isolate,
--                  int argument_index,
--                  v8::Local<v8::Value> value,
--                  ExceptionState& exception_state) {
-+  requires std::derived_from<T, FlexibleArrayBufferView>
-+T NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<T>>::ArgumentValue(
-+    v8::Isolate* isolate,
-+    int argument_index,
-+    v8::Local<v8::Value> value,
-+    ExceptionState& exception_state) {
-   return ArgumentValueImpl<
-       RecipeTrait<T>, ToFlexibleArrayBufferView, Nullablity::kIsNotNullable,
-       BufferSizeCheck::kDoNotCheck, ResizableAllowance::kDisallowResizable,
-@@ -905,13 +894,12 @@ T NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<T>,
- // Nullable [AllowShared, FlexibleArrayBufferView] ArrayBufferView
- 
- template <typename T>
--T NativeValueTraits<IDLNullable<T>,
--                    typename std::enable_if_t<
--                        std::is_base_of<FlexibleArrayBufferView, T>::value>>::
--    ArgumentValue(v8::Isolate* isolate,
--                  int argument_index,
--                  v8::Local<v8::Value> value,
--                  ExceptionState& exception_state) {
-+  requires std::derived_from<T, FlexibleArrayBufferView>
-+T NativeValueTraits<IDLNullable<T>>::ArgumentValue(
-+    v8::Isolate* isolate,
-+    int argument_index,
-+    v8::Local<v8::Value> value,
-+    ExceptionState& exception_state) {
-   return ArgumentValueImpl<RecipeTrait<T>, ToFlexibleArrayBufferView,
-                            Nullablity::kIsNullable, BufferSizeCheck::kCheck,
-                            ResizableAllowance::kDisallowResizable,
-diff --git a/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h b/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h
-index 899929dcf49f9..5011503dcf1c0 100644
---- a/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h
-+++ b/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h
-@@ -5,6 +5,9 @@
- #ifndef THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_NATIVE_VALUE_TRAITS_IMPL_H_
- #define THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_NATIVE_VALUE_TRAITS_IMPL_H_
- 
-+#include <concepts>
-+#include <type_traits>
-+
- #include "third_party/abseil-cpp/absl/types/optional.h"
- #include "third_party/blink/renderer/bindings/core/v8/idl_types.h"
- #include "third_party/blink/renderer/bindings/core/v8/native_value_traits.h"
-@@ -715,9 +718,8 @@ struct CORE_EXPORT NativeValueTraits<
- };
- 
- template <typename T>
--struct NativeValueTraits<
--    T,
--    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>> {
-+  requires std::derived_from<T, DOMArrayBufferView>
-+struct NativeValueTraits<T> {
-   // NotShared<T> or MaybeShared<T> should be used instead.
-   static T* NativeValue(v8::Isolate* isolate,
-                         v8::Local<v8::Value> value,
-@@ -729,9 +731,8 @@ struct NativeValueTraits<
- };
- 
- template <typename T>
--struct NativeValueTraits<
--    IDLNullable<T>,
--    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>> {
-+  requires std::derived_from<T, DOMArrayBufferView>
-+struct NativeValueTraits<IDLNullable<T>> {
-   // NotShared<T> or MaybeShared<T> should be used instead.
-   static T* NativeValue(v8::Isolate* isolate,
-                         v8::Local<v8::Value> value,
-@@ -743,9 +744,8 @@ struct NativeValueTraits<
- };
- 
- template <typename T>
--struct NativeValueTraits<
--    NotShared<T>,
--    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>
-+  requires std::derived_from<T, DOMArrayBufferView>
-+struct NativeValueTraits<NotShared<T>>
-     : public NativeValueTraitsBase<NotShared<T>> {
-   static NotShared<T> NativeValue(v8::Isolate* isolate,
-                                   v8::Local<v8::Value> value,
-@@ -758,9 +758,8 @@ struct NativeValueTraits<
- };
- 
- template <typename T>
--struct NativeValueTraits<
--    IDLNullable<NotShared<T>>,
--    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>
-+  requires std::derived_from<T, DOMArrayBufferView>
-+struct NativeValueTraits<IDLNullable<NotShared<T>>>
-     : public NativeValueTraitsBase<NotShared<T>> {
-   static NotShared<T> NativeValue(v8::Isolate* isolate,
-                                   v8::Local<v8::Value> value,
-@@ -773,9 +772,8 @@ struct NativeValueTraits<
- };
- 
- template <typename T>
--struct NativeValueTraits<
--    MaybeShared<T>,
--    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>
-+  requires std::derived_from<T, DOMArrayBufferView>
-+struct NativeValueTraits<MaybeShared<T>>
-     : public NativeValueTraitsBase<MaybeShared<T>> {
-   static MaybeShared<T> NativeValue(v8::Isolate* isolate,
-                                     v8::Local<v8::Value> value,
-@@ -788,9 +786,8 @@ struct NativeValueTraits<
- };
- 
- template <typename T>
--struct NativeValueTraits<
--    IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>,
--    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>
-+  requires std::derived_from<T, DOMArrayBufferView>
-+struct NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>
-     : public NativeValueTraitsBase<MaybeShared<T>> {
-   // FlexibleArrayBufferView uses this in its implementation, so we cannot
-   // delete it.
-@@ -805,9 +802,8 @@ struct NativeValueTraits<
- };
- 
- template <typename T>
--struct NativeValueTraits<
--    IDLNullable<MaybeShared<T>>,
--    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>
-+  requires std::derived_from<T, DOMArrayBufferView>
-+struct NativeValueTraits<IDLNullable<MaybeShared<T>>>
-     : public NativeValueTraitsBase<MaybeShared<T>> {
-   static MaybeShared<T> NativeValue(v8::Isolate* isolate,
-                                     v8::Local<v8::Value> value,
-@@ -820,9 +816,9 @@ struct NativeValueTraits<
- };
- 
- template <typename T>
-+  requires std::derived_from<T, DOMArrayBufferView>
- struct NativeValueTraits<
--    IDLNullable<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>,
--    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>
-+    IDLNullable<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>>
-     : public NativeValueTraitsBase<MaybeShared<T>> {
-   // BufferSourceTypeNoSizeLimit must be used only as arguments.
-   static MaybeShared<T> NativeValue(v8::Isolate* isolate,
-@@ -836,11 +832,8 @@ struct NativeValueTraits<
- };
- 
- template <typename T>
--struct NativeValueTraits<
--    T,
--    typename std::enable_if_t<
--        std::is_base_of<FlexibleArrayBufferView, T>::value>>
--    : public NativeValueTraitsBase<T> {
-+  requires std::derived_from<T, FlexibleArrayBufferView>
-+struct NativeValueTraits<T> : public NativeValueTraitsBase<T> {
-   // FlexibleArrayBufferView must be used only as arguments.
-   static T NativeValue(v8::Isolate* isolate,
-                        v8::Local<v8::Value> value,
-@@ -853,10 +846,8 @@ struct NativeValueTraits<
- };
- 
- template <typename T>
--struct NativeValueTraits<
--    IDLBufferSourceTypeNoSizeLimit<T>,
--    typename std::enable_if_t<
--        std::is_base_of<FlexibleArrayBufferView, T>::value>>
-+  requires std::derived_from<T, FlexibleArrayBufferView>
-+struct NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<T>>
-     : public NativeValueTraitsBase<T> {
-   // BufferSourceTypeNoSizeLimit and FlexibleArrayBufferView must be used only
-   // as arguments.
-@@ -871,11 +862,8 @@ struct NativeValueTraits<
- };
- 
- template <typename T>
--struct NativeValueTraits<
--    IDLNullable<T>,
--    typename std::enable_if_t<
--        std::is_base_of<FlexibleArrayBufferView, T>::value>>
--    : public NativeValueTraitsBase<T> {
-+  requires std::derived_from<T, FlexibleArrayBufferView>
-+struct NativeValueTraits<IDLNullable<T>> : public NativeValueTraitsBase<T> {
-   // FlexibleArrayBufferView must be used only as arguments.
-   static T NativeValue(v8::Isolate* isolate,
-                        v8::Local<v8::Value> value,
-@@ -1134,9 +1122,8 @@ NativeValueTraits<IDLSequence<T>>::NativeValue(
- }
- 
- template <typename T>
--struct NativeValueTraits<IDLNullable<IDLSequence<T>>,
--                         typename std::enable_if_t<
--                             NativeValueTraits<IDLSequence<T>>::has_null_value>>
-+  requires NativeValueTraits<IDLSequence<T>>::has_null_value
-+struct NativeValueTraits<IDLNullable<IDLSequence<T>>>
-     : public NativeValueTraitsBase<HeapVector<AddMemberIfNeeded<T>>*> {
-   using ImplType = typename NativeValueTraits<IDLSequence<T>>::ImplType*;
- 
-@@ -1203,9 +1190,8 @@ struct NativeValueTraits<IDLArray<T>>
-     : public NativeValueTraits<IDLSequence<T>> {};
- 
- template <typename T>
--struct NativeValueTraits<IDLNullable<IDLArray<T>>,
--                         typename std::enable_if_t<
--                             NativeValueTraits<IDLSequence<T>>::has_null_value>>
-+  requires NativeValueTraits<IDLSequence<T>>::has_null_value
-+struct NativeValueTraits<IDLNullable<IDLArray<T>>>
-     : public NativeValueTraits<IDLNullable<IDLSequence<T>>> {};
- 
- // Record types
-@@ -1335,10 +1321,8 @@ struct NativeValueTraits<IDLRecord<K, V>>
- 
- // Callback function types
- template <typename T>
--struct NativeValueTraits<
--    T,
--    typename std::enable_if_t<std::is_base_of<CallbackFunctionBase, T>::value>>
--    : public NativeValueTraitsBase<T*> {
-+  requires std::derived_from<T, CallbackFunctionBase>
-+struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> {
-   static T* NativeValue(v8::Isolate* isolate,
-                         v8::Local<v8::Value> value,
-                         ExceptionState& exception_state) {
-@@ -1361,9 +1345,8 @@ struct NativeValueTraits<
- };
- 
- template <typename T>
--struct NativeValueTraits<
--    IDLNullable<T>,
--    typename std::enable_if_t<std::is_base_of<CallbackFunctionBase, T>::value>>
-+  requires std::derived_from<T, CallbackFunctionBase>
-+struct NativeValueTraits<IDLNullable<T>>
-     : public NativeValueTraitsBase<IDLNullable<T>> {
-   static T* NativeValue(v8::Isolate* isolate,
-                         v8::Local<v8::Value> value,
-@@ -1392,10 +1375,8 @@ struct NativeValueTraits<
- 
- // Callback interface types
- template <typename T>
--struct NativeValueTraits<
--    T,
--    typename std::enable_if_t<std::is_base_of<CallbackInterfaceBase, T>::value>>
--    : public NativeValueTraitsBase<T*> {
-+  requires std::derived_from<T, CallbackInterfaceBase>
-+struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> {
-   static T* NativeValue(v8::Isolate* isolate,
-                         v8::Local<v8::Value> value,
-                         ExceptionState& exception_state) {
-@@ -1418,9 +1399,8 @@ struct NativeValueTraits<
- };
- 
- template <typename T>
--struct NativeValueTraits<
--    IDLNullable<T>,
--    typename std::enable_if_t<std::is_base_of<CallbackInterfaceBase, T>::value>>
-+  requires std::derived_from<T, CallbackInterfaceBase>
-+struct NativeValueTraits<IDLNullable<T>>
-     : public NativeValueTraitsBase<IDLNullable<T>> {
-   static T* NativeValue(v8::Isolate* isolate,
-                         v8::Local<v8::Value> value,
-@@ -1449,11 +1429,8 @@ struct NativeValueTraits<
- 
- // Dictionary types
- template <typename T>
--struct NativeValueTraits<
--    T,
--    typename std::enable_if_t<
--        std::is_base_of<bindings::DictionaryBase, T>::value>>
--    : public NativeValueTraitsBase<T*> {
-+  requires std::derived_from<T, bindings::DictionaryBase>
-+struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> {
-   static T* NativeValue(v8::Isolate* isolate,
-                         v8::Local<v8::Value> value,
-                         ExceptionState& exception_state) {
-@@ -1464,14 +1441,11 @@ struct NativeValueTraits<
- // We don't support nullable dictionary types in general since it's quite
- // confusing and often misused.
- template <typename T>
--struct NativeValueTraits<
--    IDLNullable<T>,
--    typename std::enable_if_t<
--        std::is_base_of<bindings::DictionaryBase, T>::value &&
--        (std::is_same<T, GPUColorTargetState>::value ||
--         std::is_same<T, GPURenderPassColorAttachment>::value ||
--         std::is_same<T, GPUVertexBufferLayout>::value)>>
--    : public NativeValueTraitsBase<T*> {
-+  requires std::derived_from<T, bindings::DictionaryBase> &&
-+           (std::same_as<T, GPUColorTargetState> ||
-+            std::same_as<T, GPURenderPassColorAttachment> ||
-+            std::same_as<T, GPUVertexBufferLayout>)
-+struct NativeValueTraits<IDLNullable<T>> : public NativeValueTraitsBase<T*> {
-   static T* NativeValue(v8::Isolate* isolate,
-                         v8::Local<v8::Value> value,
-                         ExceptionState& exception_state) {
-@@ -1483,11 +1457,8 @@ struct NativeValueTraits<
- 
- // Enumeration types
- template <typename T>
--struct NativeValueTraits<
--    T,
--    typename std::enable_if_t<
--        std::is_base_of<bindings::EnumerationBase, T>::value>>
--    : public NativeValueTraitsBase<T> {
-+  requires std::derived_from<T, bindings::EnumerationBase>
-+struct NativeValueTraits<T> : public NativeValueTraitsBase<T> {
-   static T NativeValue(v8::Isolate* isolate,
-                        v8::Local<v8::Value> value,
-                        ExceptionState& exception_state) {
-@@ -1497,10 +1468,8 @@ struct NativeValueTraits<
- 
- // Interface types
- template <typename T>
--struct NativeValueTraits<
--    T,
--    typename std::enable_if_t<std::is_base_of<ScriptWrappable, T>::value>>
--    : public NativeValueTraitsBase<T*> {
-+  requires std::derived_from<T, ScriptWrappable>
-+struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> {
-   static inline T* NativeValue(v8::Isolate* isolate,
-                                v8::Local<v8::Value> value,
-                                ExceptionState& exception_state) {
-@@ -1528,9 +1497,8 @@ struct NativeValueTraits<
- };
- 
- template <typename T>
--struct NativeValueTraits<
--    IDLNullable<T>,
--    typename std::enable_if_t<std::is_base_of<ScriptWrappable, T>::value>>
-+  requires std::derived_from<T, ScriptWrappable>
-+struct NativeValueTraits<IDLNullable<T>>
-     : public NativeValueTraitsBase<IDLNullable<T>> {
-   static inline T* NativeValue(v8::Isolate* isolate,
-                                v8::Local<v8::Value> value,
-@@ -1565,10 +1533,8 @@ struct NativeValueTraits<
- };
- 
- template <typename T>
--struct NativeValueTraits<
--    T,
--    typename std::enable_if_t<std::is_base_of<bindings::UnionBase, T>::value>>
--    : public NativeValueTraitsBase<T*> {
-+  requires std::derived_from<T, bindings::UnionBase>
-+struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> {
-   static T* NativeValue(v8::Isolate* isolate,
-                         v8::Local<v8::Value> value,
-                         ExceptionState& exception_state) {
-@@ -1584,10 +1550,8 @@ struct NativeValueTraits<
- };
- 
- template <typename T>
--struct NativeValueTraits<
--    IDLNullable<T>,
--    typename std::enable_if_t<std::is_base_of<bindings::UnionBase, T>::value>>
--    : public NativeValueTraitsBase<T*> {
-+  requires std::derived_from<T, bindings::UnionBase>
-+struct NativeValueTraits<IDLNullable<T>> : public NativeValueTraitsBase<T*> {
-   static T* NativeValue(v8::Isolate* isolate,
-                         v8::Local<v8::Value> value,
-                         ExceptionState& exception_state) {
-@@ -1608,9 +1572,8 @@ struct NativeValueTraits<
- 
- // Nullable types
- template <typename InnerType>
--struct NativeValueTraits<
--    IDLNullable<InnerType>,
--    typename std::enable_if_t<!NativeValueTraits<InnerType>::has_null_value>>
-+  requires(!NativeValueTraits<InnerType>::has_null_value)
-+struct NativeValueTraits<IDLNullable<InnerType>>
-     : public NativeValueTraitsBase<IDLNullable<InnerType>> {
-   // https://webidl.spec.whatwg.org/#es-nullable-type
-   using ImplType =
-@@ -1642,9 +1605,8 @@ struct NativeValueTraits<IDLNullable<IDLNullable<T>>>;
- 
- // Optional types
- template <typename T>
--struct NativeValueTraits<IDLOptional<T>,
--                         typename std::enable_if_t<std::is_arithmetic<
--                             typename NativeValueTraits<T>::ImplType>::value>>
-+  requires std::is_arithmetic_v<typename NativeValueTraits<T>::ImplType>
-+struct NativeValueTraits<IDLOptional<T>>
-     : public NativeValueTraitsBase<typename NativeValueTraits<T>::ImplType> {
-   using ImplType = typename NativeValueTraits<T>::ImplType;
- 
-@@ -1666,9 +1628,8 @@ struct NativeValueTraits<IDLOptional<T>,
- };
- 
- template <typename T>
--struct NativeValueTraits<IDLOptional<T>,
--                         typename std::enable_if_t<std::is_pointer<
--                             typename NativeValueTraits<T>::ImplType>::value>>
-+  requires std::is_pointer_v<typename NativeValueTraits<T>::ImplType>
-+struct NativeValueTraits<IDLOptional<T>>
-     : public NativeValueTraitsBase<typename NativeValueTraits<T>::ImplType> {
-   using ImplType = typename NativeValueTraits<T>::ImplType;
- 

diff --git a/chromium-122-clang16-buildflags.patch b/chromium-122-clang16-buildflags.patch
new file mode 100644
index 0000000..6725f3b
--- /dev/null
+++ b/chromium-122-clang16-buildflags.patch
@@ -0,0 +1,20 @@
+diff -up chromium-122.0.6261.39/build/config/compiler/BUILD.gn.me chromium-122.0.6261.39/build/config/compiler/BUILD.gn
+--- chromium-122.0.6261.39/build/config/compiler/BUILD.gn.me	2024-02-19 21:58:15.835818177 +0100
++++ chromium-122.0.6261.39/build/config/compiler/BUILD.gn	2024-02-19 21:59:11.661880633 +0100
+@@ -1856,15 +1856,12 @@ config("default_warnings") {
+ 
+         # TODO(crbug.com/1494809): Evaluate and possibly enable.
+         "-Wno-vla-extension",
+-
+-        # TODO(https://crbug.com/1490607): Fix and re-enable.
+-        "-Wno-thread-safety-reference-return",
+       ]
+ 
+       if (!is_nacl) {
+         cflags_cc += [
+           # TODO(https://crbug.com/1513724): Fix and re-enable.
+-          "-Wno-c++11-narrowing-const-reference",
++          "-Wno-c++11-narrowing",
+         ]
+       }
+     }

diff --git a/chromium-122-clang16-disable-auto-upgrade-debug-info.patch b/chromium-122-clang16-disable-auto-upgrade-debug-info.patch
new file mode 100644
index 0000000..c830caa
--- /dev/null
+++ b/chromium-122-clang16-disable-auto-upgrade-debug-info.patch
@@ -0,0 +1,12 @@
+diff -up chromium-122.0.6261.29/build/config/compiler/BUILD.gn.me chromium-122.0.6261.29/build/config/compiler/BUILD.gn
+--- chromium-122.0.6261.29/build/config/compiler/BUILD.gn.me	2024-02-12 14:46:52.691992282 +0100
++++ chromium-122.0.6261.29/build/config/compiler/BUILD.gn	2024-02-12 14:48:54.256274068 +0100
+@@ -787,7 +787,7 @@ config("compiler") {
+ 
+       # We only use one version of LLVM within a build so there's no need to
+       # upgrade debug info, which can be expensive since it runs the verifier.
+-      ldflags += [ "-Wl,-mllvm,-disable-auto-upgrade-debug-info" ]
++      ldflags += [ "" ]
+     }
+ 
+     # TODO(https://crbug.com/1211155): investigate why this isn't effective on

diff --git a/chromium-122-constexpr.patch b/chromium-122-constexpr.patch
new file mode 100644
index 0000000..282066c
--- /dev/null
+++ b/chromium-122-constexpr.patch
@@ -0,0 +1,45 @@
+diff -up chromium-122.0.6261.29/components/autofill/core/common/unique_ids.h.me chromium-122.0.6261.29/components/autofill/core/common/unique_ids.h
+--- chromium-122.0.6261.29/components/autofill/core/common/unique_ids.h.me	2024-02-13 13:07:24.982184485 +0100
++++ chromium-122.0.6261.29/components/autofill/core/common/unique_ids.h	2024-02-13 13:07:45.510551589 +0100
+@@ -137,7 +137,7 @@ struct GlobalId {
+ 
+   friend constexpr auto operator<=>(const GlobalId<RendererId>& lhs,
+                                     const GlobalId<RendererId>& rhs) = default;
+-  friend constexpr bool operator==(const GlobalId<RendererId>& lhs,
++  friend bool operator==(const GlobalId<RendererId>& lhs,
+                                    const GlobalId<RendererId>& rhs) = default;
+ };
+ 
+diff -up chromium-122.0.6261.29/base/types/strong_alias.h.me chromium-122.0.6261.29/base/types/strong_alias.h
+--- chromium-122.0.6261.29/base/types/strong_alias.h.me	2024-02-13 14:13:20.311374288 +0100
++++ chromium-122.0.6261.29/base/types/strong_alias.h	2024-02-13 12:30:38.596913951 +0100
+@@ -110,7 +110,7 @@ class StrongAlias {
+   // a `StrongAlias<W>`.
+   friend constexpr auto operator<=>(const StrongAlias& lhs,
+                                     const StrongAlias& rhs) = default;
+-  friend constexpr bool operator==(const StrongAlias& lhs,
++  friend bool operator==(const StrongAlias& lhs,
+                                    const StrongAlias& rhs) = default;
+ 
+   // Hasher to use in std::unordered_map, std::unordered_set, etc.
+diff -up chromium-122.0.6261.29/components/performance_manager/resource_attribution/query_params.h.constexpr chromium-122.0.6261.29/components/performance_manager/resource_attribution/query_params.h
+--- chromium-122.0.6261.29/components/performance_manager/resource_attribution/query_params.h.constexpr	2024-02-07 19:49:31.000000000 +0100
++++ chromium-122.0.6261.29/components/performance_manager/resource_attribution/query_params.h	2024-02-13 11:12:52.913338699 +0100
+@@ -29,7 +29,7 @@ class ContextCollection {
+   ContextCollection(const ContextCollection& other);
+   ContextCollection& operator=(const ContextCollection& other);
+ 
+-  friend constexpr bool operator==(const ContextCollection&,
++  friend bool operator==(const ContextCollection&,
+                                    const ContextCollection&) = default;
+ 
+   // Adds `context` to the collection.
+@@ -67,7 +67,7 @@ struct QueryParams {
+   QueryParams(const QueryParams& other);
+   QueryParams& operator=(const QueryParams& other);
+ 
+-  friend constexpr bool operator==(const QueryParams&,
++  friend bool operator==(const QueryParams&,
+                                    const QueryParams&) = default;
+ 
+   // Resource types to measure.

diff --git a/chromium-122-disable-FFmpegAllowLists.patch b/chromium-122-disable-FFmpegAllowLists.patch
new file mode 100644
index 0000000..c3fb606
--- /dev/null
+++ b/chromium-122-disable-FFmpegAllowLists.patch
@@ -0,0 +1,12 @@
+diff -up chromium-122.0.6261.29/media/base/media_switches.cc.disable-FFmpegAllowLists chromium-122.0.6261.29/media/base/media_switches.cc
+--- chromium-122.0.6261.29/media/base/media_switches.cc.disable-FFmpegAllowLists	2024-02-12 15:56:50.703196471 +0100
++++ chromium-122.0.6261.29/media/base/media_switches.cc	2024-02-12 17:08:42.266076401 +0100
+@@ -1687,7 +1687,7 @@ BASE_FEATURE(kUseWindowBoundsForPip,
+ // Enables FFmpeg allow lists for supported codecs / containers.
+ BASE_FEATURE(kFFmpegAllowLists,
+              "FFmpegAllowLists",
+-             base::FEATURE_ENABLED_BY_DEFAULT);
++             base::FEATURE_DISABLED_BY_DEFAULT);
+ 
+ // Enables sending MediaLog to the log stream, which is useful for easier
+ // development by ensuring logs can be seen without a remote desktop session.

diff --git a/chromium-122-el8-support-64kpage.patch b/chromium-122-el8-support-64kpage.patch
new file mode 100644
index 0000000..0c8a8ac
--- /dev/null
+++ b/chromium-122-el8-support-64kpage.patch
@@ -0,0 +1,126 @@
+diff -up chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_bucket.h.el8-support-64kpage.patch chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_bucket.h
+--- chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_bucket.h.el8-support-64kpage.patch	2024-01-30 21:24:10.000000000 +0100
++++ chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_bucket.h	2024-02-01 17:20:37.178877448 +0100
+@@ -146,7 +146,13 @@ struct PartitionBucket {
+   // Returns a slot number starting from the beginning of the slot span.
+   PA_ALWAYS_INLINE size_t GetSlotNumber(size_t offset_in_slot_span) const {
+     // See the static assertion for `kReciprocalShift` above.
+-    PA_DCHECK(offset_in_slot_span <= kMaxBucketed);
++    // TODO(casey.smalley@arm.com): triggers on Aarch64/Linux
++    // systems with 64k system pages. Constants need to be
++    // adjusted to prevent different parts of the allocator
++    // from overlapping. For now this will allow 64k pages
++    // to function on Aarch64/Linux systems, albeit not
++    // very efficiently.
++    // PA_DCHECK(offset_in_slot_span <= kMaxBucketed);
+     PA_DCHECK(slot_size <= kMaxBucketed);
+ 
+     const size_t offset_in_slot =
+diff -up chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_page_constants.h.el8-support-64kpage.patch chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_page_constants.h
+--- chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_page_constants.h.el8-support-64kpage.patch	2024-02-01 17:20:37.178877448 +0100
++++ chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_page_constants.h	2024-02-01 17:31:08.500268457 +0100
+@@ -17,10 +17,8 @@ namespace partition_alloc::internal {
+ // PartitionPageSize() is 4 times the OS page size.
+ static constexpr size_t kMaxSlotsPerSlotSpan = 4 * (1 << 14) / kSmallestBucket;
+ #elif (BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX)) && defined(ARCH_CPU_ARM64)
+-// System page size can be 4, 16, or 64 kiB on Linux on arm64. 64 kiB is
+-// currently (kMaxSlotsPerSlotSpanBits == 13) not supported by the code,
+-// so we use the 16 kiB maximum (64 kiB will crash).
+-static constexpr size_t kMaxSlotsPerSlotSpan = 4 * (1 << 14) / kSmallestBucket;
++// System page size can be 4, 16, or 64 kiB on Linux on AArch64.
++static constexpr size_t kMaxSlotsPerSlotSpan = 4 * (1 << 16) / kSmallestBucket;
+ #else
+ // A slot span can "span" multiple PartitionPages, but then its slot size is
+ // larger, so it doesn't have as many slots.
+diff -up chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_page.h.el8-support-64kpage.patch chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_page.h
+--- chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_page.h.el8-support-64kpage.patch	2024-01-30 21:24:10.000000000 +0100
++++ chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_page.h	2024-02-01 17:20:37.178877448 +0100
+@@ -95,26 +95,25 @@ struct SlotSpanMetadata {
+ 
+   // CHECK()ed in AllocNewSlotSpan().
+   // The maximum number of bits needed to cover all currently supported OSes.
+-  static constexpr size_t kMaxSlotsPerSlotSpanBits = 13;
++  static constexpr size_t kMaxSlotsPerSlotSpanBits = 15;
+   static_assert(kMaxSlotsPerSlotSpan < (1 << kMaxSlotsPerSlotSpanBits), "");
+ 
+-  // |marked_full| isn't equivalent to being full. Slot span is marked as full
+-  // iff it isn't on the active slot span list (or any other list).
+-  uint32_t marked_full : 1;
+   // |num_allocated_slots| is 0 for empty or decommitted slot spans, which can
+   // be further differentiated by checking existence of the freelist.
+-  uint32_t num_allocated_slots : kMaxSlotsPerSlotSpanBits;
+-  uint32_t num_unprovisioned_slots : kMaxSlotsPerSlotSpanBits;
++  uint16_t num_allocated_slots : kMaxSlotsPerSlotSpanBits;
++  uint16_t num_unprovisioned_slots : kMaxSlotsPerSlotSpanBits;
++
++  // |marked_full| isn't equivalent to being full. Slot span is marked as full
++  // iff it isn't on the active slot span list (or any other list).
++  bool marked_full : 1;
+ 
+  private:
+-  const uint32_t can_store_raw_size_ : 1;
+-  uint32_t freelist_is_sorted_ : 1;
+-  uint32_t unused1_ : (32 - 1 - 2 * kMaxSlotsPerSlotSpanBits - 1 - 1);
++  const uint8_t can_store_raw_size_ : 1;
++  uint8_t freelist_is_sorted_ : 1;
+   // If |in_empty_cache_|==1, |empty_cache_index| is undefined and mustn't be
+   // used.
+-  uint16_t in_empty_cache_ : 1;
+-  uint16_t empty_cache_index_ : kEmptyCacheIndexBits;  // < kMaxFreeableSpans.
+-  uint16_t unused2_ : (16 - 1 - kEmptyCacheIndexBits);
++  bool in_empty_cache_ : 1;
++  uint8_t empty_cache_index_ : kEmptyCacheIndexBits;  // < kMaxFreeableSpans.
+   // Can use only 48 bits (6B) in this bitfield, as this structure is embedded
+   // in PartitionPage which has 2B worth of fields and must fit in 32B.
+ 
+@@ -279,18 +278,13 @@ static_assert(sizeof(SlotSpanMetadata) <
+               "SlotSpanMetadata must fit into a Page Metadata slot.");
+ 
+ inline constexpr SlotSpanMetadata::SlotSpanMetadata() noexcept
+-    : marked_full(0),
+-      num_allocated_slots(0),
++    : num_allocated_slots(0),
+       num_unprovisioned_slots(0),
++      marked_full(0),
+       can_store_raw_size_(false),
+       freelist_is_sorted_(true),
+-      unused1_(0),
+       in_empty_cache_(0),
+-      empty_cache_index_(0),
+-      unused2_(0) {
+-  (void)unused1_;
+-  (void)unused2_;
+-}
++      empty_cache_index_(0) {}
+ 
+ inline SlotSpanMetadata::SlotSpanMetadata(const SlotSpanMetadata&) = default;
+ 
+@@ -883,7 +877,7 @@ PA_ALWAYS_INLINE void SlotSpanMetadata::
+ 
+   size_t num_slots_per_span = bucket->get_slots_per_span();
+   PA_DCHECK(num_slots_per_span <= kMaxSlotsPerSlotSpan);
+-  num_unprovisioned_slots = static_cast<uint32_t>(num_slots_per_span);
++  num_unprovisioned_slots = static_cast<uint16_t>(num_slots_per_span);
+   PA_DCHECK(num_unprovisioned_slots);
+ 
+   ToSuperPageExtent()->IncrementNumberOfNonemptySlotSpans();
+diff -up chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_root.cc.el8-support-64kpage.patch chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_root.cc
+--- chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_root.cc.el8-support-64kpage.patch	2024-01-30 21:24:10.000000000 +0100
++++ chromium-121.0.6167.139/base/allocator/partition_allocator/src/partition_alloc/partition_root.cc	2024-02-01 17:20:37.178877448 +0100
+@@ -950,12 +950,11 @@ void PartitionRoot::Init(PartitionOption
+              (internal::SystemPageSize() == (size_t{1} << 14)));
+ #elif BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64)
+     // Check runtime pagesize. Though the code is currently the same, it is
+-    // not merged with the IS_APPLE case above as a 1 << 16 case needs to be
+-    // added here in the future, to allow 64 kiB pagesize. That is only
+-    // supported on Linux on arm64, not on IS_APPLE, but not yet present here
+-    // as the rest of the partition allocator does not currently support it.
++    // not merged with the IS_APPLE case above as a 1 << 16 case is only
++    // supported on Linux on AArch64.
+     PA_CHECK((internal::SystemPageSize() == (size_t{1} << 12)) ||
+-             (internal::SystemPageSize() == (size_t{1} << 14)));
++             (internal::SystemPageSize() == (size_t{1} << 14)) ||
++             (internal::SystemPageSize() == (size_t{1} << 16)));
+ #endif
+ 
+     ::partition_alloc::internal::ScopedGuard guard{lock_};

diff --git a/chromium-122-missing-header-files.patch b/chromium-122-missing-header-files.patch
new file mode 100644
index 0000000..aa6bd70
--- /dev/null
+++ b/chromium-122-missing-header-files.patch
@@ -0,0 +1,191 @@
+diff -up chromium-122.0.6261.29/base/check_op.h.missing-header-files chromium-122.0.6261.29/base/check_op.h
+--- chromium-122.0.6261.29/base/check_op.h.missing-header-files	2024-02-07 19:49:20.000000000 +0100
++++ chromium-122.0.6261.29/base/check_op.h	2024-02-12 14:59:48.136415060 +0100
+@@ -5,6 +5,7 @@
+ #ifndef BASE_CHECK_OP_H_
+ #define BASE_CHECK_OP_H_
+ 
++#include <cstdint>
+ #include <cstddef>
+ #include <string>
+ #include <string_view>
+diff -up chromium-122.0.6261.29/base/containers/flat_map.h.missing-header-files chromium-122.0.6261.29/base/containers/flat_map.h
+--- chromium-122.0.6261.29/base/containers/flat_map.h.missing-header-files	2024-02-07 19:49:20.000000000 +0100
++++ chromium-122.0.6261.29/base/containers/flat_map.h	2024-02-12 14:59:48.136415060 +0100
+@@ -5,6 +5,7 @@
+ #ifndef BASE_CONTAINERS_FLAT_MAP_H_
+ #define BASE_CONTAINERS_FLAT_MAP_H_
+ 
++#include <cstdint>
+ #include <functional>
+ #include <tuple>
+ #include <type_traits>
+diff -up chromium-122.0.6261.29/chrome/browser/webauthn/authenticator_request_dialog_model.h.missing-header-files chromium-122.0.6261.29/chrome/browser/webauthn/authenticator_request_dialog_model.h
+--- chromium-122.0.6261.29/chrome/browser/webauthn/authenticator_request_dialog_model.h.missing-header-files	2024-02-12 14:59:48.137415079 +0100
++++ chromium-122.0.6261.29/chrome/browser/webauthn/authenticator_request_dialog_model.h	2024-02-12 15:28:17.168395787 +0100
+@@ -9,6 +9,7 @@
+ #include <optional>
+ #include <string>
+ #include <vector>
++#include <variant>
+ 
+ #include "base/containers/span.h"
+ #include "base/functional/callback_forward.h"
+diff -up chromium-122.0.6261.29/chrome/test/chromedriver/chrome/web_view_impl.cc.missing-header-files chromium-122.0.6261.29/chrome/test/chromedriver/chrome/web_view_impl.cc
+--- chromium-122.0.6261.29/chrome/test/chromedriver/chrome/web_view_impl.cc.missing-header-files	2024-02-07 19:49:27.000000000 +0100
++++ chromium-122.0.6261.29/chrome/test/chromedriver/chrome/web_view_impl.cc	2024-02-12 14:59:48.137415079 +0100
+@@ -11,6 +11,7 @@
+ #include <queue>
+ #include <utility>
+ #include <vector>
++#include <cstring>
+ 
+ #include "base/check.h"
+ #include "base/files/file_path.h"
+diff -up chromium-122.0.6261.29/components/feature_engagement/internal/never_event_storage_validator.h.missing-header-files chromium-122.0.6261.29/components/feature_engagement/internal/never_event_storage_validator.h
+--- chromium-122.0.6261.29/components/feature_engagement/internal/never_event_storage_validator.h.missing-header-files	2024-02-07 19:49:30.000000000 +0100
++++ chromium-122.0.6261.29/components/feature_engagement/internal/never_event_storage_validator.h	2024-02-12 14:59:48.138415097 +0100
+@@ -5,6 +5,7 @@
+ #ifndef COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_NEVER_EVENT_STORAGE_VALIDATOR_H_
+ #define COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_NEVER_EVENT_STORAGE_VALIDATOR_H_
+ 
++#include <cstdint>
+ #include <string>
+ 
+ #include "components/feature_engagement/internal/event_storage_validator.h"
+diff -up chromium-122.0.6261.29/gin/time_clamper.h.missing-header-files chromium-122.0.6261.29/gin/time_clamper.h
+--- chromium-122.0.6261.29/gin/time_clamper.h.missing-header-files	2024-02-07 19:49:35.000000000 +0100
++++ chromium-122.0.6261.29/gin/time_clamper.h	2024-02-12 14:59:48.138415097 +0100
+@@ -48,7 +48,7 @@ class GIN_EXPORT TimeClamper {
+     const int64_t micros = now_micros % 1000;
+     // abs() is necessary for devices with times before unix-epoch (most likely
+     // configured incorrectly).
+-    if (abs(micros) + kResolutionMicros < 1000) {
++    if (std::abs(micros) + kResolutionMicros < 1000) {
+       return now_micros / 1000;
+     }
+     return ClampTimeResolution(now_micros) / 1000;
+diff -up chromium-122.0.6261.29/net/base/net_export.h.missing-header-files chromium-122.0.6261.29/net/base/net_export.h
+--- chromium-122.0.6261.29/net/base/net_export.h.missing-header-files	2024-02-07 19:49:38.000000000 +0100
++++ chromium-122.0.6261.29/net/base/net_export.h	2024-02-12 14:59:48.139415116 +0100
+@@ -5,6 +5,8 @@
+ #ifndef NET_BASE_NET_EXPORT_H_
+ #define NET_BASE_NET_EXPORT_H_
+ 
++#include <cstdint>
++
+ // Defines NET_EXPORT so that functionality implemented by the net module can
+ // be exported to consumers, and NET_EXPORT_PRIVATE that allows unit tests to
+ // access features not intended to be used directly by real consumers.
+diff -up chromium-122.0.6261.29/third_party/abseil-cpp/absl/strings/string_view.h.missing-header-files chromium-122.0.6261.29/third_party/abseil-cpp/absl/strings/string_view.h
+--- chromium-122.0.6261.29/third_party/abseil-cpp/absl/strings/string_view.h.missing-header-files	2024-02-07 19:49:40.000000000 +0100
++++ chromium-122.0.6261.29/third_party/abseil-cpp/absl/strings/string_view.h	2024-02-12 14:59:48.142415172 +0100
+@@ -27,6 +27,7 @@
+ #ifndef ABSL_STRINGS_STRING_VIEW_H_
+ #define ABSL_STRINGS_STRING_VIEW_H_
+ 
++#include <cstdint>
+ #include <algorithm>
+ #include <cassert>
+ #include <cstddef>
+diff -up chromium-122.0.6261.29/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h.missing-header-files chromium-122.0.6261.29/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h
+--- chromium-122.0.6261.29/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h.missing-header-files	2024-02-07 19:50:44.000000000 +0100
++++ chromium-122.0.6261.29/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h	2024-02-12 14:59:48.142415172 +0100
+@@ -28,6 +28,7 @@
+ #ifndef SRC_TINT_LANG_SPIRV_READER_AST_PARSER_NAMER_H_
+ #define SRC_TINT_LANG_SPIRV_READER_AST_PARSER_NAMER_H_
+ 
++#include <cstdint>
+ #include <string>
+ #include <unordered_map>
+ #include <vector>
+diff -up chromium-122.0.6261.29/third_party/material_color_utilities/src/cpp/palettes/tones.cc.missing-header-files chromium-122.0.6261.29/third_party/material_color_utilities/src/cpp/palettes/tones.cc
+--- chromium-122.0.6261.29/third_party/material_color_utilities/src/cpp/palettes/tones.cc.missing-header-files	2024-02-07 19:52:34.000000000 +0100
++++ chromium-122.0.6261.29/third_party/material_color_utilities/src/cpp/palettes/tones.cc	2024-02-12 14:59:48.143415190 +0100
+@@ -14,6 +14,7 @@
+  * limitations under the License.
+  */
+ 
++#include <cmath>
+ #include "cpp/palettes/tones.h"
+ 
+ #include "cpp/cam/cam.h"
+diff -up chromium-122.0.6261.29/third_party/ruy/src/ruy/profiler/instrumentation.h.missing-header-files chromium-122.0.6261.29/third_party/ruy/src/ruy/profiler/instrumentation.h
+--- chromium-122.0.6261.29/third_party/ruy/src/ruy/profiler/instrumentation.h.missing-header-files	2024-02-07 19:52:59.000000000 +0100
++++ chromium-122.0.6261.29/third_party/ruy/src/ruy/profiler/instrumentation.h	2024-02-12 14:59:48.143415190 +0100
+@@ -17,6 +17,7 @@ limitations under the License.
+ #define RUY_RUY_PROFILER_INSTRUMENTATION_H_
+ 
+ #ifdef RUY_PROFILER
++#include <string>
+ #include <cstdio>
+ #include <mutex>
+ #include <vector>
+diff -up chromium-122.0.6261.29/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc.missing-header-files chromium-122.0.6261.29/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc
+--- chromium-122.0.6261.29/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc.missing-header-files	2024-02-07 19:54:45.000000000 +0100
++++ chromium-122.0.6261.29/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc	2024-02-12 14:59:48.143415190 +0100
+@@ -45,6 +45,7 @@
+ #include "llvm/Support/SaveAndRestore.h"
+ #include "llvm/Support/raw_ostream.h"
+ #include <algorithm>
++#include <cstdint>
+ #include <string>
+ #include <sysexits.h>
+ #ifdef HAVE_BACKTRACE
+diff -up chromium-122.0.6261.29/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h.missing-header-files chromium-122.0.6261.29/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h
+--- chromium-122.0.6261.29/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h.missing-header-files	2024-02-07 19:53:17.000000000 +0100
++++ chromium-122.0.6261.29/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h	2024-02-12 14:59:48.143415190 +0100
+@@ -31,6 +31,7 @@ limitations under the License.
+ #ifndef TENSORFLOW_LITE_KERNELS_INTERNAL_SPECTROGRAM_H_
+ #define TENSORFLOW_LITE_KERNELS_INTERNAL_SPECTROGRAM_H_
+ 
++#include <cstdint>
+ #include <complex>
+ #include <deque>
+ #include <vector>
+diff -up chromium-122.0.6261.29/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h.missing-header-files chromium-122.0.6261.29/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h
+--- chromium-122.0.6261.29/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h.missing-header-files	2024-02-07 19:54:20.000000000 +0100
++++ chromium-122.0.6261.29/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h	2024-02-12 14:59:48.145415228 +0100
+@@ -2884,6 +2884,7 @@ static void vma_aligned_free(void* VMA_N
+ 
+ // Define this macro to 1 to enable functions: vmaBuildStatsString, vmaFreeStatsString.
+ #if VMA_STATS_STRING_ENABLED
++#include <stdio.h>
+     static inline void VmaUint32ToStr(char* VMA_NOT_NULL outStr, size_t strLen, uint32_t num)
+     {
+         snprintf(outStr, strLen, "%u", static_cast<unsigned int>(num));
+diff -up chromium-122.0.6261.29/third_party/webrtc/audio/utility/channel_mixer.cc.missing-header-files chromium-122.0.6261.29/third_party/webrtc/audio/utility/channel_mixer.cc
+--- chromium-122.0.6261.29/third_party/webrtc/audio/utility/channel_mixer.cc.missing-header-files	2024-02-07 19:53:17.000000000 +0100
++++ chromium-122.0.6261.29/third_party/webrtc/audio/utility/channel_mixer.cc	2024-02-12 14:59:48.145415228 +0100
+@@ -8,6 +8,8 @@
+  *  be found in the AUTHORS file in the root of the source tree.
+  */
+ 
++#include <cstring>
++
+ #include "audio/utility/channel_mixer.h"
+ 
+ #include "audio/utility/channel_mixing_matrix.h"
+diff -up chromium-122.0.6261.29/third_party/webrtc/modules/include/module_common_types_public.h.missing-header-files chromium-122.0.6261.29/third_party/webrtc/modules/include/module_common_types_public.h
+--- chromium-122.0.6261.29/third_party/webrtc/modules/include/module_common_types_public.h.missing-header-files	2024-02-07 19:53:17.000000000 +0100
++++ chromium-122.0.6261.29/third_party/webrtc/modules/include/module_common_types_public.h	2024-02-12 14:59:48.145415228 +0100
+@@ -11,6 +11,7 @@
+ #ifndef MODULES_INCLUDE_MODULE_COMMON_TYPES_PUBLIC_H_
+ #define MODULES_INCLUDE_MODULE_COMMON_TYPES_PUBLIC_H_
+ 
++#include <cstdint>
+ #include <limits>
+ 
+ #include "absl/types/optional.h"
+diff -up chromium-122.0.6261.29/ui/gfx/linux/drm_util_linux.h.missing-header-files chromium-122.0.6261.29/ui/gfx/linux/drm_util_linux.h
+--- chromium-122.0.6261.29/ui/gfx/linux/drm_util_linux.h.missing-header-files	2024-02-07 19:50:05.000000000 +0100
++++ chromium-122.0.6261.29/ui/gfx/linux/drm_util_linux.h	2024-02-12 14:59:48.147415265 +0100
+@@ -9,6 +9,8 @@
+ 
+ #include "ui/gfx/buffer_types.h"
+ 
++#include <cstdint>
++
+ namespace ui {
+ 
+ int GetFourCCFormatFromBufferFormat(gfx::BufferFormat format);

diff --git a/chromium-122-norar.patch b/chromium-122-norar.patch
new file mode 100644
index 0000000..2d7836d
--- /dev/null
+++ b/chromium-122-norar.patch
@@ -0,0 +1,63 @@
+diff -up chromium-122.0.6261.29/chrome/browser/safe_browsing/download_protection/file_analyzer.cc.nounrar chromium-122.0.6261.29/chrome/browser/safe_browsing/download_protection/file_analyzer.cc
+--- chromium-122.0.6261.29/chrome/browser/safe_browsing/download_protection/file_analyzer.cc.nounrar	2024-02-07 19:49:25.000000000 +0100
++++ chromium-122.0.6261.29/chrome/browser/safe_browsing/download_protection/file_analyzer.cc	2024-02-11 18:55:29.964450604 +0100
+@@ -79,8 +79,6 @@ void FileAnalyzer::Start(const base::Fil
+ 
+   if (inspection_type == DownloadFileType::ZIP) {
+     StartExtractZipFeatures();
+-  } else if (inspection_type == DownloadFileType::RAR) {
+-    StartExtractRarFeatures();
+ #if BUILDFLAG(IS_MAC)
+   } else if (inspection_type == DownloadFileType::DMG) {
+     StartExtractDmgFeatures();
+diff -up chromium-122.0.6261.29/chrome/common/safe_browsing/BUILD.gn.nounrar chromium-122.0.6261.29/chrome/common/safe_browsing/BUILD.gn
+--- chromium-122.0.6261.29/chrome/common/safe_browsing/BUILD.gn.nounrar	2024-02-07 19:49:27.000000000 +0100
++++ chromium-122.0.6261.29/chrome/common/safe_browsing/BUILD.gn	2024-02-11 18:55:29.965450629 +0100
+@@ -143,7 +143,6 @@ source_set("safe_browsing") {
+       "//components/safe_browsing/content/common:file_type_policies",
+       "//components/safe_browsing/core/common",
+       "//third_party/lzma_sdk/google:seven_zip_reader",
+-      "//third_party/unrar:unrar",
+     ]
+ 
+     public_deps = [
+diff -up chromium-122.0.6261.29/chrome/services/file_util/safe_archive_analyzer.cc.nounrar chromium-122.0.6261.29/chrome/services/file_util/safe_archive_analyzer.cc
+--- chromium-122.0.6261.29/chrome/services/file_util/safe_archive_analyzer.cc.nounrar	2024-02-07 19:49:27.000000000 +0100
++++ chromium-122.0.6261.29/chrome/services/file_util/safe_archive_analyzer.cc	2024-02-11 23:49:25.061324007 +0100
+@@ -74,6 +74,7 @@ void SafeArchiveAnalyzer::AnalyzeRarFile
+     const std::optional<std::string>& password,
+     mojo::PendingRemote<chrome::mojom::TemporaryFileGetter> temp_file_getter,
+     AnalyzeRarFileCallback callback) {
++#if 0
+   DCHECK(rar_file.IsValid());
+   temp_file_getter_.Bind(std::move(temp_file_getter));
+   callback_ = std::move(callback);
+@@ -90,6 +91,9 @@ void SafeArchiveAnalyzer::AnalyzeRarFile
+                         /*password=*/password,
+                         std::move(analysis_finished_callback),
+                         std::move(temp_file_getter_callback), &results_);
++#else
++  NOTREACHED();
++#endif
+ }
+ 
+ void SafeArchiveAnalyzer::AnalyzeSevenZipFile(
+diff -up chromium-122.0.6261.29/chrome/services/file_util/safe_archive_analyzer.h.nounrar chromium-122.0.6261.29/chrome/services/file_util/safe_archive_analyzer.h
+--- chromium-122.0.6261.29/chrome/services/file_util/safe_archive_analyzer.h.nounrar	2024-02-07 19:49:27.000000000 +0100
++++ chromium-122.0.6261.29/chrome/services/file_util/safe_archive_analyzer.h	2024-02-11 18:55:29.966450653 +0100
+@@ -9,7 +9,6 @@
+ 
+ #include "chrome/common/safe_browsing/archive_analyzer_results.h"
+ #include "chrome/services/file_util/public/mojom/safe_archive_analyzer.mojom.h"
+-#include "chrome/utility/safe_browsing/rar_analyzer.h"
+ #include "chrome/utility/safe_browsing/seven_zip_analyzer.h"
+ #include "chrome/utility/safe_browsing/zip_analyzer.h"
+ #include "mojo/public/cpp/bindings/remote.h"
+@@ -67,7 +66,6 @@ class SafeArchiveAnalyzer : public chrom
+   void Timeout();
+ 
+   safe_browsing::ZipAnalyzer zip_analyzer_;
+-  safe_browsing::RarAnalyzer rar_analyzer_;
+   safe_browsing::SevenZipAnalyzer seven_zip_analyzer_;
+ #if BUILDFLAG(IS_MAC)
+   safe_browsing::dmg::DMGAnalyzer dmg_analyzer_;

diff --git a/chromium-122-revert-av1enc-el9.patch b/chromium-122-revert-av1enc-el9.patch
new file mode 100644
index 0000000..5861bc6
--- /dev/null
+++ b/chromium-122-revert-av1enc-el9.patch
@@ -0,0 +1,98 @@
+diff -up chromium-114.0.5735.35/media/gpu/vaapi/vaapi_video_encode_accelerator.cc.me chromium-114.0.5735.35/media/gpu/vaapi/vaapi_video_encode_accelerator.cc
+--- chromium-114.0.5735.35/media/gpu/vaapi/vaapi_video_encode_accelerator.cc.me	2023-05-21 10:05:00.357860329 +0200
++++ chromium-114.0.5735.35/media/gpu/vaapi/vaapi_video_encode_accelerator.cc	2023-05-21 10:18:09.665432735 +0200
+@@ -41,7 +41,6 @@
+ #include "media/gpu/gpu_video_encode_accelerator_helpers.h"
+ #include "media/gpu/h264_dpb.h"
+ #include "media/gpu/macros.h"
+-#include "media/gpu/vaapi/av1_vaapi_video_encoder_delegate.h"
+ #include "media/gpu/vaapi/h264_vaapi_video_encoder_delegate.h"
+ #include "media/gpu/vaapi/va_surface.h"
+ #include "media/gpu/vaapi/vaapi_common.h"
+@@ -200,7 +199,7 @@ bool VaapiVideoEncodeAccelerator::Initia
+ 
+   const VideoCodec codec = VideoCodecProfileToVideoCodec(config.output_profile);
+   if (codec != VideoCodec::kH264 && codec != VideoCodec::kVP8 &&
+-      codec != VideoCodec::kVP9 && codec != VideoCodec::kAV1) {
++      codec != VideoCodec::kVP9) {
+     MEDIA_LOG(ERROR, media_log.get())
+         << "Unsupported profile: " << GetProfileName(config.output_profile);
+     return false;
+@@ -293,7 +292,6 @@ void VaapiVideoEncodeAccelerator::Initia
+         break;
+       case VideoCodec::kVP8:
+       case VideoCodec::kVP9:
+-      case VideoCodec::kAV1:
+         mode = VaapiWrapper::kEncodeConstantQuantizationParameter;
+         break;
+       default:
+@@ -356,12 +354,6 @@ void VaapiVideoEncodeAccelerator::Initia
+             vaapi_wrapper_, error_cb);
+       }
+       break;
+-    case VideoCodec::kAV1:
+-      if (!IsConfiguredForTesting()) {
+-        encoder_ = std::make_unique<AV1VaapiVideoEncoderDelegate>(
+-            vaapi_wrapper_, error_cb);
+-      }
+-      break;
+     default:
+       NOTREACHED() << "Unsupported codec type " << GetCodecName(output_codec_);
+       return;
+@@ -835,10 +827,6 @@ VaapiVideoEncodeAccelerator::CreateEncod
+     case VideoCodec::kVP9:
+       picture = new VaapiVP9Picture(std::move(reconstructed_surface));
+       break;
+-    case VideoCodec::kAV1:
+-      picture = new VaapiAV1Picture(/*display_va_surface=*/nullptr,
+-                                    std::move(reconstructed_surface));
+-      break;
+     default:
+       return nullptr;
+   }
+diff -up chromium-114.0.5735.35/media/gpu/vaapi/BUILD.gn.revert-av1enc chromium-114.0.5735.35/media/gpu/vaapi/BUILD.gn
+--- chromium-114.0.5735.35/media/gpu/vaapi/BUILD.gn.revert-av1enc	2023-05-18 00:37:57.000000000 +0200
++++ chromium-114.0.5735.35/media/gpu/vaapi/BUILD.gn	2023-05-20 13:14:10.756183626 +0200
+@@ -38,8 +38,6 @@ source_set("vaapi") {
+   sources = [
+     "av1_vaapi_video_decoder_delegate.cc",
+     "av1_vaapi_video_decoder_delegate.h",
+-    "av1_vaapi_video_encoder_delegate.cc",
+-    "av1_vaapi_video_encoder_delegate.h",
+     "h264_vaapi_video_decoder_delegate.cc",
+     "h264_vaapi_video_decoder_delegate.h",
+     "h264_vaapi_video_encoder_delegate.cc",
+diff -up chromium-119.0.6045.105/media/gpu/vaapi/vaapi_wrapper.cc.me chromium-119.0.6045.105/media/gpu/vaapi/vaapi_wrapper.cc
+--- chromium-119.0.6045.105/media/gpu/vaapi/vaapi_wrapper.cc.me	2023-11-02 15:08:30.921325747 +0100
++++ chromium-119.0.6045.105/media/gpu/vaapi/vaapi_wrapper.cc	2023-11-02 15:09:46.123692602 +0100
+@@ -3124,6 +3124,7 @@ bool VaapiWrapper::GetSupportedPackedHea
+   return true;
+ }
+ 
++#if 0 //disable AV1 due to old libva on epel9
+ bool VaapiWrapper::GetMinAV1SegmentSize(VideoCodecProfile profile,
+                                         uint32_t& min_seg_size) {
+   CHECK(!enforce_sequence_affinity_ ||
+@@ -3141,6 +3142,7 @@ bool VaapiWrapper::GetMinAV1SegmentSize(
+ 
+   return true;
+ }
++#endif
+ 
+ bool VaapiWrapper::BlitSurface(const VASurface& va_surface_src,
+                                const VASurface& va_surface_dest,
+diff -up chromium-119.0.6045.105/media/gpu/vaapi/vaapi_wrapper.h.me chromium-119.0.6045.105/media/gpu/vaapi/vaapi_wrapper.h
+--- chromium-119.0.6045.105/media/gpu/vaapi/vaapi_wrapper.h.me	2023-11-02 15:09:58.973928395 +0100
++++ chromium-119.0.6045.105/media/gpu/vaapi/vaapi_wrapper.h	2023-11-02 15:10:45.990791114 +0100
+@@ -553,9 +553,11 @@ class MEDIA_GPU_EXPORT VaapiWrapper
+       bool& packed_pps,
+       bool& packed_slice);
+ 
++#if 0 //disable AV1 due to old libva on epel9
+   // Gets the minimum segment block size supported for AV1 encoding.
+   [[nodiscard]] bool GetMinAV1SegmentSize(VideoCodecProfile profile,
+                                           uint32_t& min_seg_size);
++#endif
+ 
+   // Blits a VASurface |va_surface_src| into another VASurface
+   // |va_surface_dest| applying pixel format conversion, cropping

diff --git a/chromium-122-v8-c++20.patch b/chromium-122-v8-c++20.patch
new file mode 100644
index 0000000..2b40db2
--- /dev/null
+++ b/chromium-122-v8-c++20.patch
@@ -0,0 +1,740 @@
+commit 940af9f2c87b436559b97c53763aa9eaaf1254eb
+Author: Jeremy Roman <jbroman@chromium.org>
+Date:   Wed Nov 15 16:24:54 2023 +0000
+
+    Use C++20 features to simplify blink::NativeValueTraitsBase.
+    
+    These allow some of the metaprogramming bits to be simplified a little.
+    
+    Change-Id: I052b4397586d21348401616e1792afdb9662f975
+    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5030335
+    Reviewed-by: Yuki Shiino <yukishiino@chromium.org>
+    Commit-Queue: Jeremy Roman <jbroman@chromium.org>
+    Cr-Commit-Position: refs/heads/main@{#1224978}
+
+diff -up chromium-122.0.6261.57/third_party/blink/renderer/bindings/core/v8/native_value_traits_buffer_sources.cc.me chromium-122.0.6261.57/third_party/blink/renderer/bindings/core/v8/native_value_traits_buffer_sources.cc
+--- chromium-122.0.6261.57/third_party/blink/renderer/bindings/core/v8/native_value_traits_buffer_sources.cc.me	2024-02-21 01:20:53.138946500 +0100
++++ chromium-122.0.6261.57/third_party/blink/renderer/bindings/core/v8/native_value_traits_buffer_sources.cc	2024-02-21 12:33:53.226207103 +0100
+@@ -7,7 +7,6 @@
+ #include "third_party/blink/renderer/core/core_export.h"
+ #include "third_party/blink/renderer/core/execution_context/execution_context.h"
+ #include "third_party/blink/renderer/core/frame/web_feature.h"
+-#include "third_party/blink/renderer/core/typed_arrays/flexible_array_buffer_view.h"
+ #include "third_party/blink/renderer/core/typed_arrays/typed_flexible_array_buffer_view.h"
+ 
+ namespace blink {
+@@ -699,11 +698,12 @@ DOMArrayBufferBase* NativeValueTraits<
+ // ArrayBufferView
+ 
+ template <typename T>
+-  requires std::derived_from<T, DOMArrayBufferView>
+-NotShared<T> NativeValueTraits<NotShared<T>>::NativeValue(
+-    v8::Isolate* isolate,
+-    v8::Local<v8::Value> value,
+-    ExceptionState& exception_state) {
++NotShared<T> NativeValueTraits<
++    NotShared<T>,
++    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
++    NativeValue(v8::Isolate* isolate,
++                v8::Local<v8::Value> value,
++                ExceptionState& exception_state) {
+   return NativeValueImpl<
+       RecipeTrait<NotShared<T>>, ToDOMViewType<T, kNotShared>,
+       Nullablity::kIsNotNullable, BufferSizeCheck::kCheck,
+@@ -712,12 +712,13 @@ NotShared<T> NativeValueTraits<NotShared
+ }
+ 
+ template <typename T>
+-  requires std::derived_from<T, DOMArrayBufferView>
+-NotShared<T> NativeValueTraits<NotShared<T>>::ArgumentValue(
+-    v8::Isolate* isolate,
+-    int argument_index,
+-    v8::Local<v8::Value> value,
+-    ExceptionState& exception_state) {
++NotShared<T> NativeValueTraits<
++    NotShared<T>,
++    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
++    ArgumentValue(v8::Isolate* isolate,
++                  int argument_index,
++                  v8::Local<v8::Value> value,
++                  ExceptionState& exception_state) {
+   return ArgumentValueImpl<
+       RecipeTrait<NotShared<T>>, ToDOMViewType<T, kNotShared>,
+       Nullablity::kIsNotNullable, BufferSizeCheck::kCheck,
+@@ -728,11 +729,12 @@ NotShared<T> NativeValueTraits<NotShared
+ // [AllowShared] ArrayBufferView
+ 
+ template <typename T>
+-  requires std::derived_from<T, DOMArrayBufferView>
+-MaybeShared<T> NativeValueTraits<MaybeShared<T>>::NativeValue(
+-    v8::Isolate* isolate,
+-    v8::Local<v8::Value> value,
+-    ExceptionState& exception_state) {
++MaybeShared<T> NativeValueTraits<
++    MaybeShared<T>,
++    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
++    NativeValue(v8::Isolate* isolate,
++                v8::Local<v8::Value> value,
++                ExceptionState& exception_state) {
+   return NativeValueImpl<RecipeTrait<MaybeShared<T>>,
+                          ToDOMViewType<T, kMaybeShared>,
+                          Nullablity::kIsNotNullable, BufferSizeCheck::kCheck,
+@@ -741,12 +743,13 @@ MaybeShared<T> NativeValueTraits<MaybeSh
+ }
+ 
+ template <typename T>
+-  requires std::derived_from<T, DOMArrayBufferView>
+-MaybeShared<T> NativeValueTraits<MaybeShared<T>>::ArgumentValue(
+-    v8::Isolate* isolate,
+-    int argument_index,
+-    v8::Local<v8::Value> value,
+-    ExceptionState& exception_state) {
++MaybeShared<T> NativeValueTraits<
++    MaybeShared<T>,
++    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
++    ArgumentValue(v8::Isolate* isolate,
++                  int argument_index,
++                  v8::Local<v8::Value> value,
++                  ExceptionState& exception_state) {
+   return ArgumentValueImpl<RecipeTrait<MaybeShared<T>>,
+                            ToDOMViewType<T, kMaybeShared>,
+                            Nullablity::kIsNotNullable, BufferSizeCheck::kCheck,
+@@ -757,12 +760,12 @@ MaybeShared<T> NativeValueTraits<MaybeSh
+ // [AllowShared, BufferSourceTypeNoSizeLimit] ArrayBufferView
+ 
+ template <typename T>
+-  requires std::derived_from<T, DOMArrayBufferView>
+-MaybeShared<T>
+-NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>::NativeValue(
+-    v8::Isolate* isolate,
+-    v8::Local<v8::Value> value,
+-    ExceptionState& exception_state) {
++MaybeShared<T> NativeValueTraits<
++    IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>,
++    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
++    NativeValue(v8::Isolate* isolate,
++                v8::Local<v8::Value> value,
++                ExceptionState& exception_state) {
+   return NativeValueImpl<
+       RecipeTrait<MaybeShared<T>>, ToDOMViewType<T, kMaybeShared>,
+       Nullablity::kIsNotNullable, BufferSizeCheck::kDoNotCheck,
+@@ -771,12 +774,13 @@ NativeValueTraits<IDLBufferSourceTypeNoS
+ }
+ 
+ template <typename T>
+-  requires std::derived_from<T, DOMArrayBufferView>
+-MaybeShared<T> NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<
+-    MaybeShared<T>>>::ArgumentValue(v8::Isolate* isolate,
+-                                    int argument_index,
+-                                    v8::Local<v8::Value> value,
+-                                    ExceptionState& exception_state) {
++MaybeShared<T> NativeValueTraits<
++    IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>,
++    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
++    ArgumentValue(v8::Isolate* isolate,
++                  int argument_index,
++                  v8::Local<v8::Value> value,
++                  ExceptionState& exception_state) {
+   return ArgumentValueImpl<
+       RecipeTrait<MaybeShared<T>>, ToDOMViewType<T, kMaybeShared>,
+       Nullablity::kIsNotNullable, BufferSizeCheck::kDoNotCheck,
+@@ -787,11 +791,12 @@ MaybeShared<T> NativeValueTraits<IDLBuff
+ // Nullable ArrayBufferView
+ 
+ template <typename T>
+-  requires std::derived_from<T, DOMArrayBufferView>
+-NotShared<T> NativeValueTraits<IDLNullable<NotShared<T>>>::NativeValue(
+-    v8::Isolate* isolate,
+-    v8::Local<v8::Value> value,
+-    ExceptionState& exception_state) {
++NotShared<T> NativeValueTraits<
++    IDLNullable<NotShared<T>>,
++    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
++    NativeValue(v8::Isolate* isolate,
++                v8::Local<v8::Value> value,
++                ExceptionState& exception_state) {
+   return NativeValueImpl<
+       RecipeTrait<NotShared<T>>, ToDOMViewType<T, kNotShared>,
+       Nullablity::kIsNullable, BufferSizeCheck::kCheck,
+@@ -800,12 +805,13 @@ NotShared<T> NativeValueTraits<IDLNullab
+ }
+ 
+ template <typename T>
+-  requires std::derived_from<T, DOMArrayBufferView>
+-NotShared<T> NativeValueTraits<IDLNullable<NotShared<T>>>::ArgumentValue(
+-    v8::Isolate* isolate,
+-    int argument_index,
+-    v8::Local<v8::Value> value,
+-    ExceptionState& exception_state) {
++NotShared<T> NativeValueTraits<
++    IDLNullable<NotShared<T>>,
++    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
++    ArgumentValue(v8::Isolate* isolate,
++                  int argument_index,
++                  v8::Local<v8::Value> value,
++                  ExceptionState& exception_state) {
+   return ArgumentValueImpl<
+       RecipeTrait<NotShared<T>>, ToDOMViewType<T, kNotShared>,
+       Nullablity::kIsNullable, BufferSizeCheck::kCheck,
+@@ -816,11 +822,12 @@ NotShared<T> NativeValueTraits<IDLNullab
+ // Nullable [AllowShared] ArrayBufferView
+ 
+ template <typename T>
+-  requires std::derived_from<T, DOMArrayBufferView>
+-MaybeShared<T> NativeValueTraits<IDLNullable<MaybeShared<T>>>::NativeValue(
+-    v8::Isolate* isolate,
+-    v8::Local<v8::Value> value,
+-    ExceptionState& exception_state) {
++MaybeShared<T> NativeValueTraits<
++    IDLNullable<MaybeShared<T>>,
++    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
++    NativeValue(v8::Isolate* isolate,
++                v8::Local<v8::Value> value,
++                ExceptionState& exception_state) {
+   return NativeValueImpl<RecipeTrait<MaybeShared<T>>,
+                          ToDOMViewType<T, kMaybeShared>,
+                          Nullablity::kIsNullable, BufferSizeCheck::kCheck,
+@@ -829,12 +836,13 @@ MaybeShared<T> NativeValueTraits<IDLNull
+ }
+ 
+ template <typename T>
+-  requires std::derived_from<T, DOMArrayBufferView>
+-MaybeShared<T> NativeValueTraits<IDLNullable<MaybeShared<T>>>::ArgumentValue(
+-    v8::Isolate* isolate,
+-    int argument_index,
+-    v8::Local<v8::Value> value,
+-    ExceptionState& exception_state) {
++MaybeShared<T> NativeValueTraits<
++    IDLNullable<MaybeShared<T>>,
++    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
++    ArgumentValue(v8::Isolate* isolate,
++                  int argument_index,
++                  v8::Local<v8::Value> value,
++                  ExceptionState& exception_state) {
+   return ArgumentValueImpl<RecipeTrait<MaybeShared<T>>,
+                            ToDOMViewType<T, kMaybeShared>,
+                            Nullablity::kIsNullable, BufferSizeCheck::kCheck,
+@@ -845,9 +853,9 @@ MaybeShared<T> NativeValueTraits<IDLNull
+ // Nullable [AllowShared, BufferSourceTypeNoSizeLimit] ArrayBufferView
+ 
+ template <typename T>
+-  requires std::derived_from<T, DOMArrayBufferView>
+-MaybeShared<T>
+-NativeValueTraits<IDLNullable<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>>::
++MaybeShared<T> NativeValueTraits<
++    IDLNullable<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>,
++    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>::
+     ArgumentValue(v8::Isolate* isolate,
+                   int argument_index,
+                   v8::Local<v8::Value> value,
+@@ -862,11 +870,13 @@ NativeValueTraits<IDLNullable<IDLBufferS
+ // [AllowShared, FlexibleArrayBufferView] ArrayBufferView
+ 
+ template <typename T>
+-  requires std::derived_from<T, FlexibleArrayBufferView>
+-T NativeValueTraits<T>::ArgumentValue(v8::Isolate* isolate,
+-                                      int argument_index,
+-                                      v8::Local<v8::Value> value,
+-                                      ExceptionState& exception_state) {
++T NativeValueTraits<T,
++                    typename std::enable_if_t<
++                        std::is_base_of<FlexibleArrayBufferView, T>::value>>::
++    ArgumentValue(v8::Isolate* isolate,
++                  int argument_index,
++                  v8::Local<v8::Value> value,
++                  ExceptionState& exception_state) {
+   return ArgumentValueImpl<RecipeTrait<T>, ToFlexibleArrayBufferView,
+                            Nullablity::kIsNotNullable, BufferSizeCheck::kCheck,
+                            ResizableAllowance::kDisallowResizable,
+@@ -878,12 +888,13 @@ T NativeValueTraits<T>::ArgumentValue(v8
+ // ArrayBufferView
+ 
+ template <typename T>
+-  requires std::derived_from<T, FlexibleArrayBufferView>
+-T NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<T>>::ArgumentValue(
+-    v8::Isolate* isolate,
+-    int argument_index,
+-    v8::Local<v8::Value> value,
+-    ExceptionState& exception_state) {
++T NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<T>,
++                    typename std::enable_if_t<
++                        std::is_base_of<FlexibleArrayBufferView, T>::value>>::
++    ArgumentValue(v8::Isolate* isolate,
++                  int argument_index,
++                  v8::Local<v8::Value> value,
++                  ExceptionState& exception_state) {
+   return ArgumentValueImpl<
+       RecipeTrait<T>, ToFlexibleArrayBufferView, Nullablity::kIsNotNullable,
+       BufferSizeCheck::kDoNotCheck, ResizableAllowance::kDisallowResizable,
+@@ -894,12 +905,13 @@ T NativeValueTraits<IDLBufferSourceTypeN
+ // Nullable [AllowShared, FlexibleArrayBufferView] ArrayBufferView
+ 
+ template <typename T>
+-  requires std::derived_from<T, FlexibleArrayBufferView>
+-T NativeValueTraits<IDLNullable<T>>::ArgumentValue(
+-    v8::Isolate* isolate,
+-    int argument_index,
+-    v8::Local<v8::Value> value,
+-    ExceptionState& exception_state) {
++T NativeValueTraits<IDLNullable<T>,
++                    typename std::enable_if_t<
++                        std::is_base_of<FlexibleArrayBufferView, T>::value>>::
++    ArgumentValue(v8::Isolate* isolate,
++                  int argument_index,
++                  v8::Local<v8::Value> value,
++                  ExceptionState& exception_state) {
+   return ArgumentValueImpl<RecipeTrait<T>, ToFlexibleArrayBufferView,
+                            Nullablity::kIsNullable, BufferSizeCheck::kCheck,
+                            ResizableAllowance::kDisallowResizable,
+diff -up chromium-122.0.6261.57/third_party/blink/renderer/bindings/core/v8/native_value_traits.h.me chromium-122.0.6261.57/third_party/blink/renderer/bindings/core/v8/native_value_traits.h
+--- chromium-122.0.6261.57/third_party/blink/renderer/bindings/core/v8/native_value_traits.h.me	2024-02-21 01:20:53.138946500 +0100
++++ chromium-122.0.6261.57/third_party/blink/renderer/bindings/core/v8/native_value_traits.h	2024-02-21 12:33:53.225207075 +0100
+@@ -5,7 +5,6 @@
+ #ifndef THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_NATIVE_VALUE_TRAITS_H_
+ #define THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_NATIVE_VALUE_TRAITS_H_
+ 
+-#include <concepts>
+ #include <type_traits>
+ 
+ #include "third_party/blink/renderer/bindings/core/v8/idl_types_base.h"
+@@ -31,7 +30,7 @@ class ExceptionState;
+ //     return toInt32(isolate, value, exceptionState, NormalConversion);
+ //   }
+ // }
+-template <typename T>
++template <typename T, typename SFINAEHelper = void>
+ struct NativeValueTraits;
+ 
+ // This declaration serves only as a blueprint for specializations: the
+@@ -46,15 +45,22 @@ struct NativeValueTraits;
+ 
+ namespace bindings {
+ 
++template <typename T, typename = void>
++struct NativeValueTraitsHasIsNull : std::false_type {};
++
+ template <typename T>
+-struct ImplTypeFor {
+-  using type = T;
+-};
++struct NativeValueTraitsHasIsNull<
++    T,
++    std::void_t<decltype(std::declval<T>().IsNull())>> : std::true_type {};
+ 
+ template <typename T>
+-  requires std::derived_from<T, IDLBase>
+-struct ImplTypeFor<T> {
+-  using type = typename T::ImplType;
++struct NativeValueTraitsHasNullValue {
++  // true if |T| supports IDL null value.
++  static constexpr bool value =
++      // ScriptValue, String, and union types have IsNull member function.
++      bindings::NativeValueTraitsHasIsNull<T>::value ||
++      // Pointer types have nullptr as IDL null value.
++      std::is_pointer<T>::value;
+ };
+ 
+ }  // namespace bindings
+@@ -72,17 +78,37 @@ struct ImplTypeFor<T> {
+ // If present, |NullValue()| will be used when converting from the nullable type
+ // T?, and should be used if the impl type has an existing "null" state. If not
+ // present, WTF::Optional will be used to wrap the type.
+-template <typename T>
++template <typename T, typename SFINAEHelper = void>
+ struct NativeValueTraitsBase {
+   STATIC_ONLY(NativeValueTraitsBase);
+ 
+-  using ImplType = bindings::ImplTypeFor<T>::type;
++  using ImplType = T;
++
++  static constexpr bool has_null_value =
++      bindings::NativeValueTraitsHasNullValue<ImplType>::value;
++
++  template <typename... ExtraArgs>
++  static decltype(auto) ArgumentValue(v8::Isolate* isolate,
++                                      int argument_index,
++                                      v8::Local<v8::Value> value,
++                                      ExceptionState& exception_state,
++                                      ExtraArgs... extra_args) {
++    return NativeValueTraits<std::remove_pointer_t<T>>::NativeValue(
++        isolate, value, exception_state,
++        std::forward<ExtraArgs>(extra_args)...);
++  }
++};
++
++template <typename T>
++struct NativeValueTraitsBase<
++    T,
++    std::enable_if_t<std::is_base_of<IDLBase, T>::value>> {
++  STATIC_ONLY(NativeValueTraitsBase);
++
++  using ImplType = typename T::ImplType;
+ 
+-  // Pointer types have nullptr as IDL null value.
+-  // ScriptValue, String, and union types have IsNull member function.
+   static constexpr bool has_null_value =
+-      std::is_pointer_v<ImplType> ||
+-      requires(ImplType value) { value.IsNull(); };
++      bindings::NativeValueTraitsHasNullValue<ImplType>::value;
+ 
+   // This should only be true for certain subclasses of ScriptWrappable
+   // that satisfy the assumptions of CreateIDLSequenceFromV8ArraySlow() with
+diff -up chromium-122.0.6261.57/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h.me chromium-122.0.6261.57/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h
+--- chromium-122.0.6261.57/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h.me	2024-02-21 01:20:53.138946500 +0100
++++ chromium-122.0.6261.57/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h	2024-02-21 12:33:53.227207131 +0100
+@@ -5,9 +5,6 @@
+ #ifndef THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_NATIVE_VALUE_TRAITS_IMPL_H_
+ #define THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_NATIVE_VALUE_TRAITS_IMPL_H_
+ 
+-#include <concepts>
+-#include <type_traits>
+-
+ #include "third_party/abseil-cpp/absl/types/optional.h"
+ #include "third_party/blink/renderer/bindings/core/v8/idl_types.h"
+ #include "third_party/blink/renderer/bindings/core/v8/native_value_traits.h"
+@@ -736,8 +733,9 @@ struct CORE_EXPORT NativeValueTraits<
+ };
+ 
+ template <typename T>
+-  requires std::derived_from<T, DOMArrayBufferView>
+-struct NativeValueTraits<T> {
++struct NativeValueTraits<
++    T,
++    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>> {
+   // NotShared<T> or MaybeShared<T> should be used instead.
+   static T* NativeValue(v8::Isolate* isolate,
+                         v8::Local<v8::Value> value,
+@@ -749,8 +747,9 @@ struct NativeValueTraits<T> {
+ };
+ 
+ template <typename T>
+-  requires std::derived_from<T, DOMArrayBufferView>
+-struct NativeValueTraits<IDLNullable<T>> {
++struct NativeValueTraits<
++    IDLNullable<T>,
++    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>> {
+   // NotShared<T> or MaybeShared<T> should be used instead.
+   static T* NativeValue(v8::Isolate* isolate,
+                         v8::Local<v8::Value> value,
+@@ -762,8 +761,9 @@ struct NativeValueTraits<IDLNullable<T>>
+ };
+ 
+ template <typename T>
+-  requires std::derived_from<T, DOMArrayBufferView>
+-struct NativeValueTraits<NotShared<T>>
++struct NativeValueTraits<
++    NotShared<T>,
++    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>
+     : public NativeValueTraitsBase<NotShared<T>> {
+   static NotShared<T> NativeValue(v8::Isolate* isolate,
+                                   v8::Local<v8::Value> value,
+@@ -776,8 +776,9 @@ struct NativeValueTraits<NotShared<T>>
+ };
+ 
+ template <typename T>
+-  requires std::derived_from<T, DOMArrayBufferView>
+-struct NativeValueTraits<IDLNullable<NotShared<T>>>
++struct NativeValueTraits<
++    IDLNullable<NotShared<T>>,
++    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>
+     : public NativeValueTraitsBase<NotShared<T>> {
+   static NotShared<T> NativeValue(v8::Isolate* isolate,
+                                   v8::Local<v8::Value> value,
+@@ -790,8 +791,9 @@ struct NativeValueTraits<IDLNullable<Not
+ };
+ 
+ template <typename T>
+-  requires std::derived_from<T, DOMArrayBufferView>
+-struct NativeValueTraits<MaybeShared<T>>
++struct NativeValueTraits<
++    MaybeShared<T>,
++    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>
+     : public NativeValueTraitsBase<MaybeShared<T>> {
+   static MaybeShared<T> NativeValue(v8::Isolate* isolate,
+                                     v8::Local<v8::Value> value,
+@@ -804,8 +806,9 @@ struct NativeValueTraits<MaybeShared<T>>
+ };
+ 
+ template <typename T>
+-  requires std::derived_from<T, DOMArrayBufferView>
+-struct NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>
++struct NativeValueTraits<
++    IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>,
++    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>
+     : public NativeValueTraitsBase<MaybeShared<T>> {
+   // FlexibleArrayBufferView uses this in its implementation, so we cannot
+   // delete it.
+@@ -820,8 +823,9 @@ struct NativeValueTraits<IDLBufferSource
+ };
+ 
+ template <typename T>
+-  requires std::derived_from<T, DOMArrayBufferView>
+-struct NativeValueTraits<IDLNullable<MaybeShared<T>>>
++struct NativeValueTraits<
++    IDLNullable<MaybeShared<T>>,
++    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>
+     : public NativeValueTraitsBase<MaybeShared<T>> {
+   static MaybeShared<T> NativeValue(v8::Isolate* isolate,
+                                     v8::Local<v8::Value> value,
+@@ -834,9 +838,9 @@ struct NativeValueTraits<IDLNullable<May
+ };
+ 
+ template <typename T>
+-  requires std::derived_from<T, DOMArrayBufferView>
+ struct NativeValueTraits<
+-    IDLNullable<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>>
++    IDLNullable<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>,
++    typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>
+     : public NativeValueTraitsBase<MaybeShared<T>> {
+   // BufferSourceTypeNoSizeLimit must be used only as arguments.
+   static MaybeShared<T> NativeValue(v8::Isolate* isolate,
+@@ -850,8 +854,11 @@ struct NativeValueTraits<
+ };
+ 
+ template <typename T>
+-  requires std::derived_from<T, FlexibleArrayBufferView>
+-struct NativeValueTraits<T> : public NativeValueTraitsBase<T> {
++struct NativeValueTraits<
++    T,
++    typename std::enable_if_t<
++        std::is_base_of<FlexibleArrayBufferView, T>::value>>
++    : public NativeValueTraitsBase<T> {
+   // FlexibleArrayBufferView must be used only as arguments.
+   static T NativeValue(v8::Isolate* isolate,
+                        v8::Local<v8::Value> value,
+@@ -864,8 +871,10 @@ struct NativeValueTraits<T> : public Nat
+ };
+ 
+ template <typename T>
+-  requires std::derived_from<T, FlexibleArrayBufferView>
+-struct NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<T>>
++struct NativeValueTraits<
++    IDLBufferSourceTypeNoSizeLimit<T>,
++    typename std::enable_if_t<
++        std::is_base_of<FlexibleArrayBufferView, T>::value>>
+     : public NativeValueTraitsBase<T> {
+   // BufferSourceTypeNoSizeLimit and FlexibleArrayBufferView must be used only
+   // as arguments.
+@@ -880,8 +889,11 @@ struct NativeValueTraits<IDLBufferSource
+ };
+ 
+ template <typename T>
+-  requires std::derived_from<T, FlexibleArrayBufferView>
+-struct NativeValueTraits<IDLNullable<T>> : public NativeValueTraitsBase<T> {
++struct NativeValueTraits<
++    IDLNullable<T>,
++    typename std::enable_if_t<
++        std::is_base_of<FlexibleArrayBufferView, T>::value>>
++    : public NativeValueTraitsBase<T> {
+   // FlexibleArrayBufferView must be used only as arguments.
+   static T NativeValue(v8::Isolate* isolate,
+                        v8::Local<v8::Value> value,
+@@ -1217,8 +1229,9 @@ NativeValueTraits<IDLSequence<T>>::Nativ
+ }
+ 
+ template <typename T>
+-  requires NativeValueTraits<IDLSequence<T>>::has_null_value
+-struct NativeValueTraits<IDLNullable<IDLSequence<T>>>
++struct NativeValueTraits<IDLNullable<IDLSequence<T>>,
++                         typename std::enable_if_t<
++                             NativeValueTraits<IDLSequence<T>>::has_null_value>>
+     : public NativeValueTraitsBase<HeapVector<AddMemberIfNeeded<T>>*> {
+   using ImplType = typename NativeValueTraits<IDLSequence<T>>::ImplType*;
+ 
+@@ -1294,8 +1307,9 @@ struct NativeValueTraits<IDLArray<T>>
+     : public NativeValueTraits<IDLSequence<T>> {};
+ 
+ template <typename T>
+-  requires NativeValueTraits<IDLSequence<T>>::has_null_value
+-struct NativeValueTraits<IDLNullable<IDLArray<T>>>
++struct NativeValueTraits<IDLNullable<IDLArray<T>>,
++                         typename std::enable_if_t<
++                             NativeValueTraits<IDLSequence<T>>::has_null_value>>
+     : public NativeValueTraits<IDLNullable<IDLSequence<T>>> {};
+ 
+ // Record types
+@@ -1425,8 +1439,10 @@ struct NativeValueTraits<IDLRecord<K, V>
+ 
+ // Callback function types
+ template <typename T>
+-  requires std::derived_from<T, CallbackFunctionBase>
+-struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> {
++struct NativeValueTraits<
++    T,
++    typename std::enable_if_t<std::is_base_of<CallbackFunctionBase, T>::value>>
++    : public NativeValueTraitsBase<T*> {
+   static T* NativeValue(v8::Isolate* isolate,
+                         v8::Local<v8::Value> value,
+                         ExceptionState& exception_state) {
+@@ -1449,8 +1465,9 @@ struct NativeValueTraits<T> : public Nat
+ };
+ 
+ template <typename T>
+-  requires std::derived_from<T, CallbackFunctionBase>
+-struct NativeValueTraits<IDLNullable<T>>
++struct NativeValueTraits<
++    IDLNullable<T>,
++    typename std::enable_if_t<std::is_base_of<CallbackFunctionBase, T>::value>>
+     : public NativeValueTraitsBase<IDLNullable<T>> {
+   static T* NativeValue(v8::Isolate* isolate,
+                         v8::Local<v8::Value> value,
+@@ -1479,8 +1496,10 @@ struct NativeValueTraits<IDLNullable<T>>
+ 
+ // Callback interface types
+ template <typename T>
+-  requires std::derived_from<T, CallbackInterfaceBase>
+-struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> {
++struct NativeValueTraits<
++    T,
++    typename std::enable_if_t<std::is_base_of<CallbackInterfaceBase, T>::value>>
++    : public NativeValueTraitsBase<T*> {
+   static T* NativeValue(v8::Isolate* isolate,
+                         v8::Local<v8::Value> value,
+                         ExceptionState& exception_state) {
+@@ -1504,8 +1523,9 @@ struct NativeValueTraits<T> : public Nat
+ 
+ // Interface types
+ template <typename T>
+-  requires std::derived_from<T, CallbackInterfaceBase>
+-struct NativeValueTraits<IDLNullable<T>>
++struct NativeValueTraits<
++    IDLNullable<T>,
++    typename std::enable_if_t<std::is_base_of<CallbackInterfaceBase, T>::value>>
+     : public NativeValueTraitsBase<IDLNullable<T>> {
+   static T* NativeValue(v8::Isolate* isolate,
+                         v8::Local<v8::Value> value,
+@@ -1534,8 +1554,11 @@ struct NativeValueTraits<IDLNullable<T>>
+ 
+ // Dictionary types
+ template <typename T>
+-  requires std::derived_from<T, bindings::DictionaryBase>
+-struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> {
++struct NativeValueTraits<
++    T,
++    typename std::enable_if_t<
++        std::is_base_of<bindings::DictionaryBase, T>::value>>
++    : public NativeValueTraitsBase<T*> {
+   static T* NativeValue(v8::Isolate* isolate,
+                         v8::Local<v8::Value> value,
+                         ExceptionState& exception_state) {
+@@ -1546,11 +1569,14 @@ struct NativeValueTraits<T> : public Nat
+ // We don't support nullable dictionary types in general since it's quite
+ // confusing and often misused.
+ template <typename T>
+-  requires std::derived_from<T, bindings::DictionaryBase> &&
+-           (std::same_as<T, GPUColorTargetState> ||
+-            std::same_as<T, GPURenderPassColorAttachment> ||
+-            std::same_as<T, GPUVertexBufferLayout>)
+-struct NativeValueTraits<IDLNullable<T>> : public NativeValueTraitsBase<T*> {
++struct NativeValueTraits<
++    IDLNullable<T>,
++    typename std::enable_if_t<
++        std::is_base_of<bindings::DictionaryBase, T>::value &&
++        (std::is_same<T, GPUColorTargetState>::value ||
++         std::is_same<T, GPURenderPassColorAttachment>::value ||
++         std::is_same<T, GPUVertexBufferLayout>::value)>>
++    : public NativeValueTraitsBase<T*> {
+   static T* NativeValue(v8::Isolate* isolate,
+                         v8::Local<v8::Value> value,
+                         ExceptionState& exception_state) {
+@@ -1562,8 +1588,11 @@ struct NativeValueTraits<IDLNullable<T>>
+ 
+ // Enumeration types
+ template <typename T>
+-  requires std::derived_from<T, bindings::EnumerationBase>
+-struct NativeValueTraits<T> : public NativeValueTraitsBase<T> {
++struct NativeValueTraits<
++    T,
++    typename std::enable_if_t<
++        std::is_base_of<bindings::EnumerationBase, T>::value>>
++    : public NativeValueTraitsBase<T> {
+   static T NativeValue(v8::Isolate* isolate,
+                        v8::Local<v8::Value> value,
+                        ExceptionState& exception_state) {
+@@ -1573,8 +1602,10 @@ struct NativeValueTraits<T> : public Nat
+ 
+ // Interface types
+ template <typename T>
+-  requires std::derived_from<T, ScriptWrappable>
+-struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> {
++struct NativeValueTraits<
++    T,
++    typename std::enable_if_t<std::is_base_of<ScriptWrappable, T>::value>>
++    : public NativeValueTraitsBase<T*> {
+   // This signifies that CreateIDLSequenceFromV8ArraySlow() may apply
+   // certain optimization based on assumptions about `NativeValue()`
+   // implementation below. For subclasses of ScriptWrappable that have
+@@ -1611,8 +1642,9 @@ struct NativeValueTraits<T> : public Nat
+ };
+ 
+ template <typename T>
+-  requires std::derived_from<T, ScriptWrappable>
+-struct NativeValueTraits<IDLNullable<T>>
++struct NativeValueTraits<
++    IDLNullable<T>,
++    typename std::enable_if_t<std::is_base_of<ScriptWrappable, T>::value>>
+     : public NativeValueTraitsBase<IDLNullable<T>> {
+   static inline T* NativeValue(v8::Isolate* isolate,
+                                v8::Local<v8::Value> value,
+@@ -1647,8 +1679,10 @@ struct NativeValueTraits<IDLNullable<T>>
+ };
+ 
+ template <typename T>
+-  requires std::derived_from<T, bindings::UnionBase>
+-struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> {
++struct NativeValueTraits<
++    T,
++    typename std::enable_if_t<std::is_base_of<bindings::UnionBase, T>::value>>
++    : public NativeValueTraitsBase<T*> {
+   static T* NativeValue(v8::Isolate* isolate,
+                         v8::Local<v8::Value> value,
+                         ExceptionState& exception_state) {
+@@ -1664,8 +1698,10 @@ struct NativeValueTraits<T> : public Nat
+ };
+ 
+ template <typename T>
+-  requires std::derived_from<T, bindings::UnionBase>
+-struct NativeValueTraits<IDLNullable<T>> : public NativeValueTraitsBase<T*> {
++struct NativeValueTraits<
++    IDLNullable<T>,
++    typename std::enable_if_t<std::is_base_of<bindings::UnionBase, T>::value>>
++    : public NativeValueTraitsBase<T*> {
+   static T* NativeValue(v8::Isolate* isolate,
+                         v8::Local<v8::Value> value,
+                         ExceptionState& exception_state) {
+@@ -1686,8 +1722,9 @@ struct NativeValueTraits<IDLNullable<T>>
+ 
+ // Nullable types
+ template <typename InnerType>
+-  requires(!NativeValueTraits<InnerType>::has_null_value)
+-struct NativeValueTraits<IDLNullable<InnerType>>
++struct NativeValueTraits<
++    IDLNullable<InnerType>,
++    typename std::enable_if_t<!NativeValueTraits<InnerType>::has_null_value>>
+     : public NativeValueTraitsBase<IDLNullable<InnerType>> {
+   // https://webidl.spec.whatwg.org/#es-nullable-type
+   using ImplType =
+@@ -1719,8 +1756,9 @@ struct NativeValueTraits<IDLNullable<IDL
+ 
+ // Optional types
+ template <typename T>
+-  requires std::is_arithmetic_v<typename NativeValueTraits<T>::ImplType>
+-struct NativeValueTraits<IDLOptional<T>>
++struct NativeValueTraits<IDLOptional<T>,
++                         typename std::enable_if_t<std::is_arithmetic<
++                             typename NativeValueTraits<T>::ImplType>::value>>
+     : public NativeValueTraitsBase<typename NativeValueTraits<T>::ImplType> {
+   using ImplType = typename NativeValueTraits<T>::ImplType;
+ 
+@@ -1742,8 +1780,9 @@ struct NativeValueTraits<IDLOptional<T>>
+ };
+ 
+ template <typename T>
+-  requires std::is_pointer_v<typename NativeValueTraits<T>::ImplType>
+-struct NativeValueTraits<IDLOptional<T>>
++struct NativeValueTraits<IDLOptional<T>,
++                         typename std::enable_if_t<std::is_pointer<
++                             typename NativeValueTraits<T>::ImplType>::value>>
+     : public NativeValueTraitsBase<typename NativeValueTraits<T>::ImplType> {
+   using ImplType = typename NativeValueTraits<T>::ImplType;
+ 

diff --git a/chromium.spec b/chromium.spec
index 771ec77..528332a 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -300,7 +300,7 @@
 %endif
 
 Name:	chromium%{chromium_channel}
-Version: 121.0.6167.184
+Version: 122.0.6261.57
 Release: 1%{?dist}
 Summary: A WebKit (Blink) powered web browser that Google doesn't want you to use
 Url: http://www.chromium.org/Home
@@ -319,7 +319,7 @@ Patch2: chromium-120-system-libusb.patch
 Patch5: chromium-77.0.3865.75-no-zlib-mangle.patch
 
 # Do not use unrar code, it is non-free
-Patch6: chromium-119-norar.patch
+Patch6: chromium-122-norar.patch
 
 # Try to load widevine from other places
 Patch8: chromium-117-widevine-other-locations.patch
@@ -346,9 +346,6 @@ Patch65: chromium-91.0.4472.77-java-only-allowed-in-android-builds.patch
 # Update rjsmin to 1.2.0
 Patch69: chromium-103.0.5060.53-update-rjsmin-to-1.2.0.patch
 
-# Update six to 1.16.0
-Patch70: chromium-105.0.5195.52-python-six-1.16.0.patch
-
 # Disable tests on remoting build
 Patch82: chromium-98.0.4758.102-remoting-no-tests.patch
 
@@ -411,7 +408,7 @@ Patch117: chromium-118-sigtrap_system_ffmpeg.patch
 Patch118: chromium-121-system-old-ffmpeg.patch
 
 # revert AV1 VAAPI video encode due to old libva on el9
-Patch130: chromium-121-revert-av1enc-el9.patch
+Patch130: chromium-122-revert-av1enc-el9.patch
 
 # file conflict with old kernel on el8/el9
 Patch140: chromium-118-dma_buf_export_sync_file-conflict.patch
@@ -432,16 +429,14 @@ Patch304: chromium-117-string-convert.patch
 
 Patch306: chromium-119-assert.patch
 
-# disable memory tagging in epel7 and epel8 on aarch64 due to new feature IFUNC-Resolver
-# not supported in old glibc < 2.30, error: fatal error: 'sys/ifunc.h' file not found
-Patch307: chromium-121-arm64-memory_tagging.patch
-
 # compiler errors on epel
-Patch308: chromium-121-v8-c++20.patch
-Patch309: chromium-121-constexpr.patch
+Patch307: chromium-122-clang16-buildflags.patch
+# revert it for old clang on rhel and f38
+Patch308: chromium-122-v8-c++20.patch
+Patch309: chromium-122-constexpr.patch
 
 # missing include header files
-Patch310: chromium-121-missing-header-files.patch
+Patch310: chromium-122-missing-header-files.patch
 
 # clang warnings
 Patch311: chromium-115-clang-warnings.patch
@@ -464,19 +459,16 @@ Patch354: chromium-120-split-threshold-for-reg-with-hint.patch
 Patch355: chromium-121-nullptr_t-without-namespace-std.patch
 
 # disable FFmpegAllowLists by default to allow external ffmpeg
-patch356: chromium-120-disable-FFmpegAllowLists.patch
+patch356: chromium-122-disable-FFmpegAllowLists.patch
 
 # remove ldflags -Wl,-mllvm,-disable-auto-upgrade-debug-info which is not supported
-Patch357: chromium-120-clang16-disable-auto-upgrade-debug-info.patch
+Patch357: chromium-122-clang16-disable-auto-upgrade-debug-info.patch
 
 # set clang_lib path
 Patch358: chromium-121-rust-clang_lib.patch
 
-# python3-invalid-escape-sequence
-Patch359: chromium-121-python3-invalid-escape-sequence.patch
-
 # upstream patches
-Patch400: chromium-121-el8-support-64kpage.patch
+Patch400: chromium-122-el8-support-64kpage.patch
 
 # Use chromium-latest.py to generate clean tarball from released build tarballs, found here:
 # http://build.chromium.org/buildbot/official/
@@ -1048,6 +1040,11 @@ udev.
 %patch -P8 -p1 -b .widevine-other-locations
 %patch -P11 -p1 -b .py3
 
+# Fedora branded user agent
+%if 0%{?fedora}
+%patch -P12 -p1 -b .fedora-user-agent
+%endif
+
 %patch -P20 -p1 -b .disable-font-test
 
 %if ! %{bundleminizip}
@@ -1057,7 +1054,6 @@ udev.
 
 %patch -P65 -p1 -b .java-only-allowed
 %patch -P69 -p1 -b .update-rjsmin-to-1.2.0
-%patch -P70 -p1 -b .update-six-to-1.16.0
 %patch -P82 -p1 -b .remoting-no-tests
 
 %if ! %{bundlebrotli}
@@ -1074,11 +1070,6 @@ udev.
 %patch -P91 -p1 -b .system-opus
 %endif
 
-# Fedora branded user agent
-%if 0%{?fedora}
-%patch -P12 -p1 -b .fedora-user-agent
-%endif
-
 %if ! %{bundleffmpegfree}
 %if 0%{?rhel} == 9 || 0%{?fedora} == 37
 %patch -P115 -p1 -b .ffmpeg-5.x-duration
@@ -1092,22 +1083,22 @@ udev.
 %if 0%{?rhel} == 7
 %patch -P100 -p1 -b .el7-memfd-fcntl-include
 %patch -P101 -p1 -b .wayland-strndup-error
-%patch -P102 -p1 -b .default-constructor-involving-anonymous-union
+#patch -P102 -p1 -b .default-constructor-involving-anonymous-union
 %patch -P103 -p1 -b .epel7-header-workarounds
 %patch -P104 -p1 -b .el7cups
 %patch -P105 -p1 -b .el7-old-libdrm
 %patch -P106 -p1 -b .el7-erase-fix
-%patch -P107 -p1 -b .el7-extra-operator-equalequal
+#patch -P107 -p1 -b .el7-extra-operator-equalequal
 %patch -P108 -p1 -b .el7_v4l2_quantization
 %patch -P109 -p1 -b .wireless
 %patch -P110 -p1 -b .buildflag-el7
-%patch -P111 -p1 -b .constexpr
+#patch -P111 -p1 -b .constexpr
 %patch -P113 -p1 -b .el7-clang-version-warning
 %patch -P114 -p1 -R -b .clang-build-failure
-%patch -P300 -p1 -b .no_matching_constructor
+#patch -P300 -p1 -b .no_matching_constructor
 %patch -P301 -p1 -b .workaround_clang-SkColor4f
 %patch -P302 -p1 -b .workaround_clang_bug-structured_binding
-%patch -P303 -p1 -b .typename
+#patch -P303 -p1 -b .typename
 %patch -P304 -p1 -b .string-convert
 %patch -P306 -p1 -b .assert
 %endif
@@ -1120,14 +1111,9 @@ udev.
 %patch -P130 -p1 -b .revert-av1enc
 %endif
 
-%ifarch aarch64
-%if 0%{?rhel} <= 8
-%patch -P307 -p1 -b .memory_tagging
-%endif
-%endif
-
-%if 0%{?rhel} || 0%{?fedora} < 39
-%patch -P308 -p1 -R -b .v8-c++20
+%if 0%{?rhel} || 0%{?fedora} && 0%{?fedora} < 39
+%patch -P307 -p1 -b .clang16-buildflag
+%patch -P308 -p1 -b .v8-c++20
 %patch -P309 -p1 -b .constexpr
 %endif
 
@@ -1148,7 +1134,6 @@ udev.
 %patch -P356 -p1 -b .disable-FFmpegAllowLists
 %patch -P357 -p1 -b .clang16-disable-auto-upgrade-debug-info
 %patch -P358 -p1 -b .rust-clang_lib
-%patch -P359 -p1 -b .python3-invalid-escape-sequence
 
 %%ifarch aarch64
 %if 0%{?rhel} == 8
@@ -1240,6 +1225,7 @@ CXXFLAGS="$CFLAGS"
 CFLAGS="$FLAGS"
 CXXFLAGS="$FLAGS"
 %endif
+
 # reduce the size of relocations
 %if 0%{?fedora} || 0%{?rhel} > 9
 LDFLAGS="$LDFLAGS -Wl,-z,pack-relative-relocs"
@@ -1932,6 +1918,20 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
 %{chromium_path}/chromedriver
 
 %changelog
+* Wed Feb 21 2024 Than Ngo <than@redhat.com> - 122.0.6261.57-1
+- update to 122.0.6261.57
+   * High CVE-2024-1669: Out of bounds memory access in Blink
+   * High CVE-2024-1670: Use after free in Mojo
+   * Medium CVE-2024-1671: Inappropriate implementation in Site Isolation
+   * Medium CVE-2024-1672: Inappropriate implementation in Content Security Policy
+   * Medium CVE-2024-1673: Use after free in Accessibility
+   * Medium CVE-2024-1674: Inappropriate implementation in Navigation
+   * Medium CVE-2024-1675: Insufficient policy enforcement in Download
+   * Low CVE-2024-1676: Inappropriate implementation in Navigation.
+
+* Sun Feb 18 2024 Than Ngo <than@redhat.com> - 122.0.6261.39-1
+- update to 122.0.6261.39
+
 * Wed Feb 14 2024 Than Ngo <than@redhat.com> - 121.0.6167.184-1
 - update to 121.0.6167.184
 

diff --git a/sources b/sources
index 7904737..9dc9d59 100644
--- a/sources
+++ b/sources
@@ -2,4 +2,4 @@ SHA512 (node-v20.6.1-linux-arm64.tar.xz) = adfcaf2c22614797fd69fb46d94c1cbf64dea
 SHA512 (node-v20.6.1-linux-x64.tar.xz) = 7e15c05041a9a50f0046266aadb2e092a5aefbec19be1c7c809471add520cb57c7df3c47d88b1888b29bf2979dca3c92adddfd965370fa2a9da4ea02186464fd
 SHA512 (linux-arm64-0.19.2.tgz) = 8a0d8fec6786fffcd6954d00820037a55d61e60762c74300df0801f8db27057562c221a063bedfb8df56af9ba80abb366336987e881782c5996e6f871abd3dc6
 SHA512 (linux-x64-0.19.2.tgz) = a31cc74c4bfa54f9b75d735a1cfc944d3b5efb7c06bfba9542da9a642ae0b2d235ea00ae84d3ad0572c406405110fe7b61377af0fd15803806ef78d20fc6f05d
-SHA512 (chromium-121.0.6167.184-clean.tar.xz) = bbcb0aae2093313ace416f814a3e664a79ebe6b668a1cbcd47fa8285c4fef0a3106c4d15a164c2ea46630ac2e3f80a02b4d8d925c9512b48b411dd00849a1c20
+SHA512 (chromium-122.0.6261.57-clean.tar.xz) = 343ae0250614fcf744fef05ea6f7c7b9d06637bf56eb86acc04672da1206f38c88805bf696b793176cdd751ccdcea959d30e517550bcce806026c90c90573c6b

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-08-07 16:06 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-07 16:06 [rpms/chromium] epel9-next: - update to 122.0.6261.57 Than Ngo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox