diff --git a/.firefox.metadata b/.firefox.metadata
index bce7a76..3eee2ac 100644
--- a/.firefox.metadata
+++ b/.firefox.metadata
@@ -1,7 +1,7 @@
 18a8f30a0356c751b8d0ea6f76e764cab13ee046 SOURCES/Python-2.7.13.tar.xz
 a9effcc06cf80eaa22f12c1f7d6aa4266a1c4966 SOURCES/cbindgen-vendor-0.14.3.tar.xz
-319b0d40c27299d5646587f5928e8f90abeb28a1 SOURCES/firefox-78.8.0esr.source.tar.xz
-2f8d4b32580c20e42a99c419fcb24c8fb3e2a679 SOURCES/firefox-langpacks-78.8.0esr-20210217.tar.xz
+03a8fc7dc94a2ceaa2a7b902e98d09abab62ae38 SOURCES/firefox-78.9.0esr.source.tar.xz
+2955ee68508613d63528c4a8b9da027135609597 SOURCES/firefox-langpacks-78.9.0esr-20210317.tar.xz
 0de63f863b158454b9429234b52ed28a397ec45c SOURCES/gtk3-private-3.22.26-1.el6.src.rpm
 e188ab1a444697bc649e223c28389d82ca94c472 SOURCES/libffi-3.0.13-18.el7_3.src.rpm
 5715f987bc0024ce5d72993cb101b8268350033b SOURCES/nodejs-10.21.0-5.fc32.src.rpm
diff --git a/.gitignore b/.gitignore
index 10dab0c..2090ecd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,7 @@
 SOURCES/Python-2.7.13.tar.xz
 SOURCES/cbindgen-vendor-0.14.3.tar.xz
-SOURCES/firefox-78.8.0esr.source.tar.xz
-SOURCES/firefox-langpacks-78.8.0esr-20210217.tar.xz
+SOURCES/firefox-78.9.0esr.source.tar.xz
+SOURCES/firefox-langpacks-78.9.0esr-20210317.tar.xz
 SOURCES/gtk3-private-3.22.26-1.el6.src.rpm
 SOURCES/libffi-3.0.13-18.el7_3.src.rpm
 SOURCES/nodejs-10.21.0-5.fc32.src.rpm
diff --git a/README.debrand b/README.debrand
deleted file mode 100644
index 01c46d2..0000000
--- a/README.debrand
+++ /dev/null
@@ -1,2 +0,0 @@
-Warning: This package was configured for automatic debranding, but the changes
-failed to apply.
diff --git a/SOURCES/Bug-1238661---fix-mozillaSignalTrampoline-to-work-.patch b/SOURCES/Bug-1238661---fix-mozillaSignalTrampoline-to-work-.patch
deleted file mode 100644
index 6dfe2ad..0000000
--- a/SOURCES/Bug-1238661---fix-mozillaSignalTrampoline-to-work-.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up firefox-60.0/mfbt/LinuxSignal.h.mozilla-1238661 firefox-60.0/mfbt/LinuxSignal.h
---- firefox-60.0/mfbt/LinuxSignal.h.mozilla-1238661	2018-04-27 08:55:38.848241768 +0200
-+++ firefox-60.0/mfbt/LinuxSignal.h	2018-04-27 09:06:47.946769859 +0200
-@@ -22,7 +22,7 @@ __attribute__((naked)) void SignalTrampo
-                                              void* aContext) {
-   asm volatile("nop; nop; nop; nop" : : : "memory");
- 
--  asm volatile("b %0" : : "X"(H) : "memory");
-+  asm volatile("bx %0" : : "r"(H), "l"(aSignal), "l"(aInfo), "l"(aContext) : "memory");
- }
- 
- #  define MOZ_SIGNAL_TRAMPOLINE(h) (mozilla::SignalTrampoline<h>)
diff --git a/SOURCES/Bug-1526653---fix_user_vfp_armv7.patch b/SOURCES/Bug-1526653---fix_user_vfp_armv7.patch
deleted file mode 100644
index 3f84f95..0000000
--- a/SOURCES/Bug-1526653---fix_user_vfp_armv7.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From fd6847c9416f9eebde636e21d794d25d1be8791d Mon Sep 17 00:00:00 2001
-From: Mike Hommey <mh@glandium.org>
-Date: Sat, 1 Jun 2019 09:06:01 +0900
-Subject: [PATCH] Bug 1526653 - Include struct definitions for user_vfp and
- user_vfp_exc.
-
----
- js/src/wasm/WasmSignalHandlers.cpp | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
-diff --git a/js/src/wasm/WasmSignalHandlers.cpp b/js/src/wasm/WasmSignalHandlers.cpp
-index 636537f8478..383c380f04c 100644
---- a/js/src/wasm/WasmSignalHandlers.cpp
-+++ b/js/src/wasm/WasmSignalHandlers.cpp
-@@ -248,7 +248,16 @@ using mozilla::DebugOnly;
- #endif
- 
- #ifdef WASM_EMULATE_ARM_UNALIGNED_FP_ACCESS
--#  include <sys/user.h>
-+struct user_vfp {
-+  unsigned long long fpregs[32];
-+  unsigned long fpscr;
-+};
-+
-+struct user_vfp_exc {
-+  unsigned long fpexc;
-+  unsigned long fpinst;
-+  unsigned long fpinst2;
-+};
- #endif
- 
- #if defined(ANDROID)
--- 
-2.20.1
-
diff --git a/SOURCES/D87019-thin-vec-big-endian.diff b/SOURCES/D87019-thin-vec-big-endian.diff
index bc8589b..4785900 100644
--- a/SOURCES/D87019-thin-vec-big-endian.diff
+++ b/SOURCES/D87019-thin-vec-big-endian.diff
@@ -1,24 +1,19 @@
-diff -up firefox-78.1.0/Cargo.lock.D87019-thin-vec-big-endian.diff firefox-78.1.0/Cargo.lock
---- firefox-78.1.0/Cargo.lock.D87019-thin-vec-big-endian.diff	2020-07-22 19:56:54.000000000 +0200
-+++ firefox-78.1.0/Cargo.lock	2020-08-17 17:04:24.133598583 +0200
-@@ -4792,12 +4792,9 @@ checksum = "8eaa81235c7058867fa8c0e7314f
+--- firefox-78.9.0/Cargo.lock.D87019-thin-vec-big-endian.diff	2021-03-18 15:53:29.520861862 +0100
++++ firefox-78.9.0/Cargo.lock	2021-03-18 15:56:14.193397228 +0100
+@@ -4792,9 +4792,9 @@ checksum = "8eaa81235c7058867fa8c0e7314f
  
  [[package]]
  name = "thin-vec"
--version = "0.1.0"
+-version = "0.1.2"
 +version = "0.2.1"
  source = "registry+https://github.com/rust-lang/crates.io-index"
--checksum = "73fdf4b84c65a85168477b7fb6c498e0716bc9487fba24623389ea7f51708044"
--dependencies = [
-- "libc",
--]
+-checksum = "3a93c9ade36a827a69257925808463db46ffcf193442fad01eb9bdc1d31aed81"
 +checksum = "dcc760ada4a9f56fc6d0e81bd143984ebc7bb1b875a6891aa2fa613ca7394fc0"
  
  [[package]]
  name = "thiserror"
-diff -up firefox-78.1.0/gfx/webrender_bindings/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/gfx/webrender_bindings/Cargo.toml
---- firefox-78.1.0/gfx/webrender_bindings/Cargo.toml.D87019-thin-vec-big-endian.diff	2020-08-17 17:04:24.133598583 +0200
-+++ firefox-78.1.0/gfx/webrender_bindings/Cargo.toml	2020-08-17 17:05:26.984805590 +0200
+--- firefox-78.9.0/gfx/webrender_bindings/Cargo.toml.D87019-thin-vec-big-endian.diff	2021-03-15 16:52:33.000000000 +0100
++++ firefox-78.9.0/gfx/webrender_bindings/Cargo.toml	2021-03-18 15:53:29.522861856 +0100
 @@ -20,7 +20,7 @@ nsstring = { path = "../../xpcom/rust/ns
  bincode = "1.0"
  uuid = { version = "0.8", features = ["v4"] }
@@ -28,18 +23,16 @@ diff -up firefox-78.1.0/gfx/webrender_bindings/Cargo.toml.D87019-thin-vec-big-en
  swgl = { path = "../wr/swgl" }
  
  [dependencies.webrender]
-diff -up firefox-78.1.0/intl/l10n/rust/fluent-ffi/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/intl/l10n/rust/fluent-ffi/Cargo.toml
---- firefox-78.1.0/intl/l10n/rust/fluent-ffi/Cargo.toml.D87019-thin-vec-big-endian.diff	2020-07-22 17:56:20.000000000 +0200
-+++ firefox-78.1.0/intl/l10n/rust/fluent-ffi/Cargo.toml	2020-08-17 17:04:24.134598587 +0200
+--- firefox-78.9.0/intl/l10n/rust/fluent-ffi/Cargo.toml.D87019-thin-vec-big-endian.diff	2021-03-15 16:52:33.000000000 +0100
++++ firefox-78.9.0/intl/l10n/rust/fluent-ffi/Cargo.toml	2021-03-18 15:53:29.524861850 +0100
 @@ -10,4 +10,4 @@ fluent-pseudo = "0.2"
  intl-memoizer = "0.4"
  unic-langid = "0.8"
  nsstring = { path = "../../../../xpcom/rust/nsstring" }
 -thin-vec = { version = "0.1.0", features = ["gecko-ffi"] }
 +thin-vec = { version = "0.2.1", features = ["gecko-ffi"] }
-diff -up firefox-78.1.0/intl/locale/rust/fluent-langneg-ffi/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/intl/locale/rust/fluent-langneg-ffi/Cargo.toml
---- firefox-78.1.0/intl/locale/rust/fluent-langneg-ffi/Cargo.toml.D87019-thin-vec-big-endian.diff	2020-07-22 17:56:20.000000000 +0200
-+++ firefox-78.1.0/intl/locale/rust/fluent-langneg-ffi/Cargo.toml	2020-08-17 17:04:24.134598587 +0200
+--- firefox-78.9.0/intl/locale/rust/fluent-langneg-ffi/Cargo.toml.D87019-thin-vec-big-endian.diff	2021-03-15 16:52:33.000000000 +0100
++++ firefox-78.9.0/intl/locale/rust/fluent-langneg-ffi/Cargo.toml	2021-03-18 15:53:29.525861847 +0100
 @@ -9,7 +9,7 @@ edition = "2018"
  nserror = { path = "../../../../xpcom/rust/nserror" }
  nsstring = { path = "../../../../xpcom/rust/nsstring" }
@@ -49,9 +42,8 @@ diff -up firefox-78.1.0/intl/locale/rust/fluent-langneg-ffi/Cargo.toml.D87019-th
  fluent-langneg = { version = "0.12.1", features = ["cldr"] }
  unic-langid = "0.8"
  unic-langid-ffi = { path = "../unic-langid-ffi" }
-diff -up firefox-78.1.0/intl/locale/rust/unic-langid-ffi/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/intl/locale/rust/unic-langid-ffi/Cargo.toml
---- firefox-78.1.0/intl/locale/rust/unic-langid-ffi/Cargo.toml.D87019-thin-vec-big-endian.diff	2020-07-22 17:56:20.000000000 +0200
-+++ firefox-78.1.0/intl/locale/rust/unic-langid-ffi/Cargo.toml	2020-08-17 17:04:24.134598587 +0200
+--- firefox-78.9.0/intl/locale/rust/unic-langid-ffi/Cargo.toml.D87019-thin-vec-big-endian.diff	2021-03-15 16:52:33.000000000 +0100
++++ firefox-78.9.0/intl/locale/rust/unic-langid-ffi/Cargo.toml	2021-03-18 15:53:29.526861844 +0100
 @@ -9,5 +9,5 @@ edition = "2018"
  nserror = { path = "../../../../xpcom/rust/nserror" }
  nsstring = { path = "../../../../xpcom/rust/nsstring" }
@@ -59,9 +51,8 @@ diff -up firefox-78.1.0/intl/locale/rust/unic-langid-ffi/Cargo.toml.D87019-thin-
 -thin-vec = { version = "0.1.0", features = ["gecko-ffi"] }
 +thin-vec = { version = "0.2.1", features = ["gecko-ffi"] }
  unic-langid = { version = "0.8", features = ["likelysubtags"] }
-diff -up firefox-78.1.0/netwerk/socket/neqo_glue/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/netwerk/socket/neqo_glue/Cargo.toml
---- firefox-78.1.0/netwerk/socket/neqo_glue/Cargo.toml.D87019-thin-vec-big-endian.diff	2020-08-17 17:04:24.134598587 +0200
-+++ firefox-78.1.0/netwerk/socket/neqo_glue/Cargo.toml	2020-08-17 17:05:10.352750807 +0200
+--- firefox-78.9.0/netwerk/socket/neqo_glue/Cargo.toml.D87019-thin-vec-big-endian.diff	2021-03-15 16:52:37.000000000 +0100
++++ firefox-78.9.0/netwerk/socket/neqo_glue/Cargo.toml	2021-03-18 15:53:29.527861842 +0100
 @@ -14,7 +14,7 @@ neqo-common = { tag = "v0.2.4", git = "h
  nserror = { path = "../../../xpcom/rust/nserror" }
  nsstring = { path = "../../../xpcom/rust/nsstring" }
@@ -71,9 +62,8 @@ diff -up firefox-78.1.0/netwerk/socket/neqo_glue/Cargo.toml.D87019-thin-vec-big-
  
  [dependencies.neqo-crypto]
  tag = "v0.2.4"
-diff -up firefox-78.1.0/security/manager/ssl/cert_storage/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/security/manager/ssl/cert_storage/Cargo.toml
---- firefox-78.1.0/security/manager/ssl/cert_storage/Cargo.toml.D87019-thin-vec-big-endian.diff	2020-07-22 19:56:55.000000000 +0200
-+++ firefox-78.1.0/security/manager/ssl/cert_storage/Cargo.toml	2020-08-17 17:04:24.134598587 +0200
+--- firefox-78.9.0/security/manager/ssl/cert_storage/Cargo.toml.D87019-thin-vec-big-endian.diff	2021-03-15 16:52:37.000000000 +0100
++++ firefox-78.9.0/security/manager/ssl/cert_storage/Cargo.toml	2021-03-18 15:53:29.528861839 +0100
 @@ -18,6 +18,6 @@ rust_cascade = "0.6.0"
  sha2 = "^0.8"
  storage_variant = { path = "../../../../storage/variant" }
@@ -82,9 +72,8 @@ diff -up firefox-78.1.0/security/manager/ssl/cert_storage/Cargo.toml.D87019-thin
 +thin-vec = { version = "0.2.1", features = ["gecko-ffi"] }
  time = "0.1"
  xpcom = { path = "../../../../xpcom/rust/xpcom" }
-diff -up firefox-78.1.0/services/fxaccounts/rust-bridge/firefox-accounts-bridge/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/services/fxaccounts/rust-bridge/firefox-accounts-bridge/Cargo.toml
---- firefox-78.1.0/services/fxaccounts/rust-bridge/firefox-accounts-bridge/Cargo.toml.D87019-thin-vec-big-endian.diff	2020-08-17 17:04:24.134598587 +0200
-+++ firefox-78.1.0/services/fxaccounts/rust-bridge/firefox-accounts-bridge/Cargo.toml	2020-08-17 17:04:52.432691786 +0200
+--- firefox-78.9.0/services/fxaccounts/rust-bridge/firefox-accounts-bridge/Cargo.toml.D87019-thin-vec-big-endian.diff	2021-03-15 16:52:38.000000000 +0100
++++ firefox-78.9.0/services/fxaccounts/rust-bridge/firefox-accounts-bridge/Cargo.toml	2021-03-18 15:53:29.528861839 +0100
 @@ -20,5 +20,5 @@ nserror = { path = "../../../../xpcom/ru
  nsstring = { path = "../../../../xpcom/rust/nsstring" }
  xpcom = { path = "../../../../xpcom/rust/xpcom" }
@@ -92,9 +81,8 @@ diff -up firefox-78.1.0/services/fxaccounts/rust-bridge/firefox-accounts-bridge/
 -thin-vec = { version = "0.1", features = ["gecko-ffi"] }
 +thin-vec = { version = "0.2.1", features = ["gecko-ffi"] }
  fxa-client = { git = "https://github.com/mozilla/application-services", rev = "61dcc364ac0d6d0816ab88a494bbf20d824b009b", features = ["gecko"] }
-diff -up firefox-78.1.0/services/sync/golden_gate/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/services/sync/golden_gate/Cargo.toml
---- firefox-78.1.0/services/sync/golden_gate/Cargo.toml.D87019-thin-vec-big-endian.diff	2020-07-22 17:56:24.000000000 +0200
-+++ firefox-78.1.0/services/sync/golden_gate/Cargo.toml	2020-08-17 17:04:24.134598587 +0200
+--- firefox-78.9.0/services/sync/golden_gate/Cargo.toml.D87019-thin-vec-big-endian.diff	2021-03-15 16:52:38.000000000 +0100
++++ firefox-78.9.0/services/sync/golden_gate/Cargo.toml	2021-03-18 15:53:29.529861836 +0100
 @@ -19,5 +19,5 @@ sync15-traits = { git = "https://github.
  xpcom = { path = "../../../xpcom/rust/xpcom" }
  
@@ -102,52 +90,28 @@ diff -up firefox-78.1.0/services/sync/golden_gate/Cargo.toml.D87019-thin-vec-big
 -version = "0.1.0"
 +version = "0.2.1"
  features = ["gecko-ffi"]
-diff -up firefox-78.1.0/third_party/rust/thin-vec/.cargo-checksum.json.D87019-thin-vec-big-endian.diff firefox-78.1.0/third_party/rust/thin-vec/.cargo-checksum.json
---- firefox-78.1.0/third_party/rust/thin-vec/.cargo-checksum.json.D87019-thin-vec-big-endian.diff	2020-07-22 17:56:29.000000000 +0200
-+++ firefox-78.1.0/third_party/rust/thin-vec/.cargo-checksum.json	2020-08-17 17:04:24.134598587 +0200
+--- firefox-78.9.0/third_party/rust/thin-vec/.cargo-checksum.json.D87019-thin-vec-big-endian.diff	2021-03-18 15:53:29.529861836 +0100
++++ firefox-78.9.0/third_party/rust/thin-vec/.cargo-checksum.json	2021-03-18 15:57:43.631168890 +0100
 @@ -1 +1 @@
--{"files":{"Cargo.toml":"fb96cad605ae48215811808c1cc1b9a50248f2b14542058094b23983e2f8d8a0","README.md":"c26d7101e3031e7dd8890ce938e50cad7a1e6adf7fc2f2b0d3c36b03afe68c0b","src/heap.rs":"fe84a4ff433568d5713685456d87597ac5dcdb9d5190061a3da8074240ba1bc3","src/lib.rs":"ce36db8e3464dddade7c1ddbe3ee1f5e525af5be492ea51a0d8a0776c1adfc28","src/range.rs":"bac59bcb6230367a39c7e28ac15263e4526f966cd8c72015873017f17c115aaa"},"package":"73fdf4b84c65a85168477b7fb6c498e0716bc9487fba24623389ea7f51708044"}
+-{"files":{"Cargo.toml":"7b164cc8a702a204a4732cb4da2940711b8e3be915c258e2a972d4874d767b4c","README.md":"c26d7101e3031e7dd8890ce938e50cad7a1e6adf7fc2f2b0d3c36b03afe68c0b","src/lib.rs":"9f2a087cabfe0b6f83818323bb9004b45fe7548c51376816fd8d4572256bd0e8","src/range.rs":"bac59bcb6230367a39c7e28ac15263e4526f966cd8c72015873017f17c115aaa"},"package":"3a93c9ade36a827a69257925808463db46ffcf193442fad01eb9bdc1d31aed81"}
 \ No newline at end of file
 +{"files":{"Cargo.toml":"754c05523d17eb7591c3ea2c9294e47c05fbb257fed04b78546fb2ec7cafa8b4","README.md":"c26d7101e3031e7dd8890ce938e50cad7a1e6adf7fc2f2b0d3c36b03afe68c0b","src/lib.rs":"627c6094c3f0286dba25bc73f5672c06c5061c25b01c513d213cbdda100673a2"},"package":"dcc760ada4a9f56fc6d0e81bd143984ebc7bb1b875a6891aa2fa613ca7394fc0"}
-\ No newline at end of file
-diff -up firefox-78.1.0/third_party/rust/thin-vec/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/third_party/rust/thin-vec/Cargo.toml
---- firefox-78.1.0/third_party/rust/thin-vec/Cargo.toml.D87019-thin-vec-big-endian.diff	2020-07-22 17:56:29.000000000 +0200
-+++ firefox-78.1.0/third_party/rust/thin-vec/Cargo.toml	2020-08-17 17:04:24.135598590 +0200
-@@ -3,7 +3,7 @@
- # When uploading crates to the registry Cargo will automatically
- # "normalize" Cargo.toml files for maximal compatibility
- # with all versions of Cargo and also rewrite `path` dependencies
--# to registry (e.g. crates.io) dependencies
-+# to registry (e.g., crates.io) dependencies
- #
- # If you believe there's an error in this file please file an
- # issue against the rust-lang/cargo repository. If you're
-@@ -11,16 +11,17 @@
+--- firefox-78.9.0/third_party/rust/thin-vec/Cargo.toml.D87019-thin-vec-big-endian.diff	2021-03-15 16:52:42.000000000 +0100
++++ firefox-78.9.0/third_party/rust/thin-vec/Cargo.toml	2021-03-18 15:59:34.162886751 +0100
+@@ -11,8 +11,9 @@
  # will likely look very different (and much more reasonable)
  
  [package]
 +edition = "2018"
  name = "thin-vec"
--version = "0.1.0"
+-version = "0.1.2"
 +version = "0.2.1"
  authors = ["Alexis Beingessner <a.beingessner@gmail.com>"]
  description = "a vec that takes up less space on the stack"
  homepage = "https://github.com/gankro/thin-vec"
- readme = "README.md"
- license = "MIT/Apache-2.0"
- repository = "https://github.com/gankro/thin-vec"
--[dependencies.libc]
--version = "0.2"
-+
-+[dependencies]
- 
- [features]
- default = []
-diff -up firefox-78.1.0/third_party/rust/thin-vec/src/heap.rs.D87019-thin-vec-big-endian.diff firefox-78.1.0/third_party/rust/thin-vec/src/heap.rs
-diff -up firefox-78.1.0/third_party/rust/thin-vec/src/lib.rs.D87019-thin-vec-big-endian.diff firefox-78.1.0/third_party/rust/thin-vec/src/lib.rs
---- firefox-78.1.0/third_party/rust/thin-vec/src/lib.rs.D87019-thin-vec-big-endian.diff	2020-07-22 17:56:28.000000000 +0200
-+++ firefox-78.1.0/third_party/rust/thin-vec/src/lib.rs	2020-08-17 17:04:24.135598590 +0200
-@@ -1,50 +1,252 @@
+--- firefox-78.9.0/third_party/rust/thin-vec/src/lib.rs.D87019-thin-vec-big-endian.diff	2021-03-15 16:52:42.000000000 +0100
++++ firefox-78.9.0/third_party/rust/thin-vec/src/lib.rs	2021-03-18 16:08:47.212871917 +0100
+@@ -1,47 +1,252 @@
 -mod range;
 +//! ThinVec is exactly the same as Vec, except that it stores its `len` and `capacity` in the buffer
 +//! it allocates.
@@ -297,23 +261,19 @@ diff -up firefox-78.1.0/third_party/rust/thin-vec/src/lib.rs.D87019-thin-vec-big
 -use std::ops::{Deref, DerefMut};
 +use std::ops::{Deref, DerefMut, RangeBounds};
  use std::marker::PhantomData;
-+use std::alloc::*;
+ use std::alloc::*;
  use std::cmp::*;
  use std::hash::*;
  use std::borrow::*;
 -use range::RangeArgument;
  use std::ptr::NonNull;
  
--// Heap shimming because reasons. This doesn't unfortunately match the heap api
--// right now because reasons.
--mod heap;
-+use impl_details::*;
- 
 -#[cfg(not(feature = "gecko-ffi"))]
 -type SizeType = usize;
 -#[cfg(feature = "gecko-ffi")]
 -type SizeType = u32;
--
++use impl_details::*;
+ 
 -#[cfg(feature = "gecko-ffi")]
 -const AUTO_MASK: u32 = 1 << 31;
 -#[cfg(feature = "gecko-ffi")]
@@ -407,7 +367,8 @@ diff -up firefox-78.1.0/third_party/rust/thin-vec/src/lib.rs.D87019-thin-vec-big
 +    #[cfg(target_endian = "big")]
 +    pub fn is_auto(cap: SizeType) -> bool {
 +        (cap & 1) != 0
-+    }
+     }
+-    x as SizeType
 +
 +    #[inline]
 +    pub fn assert_size(x: usize) -> SizeType {
@@ -415,8 +376,7 @@ diff -up firefox-78.1.0/third_party/rust/thin-vec/src/lib.rs.D87019-thin-vec-big
 +            panic!("nsTArray size may not exceed the capacity of a 32-bit sized int");
 +        }
 +        x as SizeType
-     }
--    x as SizeType
++    }
 +
  }
  
@@ -427,7 +387,7 @@ diff -up firefox-78.1.0/third_party/rust/thin-vec/src/lib.rs.D87019-thin-vec-big
  #[repr(C)]
  struct Header {
      _len: SizeType,
-@@ -56,38 +258,10 @@ impl Header {
+@@ -53,38 +258,10 @@ impl Header {
          self._len as usize
      }
  
@@ -466,7 +426,7 @@ diff -up firefox-78.1.0/third_party/rust/thin-vec/src/lib.rs.D87019-thin-vec-big
      fn data<T>(&self) -> *mut T {
          let header_size = mem::size_of::<Header>();
          let padding = padding::<T>();
-@@ -105,6 +279,41 @@ impl Header {
+@@ -102,6 +279,41 @@ impl Header {
      }
  }
  
@@ -508,7 +468,7 @@ diff -up firefox-78.1.0/third_party/rust/thin-vec/src/lib.rs.D87019-thin-vec-big
  /// Singleton that all empty collections share.
  /// Note: can't store non-zero ZSTs, we allocate in that case. We could
  /// optimize everything to not do that (basically, make ptr == len and branch
-@@ -121,9 +330,7 @@ extern {
+@@ -118,9 +330,7 @@ extern {
  
  // TODO: overflow checks everywhere
  
@@ -519,35 +479,20 @@ diff -up firefox-78.1.0/third_party/rust/thin-vec/src/lib.rs.D87019-thin-vec-big
  
  fn alloc_size<T>(cap: usize) -> usize {
      // Compute "real" header size with pointer math
-@@ -156,15 +363,22 @@ fn alloc_align<T>() -> usize {
-     max(mem::align_of::<T>(), mem::align_of::<Header>())
- }
- 
--fn header_with_capacity<T>(cap: usize) -> NonNull<Header> {
--    debug_assert!(cap > 0);
-+fn layout<T>(cap: usize) -> Layout {
+@@ -165,9 +375,10 @@ fn layout<T>(cap: usize) -> Layout {
+ fn header_with_capacity<T>(cap: usize) -> NonNull<Header> {
+     debug_assert!(cap > 0);
      unsafe {
--        let header = heap::allocate(
-+        Layout::from_size_align_unchecked(
-             alloc_size::<T>(cap),
-             alloc_align::<T>(),
--        ) as *mut Header;
-+        )
-+    }
-+}
- 
--        if header.is_null() { oom() }
-+fn header_with_capacity<T>(cap: usize) -> NonNull<Header> {
-+    debug_assert!(cap > 0);
-+    unsafe {
+-        let header = alloc(layout::<T>(cap)) as *mut Header;
 +        let layout = layout::<T>(cap);
 +        let header = alloc(layout) as *mut Header;
-+
+ 
+-        if header.is_null() { oom() }
 +        if header.is_null() { handle_alloc_error(layout) }
  
          // "Infinite" capacity for zero-sized types:
          (*header).set_cap(if mem::size_of::<T>() == 0 { MAX_CAP } else { cap });
-@@ -176,28 +390,8 @@ fn header_with_capacity<T>(cap: usize) -
+@@ -179,28 +390,8 @@ fn header_with_capacity<T>(cap: usize) -
  
  
  
@@ -578,7 +523,7 @@ diff -up firefox-78.1.0/third_party/rust/thin-vec/src/lib.rs.D87019-thin-vec-big
  pub struct ThinVec<T> {
      ptr: NonNull<Header>,
      boo: PhantomData<T>,
-@@ -627,15 +821,15 @@ impl<T> ThinVec<T> {
+@@ -630,15 +821,15 @@ impl<T> ThinVec<T> {
      }
  
      pub fn drain<R>(&mut self, range: R) -> Drain<T>
@@ -597,35 +542,11 @@ diff -up firefox-78.1.0/third_party/rust/thin-vec/src/lib.rs.D87019-thin-vec-big
              Bound::Included(&n) => n + 1,
              Bound::Excluded(&n) => n,
              Bound::Unbounded => len,
-@@ -666,9 +860,10 @@ impl<T> ThinVec<T> {
- 
-     unsafe fn deallocate(&mut self) {
-         if self.has_allocation() {
--            heap::deallocate(self.ptr() as *mut u8,
--                alloc_size::<T>(self.capacity()),
--                alloc_align::<T>());
-+            dealloc(
-+                self.ptr() as *mut u8,
-+                layout::<T>(self.capacity()),
-+            )
-         }
-     }
+@@ -688,11 +879,30 @@ impl<T> ThinVec<T> {
+                 alloc_size::<T>(new_cap),
+             ) as *mut Header;
  
-@@ -678,15 +873,36 @@ impl<T> ThinVec<T> {
-         debug_assert!(new_cap > 0);
-         if self.has_allocation() {
-             let old_cap = self.capacity();
--            let ptr = heap::reallocate(self.ptr() as *mut u8,
--                                       alloc_size::<T>(old_cap),
--                                       alloc_size::<T>(new_cap),
--                                       alloc_align::<T>()) as *mut Header;
 -            if ptr.is_null() { oom() }
-+            let ptr = realloc(
-+                self.ptr() as *mut u8,
-+                layout::<T>(old_cap),
-+                alloc_size::<T>(new_cap),
-+            ) as *mut Header;
-+
 +            if ptr.is_null() { handle_alloc_error(layout::<T>(new_cap)) }
              (*ptr).set_cap(new_cap);
              self.ptr = NonNull::new_unchecked(ptr);
@@ -654,7 +575,7 @@ diff -up firefox-78.1.0/third_party/rust/thin-vec/src/lib.rs.D87019-thin-vec-big
          }
      }
  
-@@ -1087,10 +1303,7 @@ mod tests {
+@@ -1093,10 +1303,7 @@ mod tests {
          use std::mem::size_of;
          assert_eq!(size_of::<ThinVec<u8>>(), size_of::<&u8>());
  
@@ -666,7 +587,7 @@ diff -up firefox-78.1.0/third_party/rust/thin-vec/src/lib.rs.D87019-thin-vec-big
      }
  
      #[test]
-@@ -1725,7 +1938,6 @@ mod std_tests {
+@@ -1731,7 +1938,6 @@ mod std_tests {
          assert_eq!(v, &[(), ()]);
      }
  
@@ -674,7 +595,7 @@ diff -up firefox-78.1.0/third_party/rust/thin-vec/src/lib.rs.D87019-thin-vec-big
      #[test]
      fn test_drain_inclusive_range() {
          let mut v = thin_vec!['a', 'b', 'c', 'd', 'e'];
-@@ -1755,6 +1967,7 @@ mod std_tests {
+@@ -1761,6 +1967,7 @@ mod std_tests {
      }
  
      #[test]
@@ -682,7 +603,7 @@ diff -up firefox-78.1.0/third_party/rust/thin-vec/src/lib.rs.D87019-thin-vec-big
      fn test_drain_max_vec_size() {
          let mut v = ThinVec::<()>::with_capacity(usize::max_value());
          unsafe { v.set_len(usize::max_value()); }
-@@ -1775,7 +1988,6 @@ mod std_tests {
+@@ -1781,7 +1988,6 @@ mod std_tests {
          let mut v = thin_vec![1, 2, 3, 4, 5];
          v.drain(5..=5);
      }
@@ -690,7 +611,7 @@ diff -up firefox-78.1.0/third_party/rust/thin-vec/src/lib.rs.D87019-thin-vec-big
  
  /* TODO: implement splice?
      #[test]
-@@ -2181,7 +2393,7 @@ mod std_tests {
+@@ -2187,7 +2393,7 @@ mod std_tests {
          assert!(v.capacity() >= 33)
      }
  
@@ -699,10 +620,8 @@ diff -up firefox-78.1.0/third_party/rust/thin-vec/src/lib.rs.D87019-thin-vec-big
      #[test]
      fn test_try_reserve() {
  
-diff -up firefox-78.1.0/third_party/rust/thin-vec/src/range.rs.D87019-thin-vec-big-endian.diff firefox-78.1.0/third_party/rust/thin-vec/src/range.rs
-diff -up firefox-78.1.0/toolkit/components/cascade_bloom_filter/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/toolkit/components/cascade_bloom_filter/Cargo.toml
---- firefox-78.1.0/toolkit/components/cascade_bloom_filter/Cargo.toml.D87019-thin-vec-big-endian.diff	2020-07-22 17:56:29.000000000 +0200
-+++ firefox-78.1.0/toolkit/components/cascade_bloom_filter/Cargo.toml	2020-08-17 17:04:24.135598590 +0200
+--- firefox-78.9.0/toolkit/components/cascade_bloom_filter/Cargo.toml.D87019-thin-vec-big-endian.diff	2021-03-15 16:52:42.000000000 +0100
++++ firefox-78.9.0/toolkit/components/cascade_bloom_filter/Cargo.toml	2021-03-18 15:54:35.137670977 +0100
 @@ -8,5 +8,5 @@ nserror = { path = "../../../xpcom/rust/
  nsstring = { path = "../../../xpcom/rust/nsstring" }
  rental = "0.5.5"
@@ -710,9 +629,8 @@ diff -up firefox-78.1.0/toolkit/components/cascade_bloom_filter/Cargo.toml.D8701
 -thin-vec = { version = "0.1.0", features = ["gecko-ffi"] }
 +thin-vec = { version = "0.2.1", features = ["gecko-ffi"] }
  xpcom = { path = "../../../xpcom/rust/xpcom" }
-diff -up firefox-78.1.0/toolkit/components/extensions/storage/webext_storage_bridge/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/toolkit/components/extensions/storage/webext_storage_bridge/Cargo.toml
---- firefox-78.1.0/toolkit/components/extensions/storage/webext_storage_bridge/Cargo.toml.D87019-thin-vec-big-endian.diff	2020-07-22 17:56:30.000000000 +0200
-+++ firefox-78.1.0/toolkit/components/extensions/storage/webext_storage_bridge/Cargo.toml	2020-08-17 17:04:24.135598590 +0200
+--- firefox-78.9.0/toolkit/components/extensions/storage/webext_storage_bridge/Cargo.toml.D87019-thin-vec-big-endian.diff	2021-03-15 16:52:42.000000000 +0100
++++ firefox-78.9.0/toolkit/components/extensions/storage/webext_storage_bridge/Cargo.toml	2021-03-18 15:54:35.139670971 +0100
 @@ -13,7 +13,7 @@ moz_task = { path = "../../../../../xpco
  nserror = { path = "../../../../../xpcom/rust/nserror" }
  nsstring = { path = "../../../../../xpcom/rust/nsstring" }
@@ -722,9 +640,8 @@ diff -up firefox-78.1.0/toolkit/components/extensions/storage/webext_storage_bri
  xpcom = { path = "../../../../../xpcom/rust/xpcom" }
  serde = "1"
  serde_json = "1"
-diff -up firefox-78.1.0/toolkit/components/kvstore/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/toolkit/components/kvstore/Cargo.toml
---- firefox-78.1.0/toolkit/components/kvstore/Cargo.toml.D87019-thin-vec-big-endian.diff	2020-07-22 17:56:30.000000000 +0200
-+++ firefox-78.1.0/toolkit/components/kvstore/Cargo.toml	2020-08-17 17:04:24.135598590 +0200
+--- firefox-78.9.0/toolkit/components/kvstore/Cargo.toml.D87019-thin-vec-big-endian.diff	2021-03-15 16:52:42.000000000 +0100
++++ firefox-78.9.0/toolkit/components/kvstore/Cargo.toml	2021-03-18 15:54:35.141670966 +0100
 @@ -18,7 +18,7 @@ rkv = "0.10.2"
  storage_variant = { path = "../../../storage/variant" }
  xpcom = { path = "../../../xpcom/rust/xpcom" }
@@ -734,9 +651,8 @@ diff -up firefox-78.1.0/toolkit/components/kvstore/Cargo.toml.D87019-thin-vec-bi
  
  # Get rid of failure's dependency on backtrace. Eventually
  # backtrace will move into Rust core, but we don't need it here.
-diff -up firefox-78.1.0/toolkit/components/places/bookmark_sync/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/toolkit/components/places/bookmark_sync/Cargo.toml
---- firefox-78.1.0/toolkit/components/places/bookmark_sync/Cargo.toml.D87019-thin-vec-big-endian.diff	2020-07-22 17:56:30.000000000 +0200
-+++ firefox-78.1.0/toolkit/components/places/bookmark_sync/Cargo.toml	2020-08-17 17:04:24.135598590 +0200
+--- firefox-78.9.0/toolkit/components/places/bookmark_sync/Cargo.toml.D87019-thin-vec-big-endian.diff	2021-03-15 16:52:42.000000000 +0100
++++ firefox-78.9.0/toolkit/components/places/bookmark_sync/Cargo.toml	2021-03-18 15:54:35.142670963 +0100
 @@ -19,5 +19,5 @@ url = "2.0"
  xpcom = { path = "../../../../xpcom/rust/xpcom" }
  
@@ -744,9 +660,8 @@ diff -up firefox-78.1.0/toolkit/components/places/bookmark_sync/Cargo.toml.D8701
 -version = "0.1.0"
 +version = "0.2.1"
  features = ["gecko-ffi"]
-diff -up firefox-78.1.0/tools/profiler/rust-helper/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/tools/profiler/rust-helper/Cargo.toml
---- firefox-78.1.0/tools/profiler/rust-helper/Cargo.toml.D87019-thin-vec-big-endian.diff	2020-07-22 17:56:30.000000000 +0200
-+++ firefox-78.1.0/tools/profiler/rust-helper/Cargo.toml	2020-08-17 17:04:24.135598590 +0200
+--- firefox-78.9.0/tools/profiler/rust-helper/Cargo.toml.D87019-thin-vec-big-endian.diff	2021-03-15 16:52:42.000000000 +0100
++++ firefox-78.9.0/tools/profiler/rust-helper/Cargo.toml	2021-03-18 15:54:35.143670960 +0100
 @@ -23,7 +23,7 @@ features = ["endian_fd", "elf32", "elf64
  default-features = false
  
@@ -756,9 +671,8 @@ diff -up firefox-78.1.0/tools/profiler/rust-helper/Cargo.toml.D87019-thin-vec-bi
  features = ["gecko-ffi"]
  
  [features]
-diff -up firefox-78.1.0/xpcom/rust/xpcom/Cargo.toml.D87019-thin-vec-big-endian.diff firefox-78.1.0/xpcom/rust/xpcom/Cargo.toml
---- firefox-78.1.0/xpcom/rust/xpcom/Cargo.toml.D87019-thin-vec-big-endian.diff	2020-07-22 17:56:30.000000000 +0200
-+++ firefox-78.1.0/xpcom/rust/xpcom/Cargo.toml	2020-08-17 17:04:24.136598593 +0200
+--- firefox-78.9.0/xpcom/rust/xpcom/Cargo.toml.D87019-thin-vec-big-endian.diff	2021-03-15 16:52:43.000000000 +0100
++++ firefox-78.9.0/xpcom/rust/xpcom/Cargo.toml	2021-03-18 15:54:35.149670942 +0100
 @@ -9,4 +9,4 @@ nsstring = { path = "../nsstring" }
  nserror = { path = "../nserror" }
  threadbound = "0.1"
diff --git a/SOURCES/distribution.ini b/SOURCES/distribution.ini
index 0a0429e..8bf461e 100644
--- a/SOURCES/distribution.ini
+++ b/SOURCES/distribution.ini
@@ -1,7 +1,7 @@
 [Global]
 id=redhat
 version=1.0
-about=Mozilla Firefox for CentOS Linux
+about=Mozilla Firefox for Red Hat Enterprise Linux
 
 [Preferences]
 app.distributor=redhat
diff --git a/SOURCES/firefox-centos-default-prefs.js b/SOURCES/firefox-centos-default-prefs.js
deleted file mode 100644
index ea10021..0000000
--- a/SOURCES/firefox-centos-default-prefs.js
+++ /dev/null
@@ -1,35 +0,0 @@
-pref("app.update.auto",                     false);
-pref("app.update.enabled",                  false);
-pref("app.update.autoInstallEnabled",       false);
-pref("general.smoothScroll",                true);
-pref("intl.locale.matchOS",                 true);
-pref("toolkit.storage.synchronous",         0);
-pref("toolkit.networkmanager.disable",      false);
-pref("offline.autoDetect",                  true);
-pref("browser.backspace_action",            2);
-pref("browser.display.use_system_colors",   true);
-pref("browser.download.folderList",         1);
-pref("browser.link.open_external",          3);
-pref("browser.shell.checkDefaultBrowser",   false);
-pref("network.manage-offline-status",       true);
-pref("extensions.shownSelectionUI",         true);
-pref("ui.SpellCheckerUnderlineStyle",       1);
-pref("startup.homepage_override_url",       "http://www.centos.org");
-pref("startup.homepage_welcome_url",        "http://www.centos.org");
-pref("browser.startup.homepage",            "data:text/plain,browser.startup.homepage=file:///usr/share/doc/HTML/index.html");
-pref("geo.wifi.uri", "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%");
-pref("media.gmp-gmpopenh264.provider.enabled",false);
-pref("media.gmp-gmpopenh264.autoupdate",false);
-pref("media.gmp-gmpopenh264.enabled",false);
-pref("media.gmp-gmpopenh264.enabled",false);
-pref("plugins.notifyMissingFlash", false);
-/* See https://bugzilla.redhat.com/show_bug.cgi?id=1226489 */
-pref("browser.display.use_system_colors", false);
-pref("layers.use-image-offscreen-surfaces", false);
-/* Allow sending credetials to all https:// sites */
-pref("network.negotiate-auth.trusted-uris", "https://");
-pref("security.use_sqldb", false);
-/* Use OS settings for UI language */
-pref("intl.locale.requested", "");
-/* See https://bugzilla.redhat.com/show_bug.cgi?id=1672424 */
-pref("storage.nfs_filesystem", true);
diff --git a/SPECS/firefox.spec b/SPECS/firefox.spec
index 8f31699..8f9c74a 100644
--- a/SPECS/firefox.spec
+++ b/SPECS/firefox.spec
@@ -215,7 +215,7 @@
 
 Summary:        Mozilla Firefox Web browser
 Name:           firefox
-Version:        78.8.0
+Version:        78.9.0
 Release:        1%{?dist}
 URL:            https://www.mozilla.org/firefox/
 License:        MPLv1.1 or GPLv2+ or LGPLv2+
@@ -228,7 +228,7 @@ ExclusiveArch:  i686 x86_64 ppc64 s390x
 
 Source0:        https://hg.mozilla.org/releases/mozilla-release/archive/firefox-%{version}%{?pre_version}.source.tar.xz
 %if %{build_langpacks}
-Source1:        firefox-langpacks-%{version}%{?pre_version}-20210217.tar.xz
+Source1:        firefox-langpacks-%{version}%{?pre_version}-20210317.tar.xz
 %endif
 Source2:        cbindgen-vendor-0.14.3.tar.xz
 Source10:       firefox-mozconfig
@@ -1685,6 +1685,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
 #---------------------------------------------------------------------
 
 %changelog
+* Wed Mar 17 2021 Eike Rathke <erack@redhat.com> - 78.9.0-1
+- Update to 78.9.0 build1
+
 * Wed Feb 17 2021 Eike Rathke <erack@redhat.com> - 78.8.0-1
 - Update to 78.8.0 build2