chromium-browser-stable 70.0.3538.102-1 (i586) 2018-5054
-9998

Status rejected
Submitter cris [@T] beebgames.com
Platform 3.0
Repository main
URL https://abf.openmandriva.org/build_lists/330274
Packages
chromedriver-70.0.3538.102-1.i586.binary
chromium-browser-1:70.0.3538.102-1.i586.binary
chromium-browser-stable-70.0.3538.102-1.i586.source
chromium-browser-stable-70.0.3538.102-1.i586.binary
Build Date 2018-11-18 08:12:21 +0000 UTC
Last Updated 2018-11-24 19:55:25.455457774 +0000 UTC
$ git diff --patch-with-stat --summary 99c54bf5f4b283686d6ab4faeada008d3b0e28bc..f59ec9787bd54f49598c7011a6ede8144553c838

 .abf.yml                                           |   5 +-
 chromium-40-wmvflvmpg.patch                        | 142 -----
 chromium-46.0.2490.71-notest.patch                 |   8 +-
 chromium-46.0.2490.86-use_system_opus.patch        |  12 -
 chromium-47.0.2526.80-pnacl-fgnu-inline-asm.patch  |  11 -
 chromium-50-system-ffmpeg-3.patch                  |  28 +
 chromium-52.0.2743.116-unset-madv_free.patch       |  15 -
 chromium-52.0.2743.82-arm-webrtc.patch             |   7 +-
 chromium-52.0.2743.82-master-prefs-path.patch      |  17 +-
 chromium-53.0.2785.92-last-commit-position.patch   |  28 -
 chromium-54.0.2840.59-i686-ld-memory-tricks.patch  |  12 -
 chromium-54.0.2840.59-nullfix.patch                |  35 --
 chromium-54.0.2840.90-setopaque.patch              |  13 -
 chromium-55-extra-media.patch                      | 268 --------
 chromium-55-flac.patch                             |  21 +-
 chromium-55.0.2883.75-more-codec-aliases.patch     |  15 -
 chromium-55.0.2883.75-sandbox-pie.patch            |  30 -
 chromium-55.0.2883.75-use_system_harfbuzz.patch    |  12 -
 chromium-56.0.2924.87-fpermissive.patch            |  13 -
 chromium-56.0.2924.87-gcc5.patch                   | 354 -----------
 chromium-56.0.2924.87-gcc7.patch                   |  82 ---
 chromium-57.0.2987.110-enable-mp3.patch            | 128 ----
 ...-b794998819088f76b4cf44c8db6940240c563cf4.patch |  19 +
 chromium-59-clang-workaround.patch                 | 101 +++
 chromium-59.0.3071.86-i686-ld-memory-tricks.patch  |  12 +
 chromium-59.0.3071.86-nullfix.patch                |  34 +
 ...3112.113-libavutil-timer-include-path-fix.patch |  21 +
 chromium-60.0.3112.78-jpeg-nomangle.patch          |  14 +
 chromium-60.0.3112.78-no-libpng-prefix.patch       |  17 +
 chromium-60.0.3112.78-no-zlib-mangle.patch         |  13 +
 chromium-61.0.3163.79-gcc-no-opt-safe-math.patch   |  13 +
 chromium-62.0.3202.62-kmaxskip-constexpr.patch     |  12 +
 chromium-63.0.3289.84-aarch64-glibc-2.26.90.patch  |  12 +
 chromium-64-system-curl.patch                      |  11 +
 chromium-64.0.3282.119-ffmpeg-stdatomic.patch      |  17 +
 chromium-65.0.3325.146-gcc-round-fix.patch         |  12 +
 chromium-65.0.3325.146-memcpy-fix.patch            |  12 +
 chromium-65.0.3325.162-epel7-stdc++.patch          |  12 +
 ...fully-declare-ConfigurationPolicyProvider.patch |  18 +
 chromium-66.0.3359.117-gcc5-r3.patch               |  38 ++
 chromium-66.0.3359.117-missing-files.patch         | 272 ++++++++
 chromium-66.0.3359.117-system-clang.patch          |  12 +
 chromium-67.0.3396.62-gcc5.patch                   |  12 +
 ....patch => chromium-67.0.3396.62-gn-system.patch |  47 +-
 chromium-67.0.3396.62-skia-aarch64-buildfix.patch  |  21 +
 chromium-69-extra-media.patch                      | 274 ++++++++
 chromium-69-no-static-libstdc++.patch              |  11 +
 chromium-69-wmvflvmpg.patch                        | 135 ++++
 chromium-69.0.3497.81-build-sanely-please.patch    |  33 +
 chromium-69.0.3497.81-gcc8-alignof.patch           |  18 +
 chromium-69.0.3497.81-norar.patch                  |  79 +++
 chromium-70.0.3538.102-sysroot.patch               |  22 +
 chromium-70.0.3538.67-sandbox-pie.patch            |  20 +
 chromium-70.0.3538.77-gcc7.patch                   | 117 ++++
 chromium-browser-stable.rpmlintrc                  |   3 +
 chromium-browser-stable.spec                       | 692 ++++++++++++---------
 chromium-gcc8-r588316.patch                        |  98 +++
 chromium-gcc8-r588547.patch                        |  30 +
 chromium-gcc8-r589614.patch                        |  37 ++
 chromium-gcc8-r591015.patch                        |  70 +++
 chromium-gn-bootstrap-r2.patch                     |  13 -
 chromium-system-ffmpeg-r3.patch                    |  48 --
 chromium-system-icu.patch                          |  19 +
 chromium-system-jinja-r13.patch                    |  31 -
 chromium-widevine-r2.patch                         |  39 ++
 revert-Xclang-instcombine-lower-dbg-declare.patch  |  24 +
 66 files changed, 2210 insertions(+), 1611 deletions(-)
 delete mode 100644 chromium-40-wmvflvmpg.patch
 delete mode 100644 chromium-46.0.2490.86-use_system_opus.patch
 delete mode 100644 chromium-47.0.2526.80-pnacl-fgnu-inline-asm.patch
 create mode 100644 chromium-50-system-ffmpeg-3.patch
 delete mode 100644 chromium-52.0.2743.116-unset-madv_free.patch
 delete mode 100644 chromium-53.0.2785.92-last-commit-position.patch
 delete mode 100644 chromium-54.0.2840.59-i686-ld-memory-tricks.patch
 delete mode 100644 chromium-54.0.2840.59-nullfix.patch
 delete mode 100644 chromium-54.0.2840.90-setopaque.patch
 delete mode 100644 chromium-55-extra-media.patch
 delete mode 100644 chromium-55.0.2883.75-more-codec-aliases.patch
 delete mode 100644 chromium-55.0.2883.75-sandbox-pie.patch
 delete mode 100644 chromium-55.0.2883.75-use_system_harfbuzz.patch
 delete mode 100644 chromium-56.0.2924.87-fpermissive.patch
 delete mode 100644 chromium-56.0.2924.87-gcc5.patch
 delete mode 100644 chromium-56.0.2924.87-gcc7.patch
 delete mode 100644 chromium-57.0.2987.110-enable-mp3.patch
 create mode 100644 chromium-58.0.3029.96-revert-b794998819088f76b4cf44c8db6940240c563cf4.patch
 create mode 100644 chromium-59-clang-workaround.patch
 create mode 100644 chromium-59.0.3071.86-i686-ld-memory-tricks.patch
 create mode 100644 chromium-59.0.3071.86-nullfix.patch
 create mode 100644 chromium-60.0.3112.113-libavutil-timer-include-path-fix.patch
 create mode 100644 chromium-60.0.3112.78-jpeg-nomangle.patch
 create mode 100644 chromium-60.0.3112.78-no-libpng-prefix.patch
 create mode 100644 chromium-60.0.3112.78-no-zlib-mangle.patch
 create mode 100644 chromium-61.0.3163.79-gcc-no-opt-safe-math.patch
 create mode 100644 chromium-62.0.3202.62-kmaxskip-constexpr.patch
 create mode 100644 chromium-63.0.3289.84-aarch64-glibc-2.26.90.patch
 create mode 100644 chromium-64-system-curl.patch
 create mode 100644 chromium-64.0.3282.119-ffmpeg-stdatomic.patch
 create mode 100644 chromium-65.0.3325.146-gcc-round-fix.patch
 create mode 100644 chromium-65.0.3325.146-memcpy-fix.patch
 create mode 100644 chromium-65.0.3325.162-epel7-stdc++.patch
 create mode 100644 chromium-66.0.3359.117-GCC-fully-declare-ConfigurationPolicyProvider.patch
 create mode 100644 chromium-66.0.3359.117-gcc5-r3.patch
 create mode 100644 chromium-66.0.3359.117-missing-files.patch
 create mode 100644 chromium-66.0.3359.117-system-clang.patch
 create mode 100644 chromium-67.0.3396.62-gcc5.patch
 rename chromium-54.0.2840.59-gn-system.patch => chromium-67.0.3396.62-gn-system.patch (69%)
 create mode 100644 chromium-67.0.3396.62-skia-aarch64-buildfix.patch
 create mode 100644 chromium-69-extra-media.patch
 create mode 100644 chromium-69-no-static-libstdc++.patch
 create mode 100644 chromium-69-wmvflvmpg.patch
 create mode 100644 chromium-69.0.3497.81-build-sanely-please.patch
 create mode 100644 chromium-69.0.3497.81-gcc8-alignof.patch
 create mode 100644 chromium-69.0.3497.81-norar.patch
 create mode 100644 chromium-70.0.3538.102-sysroot.patch
 create mode 100644 chromium-70.0.3538.67-sandbox-pie.patch
 create mode 100644 chromium-70.0.3538.77-gcc7.patch
 create mode 100644 chromium-browser-stable.rpmlintrc
 create mode 100644 chromium-gcc8-r588316.patch
 create mode 100644 chromium-gcc8-r588547.patch
 create mode 100644 chromium-gcc8-r589614.patch
 create mode 100644 chromium-gcc8-r591015.patch
 delete mode 100644 chromium-gn-bootstrap-r2.patch
 delete mode 100644 chromium-system-ffmpeg-r3.patch
 create mode 100644 chromium-system-icu.patch
 delete mode 100644 chromium-system-jinja-r13.patch
 create mode 100644 chromium-widevine-r2.patch
 create mode 100644 revert-Xclang-instcombine-lower-dbg-declare.patch

diff --git a/.abf.yml b/.abf.yml
index e65b827..22c6fd3 100644
--- a/.abf.yml
+++ b/.abf.yml
@@ -1,2 +1,5 @@
+removed_sources:
+  chromium-69.0.3497.100.tar.xz: 79c8fb089e8f344dce40c6495a006a172d4fc4ac
+  chromium-70.0.3538.77.tar.xz: d57862224568adb6a379592431cf5ce3c5bf757a
 sources:
-  chromium-58.0.3029.110.tar.xz: c7b093fb65d55b9da1254c7ceb8b1674a59d8973
+  chromium-70.0.3538.102.tar.xz: c618752828e5acc094f9bb5fe438f994e1630f67
diff --git a/chromium-40-wmvflvmpg.patch b/chromium-40-wmvflvmpg.patch
deleted file mode 100644
index ea7377b..0000000
--- a/chromium-40-wmvflvmpg.patch
+++ /dev/null
@@ -1,142 +0,0 @@
-diff -up chromium-51.0.2704.19/media/base/mime_util_internal.cc.wmvflvmpg chromium-51.0.2704.19/media/base/mime_util_internal.cc
---- chromium-51.0.2704.19/media/base/mime_util_internal.cc.wmvflvmpg	2016-04-20 21:52:50.506158768 +0200
-+++ chromium-51.0.2704.19/media/base/mime_util_internal.cc	2016-04-20 22:15:04.206160526 +0200
-@@ -86,7 +86,17 @@
-     {"dts", MimeUtil::DTS},
-     {"mp2", MimeUtil::MP2},
-     {"mp4v.20.8", MimeUtil::MPEG4_SP},
--    {"mp4v.20.240", MimeUtil::MPEG4_ASP}
-+    {"mp4v.20.240", MimeUtil::MPEG4_ASP},
-+    {"msmpeg4v1", MimeUtil::MSMPEG4v1},
-+    {"msmpeg4v2", MimeUtil::MSMPEG4v2},
-+    {"msmpeg4v3", MimeUtil::MSMPEG4v3},
-+    {"wmv7", MimeUtil::WMV7},
-+    {"wmv8", MimeUtil::WMV8},
-+    {"wmv9", MimeUtil::WMV9},
-+    {"vc-1", MimeUtil::VC1},
-+    {"wma", MimeUtil::WMA},
-+    {"vp6", MimeUtil::VP6},
-+    {"mpeg1", MimeUtil::MPEG1}
-   };
- 
-   return kStringToCodecMap;
-@@ -398,6 +408,9 @@
-   webm_video_codecs.insert(VP9);
-   CodecSet webm_codecs(webm_audio_codecs);
-   webm_codecs.insert(webm_video_codecs.begin(), webm_video_codecs.end());
-+  
-+  CodecSet mp1_codecs;
-+  mp1_codecs.insert(MPEG1);
- 
- #if BUILDFLAG(USE_PROPRIETARY_CODECS)
-   CodecSet mp3_codecs;
-@@ -431,6 +444,29 @@
-   mp4_codecs.insert(mp4_video_codecs.begin(), mp4_video_codecs.end());
- #endif  // BUILDFLAG(USE_PROPRIETARY_CODECS)
- 
-+  CodecSet wma_codecs;
-+  wma_codecs.insert(WMA);
-+  
-+  CodecSet wmv_codecs(wma_codecs);
-+  wmv_codecs.insert(MSMPEG4v1);
-+  wmv_codecs.insert(MSMPEG4v2);
-+  wmv_codecs.insert(MSMPEG4v3);
-+  wmv_codecs.insert(MPEG4_SP);
-+  wmv_codecs.insert(MPEG4_ASP);
-+  wmv_codecs.insert(WMV7);
-+  wmv_codecs.insert(WMV8);
-+  wmv_codecs.insert(WMV9);
-+  wmv_codecs.insert(VC1);
-+  
-+  matroska_codecs.insert(MSMPEG4v1);
-+  matroska_codecs.insert(MSMPEG4v2);
-+  matroska_codecs.insert(MSMPEG4v3);
-+  
-+  CodecSet flv_codecs;
-+  flv_codecs.insert(VP6);
-+  flv_codecs.insert(mp4_codecs.begin(), mp4_codecs.end());
-+  flv_codecs.insert(MP3);
-+
-   AddContainerWithCodecs("audio/wav", wav_codecs, false);
-   AddContainerWithCodecs("audio/x-wav", wav_codecs, false);
-   AddContainerWithCodecs("audio/webm", webm_audio_codecs, false);
-@@ -446,6 +482,11 @@
- 
-   AddContainerWithCodecs("audio/x-matroska", matroska_audio_codecs, false);
-   AddContainerWithCodecs("video/x-matroska", matroska_codecs, false);
-+  AddContainerWithCodecs("video/x-ms-wmv", wmv_codecs, true);
-+  AddContainerWithCodecs("audio/x-ms-wma", wma_codecs, true);
-+  AddContainerWithCodecs("video/x-ms-asf", wmv_codecs, true);
-+  AddContainerWithCodecs("video/x-flv", flv_codecs, true);
-+  AddContainerWithCodecs("video/mpeg", mp1_codecs, true);
- 
- #if BUILDFLAG(USE_PROPRIETARY_CODECS)
-   AddContainerWithCodecs("audio/mpeg", mp3_codecs, true);  // Allow "mp3".
-@@ -806,6 +847,15 @@
-     case DTS:
-     case MPEG4_SP:
-     case MPEG4_ASP:
-+    case MSMPEG4v1:
-+    case MSMPEG4v2:
-+    case MSMPEG4v3:
-+    case WMV7:
-+    case WMV8:
-+    case WMV9:
-+    case VC1:
-+    case WMA:
-+    case VP6:
-       return true;
- 
-     case PCM:
-@@ -814,6 +864,7 @@
-     case VP8:
-     case VP9:
-     case THEORA:
-+    case MPEG1:
-       return false;
-   }
- 
-diff -up chromium-51.0.2704.19/media/base/mime_util_internal.h.wmvflvmpg chromium-51.0.2704.19/media/base/mime_util_internal.h
---- chromium-51.0.2704.19/media/base/mime_util_internal.h.wmvflvmpg	2016-04-20 21:52:50.507158749 +0200
-+++ chromium-51.0.2704.19/media/base/mime_util_internal.h	2016-04-20 21:52:50.960150543 +0200
-@@ -43,7 +43,17 @@ class MEDIA_EXPORT MimeUtil {
-     MP2,
-     MPEG4_SP,
-     MPEG4_ASP,
--    LAST_CODEC = MPEG4_ASP
-+    MSMPEG4v1,
-+    MSMPEG4v2,
-+    MSMPEG4v3,
-+    WMV7,
-+    WMV8,
-+    WMV9,
-+    VC1,
-+    WMA,
-+    VP6,
-+    MPEG1,
-+    LAST_CODEC = MPEG1
-   };
- 
-   // Platform configuration structure.  Controls which codecs are supported at
-diff -up chromium-51.0.2704.19/net/base/mime_util.cc.wmvflvmpg chromium-51.0.2704.19/net/base/mime_util.cc
---- chromium-51.0.2704.19/net/base/mime_util.cc.wmvflvmpg	2016-04-20 21:52:50.507158749 +0200
-+++ chromium-51.0.2704.19/net/base/mime_util.cc	2016-04-20 21:52:50.960150543 +0200
-@@ -81,6 +81,10 @@ static const MimeInfo kPrimaryMappings[]
-     {"video/x-matroska", "mkv"},
-     {"audio/x-matroska", "mkv"},
-     {"video/x-msvideo", "avi"},
-+    {"video/x-ms-wmv", "wmv"},
-+    {"audio/x-ms-wma", "wma"},
-+    {"video/x-flv", "flv"},
-+    {"video/mpeg", "mpg,mpeg"},
-     {"application/xhtml+xml", "xhtml,xht,xhtm"},
-     {"application/x-chrome-extension", "crx"},
-     {"multipart/related", "mhtml,mht"}};
-@@ -445,6 +449,7 @@ static const char* const kStandardVideoT
-   "video/sd-video",
-   "video/webm",
-   "video/x-dv",
-+  "video/x-flv",
-   "video/x-m4v",
-   "video/x-matroska",
-   "video/x-mpeg",
diff --git a/chromium-46.0.2490.71-notest.patch b/chromium-46.0.2490.71-notest.patch
index e4e3448..01ef0af 100644
--- a/chromium-46.0.2490.71-notest.patch
+++ b/chromium-46.0.2490.71-notest.patch
@@ -1,11 +1,11 @@
-diff -up chromium-46.0.2490.71/chrome/test/data/webui_test_resources.grd.notest chromium-46.0.2490.71/chrome/test/data/webui_test_resources.grd
---- chromium-46.0.2490.71/chrome/test/data/webui_test_resources.grd.notest	2015-10-16 02:01:56.644149741 -0400
-+++ chromium-46.0.2490.71/chrome/test/data/webui_test_resources.grd	2015-10-16 02:02:36.217285227 -0400
+diff -up chromium-68.0.3440.42/chrome/test/data/webui_test_resources.grd.0004~ chromium-68.0.3440.42/chrome/test/data/webui_test_resources.grd
+--- chromium-68.0.3440.42/chrome/test/data/webui_test_resources.grd.0004~	2018-07-07 00:38:05.716047181 +0200
++++ chromium-68.0.3440.42/chrome/test/data/webui_test_resources.grd	2018-07-07 01:15:57.337131890 +0200
 @@ -8,7 +8,6 @@
    </outputs>
    <release seq="1">
      <includes>
 -      <include name="IDR_WEBUI_TEST_I18N_PROCESS_CSS_TEST" file="webui/i18n_process_css_test.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" />
+       <include name="IDR_WEB_UI_TEST_MOJO_JS" file="${root_gen_dir}/chrome/test/data/webui/web_ui_test.mojom.js" use_base_dir="false" type="BINDATA"/>
      </includes>
    </release>
- </grit>
diff --git a/chromium-46.0.2490.86-use_system_opus.patch b/chromium-46.0.2490.86-use_system_opus.patch
deleted file mode 100644
index d54938b..0000000
--- a/chromium-46.0.2490.86-use_system_opus.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up chromium-46.0.2490.86/media/cast/receiver/audio_decoder_unittest.cc.use_system_opus chromium-46.0.2490.86/media/cast/receiver/audio_decoder_unittest.cc
---- chromium-46.0.2490.86/media/cast/receiver/audio_decoder_unittest.cc.use_system_opus	2015-10-07 04:42:12.000000000 +0200
-+++ chromium-46.0.2490.86/media/cast/receiver/audio_decoder_unittest.cc	2015-11-11 16:11:13.535250609 +0100
-@@ -13,7 +13,7 @@
- #include "media/cast/test/utility/audio_utility.h"
- #include "media/cast/test/utility/standalone_cast_environment.h"
- #include "testing/gtest/include/gtest/gtest.h"
--#include "third_party/opus/src/include/opus.h"
-+#include <opus/opus.h>
- 
- namespace media {
- namespace cast {
diff --git a/chromium-47.0.2526.80-pnacl-fgnu-inline-asm.patch b/chromium-47.0.2526.80-pnacl-fgnu-inline-asm.patch
deleted file mode 100644
index bfe0422..0000000
--- a/chromium-47.0.2526.80-pnacl-fgnu-inline-asm.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up chromium-47.0.2526.80/native_client/build/untrusted.gypi.fixme chromium-47.0.2526.80/native_client/build/untrusted.gypi
---- chromium-47.0.2526.80/native_client/build/untrusted.gypi.fixme	2015-12-09 11:54:27.584962337 -0500
-+++ chromium-47.0.2526.80/native_client/build/untrusted.gypi	2015-12-09 11:54:45.033571750 -0500
-@@ -1564,6 +1564,7 @@
-         '-Wno-char-subscripts',
-         '-Wno-unused-function',
-         '-std=gnu++11',
-+        '-fgnu-inline-asm',
-       ],
-       'native_irt_compile_flags': [
-         # IRT compile/link flags to make the binary smaller.
diff --git a/chromium-50-system-ffmpeg-3.patch b/chromium-50-system-ffmpeg-3.patch
new file mode 100644
index 0000000..10ba33c
--- /dev/null
+++ b/chromium-50-system-ffmpeg-3.patch
@@ -0,0 +1,28 @@
+diff -up chromium-51.0.2687.0/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc.system-ffmpeg-3 chromium-51.0.2687.0/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc
+--- chromium-51.0.2687.0/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc.system-ffmpeg-3	2016-03-22 23:02:39.000000000 +0100
++++ chromium-51.0.2687.0/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc	2016-03-23 18:51:16.810699343 +0100
+@@ -15,9 +15,9 @@
+ #include <limits>
+ 
+ extern "C" {
+-#include "third_party/ffmpeg/libavcodec/avcodec.h"
+-#include "third_party/ffmpeg/libavformat/avformat.h"
+-#include "third_party/ffmpeg/libavutil/imgutils.h"
++#include <libavcodec/avcodec.h>
++#include <libavformat/avformat.h>
++#include <libavutil/imgutils.h>
+ }  // extern "C"
+ 
+ #include "api/video/color_space.h"
+diff -up chromium-51.0.2687.0/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.h.system-ffmpeg-3 chromium-51.0.2687.0/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.h
+--- chromium-51.0.2687.0/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.h.system-ffmpeg-3	2016-03-23 18:55:39.080894319 +0100
++++ chromium-51.0.2687.0/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.h	2016-03-23 18:54:32.178123691 +0100
+@@ -17,7 +17,7 @@
+ #include "modules/video_coding/codecs/h264/include/h264.h"
+ 
+ extern "C" {
+-#include "third_party/ffmpeg/libavcodec/avcodec.h"
++#include <libavcodec/avcodec.h>
+ }  // extern "C"
+ 
+ #include "common_video/h264/h264_bitstream_parser.h"
diff --git a/chromium-52.0.2743.116-unset-madv_free.patch b/chromium-52.0.2743.116-unset-madv_free.patch
deleted file mode 100644
index 2867c79..0000000
--- a/chromium-52.0.2743.116-unset-madv_free.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -up chromium-52.0.2743.116/third_party/WebKit/Source/wtf/allocator/PageAllocator.cpp.madv_free chromium-52.0.2743.116/third_party/WebKit/Source/wtf/allocator/PageAllocator.cpp
---- chromium-52.0.2743.116/third_party/WebKit/Source/wtf/allocator/PageAllocator.cpp.madv_free	2016-08-15 13:07:29.279655676 -0400
-+++ chromium-52.0.2743.116/third_party/WebKit/Source/wtf/allocator/PageAllocator.cpp	2016-08-15 13:08:38.447317416 -0400
-@@ -41,6 +41,11 @@
- #include <errno.h>
- #include <sys/mman.h>
- 
-+#if OS(LINUX) && defined(MADV_FREE)
-+// Added in Linux 4.5, but it breaks the sandbox.
-+#undef MADV_FREE
-+#endif
-+
- #ifndef MADV_FREE
- #define MADV_FREE MADV_DONTNEED
- #endif
diff --git a/chromium-52.0.2743.82-arm-webrtc.patch b/chromium-52.0.2743.82-arm-webrtc.patch
index f1a6629..59a634a 100644
--- a/chromium-52.0.2743.82-arm-webrtc.patch
+++ b/chromium-52.0.2743.82-arm-webrtc.patch
@@ -1,9 +1,8 @@
-diff -up chromium-52.0.2743.82/third_party/webrtc/system_wrappers/source/cpu_features.cc.armwebrtc chromium-52.0.2743.82/third_party/webrtc/system_wrappers/source/cpu_features.cc
---- chromium-52.0.2743.82/third_party/webrtc/system_wrappers/source/cpu_features.cc.armwebrtc	2016-08-03 09:30:53.922861020 +0200
-+++ chromium-52.0.2743.82/third_party/webrtc/system_wrappers/source/cpu_features.cc	2016-08-03 09:32:00.337498174 +0200
+--- chromium-63.0.3230.0/third_party/webrtc/system_wrappers/source/cpu_features.cc.0016~	2017-10-09 19:07:22.113723328 +0200
++++ chromium-63.0.3230.0/third_party/webrtc/system_wrappers/source/cpu_features.cc	2017-10-09 19:09:23.100996328 +0200
 @@ -18,6 +18,47 @@
  
- #include "webrtc/typedefs.h"
+ #include "typedefs.h"  // NOLINT(build/include)
  
 +#include <elf.h>
 +#ifdef __arm__
diff --git a/chromium-52.0.2743.82-master-prefs-path.patch b/chromium-52.0.2743.82-master-prefs-path.patch
index 6ddd26f..ee96b80 100644
--- a/chromium-52.0.2743.82-master-prefs-path.patch
+++ b/chromium-52.0.2743.82-master-prefs-path.patch
@@ -1,15 +1,18 @@
-diff -up chromium-52.0.2743.82/chrome/browser/first_run/first_run_internal_linux.cc.etc chromium-52.0.2743.82/chrome/browser/first_run/first_run_internal_linux.cc
---- chromium-52.0.2743.82/chrome/browser/first_run/first_run_internal_linux.cc.etc	2016-08-03 10:15:57.980692109 +0200
-+++ chromium-52.0.2743.82/chrome/browser/first_run/first_run_internal_linux.cc	2016-08-03 10:16:44.553325229 +0200
-@@ -19,9 +19,9 @@ bool IsOrganicFirstRun() {
+diff -up chromium-68.0.3440.42/chrome/browser/first_run/first_run_internal_linux.cc.0018~ chromium-68.0.3440.42/chrome/browser/first_run/first_run_internal_linux.cc
+--- chromium-68.0.3440.42/chrome/browser/first_run/first_run_internal_linux.cc.0018~	2018-07-06 22:07:17.479709771 +0200
++++ chromium-68.0.3440.42/chrome/browser/first_run/first_run_internal_linux.cc	2018-07-06 22:09:07.912713889 +0200
+@@ -19,9 +19,14 @@ bool IsOrganicFirstRun() {
  
  base::FilePath MasterPrefsPath() {
    // The standard location of the master prefs is next to the chrome binary.
-+  // ...but we patch it to use /etc/chromium
++  // but we patch it to look in /etc/chromium
    base::FilePath master_prefs;
--  if (!PathService::Get(base::DIR_EXE, &master_prefs))
--    return base::FilePath();
++#if 0
+   if (!base::PathService::Get(base::DIR_EXE, &master_prefs))
+     return base::FilePath();
++#else
 +  master_prefs = base::FilePath("/etc/chromium");
++#endif
    return master_prefs.AppendASCII(installer::kDefaultMasterPrefs);
  }
  
diff --git a/chromium-53.0.2785.92-last-commit-position.patch b/chromium-53.0.2785.92-last-commit-position.patch
deleted file mode 100644
index 46806f7..0000000
--- a/chromium-53.0.2785.92-last-commit-position.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-diff -up chromium-53.0.2785.92/tools/gn/BUILD.gn.lastcommitfix chromium-53.0.2785.92/tools/gn/BUILD.gn
---- chromium-53.0.2785.92/tools/gn/BUILD.gn.lastcommitfix	2016-09-06 13:50:17.540459136 -0400
-+++ chromium-53.0.2785.92/tools/gn/BUILD.gn	2016-09-06 13:50:27.380269110 -0400
-@@ -259,7 +259,6 @@ executable("gn") {
- 
-   deps = [
-     ":gn_lib",
--    ":last_commit_position",
-     "//base",
-     "//build/config/sanitizers:deps",
-     "//build/win:default_exe_manifest",
-diff -up chromium-53.0.2785.92/tools/gn/gn_main.cc.lastcommitfix chromium-53.0.2785.92/tools/gn/gn_main.cc
---- chromium-53.0.2785.92/tools/gn/gn_main.cc.lastcommitfix	2016-09-06 13:49:34.620288177 -0400
-+++ chromium-53.0.2785.92/tools/gn/gn_main.cc	2016-09-06 13:49:47.316042652 -0400
-@@ -12,13 +12,7 @@
- #include "tools/gn/standard_out.h"
- #include "tools/gn/switches.h"
- 
--// Only the GN-generated build makes this header for now.
--// TODO(brettw) consider adding this if we need it in GYP.
--#if defined(GN_BUILD)
--#include "tools/gn/last_commit_position.h"
--#else
- #define LAST_COMMIT_POSITION "UNKNOWN"
--#endif
- 
- namespace {
- 
diff --git a/chromium-54.0.2840.59-i686-ld-memory-tricks.patch b/chromium-54.0.2840.59-i686-ld-memory-tricks.patch
deleted file mode 100644
index 0ebec9e..0000000
--- a/chromium-54.0.2840.59-i686-ld-memory-tricks.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up chromium-54.0.2840.59/build/toolchain/linux/BUILD.gn.ldmemory chromium-54.0.2840.59/build/toolchain/linux/BUILD.gn
---- chromium-54.0.2840.59/build/toolchain/linux/BUILD.gn.ldmemory	2016-10-19 15:56:20.253096784 -0400
-+++ chromium-54.0.2840.59/build/toolchain/linux/BUILD.gn	2016-10-19 15:58:17.940833948 -0400
-@@ -71,7 +71,7 @@ gcc_toolchain("x86") {
-   nm = "nm"
-   ar = "ar"
-   ld = cxx
--  extra_cppflags = "-fno-delete-null-pointer-checks"
-+  extra_cppflags = "-fno-delete-null-pointer-checks -g1"
- 
-   toolchain_args = {
-     current_cpu = "x86"
diff --git a/chromium-54.0.2840.59-nullfix.patch b/chromium-54.0.2840.59-nullfix.patch
deleted file mode 100644
index 53e2db1..0000000
--- a/chromium-54.0.2840.59-nullfix.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-diff -up chromium-54.0.2840.59/build/toolchain/linux/BUILD.gn.nullfix chromium-54.0.2840.59/build/toolchain/linux/BUILD.gn
---- chromium-54.0.2840.59/build/toolchain/linux/BUILD.gn.nullfix	2016-10-13 16:49:26.844221023 -0400
-+++ chromium-54.0.2840.59/build/toolchain/linux/BUILD.gn	2016-10-13 16:50:49.882605484 -0400
-@@ -31,6 +31,7 @@ gcc_toolchain("arm") {
-   ld = cxx
-   readelf = "${toolprefix}readelf"
-   nm = "${toolprefix}nm"
-+  extra_cppflags = "-fno-delete-null-pointer-checks"
- 
-   toolchain_args = {
-     current_cpu = "arm"
-@@ -70,6 +71,7 @@ gcc_toolchain("x86") {
-   nm = "nm"
-   ar = "ar"
-   ld = cxx
-+  extra_cppflags = "-fno-delete-null-pointer-checks"
- 
-   toolchain_args = {
-     current_cpu = "x86"
-@@ -109,6 +111,7 @@ gcc_toolchain("x64") {
-   nm = "nm"
-   ar = "ar"
-   ld = cxx
-+  extra_cppflags = "-fno-delete-null-pointer-checks"
- 
-   toolchain_args = {
-     current_cpu = "x64"
-@@ -131,6 +134,7 @@ gcc_toolchain("mipsel") {
-   ld = cxx
-   readelf = "mipsel-linux-gnu-readelf"
-   nm = "mipsel-linux-gnu-nm"
-+  extra_cppflags = "-fno-delete-null-pointer-checks"
- 
-   toolchain_args = {
-     cc_wrapper = ""
diff --git a/chromium-54.0.2840.90-setopaque.patch b/chromium-54.0.2840.90-setopaque.patch
deleted file mode 100644
index 90d6edc..0000000
--- a/chromium-54.0.2840.90-setopaque.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -up chromium-54.0.2840.90/cc/blink/web_layer_impl.h.setopaque chromium-54.0.2840.90/cc/blink/web_layer_impl.h
---- chromium-54.0.2840.90/cc/blink/web_layer_impl.h.setopaque	2016-11-03 09:07:03.422497483 -0400
-+++ chromium-54.0.2840.90/cc/blink/web_layer_impl.h	2016-11-03 09:07:13.302307531 -0400
-@@ -80,7 +80,7 @@ class WebLayerImpl : public blink::WebLa
-   blink::WebBlendMode blendMode() const override;
-   void setIsRootForIsolatedGroup(bool root) override;
-   bool isRootForIsolatedGroup() override;
--  void setOpaque(bool opaque) override;
-+  CC_BLINK_EXPORT void setOpaque(bool opaque) override;
-   bool opaque() const override;
-   void setPosition(const blink::WebFloatPoint& position) override;
-   blink::WebFloatPoint position() const override;
-diff -up chromium-54.0.2840.90/content/renderer/child_frame_compositing_helper.cc.setopaque chromium-54.0.2840.90/content/renderer/child_frame_compositing_helper.cc
diff --git a/chromium-55-extra-media.patch b/chromium-55-extra-media.patch
deleted file mode 100644
index 9a7178b..0000000
--- a/chromium-55-extra-media.patch
+++ /dev/null
@@ -1,268 +0,0 @@
---- chromium-52.0.2716.0/media/base/mime_util_internal.cc	2016-04-27 08:42:25.933047659 +0200
-+++ chromium-52.0.2716.0/media/base/mime_util_internal.cc	2016-12-03 22:43:46.182795570 +0100
-@@ -78,7 +78,11 @@
-     {"flac", MimeUtil::FLAC},
-     {"vp8", MimeUtil::VP8},
-     {"vp8.0", MimeUtil::VP8},
--    {"theora", MimeUtil::THEORA}
-+    {"theora", MimeUtil::THEORA},
-+    {"dts", MimeUtil::DTS},
-+    {"mp2", MimeUtil::MP2},
-+    {"mp4v.20.8", MimeUtil::MPEG4_SP},
-+    {"mp4v.20.240", MimeUtil::MPEG4_ASP}
-   };
- 
-   return kStringToCodecMap;
-@@ -275,6 +279,9 @@
-       return kCodecTheora;
-     case MimeUtil::DOLBY_VISION:
-       return kCodecDolbyVision;
-+    case MimeUtil::MPEG4_SP:
-+    case MimeUtil::MPEG4_ASP:
-+      return kCodecMPEG4;
-     default:
-       break;
-   }
-@@ -356,6 +363,31 @@
- #endif  // !defined(OS_ANDROID)
-   CodecSet ogg_codecs(ogg_audio_codecs);
-   ogg_codecs.insert(ogg_video_codecs.begin(), ogg_video_codecs.end());
-+  
-+  CodecSet matroska_audio_codecs;
-+  matroska_audio_codecs.insert(OPUS);
-+  matroska_audio_codecs.insert(VORBIS);
-+  matroska_audio_codecs.insert(AC3);
-+  matroska_audio_codecs.insert(EAC3);
-+  matroska_audio_codecs.insert(DTS);
-+  matroska_audio_codecs.insert(MP3);
-+  matroska_audio_codecs.insert(MP2);
-+  matroska_audio_codecs.insert(MPEG2_AAC);
-+  matroska_audio_codecs.insert(MPEG4_AAC);
-+  matroska_audio_codecs.insert(PCM);
-+  
-+  CodecSet matroska_video_codecs;
-+  matroska_video_codecs.insert(THEORA);
-+  matroska_video_codecs.insert(VP8);
-+  matroska_video_codecs.insert(VP9);
-+  matroska_video_codecs.insert(H264);
-+  matroska_video_codecs.insert(MPEG4_SP);
-+  matroska_video_codecs.insert(MPEG4_ASP);
-+#if BUILDFLAG(ENABLE_HEVC_DEMUXING)
-+  matroska_video_codecs.insert(HEVC);
-+#endif  // BUILDFLAG(ENABLE_HEVC_DEMUXING)
-+  CodecSet matroska_codecs(matroska_audio_codecs);
-+  matroska_codecs.insert(matroska_video_codecs.begin(), matroska_video_codecs.end());
- 
-   CodecSet webm_audio_codecs;
-   webm_audio_codecs.insert(OPUS);
-@@ -386,6 +418,8 @@
- 
-   CodecSet mp4_video_codecs;
-   mp4_video_codecs.insert(H264);
-+  mp4_video_codecs.insert(MPEG4_SP);
-+  mp4_video_codecs.insert(MPEG4_ASP);
- #if BUILDFLAG(ENABLE_HEVC_DEMUXING)
-   mp4_video_codecs.insert(HEVC);
- #endif  // BUILDFLAG(ENABLE_HEVC_DEMUXING)
-@@ -410,6 +444,9 @@
-   AddContainerWithCodecs("application/ogg", ogg_codecs, false);
-   AddContainerWithCodecs("audio/flac", implicit_codec, false);
- 
-+  AddContainerWithCodecs("audio/x-matroska", matroska_audio_codecs, false);
-+  AddContainerWithCodecs("video/x-matroska", matroska_codecs, false);
-+
- #if BUILDFLAG(USE_PROPRIETARY_CODECS)
-   AddContainerWithCodecs("audio/mpeg", mp3_codecs, true);  // Allow "mp3".
-   AddContainerWithCodecs("audio/mp3", implicit_codec, true);
-@@ -422,6 +459,7 @@
-   // support the codecs needed for compatibility.
-   AddContainerWithCodecs("audio/x-m4a", aac, true);
-   AddContainerWithCodecs("video/x-m4v", avc_and_aac, true);
-+  AddContainerWithCodecs("video/x-msvideo", matroska_codecs, true);
- 
- #if BUILDFLAG(ENABLE_MSE_MPEG2TS_STREAM_PARSER)
-   // TODO(ddorwin): Exactly which codecs should be supported?
-@@ -766,9 +804,13 @@
-     case H264:
-     case HEVC:
-     case DOLBY_VISION:
-+    case DTS:
-+    case MPEG4_SP:
-+    case MPEG4_ASP:
-       return true;
- 
-     case PCM:
-+    case MP2:
-     case VORBIS:
-     case OPUS:
-     case FLAC:
---- chromium-52.0.2716.0/media/base/mime_util_internal.h.matroska-avi	2016-04-27 00:02:52.000000000 +0200
-+++ chromium-52.0.2716.0/media/base/mime_util_internal.h	2016-04-27 08:14:04.560330601 +0200
-@@ -39,7 +39,11 @@ class MEDIA_EXPORT MimeUtil {
-     VP9,
-     THEORA,
-     DOLBY_VISION,
--    LAST_CODEC = DOLBY_VISION
-+    DTS,
-+    MP2,
-+    MPEG4_SP,
-+    MPEG4_ASP,
-+    LAST_CODEC = MPEG4_ASP
-   };
- 
-   // Platform configuration structure.  Controls which codecs are supported at
---- chromium-52.0.2716.0/net/base/mime_util.cc.matroska-avi	2016-04-27 00:02:52.000000000 +0200
-+++ chromium-52.0.2716.0/net/base/mime_util.cc	2016-04-27 08:14:04.561330581 +0200
-@@ -78,6 +78,9 @@ static const MimeInfo kPrimaryMappings[]
-     {"audio/webm", "webm"},
-     {"audio/wav", "wav"},
-     {"audio/flac", "flac"},
-+    {"video/x-matroska", "mkv"},
-+    {"audio/x-matroska", "mkv"},
-+    {"video/x-msvideo", "avi"},
-     {"application/xhtml+xml", "xhtml,xht,xhtm"},
-     {"application/x-chrome-extension", "crx"},
-     {"multipart/related", "mhtml,mht"}};
-@@ -425,6 +428,7 @@ static const char* const kStandardAudioT
-   "audio/vorbis",
-   "audio/wav",
-   "audio/webm",
-+  "audio/x-matroska",
-   "audio/x-m4a",
-   "audio/x-ms-wma",
-   "audio/vnd.rn-realaudio",
-@@ -442,8 +446,10 @@ static const char* const kStandardVideoT
-   "video/webm",
-   "video/x-dv",
-   "video/x-m4v",
-+  "video/x-matroska",
-   "video/x-mpeg",
-   "video/x-ms-asf",
-+  "video/x-msvideo",
-   "video/x-ms-wmv"
- };
- 
---- chromium-51.0.2687.0/media/base/audio_codecs.cc.ac3-dts	2016-03-22 23:01:01.000000000 +0100
-+++ chromium-51.0.2687.0/media/base/audio_codecs.cc	2016-03-23 18:19:14.903959089 +0100
-@@ -43,6 +43,8 @@ std::string GetCodecName(AudioCodec code
-       return "alac";
-     case kCodecAC3:
-       return "ac3";
-+    case kCodecDTS:
-+      return "dts";
-   }
-   NOTREACHED();
-   return "";
-@@ -72,6 +72,8 @@
-     return kCodecVorbis;
-   if (base::StartsWith(codec_id, "mp4a.40.", base::CompareCase::SENSITIVE))
-     return kCodecAAC;
-+  if (codec_id == "dts")
-+    return kCodecDTS;
-   return kUnknownAudioCodec;
- }
- 
---- chromium-51.0.2687.0/media/base/audio_codecs.h.ac3-dts	2016-03-22 23:01:01.000000000 +0100
-+++ chromium-51.0.2687.0/media/base/audio_codecs.h	2016-03-23 18:18:33.765701074 +0100
-@@ -32,13 +32,14 @@ enum AudioCodec {
-   kCodecPCM_ALAW = 14,
-   kCodecALAC = 15,
-   kCodecAC3 = 16,
-+  kCodecDTS = 17,
-   // DO NOT ADD RANDOM AUDIO CODECS!
-   //
-   // The only acceptable time to add a new codec is if there is production code
-   // that uses said codec in the same CL.
- 
-   // Must always be equal to the largest entry ever logged.
--  kAudioCodecMax = kCodecAC3,
-+  kAudioCodecMax = kCodecDTS,
- };
- 
- std::string MEDIA_EXPORT GetCodecName(AudioCodec codec);
---- chromium-51.0.2687.0/media/ffmpeg/ffmpeg_common.cc.ac3-dts	2016-03-22 23:01:01.000000000 +0100
-+++ chromium-51.0.2687.0/media/ffmpeg/ffmpeg_common.cc	2016-03-23 18:13:42.226118362 +0100
-@@ -117,6 +117,8 @@ static AudioCodec CodecIDToAudioCodec(AV
-       return kCodecOpus;
-     case AV_CODEC_ID_ALAC:
-       return kCodecALAC;
-+    case AV_CODEC_ID_DTS:
-+      return kCodecDTS;
-     default:
-       DVLOG(1) << "Unknown audio CodecID: " << codec_id;
-   }
-@@ -168,6 +170,10 @@ AVCodecID AudioCodecToCodecID(AudioCodec
-       return AV_CODEC_ID_PCM_MULAW;
-     case kCodecOpus:
-       return AV_CODEC_ID_OPUS;
-+    case kCodecAC3:
-+      return AV_CODEC_ID_AC3;
-+    case kCodecDTS:
-+      return AV_CODEC_ID_DTS;
-     default:
-       DVLOG(1) << "Unknown AudioCodec: " << audio_codec;
-   }
---- chromium-55.0.2883.52/content/renderer/media/render_media_client.cc.bak	2016-11-17 00:02:26.000000000 +0100
-+++ chromium-55.0.2883.52/content/renderer/media/render_media_client.cc	2016-11-27 21:55:59.360854652 +0100
-@@ -101,13 +101,13 @@
-     case media::kCodecVP8:
-     case media::kCodecVP9:
-     case media::kCodecTheora:
-+    case media::kCodecMPEG4:
-+    case media::kCodecHEVC:
-       return true;
- 
-     case media::kUnknownVideoCodec:
-     case media::kCodecVC1:
-     case media::kCodecMPEG2:
--    case media::kCodecMPEG4:
--    case media::kCodecHEVC:
-     case media::kCodecDolbyVision:
-       return false;
-   }
---- chromium-56.0.2924.10/media/remoting/proto_enum_utils.cc.bak	2016-11-29 21:04:19.000000000 +0100
-+++ chromium-56.0.2924.10/media/remoting/proto_enum_utils.cc	2016-12-01 23:42:15.717317808 +0100
-@@ -57,6 +57,7 @@
-     CASE_RETURN_OTHER(kCodecPCM_ALAW);
-     CASE_RETURN_OTHER(kCodecALAC);
-     CASE_RETURN_OTHER(kCodecAC3);
-+    CASE_RETURN_OTHER(kCodecDTS);
-   }
-   return base::nullopt;  // Not a 'default' to ensure compile-time checks.
- }
-@@ -83,6 +83,7 @@
-     CASE_RETURN_OTHER(kCodecPCM_ALAW);
-     CASE_RETURN_OTHER(kCodecALAC);
-     CASE_RETURN_OTHER(kCodecAC3);
-+    CASE_RETURN_OTHER(kCodecDTS);
-   }
-   return base::nullopt;  // Not a 'default' to ensure compile-time checks.
- }
---- chromium-56.0.2924.10/media/remoting/rpc.proto.bak	2016-11-29 21:04:19.000000000 +0100
-+++ chromium-56.0.2924.10/media/remoting/rpc.proto	2016-12-02 02:15:05.660562641 +0100
-@@ -64,6 +64,7 @@
-     kCodecPCM_ALAW = 14;
-     kCodecALAC = 15;
-     kCodecAC3 = 16;
-+    kCodecDTS = 17;
-   }
- 
-   // Proto version of media::SampleFormat.
---- chromium-56.0.2924.21/media/filters/ffmpeg_video_decoder.cc.extra_media	2016-12-09 00:02:25.000000000 +0100
-+++ chromium-56.0.2924.21/media/filters/ffmpeg_video_decoder.cc	2016-12-10 20:33:18.005427356 +0100
-@@ -56,7 +56,6 @@
-       case kUnknownVideoCodec:
-       case kCodecVC1:
-       case kCodecMPEG2:
--      case kCodecHEVC:
-       case kCodecVP9:
-       case kCodecDolbyVision:
-         // We do not compile ffmpeg with support for any of these codecs.
-@@ -68,6 +67,7 @@
-       case kCodecH264:
-       case kCodecMPEG4:
-       case kCodecVP8:
-+      case kCodecHEVC:
-         // Normalize to three threads for 1080p content, then scale linearly
-         // with number of pixels.
-         // Examples:
diff --git a/chromium-55-flac.patch b/chromium-55-flac.patch
index 867623e..86e3877 100644
--- a/chromium-55-flac.patch
+++ b/chromium-55-flac.patch
@@ -1,7 +1,6 @@
-diff -up chromium-55.0.2883.52/media/base/mime_util_internal.cc.flac chromium-55.0.2883.52/media/base/mime_util_internal.cc
---- chromium-55.0.2883.52/media/base/mime_util_internal.cc.flac	2016-11-20 02:57:53.694441764 +0100
-+++ chromium-55.0.2883.52/media/base/mime_util_internal.cc	2016-11-20 13:02:12.683283042 +0100
-@@ -386,6 +387,7 @@
+--- chromium-63.0.3230.0/media/base/mime_util_internal.cc.0114~	2017-10-09 20:07:12.902664570 +0200
++++ chromium-63.0.3230.0/media/base/mime_util_internal.cc	2017-10-09 21:02:36.858649113 +0200
+@@ -282,6 +282,7 @@ void MimeUtil::AddSupportedMediaFormats(
    matroska_audio_codecs.insert(MPEG2_AAC);
    matroska_audio_codecs.insert(MPEG4_AAC);
    matroska_audio_codecs.insert(PCM);
@@ -9,11 +8,11 @@ diff -up chromium-55.0.2883.52/media/base/mime_util_internal.cc.flac chromium-55
    
    CodecSet matroska_video_codecs;
    matroska_video_codecs.insert(THEORA);
-@@ -425,6 +427,7 @@
+@@ -358,6 +359,7 @@ void MimeUtil::AddSupportedMediaFormats(
+   flv_codecs.insert(VP6);
+   flv_codecs.insert(mp4_codecs.begin(), mp4_codecs.end());
+   flv_codecs.insert(MP3);
++  flv_codecs.insert(FLAC);
  
-   CodecSet mp4_audio_codecs(aac);
-   mp4_audio_codecs.insert(MP3);
-+  mp4_audio_codecs.insert(FLAC);
- #if BUILDFLAG(ENABLE_AC3_EAC3_AUDIO_DEMUXING)
-   mp4_audio_codecs.insert(AC3);
-   mp4_audio_codecs.insert(EAC3);
+   const CodecSet implicit_codec;
+   AddContainerWithCodecs("audio/wav", wav_codecs, false);
diff --git a/chromium-55.0.2883.75-more-codec-aliases.patch b/chromium-55.0.2883.75-more-codec-aliases.patch
deleted file mode 100644
index 1dd517f..0000000
--- a/chromium-55.0.2883.75-more-codec-aliases.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -up chromium-55.0.2883.75/third_party/WebKit/Source/wtf/text/TextCodecICU.cpp.morealiases chromium-55.0.2883.75/third_party/WebKit/Source/wtf/text/TextCodecICU.cpp
---- chromium-55.0.2883.75/third_party/WebKit/Source/wtf/text/TextCodecICU.cpp.morealiases	2016-12-12 15:53:06.545149310 -0500
-+++ chromium-55.0.2883.75/third_party/WebKit/Source/wtf/text/TextCodecICU.cpp	2016-12-12 15:55:25.808468122 -0500
-@@ -213,7 +213,11 @@ void TextCodecICU::registerEncodingNames
-   registrar("iso_8859-6", "ISO-8859-6");
-   registrar("iso_8859-7", "ISO-8859-7");
-   registrar("iso_8859-8", "ISO-8859-8");
-+  registrar("iso_8859-8-I", "ISO-8859-8-I");
-   registrar("iso_8859-9", "windows-1254");
-+  registrar("iso_8859-10", "ISO-8859-10");
-+  registrar("iso_8859-13", "ISO-8859-13");
-+  registrar("iso_8859-14", "ISO-8859-14");
-   registrar("iso_8859-15", "ISO-8859-15");
-   registrar("koi8_r", "KOI8-R");
-   registrar("x-cp1253", "windows-1253");
diff --git a/chromium-55.0.2883.75-sandbox-pie.patch b/chromium-55.0.2883.75-sandbox-pie.patch
deleted file mode 100644
index 6aae0b0..0000000
--- a/chromium-55.0.2883.75-sandbox-pie.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-diff -up chromium-55.0.2883.75/sandbox/linux/BUILD.gn.sandboxpie chromium-55.0.2883.75/sandbox/linux/BUILD.gn
---- chromium-55.0.2883.75/sandbox/linux/BUILD.gn.sandboxpie	2016-12-01 18:02:17.000000000 -0500
-+++ chromium-55.0.2883.75/sandbox/linux/BUILD.gn	2016-12-12 16:26:06.863426221 -0500
-@@ -279,11 +279,17 @@ if (is_linux) {
-       # For ULLONG_MAX
-       "-std=gnu99",
- 
-+      "-fPIE",
-+
-       # These files have a suspicious comparison.
-       # TODO fix this and re-enable this warning.
-       "-Wno-sign-compare",
-     ]
- 
-+    ldflags = [
-+      "-pie",
-+    ]
-+
-     import("//build/config/compiler/compiler.gni")
-     import("//build/config/sanitizers/sanitizers.gni")
-     if (is_component_build || using_sanitizer) {
-@@ -293,7 +299,7 @@ if (is_linux) {
-       # other flags that executable_config might have.
-       configs -= [ "//build/config:executable_config" ]
-       if (!use_gold) {
--        ldflags = [ "-Wl,--disable-new-dtags" ]
-+        ldflags += [ "-Wl,--disable-new-dtags" ]
-       }
-     }
- 
diff --git a/chromium-55.0.2883.75-use_system_harfbuzz.patch b/chromium-55.0.2883.75-use_system_harfbuzz.patch
deleted file mode 100644
index 6ca72f1..0000000
--- a/chromium-55.0.2883.75-use_system_harfbuzz.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up chromium-55.0.2883.75/ui/gfx/render_text_harfbuzz.h.use_system_harfbuzz chromium-55.0.2883.75/ui/gfx/render_text_harfbuzz.h
---- chromium-55.0.2883.75/ui/gfx/render_text_harfbuzz.h.use_system_harfbuzz	2016-12-12 16:09:03.873466669 -0500
-+++ chromium-55.0.2883.75/ui/gfx/render_text_harfbuzz.h	2016-12-12 16:09:57.507204326 -0500
-@@ -12,7 +12,7 @@
- #include <vector>
- 
- #include "base/macros.h"
--#include "third_party/harfbuzz-ng/src/hb.h"
-+#include <harfbuzz/hb.h>
- #include "third_party/icu/source/common/unicode/ubidi.h"
- #include "third_party/icu/source/common/unicode/uscript.h"
- #include "ui/gfx/render_text.h"
diff --git a/chromium-56.0.2924.87-fpermissive.patch b/chromium-56.0.2924.87-fpermissive.patch
deleted file mode 100644
index be68cf9..0000000
--- a/chromium-56.0.2924.87-fpermissive.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -up chromium-56.0.2924.87/third_party/WebKit/Source/BUILD.gn.permissive chromium-56.0.2924.87/third_party/WebKit/Source/BUILD.gn
---- chromium-56.0.2924.87/third_party/WebKit/Source/BUILD.gn.permissive	2017-02-13 12:32:23.419665971 -0500
-+++ chromium-56.0.2924.87/third_party/WebKit/Source/BUILD.gn	2017-02-13 12:33:16.146629190 -0500
-@@ -54,6 +54,9 @@ config("config") {
-   cflags = []
-   defines = []
- 
-+  # error: there are no arguments to 'swapAnchor' that depend on a template parameter, so a declaration of 'swapAnchor' must be available [-fpermissive]
-+  cflags += [ "-fpermissive" ]
-+
-   if (is_win) {
-     cflags += [
-       "/wd4305",  # Truncation from 'type1' to 'type2'.
diff --git a/chromium-56.0.2924.87-gcc5.patch b/chromium-56.0.2924.87-gcc5.patch
deleted file mode 100644
index 902f92b..0000000
--- a/chromium-56.0.2924.87-gcc5.patch
+++ /dev/null
@@ -1,354 +0,0 @@
-diff -up chromium-56.0.2924.87/third_party/cld_2/src/internal/cld_generated_cjk_uni_prop_80.cc.gcc5 chromium-56.0.2924.87/third_party/cld_2/src/internal/cld_generated_cjk_uni_prop_80.cc
---- chromium-56.0.2924.87/third_party/cld_2/src/internal/cld_generated_cjk_uni_prop_80.cc.gcc5	2017-02-01 21:03:47.000000000 -0500
-+++ chromium-56.0.2924.87/third_party/cld_2/src/internal/cld_generated_cjk_uni_prop_80.cc	2017-02-09 10:38:38.319790897 -0500
-@@ -165,8 +165,8 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
- // state[16 + 2] 0x000000 Byte 2 of 3 (relative offsets)
- X__,X__,X__,X__,X__,X__,X__,X__, X__,X__,X__,X__,X__,X__,X__,X__,
- X__,X__,X__,X__,X__,X__,X__,X__, X__,X__,X__,X__,X__,X__,X__,X__,
---14,-14,-14,-14,-14,-14,-14,-14, -14,-14,-14,-14,-14,-14,-14,-14,
---14,-14,-14,-14,-14,-14,-14,-14, -14,-14,-14,-14,-14,-14,-14,-14,
-+(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14, (uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,
-+(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14, (uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,(uint8)-14,
- 
- // state[17 + 2] 0x0031c0 Byte 3 of 3 (property)
-   0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
-@@ -259,10 +259,10 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
- 229,229,229,  3,208,  0,229,  5, 233,  0,229,229,229,208,229,229,
- 
- // state[32 + 2] 0x002000 Byte 2 of 3 (relative offsets)
---30,-30,-30,-30,-30,-30,-30,-30, -30,-30,-30,-30,-30,-30,-30,-30,
---30,-30,-30,-30,-30,-30,-30,-30, -30,-30,-30,-30,-30,-30,-30,-30,
---30,-30,-30,-30,-30,-30,-30,-30, -30,-30,-30,-30,-30,-30,-30,-30,
---30,-30,-30,-30,-30,-30,-30,-30, -30,-30,-30,-30,-30,-30,-30,-30,
-+(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30, (uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,
-+(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30, (uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,
-+(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30, (uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,
-+(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30, (uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,(uint8)-30,
- 
- // state[33 + 2] 0x003780 Byte 3 of 3 (property)
- 229,208,229,229,208,229,229,229, 208,208,208,208,208,  4,  6,208,
-@@ -355,10 +355,10 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
- 228,229,229,229,229,233,233,  6, 208,229,  3,229,233,  6,  6,  0,
- 
- // state[48 + 2] 0x001000 Byte 2 of 3 (relative offsets)
---46,-46,-46,-46,-42,-41,-40,-39, -46,-46,-46,-46,-46,-46,-46,-46,
---46,-46,-46,-46,-46,-46,-46,-46, -46,-46,-46,-46,-46,-46,-46,-46,
---46,-46,-46,-46,-46,-46,-46,-46, -46,-46,-46,-46,-46,-46,-46,-46,
---46,-46,-46,-46,-46,-46,-46,-46, -46,-46,-46,-46,-46,-46,-46,-46,
-+(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-42,(uint8)-41,(uint8)-40,(uint8)-39, (uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,
-+(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46, (uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,
-+(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46, (uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,
-+(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46, (uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,(uint8)-46,
- 
- // state[49 + 2] 0x003b40 Byte 3 of 3 (property)
-   6,227,208,233,208,  3,  3,208, 208,229,  0,229,233,219,  0,  6,
-@@ -451,10 +451,10 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
- 229,208,208,208,217,208,229,229, 229,229,208,217,208,229,229,229,
- 
- // state[64 + 2] 0x003000 Byte 2 of 3 (relative offsets)
---54,-53,-52,-51,-50,-58,-49,-47, -62,-62,-62,-62,-62,-62,-62,-62,
---46,-45,-44,-43,-42,-41,-40,-39, -38,-37,-36,-35,-34,-33,-31,-30,
---29,-28,-27,-26,-25,-24,-23,-22, -21,-20,-19,-18,-17,-15,-14,-13,
---12,-11,-10, -9, -8, -7, -6, -5,  -4, -3, -2, -1,  1,  2,  3,  4,
-+(uint8)-54,(uint8)-53,(uint8)-52,(uint8)-51,(uint8)-50,(uint8)-58,(uint8)-49,(uint8)-47, (uint8)-62,(uint8)-62,(uint8)-62,(uint8)-62,(uint8)-62,(uint8)-62,(uint8)-62,(uint8)-62,
-+(uint8)-46,(uint8)-45,(uint8)-44,(uint8)-43,(uint8)-42,(uint8)-41,(uint8)-40,(uint8)-39, (uint8)-38,(uint8)-37,(uint8)-36,(uint8)-35,(uint8)-34,(uint8)-33,(uint8)-31,(uint8)-30,
-+(uint8)-29,(uint8)-28,(uint8)-27,(uint8)-26,(uint8)-25,(uint8)-24,(uint8)-23,(uint8)-22, (uint8)-21,(uint8)-20,(uint8)-19,(uint8)-18,(uint8)-17,(uint8)-15,(uint8)-14,(uint8)-13,
-+(uint8)-12,(uint8)-11,(uint8)-10, (uint8)-9, (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5,  (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1,  1,  2,  3,  4,
- 
- // state[65 + 2] 0x003f00 Byte 3 of 3 (property)
- 217,217,208,  3,208,217,208,208,   6,229,208,228,229,229,208,229,
-@@ -547,10 +547,10 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
- 229,208,229,229,208,229,233,  0, 208,208,229,208,227,229,229,229,
- 
- // state[80 + 2] 0x004000 Byte 2 of 3 (relative offsets)
---11,-10, -9, -8, -7, -6, -5, -4,  -3, -2, -1,  1,  2,  3,  4,  5,
-+(uint8)-11,(uint8)-10, (uint8)-9, (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4,  (uint8)-3, (uint8)-2, (uint8)-1,  1,  2,  3,  4,  5,
-   6,  7,  8,  9, 10, 11, 12, 13,  14, 15, 16, 17, 18, 19, 20, 21,
-  22, 23, 24, 25, 26, 27, 28, 29,  30, 31, 32, 33, 34, 35, 36, 37,
-- 38, 39, 40, 41, 42, 43, 44,-78,  45, 46, 47, 48, 49, 50, 51, 52,
-+ 38, 39, 40, 41, 42, 43, 44,(uint8)-78,  45, 46, 47, 48, 49, 50, 51, 52,
- 
- // state[81 + 2] 0x0042c0 Byte 3 of 3 (property)
- 229,  0,229,229,229,  3,  4,  4, 229,229,229,229,208,229,  0,208,
-@@ -931,7 +931,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
-   0,142, 98, 28,117,206,212,212, 220, 15,  0,231,199,231,111, 28,
- 
- // state[144 + 2] 0x005000 Byte 2 of 3 (relative offsets)
---11,-10, -9, -8, -7, -6, -5, -4,  -3, -2, -1,  1,  2,  3,  4,  5,
-+(uint8)-11,(uint8)-10, (uint8)-9, (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4,  (uint8)-3, (uint8)-2, (uint8)-1,  1,  2,  3,  4,  5,
-   6,  7,  8,  9, 10, 11, 12, 13,  14, 15, 16, 17, 18, 19, 20, 21,
-  22, 23, 24, 25, 26, 27, 28, 29,  30, 31, 32, 33, 34, 35, 36, 37,
-  38, 39, 40, 41, 42, 43, 44, 45,  46, 47, 48, 49, 50, 51, 52, 53,
-@@ -1315,7 +1315,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
-  16, 15,211,118,  0,231, 68,231,   0, 99,161,  0,115,221,144,140,
- 
- // state[208 + 2] 0x006000 Byte 2 of 3 (relative offsets)
---10, -9, -8, -7, -6, -5, -4, -3,  -2, -1,  1,  2,  3,  4,  5,  6,
-+(uint8)-10, (uint8)-9, (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3,  (uint8)-2, (uint8)-1,  1,  2,  3,  4,  5,  6,
-   7,  8,  9, 10, 11, 12, 13, 14,  15, 16, 17, 18, 19, 20, 21, 22,
-  23, 24, 25, 26, 27, 28, 29, 30,  31, 32, 33, 34, 35, 36, 37, 38,
-  39, 40, 41, 42, 43, 44, 45, 46,  47, 48, 49, 50, 51, 52, 53, 54,
-@@ -1699,7 +1699,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
- 119, 16, 51,  0,  0, 68,136, 72, 144,118, 87,201,191,136, 78,233,
- 
- // state[272 + 2] 0x007000 Byte 2 of 3 (relative offsets)
-- -9, -8, -7, -6, -5, -4, -3, -2,  -1,  1,  2,  3,  4,  5,  6,  7,
-+ (uint8)-9, (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2,  (uint8)-1,  1,  2,  3,  4,  5,  6,  7,
-   8,  9, 10, 11, 12, 13, 14, 15,  16, 17, 18, 19, 20, 21, 22, 23,
-  24, 25, 26, 27, 28, 29, 30, 31,  32, 33, 34, 35, 36, 37, 38, 39,
-  40, 41, 42, 43, 44, 45, 46, 47,  48, 49, 50, 51, 52, 53, 54, 55,
-@@ -2083,7 +2083,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
- 212,212,  0,126,140,220,220,  0,   0,  0,127,118,106,  0,199,  0,
- 
- // state[336 + 2] 0x008000 Byte 2 of 3 (relative offsets)
-- -8, -7, -6, -5, -4, -3, -2, -1,   1,  2,  3,  4,  5,  6,  7,  8,
-+ (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1,   1,  2,  3,  4,  5,  6,  7,  8,
-   9, 10, 11, 12, 13, 14, 15, 16,  17, 18, 19, 20, 21, 22, 23, 24,
-  25, 26, 27, 28, 29, 30, 31, 32,  33, 34, 35, 36, 37, 38, 39, 40,
-  41, 42, 43, 44, 45, 46, 47, 48,  49, 50, 51, 52, 53, 54, 55, 56,
-@@ -2467,7 +2467,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
-   0,122,  0,231,100,232,  0,  0, 117,  0,206,231,  0,  0,231,  0,
- 
- // state[400 + 2] 0x009000 Byte 2 of 3 (relative offsets)
-- -7, -6, -5, -4, -3, -2, -1,  1,   2,  3,  4,  5,  6,  7,  8,  9,
-+ (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1,  1,   2,  3,  4,  5,  6,  7,  8,  9,
-  10, 11, 12, 13, 14, 15, 16, 17,  18, 19, 20, 21, 22, 23, 24, 25,
-  26, 27, 28, 29, 30, 31, 32, 33,  34, 35, 36, 37, 38, 39, 40, 41,
-  42, 43, 44, 45, 46, 47, 48, 49,  50, 51, 52, 53, 54, 55, 56, 57,
-@@ -2851,10 +2851,10 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
-   0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
- 
- // state[464 + 2] 0x00a000 Byte 2 of 3 (relative offsets)
-- -6, -6, -6, -6, -6, -6, -6, -6,  -6, -6, -6, -6, -6, -6, -6, -6,
-- -6, -6, -6, -6, -6, -6, -6, -6,  -6, -6, -6, -6, -6, -6, -6, -6,
-- -6, -6, -6, -6, -6, -6, -6, -6,  -6, -6, -6, -6, -6, -6, -6, -6,
-- -5, -5, -5, -5, -5, -5, -5, -5,  -5, -5, -5, -5, -5, -5, -5, -5,
-+ (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6,  (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6,
-+ (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6,  (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6,
-+ (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6,  (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6, (uint8)-6,
-+ (uint8)-5, (uint8)-5, (uint8)-5, (uint8)-5, (uint8)-5, (uint8)-5, (uint8)-5, (uint8)-5,  (uint8)-5, (uint8)-5, (uint8)-5, (uint8)-5, (uint8)-5, (uint8)-5, (uint8)-5, (uint8)-5,
- 
- // state[465 + 2] 0x000080 Byte 2 of 2 (property)
-   0,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
-@@ -2947,10 +2947,10 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
- 208,208,208,208,  5,  6,208,  2,   0,  6,  6,  5,208,208,208,  6,
- 
- // state[480 + 2] 0x00b000 Byte 2 of 3 (relative offsets)
---20,-20,-20,-20,-20,-20,-20,-20, -20,-20,-20,-20,-20,-20,-20,-20,
---20,-20,-20,-20,-20,-20,-20,-20, -20,-20,-20,-20,-20,-20,-20,-20,
---20,-20,-20,-20,-20,-20,-20,-20, -20,-20,-20,-20,-20,-20,-20,-20,
---20,-20,-20,-20,-20,-20,-20,-20, -20,-20,-20,-20,-20,-20,-20,-20,
-+(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20, (uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,
-+(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20, (uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,
-+(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20, (uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,
-+(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20, (uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,(uint8)-20,
- 
- // state[481 + 2] 0x020100 Byte 4 of 4 (property)
-   2,  6,  5,  6,  5,229,  5,208, 208,208,208,208,208,208,208,229,
-@@ -3043,10 +3043,10 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
- 208,208,  5,  5,  5,208,208,  2, 229,  5,  5,  5,  5,  5,  6,208,
- 
- // state[496 + 2] 0x00d000 Byte 2 of 3 (relative offsets)
---35,-35,-35,-35,-35,-35,-35,-35, -35,-35,-35,-35,-35,-35,-35,-35,
---35,-35,-35,-35,-35,-35,-35,-35, -35,-35,-35,-35,-35,-35,-34,-33,
---33,-33,-33,-33,-33,-33,-33,-33, -33,-33,-33,-33,-33,-33,-33,-33,
---33,-33,-33,-33,-33,-33,-33,-33, -33,-33,-33,-33,-33,-33,-33,-33,
-+(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35, (uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,
-+(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35, (uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-35,(uint8)-34,(uint8)-33,
-+(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33, (uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,
-+(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33, (uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,(uint8)-33,
- 
- // state[497 + 2] 0x0204c0 Byte 4 of 4 (property)
-   2,  2,  5,  5,  5,  2,208,  2,   5,  5,  6,208,208,  5,  5,  5,
-@@ -3139,10 +3139,10 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
- 208,208,  5,  5,  5,  5,  6,  6, 208,208,  2,208,208,208,208,208,
- 
- // state[512 + 2] 0x00f000 Byte 2 of 3 (relative offsets)
---47,-47,-47,-47,-47,-47,-47,-47, -47,-47,-47,-47,-47,-47,-47,-47,
---47,-47,-47,-47,-47,-47,-47,-47, -47,-47,-47,-47,-47,-47,-47,-47,
---47,-47,-47,-47,-46,-45,-44,-43, -42,-41,-44,-40,-47,-47,-47,-47,
---47,-47,-47,-47,-47,-47,-47,-47, -47,-47,-47,-47,-47,-39,-38,-37,
-+(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47, (uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,
-+(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47, (uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,
-+(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-46,(uint8)-45,(uint8)-44,(uint8)-43, (uint8)-42,(uint8)-41,(uint8)-44,(uint8)-40,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,
-+(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47, (uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-47,(uint8)-39,(uint8)-38,(uint8)-37,
- 
- // state[513 + 2] 0x020880 Byte 4 of 4 (property)
-   5,  5,  5,  6,208,208,208,208, 208,208,  5,  5,  6,  6,208,208,
-@@ -3235,10 +3235,10 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
-   5,  6,208,218,208,208,208,218, 208,  6,227,229,  6,  6,  6,208,
- 
- // state[528 + 2] 0x020000 Byte 3 of 4 (relative offsets)
---52,-51,-50,-49,-47,-46,-45,-44, -43,-42,-41,-40,-39,-38,-37,-36,
---35,-34,-33,-31,-30,-29,-28,-27, -26,-25,-24,-23,-22,-21,-20,-19,
---18,-17,-15,-14,-13,-12,-11,-10,  -9, -8, -7, -6, -5, -4, -3, -2,
-- -1,  1,  2,  3,  4,  5,  6,  7,   8,  9, 10, 11, 12, 13, 14, 15,
-+(uint8)-52,(uint8)-51,(uint8)-50,(uint8)-49,(uint8)-47,(uint8)-46,(uint8)-45,(uint8)-44, (uint8)-43,(uint8)-42,(uint8)-41,(uint8)-40,(uint8)-39,(uint8)-38,(uint8)-37,(uint8)-36,
-+(uint8)-35,(uint8)-34,(uint8)-33,(uint8)-31,(uint8)-30,(uint8)-29,(uint8)-28,(uint8)-27, (uint8)-26,(uint8)-25,(uint8)-24,(uint8)-23,(uint8)-22,(uint8)-21,(uint8)-20,(uint8)-19,
-+(uint8)-18,(uint8)-17,(uint8)-15,(uint8)-14,(uint8)-13,(uint8)-12,(uint8)-11,(uint8)-10,  (uint8)-9, (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2,
-+ (uint8)-1,  1,  2,  3,  4,  5,  6,  7,   8,  9, 10, 11, 12, 13, 14, 15,
- 
- // state[529 + 2] 0x020c40 Byte 4 of 4 (property)
- 227,  5,  5,  5,  2,  2,  2,  2, 213,  2,  2,  2,  2,  2,208,  6,
-@@ -3427,7 +3427,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
- 208,208,208,208,208,208,208,208, 208,  6,  6,  6,  6,  2,  5,  5,
- 
- // state[560 + 2] 0x021000 Byte 3 of 4 (relative offsets)
---16,-15,-14,-13,-12,-11,-10, -9,  -8, -7, -6, -5, -4, -3, -2, -1,
-+(uint8)-16,(uint8)-15,(uint8)-14,(uint8)-13,(uint8)-12,(uint8)-11,(uint8)-10, (uint8)-9,  (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1,
-   1,  2,  3,  4,  5,  6,  7,  8,   9, 10, 11, 12, 13, 14, 15, 16,
-  17, 18, 19, 20, 21, 22, 23, 24,  25, 26, 27, 28, 29, 30, 31, 32,
-  33, 34, 35, 36, 37, 38, 39, 40,  41, 42, 43, 44, 45, 46, 47, 48,
-@@ -3811,7 +3811,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
-   5,  5,  5,  6,  6,  6,  5,208, 208,229,208,208,  5,  5,  5,  5,
- 
- // state[624 + 2] 0x022000 Byte 3 of 4 (relative offsets)
---15,-14,-13,-12,-11,-10, -9, -8,  -7, -6, -5, -4, -3, -2, -1,  1,
-+(uint8)-15,(uint8)-14,(uint8)-13,(uint8)-12,(uint8)-11,(uint8)-10, (uint8)-9, (uint8)-8,  (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1,  1,
-   2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15, 16, 17,
-  18, 19, 20, 21, 22, 23, 24, 25,  26, 27, 28, 29, 30, 31, 32, 33,
-  34, 35, 36, 37, 38, 39, 40, 41,  42, 43, 44, 45, 46, 47, 48, 49,
-@@ -4195,7 +4195,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
-   6,  6,  4,  5,208,208,208,208, 208,208,229,  6,  5,  6,  6,  6,
- 
- // state[688 + 2] 0x023000 Byte 3 of 4 (relative offsets)
---14,-13,-12,-11,-10, -9, -8, -7,  -6, -5, -4, -3, -2, -1,  1,  2,
-+(uint8)-14,(uint8)-13,(uint8)-12,(uint8)-11,(uint8)-10, (uint8)-9, (uint8)-8, (uint8)-7,  (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1,  1,  2,
-   3,  4,  5,  6,  7,  8,  9, 10,  11, 12, 13, 14, 15, 16, 17, 18,
-  19, 20, 21, 22, 23, 24, 25, 26,  27, 28, 29, 30, 31, 32, 33, 34,
-  35, 36, 37, 38, 39, 40, 41, 42,  43, 44, 45, 46, 47, 48, 49, 50,
-@@ -4579,7 +4579,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
-   5,  5,  5,  5,  5,  5,  5,  6, 208,208,208,208,208,208,  6,  6,
- 
- // state[752 + 2] 0x024000 Byte 3 of 4 (relative offsets)
---13,-12,-11,-10, -9, -8, -7, -6,  -5, -4, -3, -2, -1,  1,  2,  3,
-+(uint8)-13,(uint8)-12,(uint8)-11,(uint8)-10, (uint8)-9, (uint8)-8, (uint8)-7, (uint8)-6,  (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1,  1,  2,  3,
-   4,  5,  6,  7,  8,  9, 10, 11,  12, 13, 14, 15, 16, 17, 18, 19,
-  20, 21, 22, 23, 24, 25, 26, 27,  28, 29, 30, 31, 32, 33, 34, 35,
-  36, 37, 38, 39, 40, 41, 42, 43,  44, 45, 46, 47, 48, 49, 50, 51,
-@@ -4963,7 +4963,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
- 229,  6,  2,  2,  2,  2,  2,  2,   2,  2,  2,  5,  2,  2,  6,229,
- 
- // state[816 + 2] 0x025000 Byte 3 of 4 (relative offsets)
---12,-11,-10, -9, -8, -7, -6, -5,  -4, -3, -2, -1,  1,  2,  3,  4,
-+(uint8)-12,(uint8)-11,(uint8)-10, (uint8)-9, (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5,  (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1,  1,  2,  3,  4,
-   5,  6,  7,  8,  9, 10, 11, 12,  13, 14, 15, 16, 17, 18, 19, 20,
-  21, 22, 23, 24, 25, 26, 27, 28,  29, 30, 31, 32, 33, 34, 35, 36,
-  37, 38, 39, 40, 41, 42, 43, 44,  45, 46, 47, 48, 49, 50, 51, 52,
-@@ -5347,7 +5347,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
-   6,  6,  6,  5,  5,  5,  5,  6,   6,  6,  3,  6,229,208,208,229,
- 
- // state[880 + 2] 0x026000 Byte 3 of 4 (relative offsets)
---11,-10, -9, -8, -7, -6, -5, -4,  -3, -2, -1,  1,  2,  3,  4,  5,
-+(uint8)-11,(uint8)-10, (uint8)-9, (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4,  (uint8)-3, (uint8)-2, (uint8)-1,  1,  2,  3,  4,  5,
-   6,  7,  8,  9, 10, 11, 12, 13,  14, 15, 16, 17, 18, 19, 20, 21,
-  22, 23, 24, 25, 26, 27, 28, 29,  30, 31, 32, 33, 34, 35, 36, 37,
-  38, 39, 40, 41, 42, 43, 44, 45,  46, 47, 48, 49, 50, 51, 52, 53,
-@@ -5731,7 +5731,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
- 208,  6,  6,208,208,208,208,208,   6,  6,  6,216,  5,  5,  5,  5,
- 
- // state[944 + 2] 0x027000 Byte 3 of 4 (relative offsets)
---10, -9, -8, -7, -6, -5, -4, -3,  -2, -1,  1,  2,  3,  4,  5,  6,
-+(uint8)-10, (uint8)-9, (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3,  (uint8)-2, (uint8)-1,  1,  2,  3,  4,  5,  6,
-   7,  8,  9, 10, 11, 12, 13, 14,  15, 16, 17, 18, 19, 20, 21, 22,
-  23, 24, 25, 26, 27, 28, 29, 30,  31, 32, 33, 34, 35, 36, 37, 38,
-  39, 40, 41, 42, 43, 44, 45, 46,  47, 48, 49, 50, 51, 52, 53, 54,
-@@ -6115,7 +6115,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
-   5,  5,  5,  6,208,208,  6,  6, 208,229,208,208,208,  5,  5,  5,
- 
- // state[1008 + 2] 0x028000 Byte 3 of 4 (relative offsets)
-- -9, -8, -7, -6, -5, -4, -3, -2,  -1,  1,  2,  3,  4,  5,  6,  7,
-+ (uint8)-9, (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2,  (uint8)-1,  1,  2,  3,  4,  5,  6,  7,
-   8,  9, 10, 11, 12, 13, 14, 15,  16, 17, 18, 19, 20, 21, 22, 23,
-  24, 25, 26, 27, 28, 29, 30, 31,  32, 33, 34, 35, 36, 37, 38, 39,
-  40, 41, 42, 43, 44, 45, 46, 47,  48, 49, 50, 51, 52, 53, 54, 55,
-@@ -6499,7 +6499,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
- 208,208,  5,  5,  6,208,208,  5, 208,208,208,  6,208,  6,208,208,
- 
- // state[1072 + 2] 0x029000 Byte 3 of 4 (relative offsets)
-- -8, -7, -6, -5, -4, -3, -2, -1,   1,  2,  3,  4,  5,  6,  7,  8,
-+ (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1,   1,  2,  3,  4,  5,  6,  7,  8,
-   9, 10, 11, 12, 13, 14, 15, 16,  17, 18, 19, 20, 21, 22, 23, 24,
-  25, 26, 27, 28, 29, 30, 31, 32,  33, 34, 35, 36, 37, 38, 39, 40,
-  41, 42, 43, 44, 45, 46, 47, 48,  49, 50, 51, 52, 53, 54, 55, 56,
-@@ -6883,7 +6883,7 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
- 229,229,229,229,208,208,208,229, 208,208,208,229,  0,229,208,208,
- 
- // state[1136 + 2] 0x02a000 Byte 3 of 4 (relative offsets)
-- -7, -6, -5, -4, -3, -2, -1,  1,   2,  3,  4,  5,  6,  7,  8,  9,
-+ (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1,  1,   2,  3,  4,  5,  6,  7,  8,  9,
-  10, 11, 12, 13, 14, 15, 16, 17,  18, 19, 20, 21, 22, 22, 22, 22,
-  22, 22, 22, 22, 22, 22, 22, 22,  22, 22, 22, 22, 22, 22, 22, 22,
-  22, 22, 22, 22, 22, 22, 22, 22,  22, 22, 22, 22, 22, 22, 22, 22,
-@@ -7075,10 +7075,10 @@ X__,X__,X__,X__,X__,X__,X__,X__, X__,X__
-   5,  5,  5,  5,  5,  5,  5,  5,   5,  5,  5,  5,  5,  5,  5,  5,
- 
- // state[1168 + 2] 0x02f000 Byte 3 of 4 (relative offsets)
-- -9, -9, -9, -9, -9, -9, -9, -9,  -9, -9, -9, -9, -9, -9, -9, -9,
-- -9, -9, -9, -9, -9, -9, -9, -9,  -9, -9, -9, -9, -9, -9, -9, -9,
-- -8, -7, -6, -5, -4, -3, -2, -1,   1, -9, -9, -9, -9, -9, -9, -9,
-- -9, -9, -9, -9, -9, -9, -9, -9,  -9, -9, -9, -9, -9, -9, -9, -9,
-+ (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9,  (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9,
-+ (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9,  (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9,
-+ (uint8)-8, (uint8)-7, (uint8)-6, (uint8)-5, (uint8)-4, (uint8)-3, (uint8)-2, (uint8)-1,   1, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9,
-+ (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9,  (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9, (uint8)-9,
- 
- // state[1169 + 2] 0x02fa00 Byte 4 of 4 (property)
- 217,  5,  5,  5,  5,  5,  5,  5,   5,  5,  5,  5,  5,217,  5,  5,
-diff -up chromium-56.0.2924.87/third_party/webgl/src/specs/latest/2.0/webgl2.idl.gcc5 chromium-56.0.2924.87/third_party/webgl/src/specs/latest/2.0/webgl2.idl
---- chromium-56.0.2924.87/third_party/webgl/src/specs/latest/2.0/webgl2.idl.gcc5	2017-02-01 21:03:57.000000000 -0500
-+++ chromium-56.0.2924.87/third_party/webgl/src/specs/latest/2.0/webgl2.idl	2017-02-09 10:38:38.380789675 -0500
-@@ -265,7 +265,7 @@ interface WebGL2RenderingContextBase
-   const GLenum UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES          = 0x8A43;
-   const GLenum UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER     = 0x8A44;
-   const GLenum UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER   = 0x8A46;
--  const GLenum INVALID_INDEX                                 = 0xFFFFFFFF;
-+  const GLenum INVALID_INDEX                                 = 256;
-   const GLenum MAX_VERTEX_OUTPUT_COMPONENTS                  = 0x9122;
-   const GLenum MAX_FRAGMENT_INPUT_COMPONENTS                 = 0x9125;
-   const GLenum MAX_SERVER_WAIT_TIMEOUT                       = 0x9111;
-diff -up chromium-56.0.2924.87/third_party/WebKit/Source/core/dom/NodeFilter.h.gcc5 chromium-56.0.2924.87/third_party/WebKit/Source/core/dom/NodeFilter.h
---- chromium-56.0.2924.87/third_party/WebKit/Source/core/dom/NodeFilter.h.gcc5	2017-02-01 21:03:09.000000000 -0500
-+++ chromium-56.0.2924.87/third_party/WebKit/Source/core/dom/NodeFilter.h	2017-02-09 10:38:38.387789535 -0500
-@@ -49,7 +49,7 @@ class NodeFilter final : public GarbageC
-      * to the value of NodeType for the equivalent node type.
-      */
-   enum {
--    kShowAll = 0xFFFFFFFF,
-+    kShowAll = 256 /* 0xFFFFFFFF */,
-     kShowElement = 0x00000001,
-     kShowAttribute = 0x00000002,
-     kShowText = 0x00000004,
-diff -up chromium-56.0.2924.87/third_party/WebKit/Source/core/dom/NodeFilter.idl.gcc5 chromium-56.0.2924.87/third_party/WebKit/Source/core/dom/NodeFilter.idl
---- chromium-56.0.2924.87/third_party/WebKit/Source/core/dom/NodeFilter.idl.gcc5	2017-02-01 21:03:09.000000000 -0500
-+++ chromium-56.0.2924.87/third_party/WebKit/Source/core/dom/NodeFilter.idl	2017-02-09 10:38:38.394789395 -0500
-@@ -30,7 +30,7 @@
-     const unsigned short FILTER_SKIP = 3;
- 
-     // Constants for whatToShow
--    const unsigned long SHOW_ALL = 0xFFFFFFFF;
-+    const unsigned long SHOW_ALL = 256; // 0xFFFFFFFF
-     const unsigned long SHOW_ELEMENT = 0x1;
-     const unsigned long SHOW_ATTRIBUTE = 0x2; // historical
-     const unsigned long SHOW_TEXT = 0x4;
-diff -up chromium-56.0.2924.87/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.idl.gcc5 chromium-56.0.2924.87/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.idl
---- chromium-56.0.2924.87/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.idl.gcc5	2017-02-01 21:03:09.000000000 -0500
-+++ chromium-56.0.2924.87/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.idl	2017-02-09 11:07:32.828682863 -0500
-@@ -239,7 +239,7 @@ typedef unsigned long long GLuint64;
-     const GLenum UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES          = 0x8A43;
-     const GLenum UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER     = 0x8A44;
-     const GLenum UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER   = 0x8A46;
--    const GLenum INVALID_INDEX                                 = 0xFFFFFFFF;
-+    const GLenum INVALID_INDEX                                 = 256;
-     const GLenum MAX_VERTEX_OUTPUT_COMPONENTS                  = 0x9122;
-     const GLenum MAX_FRAGMENT_INPUT_COMPONENTS                 = 0x9125;
-     const GLenum MAX_SERVER_WAIT_TIMEOUT                       = 0x9111;
-@@ -269,7 +269,7 @@ typedef unsigned long long GLuint64;
-     const GLenum TEXTURE_IMMUTABLE_FORMAT                      = 0x912F;
-     const GLenum MAX_ELEMENT_INDEX                             = 0x8D6B;
-     const GLenum TEXTURE_IMMUTABLE_LEVELS                      = 0x82DF;
--    const GLint TIMEOUT_IGNORED                                = -1;
-+    const GLint TIMEOUT_IGNORED                                = 256;
- 
-     /* WebGL-specific enums */
-     const GLenum MAX_CLIENT_WAIT_TIMEOUT_WEBGL                 = 0x9247;
diff --git a/chromium-56.0.2924.87-gcc7.patch b/chromium-56.0.2924.87-gcc7.patch
deleted file mode 100644
index 6d6e9ee..0000000
--- a/chromium-56.0.2924.87-gcc7.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-diff -up chromium-56.0.2924.87/third_party/WebKit/Source/platform/graphics/gpu/SharedGpuContext.h.gcc7 chromium-56.0.2924.87/third_party/WebKit/Source/platform/graphics/gpu/SharedGpuContext.h
---- chromium-56.0.2924.87/third_party/WebKit/Source/platform/graphics/gpu/SharedGpuContext.h.gcc7	2017-03-01 11:29:32.681142930 -0500
-+++ chromium-56.0.2924.87/third_party/WebKit/Source/platform/graphics/gpu/SharedGpuContext.h	2017-03-01 11:30:19.396536499 -0500
-@@ -5,6 +5,7 @@
- #include "platform/PlatformExport.h"
- #include "wtf/ThreadSpecific.h"
- 
-+#include <functional>
- #include <memory>
- 
- namespace gpu {
-diff -up chromium-56.0.2924.87/v8/src/objects-body-descriptors.h.gcc7 chromium-56.0.2924.87/v8/src/objects-body-descriptors.h
---- chromium-56.0.2924.87/v8/src/objects-body-descriptors.h.gcc7	2017-02-28 16:00:27.313172210 -0500
-+++ chromium-56.0.2924.87/v8/src/objects-body-descriptors.h	2017-02-28 16:00:46.016804708 -0500
-@@ -99,7 +99,7 @@ class FixedBodyDescriptor final : public
- 
-   template <typename StaticVisitor>
-   static inline void IterateBody(HeapObject* obj, int object_size) {
--    IterateBody(obj);
-+    IterateBody<StaticVisitor>(obj);
-   }
- };
- 
-diff -up chromium-56.0.2924.87/v8/src/objects.h.gcc7 chromium-56.0.2924.87/v8/src/objects.h
---- chromium-56.0.2924.87/v8/src/objects.h.gcc7	2017-02-28 15:58:27.368527968 -0500
-+++ chromium-56.0.2924.87/v8/src/objects.h	2017-02-28 15:59:25.868379455 -0500
-@@ -3531,22 +3531,10 @@ class HashTable : public HashTableBase {
-  public:
-   typedef Shape ShapeT;
- 
--  // Wrapper methods
--  inline uint32_t Hash(Key key) {
--    if (Shape::UsesSeed) {
--      return Shape::SeededHash(key, GetHeap()->HashSeed());
--    } else {
--      return Shape::Hash(key);
--    }
--  }
--
--  inline uint32_t HashForObject(Key key, Object* object) {
--    if (Shape::UsesSeed) {
--      return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object);
--    } else {
--      return Shape::HashForObject(key, object);
--    }
--  }
-+  // Wrapper methods.  Defined in src/objects-inl.h
-+  // to break a cycle with src/heap/heap.h.
-+  inline uint32_t Hash(Key key);
-+  inline uint32_t HashForObject(Key key, Object* object);
- 
-   // Returns a new HashTable object.
-   MUST_USE_RESULT static Handle<Derived> New(
-diff -up chromium-56.0.2924.87/v8/src/objects-inl.h.gcc7 chromium-56.0.2924.87/v8/src/objects-inl.h
---- chromium-56.0.2924.87/v8/src/objects-inl.h.gcc7	2017-02-28 15:59:44.293016928 -0500
-+++ chromium-56.0.2924.87/v8/src/objects-inl.h	2017-02-28 16:00:18.187351116 -0500
-@@ -39,6 +39,25 @@
- namespace v8 {
- namespace internal {
- 
-+template <typename Derived, typename Shape, typename Key>
-+uint32_t HashTable<Derived, Shape, Key>::Hash(Key key) {
-+  if (Shape::UsesSeed) {
-+    return Shape::SeededHash(key, GetHeap()->HashSeed());
-+  } else {
-+    return Shape::Hash(key);
-+  }
-+}
-+
-+template <typename Derived, typename Shape, typename Key>
-+uint32_t HashTable<Derived, Shape, Key>::HashForObject(Key key,
-+                                                       Object* object) {
-+  if (Shape::UsesSeed) {
-+    return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object);
-+  } else {
-+    return Shape::HashForObject(key, object);
-+  }
-+}
-+
- PropertyDetails::PropertyDetails(Smi* smi) {
-   value_ = smi->value();
- }
diff --git a/chromium-57.0.2987.110-enable-mp3.patch b/chromium-57.0.2987.110-enable-mp3.patch
deleted file mode 100644
index a8b9ee6..0000000
--- a/chromium-57.0.2987.110-enable-mp3.patch
+++ /dev/null
@@ -1,128 +0,0 @@
-diff -up chromium-57.0.2987.110/third_party/ffmpeg/ffmpeg_generated.gni.mp3 chromium-57.0.2987.110/third_party/ffmpeg/ffmpeg_generated.gni
---- chromium-57.0.2987.110/third_party/ffmpeg/ffmpeg_generated.gni.mp3	2017-03-20 13:53:24.000000000 -0400
-+++ chromium-57.0.2987.110/third_party/ffmpeg/ffmpeg_generated.gni	2017-03-20 13:59:11.214419428 -0400
-@@ -176,19 +176,12 @@ if ((is_linux && current_cpu == "arm" &&
-   ]
- }
- 
--if ((current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "mips64el" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_win && ffmpeg_branding == "Chrome")) {
-+if ((current_cpu == "x64") || (is_android && current_cpu == "arm" && arm_use_neon) || (is_android && current_cpu == "arm64") || (is_android && current_cpu == "mips64el") || (is_android && current_cpu == "mipsel") || (is_android && current_cpu == "x86") || (is_linux && current_cpu == "arm" && arm_use_neon) || (is_linux && current_cpu == "arm" && arm_use_neon) || (is_linux && current_cpu == "arm") || (is_linux && current_cpu == "arm64") || (is_linux && current_cpu == "mipsel") || (is_linux && current_cpu == "x64") || (is_linux && current_cpu == "x86") || (is_win))
-+{
-   ffmpeg_c_sources += [
--    "libavcodec/aac_ac3_parser.c",
--    "libavcodec/aac_parser.c",
--    "libavcodec/aacadtsdec.c",
--    "libavcodec/aacps_float.c",
--    "libavcodec/aacpsdsp_float.c",
--    "libavcodec/aacsbr.c",
--    "libavcodec/aactab.c",
--    "libavcodec/ac3tab.c",
--    "libavcodec/autorename_libavcodec_aacdec.c",
-     "libavcodec/autorename_libavcodec_mpegaudiodsp.c",
-     "libavcodec/autorename_libavcodec_sbrdsp.c",
-+    "libavcodec/ac3tab.c",
-     "libavcodec/cbrt_data.c",
-     "libavcodec/dct.c",
-     "libavcodec/dct32_fixed.c",
-@@ -204,7 +197,6 @@ if ((current_cpu == "x64" && ffmpeg_bran
-     "libavcodec/mpegaudiodsp_float.c",
-     "libavcodec/sinewin.c",
-     "libavcodec/sinewin_fixed.c",
--    "libavformat/aacdec.c",
-     "libavformat/apetag.c",
-     "libavformat/img2.c",
-     "libavformat/mov.c",
-@@ -213,6 +205,21 @@ if ((current_cpu == "x64" && ffmpeg_bran
-   ]
- }
- 
-+if ((current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "mips64el" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_win && ffmpeg_branding == "Chrome")) 
-+{
-+  ffmpeg_c_sources += [
-+    "libavcodec/aac_ac3_parser.c",
-+    "libavcodec/aac_parser.c",
-+    "libavcodec/aacadtsdec.c",
-+    "libavcodec/aacps_float.c",
-+    "libavcodec/aacpsdsp_float.c",
-+    "libavcodec/aacsbr.c",
-+    "libavcodec/aactab.c",
-+    "libavcodec/autorename_libavcodec_aacdec.c",
-+    "libavformat/aacdec.c",
-+  ]
-+}
-+
- if ((is_android && current_cpu == "x64") || (is_android && current_cpu == "x86") || (is_linux && current_cpu == "x64") || (is_linux && current_cpu == "x86") || (is_mac) || (is_win)) {
-   ffmpeg_c_sources += [
-     "libavcodec/x86/autorename_libavcodec_x86_vorbisdsp_init.c",
-@@ -312,21 +319,31 @@ if ((is_linux && current_cpu == "x64") |
- if ((current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_win && ffmpeg_branding == "Chrome")) {
-   ffmpeg_c_sources += [
-     "libavcodec/x86/aacpsdsp_init.c",
-+   ]
-+}
-+
-+if ((current_cpu == "x64") || (is_android && current_cpu == "x86") || (is_linux && current_cpu == "x64") || (is_linux && current_cpu == "x86") || (is_win)) {
-+  ffmpeg_c_sources += [
-     "libavcodec/x86/dct_init.c",
-     "libavcodec/x86/mpegaudiodsp.c",
-     "libavcodec/x86/sbrdsp_init.c",
-   ]
- }
- 
--if ((current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_win && ffmpeg_branding == "Chrome")) {
-+if ((current_cpu == "x64") || (is_android && current_cpu == "x86") || (is_linux && current_cpu == "x64") || (is_linux && current_cpu == "x86") || (is_win)) {
-   ffmpeg_yasm_sources += [
--    "libavcodec/x86/aacpsdsp.asm",
-     "libavcodec/x86/dct32.asm",
-     "libavcodec/x86/imdct36.asm",
-     "libavcodec/x86/sbrdsp.asm",
-   ]
- }
- 
-+if ((current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_win && ffmpeg_branding == "Chrome")) {
-+  ffmpeg_yasm_sources += [
-+    "libavcodec/x86/aacpsdsp.asm",
-+  ]
-+}
-+
- if ((is_linux && current_cpu == "arm" && arm_use_neon) || (is_linux && current_cpu == "arm")) {
-   ffmpeg_c_sources += [
-     "libavcodec/arm/h264pred_init_arm.c",
-diff -up chromium-57.0.2987.110/third_party/ffmpeg/libavcodec/sbrdsp.c.mp3 chromium-57.0.2987.110/third_party/ffmpeg/libavcodec/sbrdsp.c
---- chromium-57.0.2987.110/third_party/ffmpeg/libavcodec/sbrdsp.c.mp3	2017-03-20 14:15:22.068309439 -0400
-+++ chromium-57.0.2987.110/third_party/ffmpeg/libavcodec/sbrdsp.c	2017-03-20 14:15:47.826802603 -0400
-@@ -23,6 +23,7 @@
- #define USE_FIXED 0
- 
- #include "aac.h"
-+#include "aacsbrdata.h"
- #include "config.h"
- #include "libavutil/attributes.h"
- #include "libavutil/intfloat.h"
-diff -up chromium-57.0.2987.110/media/base/mime_util_internal.cc.mp3 chromium-57.0.2987.110/media/base/mime_util_internal.cc
---- chromium-57.0.2987.110/media/base/mime_util_internal.cc.mp3	2017-03-26 11:11:41.480377812 -0400
-+++ chromium-57.0.2987.110/media/base/mime_util_internal.cc	2017-03-26 11:13:19.289810708 -0400
-@@ -291,10 +291,10 @@ void MimeUtil::AddSupportedMediaFormats(
-   CodecSet webm_codecs(webm_audio_codecs);
-   webm_codecs.insert(webm_video_codecs.begin(), webm_video_codecs.end());
- 
--#if defined(USE_PROPRIETARY_CODECS)
-   CodecSet mp3_codecs;
-   mp3_codecs.insert(MP3);
- 
-+#if defined(USE_PROPRIETARY_CODECS)
-   CodecSet aac;
-   aac.insert(MPEG2_AAC);
-   aac.insert(MPEG4_AAC);
-@@ -335,10 +335,10 @@ void MimeUtil::AddSupportedMediaFormats(
-   AddContainerWithCodecs("application/ogg", ogg_codecs, false);
-   AddContainerWithCodecs("audio/flac", implicit_codec, false);
- 
--#if defined(USE_PROPRIETARY_CODECS)
-   AddContainerWithCodecs("audio/mpeg", mp3_codecs, true);  // Allow "mp3".
-   AddContainerWithCodecs("audio/mp3", implicit_codec, true);
-   AddContainerWithCodecs("audio/x-mp3", implicit_codec, true);
-+#if defined(USE_PROPRIETARY_CODECS)
-   AddContainerWithCodecs("audio/aac", implicit_codec, true);  // AAC / ADTS.
-   AddContainerWithCodecs("audio/mp4", mp4_audio_codecs, true);
-   DCHECK(!mp4_video_codecs.empty());
diff --git a/chromium-58.0.3029.96-revert-b794998819088f76b4cf44c8db6940240c563cf4.patch b/chromium-58.0.3029.96-revert-b794998819088f76b4cf44c8db6940240c563cf4.patch
new file mode 100644
index 0000000..ddb94a0
--- /dev/null
+++ b/chromium-58.0.3029.96-revert-b794998819088f76b4cf44c8db6940240c563cf4.patch
@@ -0,0 +1,19 @@
+diff -up chromium-58.0.3029.96/ui/events/devices/x11/device_data_manager_x11.cc.revert chromium-58.0.3029.96/ui/events/devices/x11/device_data_manager_x11.cc
+--- chromium-58.0.3029.96/ui/events/devices/x11/device_data_manager_x11.cc.revert	2017-05-08 14:58:11.767482431 -0400
++++ chromium-58.0.3029.96/ui/events/devices/x11/device_data_manager_x11.cc	2017-05-08 14:58:37.722960109 -0400
+@@ -790,15 +790,6 @@ void DeviceDataManagerX11::UpdateScrollC
+   DCHECK(deviceid >= 0 && deviceid < kMaxDeviceNum);
+   ScrollInfo& info = scroll_data_[deviceid];
+ 
+-  bool legacy_scroll_available =
+-      (scroll_class_info->flags & XIScrollFlagNoEmulation) == 0;
+-  // If the device's highest resolution is lower than the resolution of xinput1
+-  // then use xinput1's events instead (ie. don't configure smooth scrolling).
+-  if (legacy_scroll_available &&
+-      std::abs(scroll_class_info->increment) <= 1.0) {
+-    return;
+-  }
+-
+   switch (scroll_class_info->scroll_type) {
+     case XIScrollTypeVertical:
+       info.vertical.number = scroll_class_info->number;
diff --git a/chromium-59-clang-workaround.patch b/chromium-59-clang-workaround.patch
new file mode 100644
index 0000000..da6bee3
--- /dev/null
+++ b/chromium-59-clang-workaround.patch
@@ -0,0 +1,101 @@
+--- chromium-65.0.3298.3/third_party/angle/src/compiler/preprocessor/ExpressionParser.cpp.0120~	2017-12-19 21:07:32.000000000 +0100
++++ chromium-65.0.3298.3/third_party/angle/src/compiler/preprocessor/ExpressionParser.cpp	2017-12-19 23:44:51.796064532 +0100
+@@ -291,7 +291,7 @@ typedef short int yytype_int16;
+ # define YYUSE(E) /* empty */
+ #endif
+ 
+-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
++#if !defined(__clang__) && defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+ /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+ # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+     _Pragma ("GCC diagnostic push") \
+--- chromium-65.0.3298.3/third_party/angle/src/compiler/translator/glslang_tab.cpp.0120~	2017-12-19 21:07:32.000000000 +0100
++++ chromium-65.0.3298.3/third_party/angle/src/compiler/translator/glslang_tab.cpp	2017-12-19 23:44:51.797064539 +0100
+@@ -520,7 +520,7 @@ typedef short int yytype_int16;
+ # define YYUSE(E) /* empty */
+ #endif
+ 
+-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
++#if !defined(__clang__) && defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+ /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+ # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+     _Pragma ("GCC diagnostic push") \
+--- chromium-65.0.3298.3/third_party/libdrm/src/xf86drm.c.0120~	2017-12-19 21:07:33.000000000 +0100
++++ chromium-65.0.3298.3/third_party/libdrm/src/xf86drm.c	2017-12-19 23:44:51.797064539 +0100
+@@ -2735,8 +2735,8 @@ int drmGetNodeTypeFromFd(int fd)
+     if (fstat(fd, &sbuf))
+         return -1;
+ 
+-    maj = major(sbuf.st_rdev);
+-    min = minor(sbuf.st_rdev);
++    maj = gnu_dev_major(sbuf.st_rdev);
++    min = gnu_dev_minor(sbuf.st_rdev);
+ 
+     if (maj != DRM_MAJOR || !S_ISCHR(sbuf.st_mode)) {
+         errno = EINVAL;
+@@ -2801,8 +2801,8 @@ static char *drmGetMinorNameForFD(int fd
+     if (fstat(fd, &sbuf))
+         return NULL;
+ 
+-    maj = major(sbuf.st_rdev);
+-    min = minor(sbuf.st_rdev);
++    maj = gnu_dev_major(sbuf.st_rdev);
++    min = gnu_dev_minor(sbuf.st_rdev);
+ 
+     if (maj != DRM_MAJOR || !S_ISCHR(sbuf.st_mode))
+         return NULL;
+@@ -3787,8 +3787,8 @@ int drmGetDevice2(int fd, uint32_t flags
+         return -errno;
+ 
+     find_rdev = sbuf.st_rdev;
+-    maj = major(sbuf.st_rdev);
+-    min = minor(sbuf.st_rdev);
++    maj = gnu_dev_major(sbuf.st_rdev);
++    min = gnu_dev_minor(sbuf.st_rdev);
+ 
+     if (maj != DRM_MAJOR || !S_ISCHR(sbuf.st_mode))
+         return -EINVAL;
+@@ -3815,8 +3815,8 @@ int drmGetDevice2(int fd, uint32_t flags
+         if (stat(node, &sbuf))
+             continue;
+ 
+-        maj = major(sbuf.st_rdev);
+-        min = minor(sbuf.st_rdev);
++        maj = gnu_dev_major(sbuf.st_rdev);
++        min = gnu_dev_minor(sbuf.st_rdev);
+ 
+         if (maj != DRM_MAJOR || !S_ISCHR(sbuf.st_mode))
+             continue;
+@@ -3965,8 +3965,8 @@ int drmGetDevices2(uint32_t flags, drmDe
+         if (stat(node, &sbuf))
+             continue;
+ 
+-        maj = major(sbuf.st_rdev);
+-        min = minor(sbuf.st_rdev);
++        maj = gnu_dev_major(sbuf.st_rdev);
++        min = gnu_dev_minor(sbuf.st_rdev);
+ 
+         if (maj != DRM_MAJOR || !S_ISCHR(sbuf.st_mode))
+             continue;
+--- chromium-65.0.3298.3/third_party/swiftshader/src/OpenGL/compiler/glslang_tab.cpp.0120~	2017-12-19 21:07:35.000000000 +0100
++++ chromium-65.0.3298.3/third_party/swiftshader/src/OpenGL/compiler/glslang_tab.cpp	2017-12-19 23:44:51.798064546 +0100
+@@ -483,7 +483,7 @@ typedef short int yytype_int16;
+ # define YYUSE(E) /* empty */
+ #endif
+ 
+-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
++#if !defined(__clang__) && defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+ /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+ # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+     _Pragma ("GCC diagnostic push") \
+--- chromium-65.0.3298.3/third_party/swiftshader/src/OpenGL/compiler/preprocessor/ExpressionParser.cpp.0120~	2017-12-19 21:07:35.000000000 +0100
++++ chromium-65.0.3298.3/third_party/swiftshader/src/OpenGL/compiler/preprocessor/ExpressionParser.cpp	2017-12-19 23:44:51.798064546 +0100
+@@ -277,7 +277,7 @@ typedef short int yytype_int16;
+ # define YYUSE(E) /* empty */
+ #endif
+ 
+-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
++#if !defined(__clang__) && defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+ /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+ # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+     _Pragma ("GCC diagnostic push") \
diff --git a/chromium-59.0.3071.86-i686-ld-memory-tricks.patch b/chromium-59.0.3071.86-i686-ld-memory-tricks.patch
new file mode 100644
index 0000000..9dde4c5
--- /dev/null
+++ b/chromium-59.0.3071.86-i686-ld-memory-tricks.patch
@@ -0,0 +1,12 @@
+diff -up chromium-59.0.3071.86/build/toolchain/linux/BUILD.gn.ldmemory chromium-59.0.3071.86/build/toolchain/linux/BUILD.gn
+--- chromium-59.0.3071.86/build/toolchain/linux/BUILD.gn.ldmemory	2017-06-07 15:37:09.436616113 -0400
++++ chromium-59.0.3071.86/build/toolchain/linux/BUILD.gn	2017-06-07 15:38:04.508519102 -0400
+@@ -93,7 +93,7 @@ gcc_toolchain("x86") {
+   nm = "nm"
+   ar = "ar"
+   ld = cxx
+-  extra_cppflags = "-fno-delete-null-pointer-checks"
++  extra_cppflags = "-fno-delete-null-pointer-checks -g1"
+ 
+   # Output linker map files for binary size analysis.
+   enable_linker_map = true
diff --git a/chromium-59.0.3071.86-nullfix.patch b/chromium-59.0.3071.86-nullfix.patch
new file mode 100644
index 0000000..33bf255
--- /dev/null
+++ b/chromium-59.0.3071.86-nullfix.patch
@@ -0,0 +1,34 @@
+--- chromium-63.0.3236.7/build/toolchain/linux/BUILD.gn.0024~	2017-10-13 03:05:24.000000000 +0200
++++ chromium-63.0.3236.7/build/toolchain/linux/BUILD.gn	2017-10-17 13:18:19.877771152 +0200
+@@ -31,6 +31,7 @@ gcc_toolchain("arm64") {
+   ld = cxx
+   readelf = "${toolprefix}readelf"
+   nm = "${toolprefix}nm"
++  extra_cppflags = "-fno-delete-null-pointer-checks"
+ 
+   toolchain_args = {
+     current_cpu = "arm64"
+@@ -49,6 +50,7 @@ gcc_toolchain("arm") {
+   ld = cxx
+   readelf = "${toolprefix}readelf"
+   nm = "${toolprefix}nm"
++  extra_cppflags = "-fno-delete-null-pointer-checks"
+ 
+   toolchain_args = {
+     current_cpu = "arm"
+@@ -99,6 +101,7 @@ gcc_toolchain("x86") {
+   nm = "nm"
+   ar = "ar"
+   ld = cxx
++  extra_cppflags = "-fno-delete-null-pointer-checks"
+ 
+   # Output linker map files for binary size analysis.
+   enable_linker_map = true
+@@ -152,6 +155,7 @@ gcc_toolchain("x64") {
+   nm = "nm"
+   ar = "ar"
+   ld = cxx
++  extra_cppflags = "-fno-delete-null-pointer-checks"
+ 
+   # Output linker map files for binary size analysis.
+   enable_linker_map = true
diff --git a/chromium-60.0.3112.113-libavutil-timer-include-path-fix.patch b/chromium-60.0.3112.113-libavutil-timer-include-path-fix.patch
new file mode 100644
index 0000000..7248825
--- /dev/null
+++ b/chromium-60.0.3112.113-libavutil-timer-include-path-fix.patch
@@ -0,0 +1,21 @@
+diff -up chromium-60.0.3112.113/third_party/ffmpeg/libavutil/timer.h.pathfix chromium-60.0.3112.113/third_party/ffmpeg/libavutil/timer.h
+--- chromium-60.0.3112.113/third_party/ffmpeg/libavutil/timer.h.pathfix	2017-08-25 15:29:12.143242471 -0400
++++ chromium-60.0.3112.113/third_party/ffmpeg/libavutil/timer.h	2017-08-25 15:29:36.941835865 -0400
+@@ -39,13 +39,13 @@
+ #include "log.h"
+ 
+ #if   ARCH_AARCH64
+-#   include "aarch64/timer.h"
++#   include "libavutil/aarch64/timer.h"
+ #elif ARCH_ARM
+-#   include "arm/timer.h"
++#   include "libavutil/arm/timer.h"
+ #elif ARCH_PPC
+-#   include "ppc/timer.h"
++#   include "libavutil/ppc/timer.h"
+ #elif ARCH_X86
+-#   include "x86/timer.h"
++#   include "libavutil/x86/timer.h"
+ #endif
+ 
+ #if !defined(AV_READ_TIME)
diff --git a/chromium-60.0.3112.78-jpeg-nomangle.patch b/chromium-60.0.3112.78-jpeg-nomangle.patch
new file mode 100644
index 0000000..0b758a4
--- /dev/null
+++ b/chromium-60.0.3112.78-jpeg-nomangle.patch
@@ -0,0 +1,14 @@
+diff -up chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h.nomangle chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h
+--- chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h.nomangle	2017-08-01 15:29:00.870759406 -0400
++++ chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h	2017-08-01 15:29:09.326593414 -0400
+@@ -18,10 +18,6 @@
+ #ifndef JPEGLIB_H
+ #define JPEGLIB_H
+ 
+-/* Begin chromium edits */
+-#include "jpeglibmangler.h"
+-/* End chromium edits */
+-
+ /*
+  * First we include the configuration files that record how this
+  * installation of the JPEG library is set up.  jconfig.h can be
diff --git a/chromium-60.0.3112.78-no-libpng-prefix.patch b/chromium-60.0.3112.78-no-libpng-prefix.patch
new file mode 100644
index 0000000..0dbdcf9
--- /dev/null
+++ b/chromium-60.0.3112.78-no-libpng-prefix.patch
@@ -0,0 +1,17 @@
+diff -up chromium-60.0.3112.78/third_party/libpng/pnglibconf.h.noprefix chromium-60.0.3112.78/third_party/libpng/pnglibconf.h
+--- chromium-60.0.3112.78/third_party/libpng/pnglibconf.h.noprefix	2017-08-01 14:42:54.321986758 -0400
++++ chromium-60.0.3112.78/third_party/libpng/pnglibconf.h	2017-08-01 14:43:01.493845832 -0400
+@@ -225,13 +225,4 @@
+ #define PNG_USER_CHUNK_MALLOC_MAX 4000000L
+ /* end of chromium settings */
+ 
+-/* chromium prefixing */
+-/*
+- * This is necessary to build multiple copies of libpng.  We need this while pdfium builds
+- * its own copy of libpng.
+- */
+-#define PNG_PREFIX
+-#include "pngprefix.h"
+-/* end of chromium prefixing */
+-
+ #endif /* PNGLCONF_H */
diff --git a/chromium-60.0.3112.78-no-zlib-mangle.patch b/chromium-60.0.3112.78-no-zlib-mangle.patch
new file mode 100644
index 0000000..4b90360
--- /dev/null
+++ b/chromium-60.0.3112.78-no-zlib-mangle.patch
@@ -0,0 +1,13 @@
+diff -up chromium-60.0.3112.78/third_party/zlib/zconf.h.nozmangle chromium-60.0.3112.78/third_party/zlib/zconf.h
+--- chromium-60.0.3112.78/third_party/zlib/zconf.h.nozmangle	2017-08-04 10:45:17.509152089 -0400
++++ chromium-60.0.3112.78/third_party/zlib/zconf.h	2017-08-04 10:45:30.451902380 -0400
+@@ -8,9 +8,6 @@
+ #ifndef ZCONF_H
+ #define ZCONF_H
+ 
+-/* This include does prefixing as below, but with an updated set of names */
+-#include "names.h"
+-
+ /*
+  * If you *really* need a unique prefix for all types and library functions,
+  * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
diff --git a/chromium-61.0.3163.79-gcc-no-opt-safe-math.patch b/chromium-61.0.3163.79-gcc-no-opt-safe-math.patch
new file mode 100644
index 0000000..183b5ab
--- /dev/null
+++ b/chromium-61.0.3163.79-gcc-no-opt-safe-math.patch
@@ -0,0 +1,13 @@
+diff -up chromium-61.0.3163.79/base/numerics/safe_math_shared_impl.h.fixgcc3 chromium-61.0.3163.79/base/numerics/safe_math_shared_impl.h
+--- chromium-61.0.3163.79/base/numerics/safe_math_shared_impl.h.fixgcc3	2017-09-06 16:30:15.898454585 -0400
++++ chromium-61.0.3163.79/base/numerics/safe_math_shared_impl.h	2017-09-06 16:30:27.570229539 -0400
+@@ -21,8 +21,7 @@
+ #if !defined(__native_client__) &&                         \
+     ((defined(__clang__) &&                                \
+       ((__clang_major__ > 3) ||                            \
+-       (__clang_major__ == 3 && __clang_minor__ >= 4))) || \
+-     (defined(__GNUC__) && __GNUC__ >= 5))
++       (__clang_major__ == 3 && __clang_minor__ >= 4))))
+ #include "base/numerics/safe_math_clang_gcc_impl.h"
+ #define BASE_HAS_OPTIMIZED_SAFE_MATH (1)
+ #else
diff --git a/chromium-62.0.3202.62-kmaxskip-constexpr.patch b/chromium-62.0.3202.62-kmaxskip-constexpr.patch
new file mode 100644
index 0000000..d4f8250
--- /dev/null
+++ b/chromium-62.0.3202.62-kmaxskip-constexpr.patch
@@ -0,0 +1,12 @@
+diff -up chromium-62.0.3202.62/cc/paint/paint_op_buffer.cc.kmaxskip chromium-62.0.3202.62/cc/paint/paint_op_buffer.cc
+--- chromium-62.0.3202.62/cc/paint/paint_op_buffer.cc.kmaxskip	2017-10-18 10:00:28.503714392 -0400
++++ chromium-62.0.3202.62/cc/paint/paint_op_buffer.cc	2017-10-18 10:00:43.153430212 -0400
+@@ -336,7 +336,7 @@ TYPES(M);
+ #undef TYPES
+ 
+ const SkRect PaintOp::kUnsetRect = {SK_ScalarInfinity, 0, 0, 0};
+-const size_t PaintOp::kMaxSkip;
++constexpr size_t PaintOp::kMaxSkip;
+ 
+ std::string PaintOpTypeToString(PaintOpType type) {
+   switch (type) {
diff --git a/chromium-63.0.3289.84-aarch64-glibc-2.26.90.patch b/chromium-63.0.3289.84-aarch64-glibc-2.26.90.patch
new file mode 100644
index 0000000..469d680
--- /dev/null
+++ b/chromium-63.0.3289.84-aarch64-glibc-2.26.90.patch
@@ -0,0 +1,12 @@
+diff -up chromium-63.0.3239.84/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc.aarch64glibc chromium-63.0.3239.84/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc
+--- chromium-63.0.3239.84/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc.aarch64glibc	2017-12-12 09:56:24.469343868 -0500
++++ chromium-63.0.3239.84/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc	2017-12-12 09:56:38.468071095 -0500
+@@ -461,7 +461,7 @@ bool ExceptionHandler::HandleSignal(int
+ #if defined(__aarch64__)
+   ucontext_t* uc_ptr = (ucontext_t*)uc;
+   struct fpsimd_context* fp_ptr =
+-      (struct fpsimd_context*)&uc_ptr->uc_mcontext.__reserved;
++      (struct fpsimd_context*)&uc_ptr->uc_mcontext.__glibc_reserved1;
+   if (fp_ptr->head.magic == FPSIMD_MAGIC) {
+     memcpy(&g_crash_context_.float_state, fp_ptr,
+            sizeof(g_crash_context_.float_state));
diff --git a/chromium-64-system-curl.patch b/chromium-64-system-curl.patch
new file mode 100644
index 0000000..4d35bfb
--- /dev/null
+++ b/chromium-64-system-curl.patch
@@ -0,0 +1,11 @@
+--- chromium-64.0.3253.3/third_party/breakpad/breakpad/src/common/linux/libcurl_wrapper.h.omv~	2017-11-06 03:12:12.165490461 +0100
++++ chromium-64.0.3253.3/third_party/breakpad/breakpad/src/common/linux/libcurl_wrapper.h	2017-11-06 03:12:20.899515168 +0100
+@@ -37,7 +37,7 @@
+ #include <map>
+ 
+ #include "common/using_std_string.h"
+-#include "third_party/curl/curl.h"
++#include <curl/curl.h>
+ 
+ namespace google_breakpad {
+ class LibcurlWrapper {
diff --git a/chromium-64.0.3282.119-ffmpeg-stdatomic.patch b/chromium-64.0.3282.119-ffmpeg-stdatomic.patch
new file mode 100644
index 0000000..64c5f26
--- /dev/null
+++ b/chromium-64.0.3282.119-ffmpeg-stdatomic.patch
@@ -0,0 +1,17 @@
+diff -up chromium-64.0.3282.119/third_party/ffmpeg/libavutil/cpu.c.ffmpeg-stdatomic chromium-64.0.3282.119/third_party/ffmpeg/libavutil/cpu.c
+--- chromium-64.0.3282.119/third_party/ffmpeg/libavutil/cpu.c.ffmpeg-stdatomic	2018-01-25 11:55:57.880936815 -0500
++++ chromium-64.0.3282.119/third_party/ffmpeg/libavutil/cpu.c	2018-01-25 11:57:18.456787888 -0500
+@@ -18,7 +18,13 @@
+ 
+ #include <stddef.h>
+ #include <stdint.h>
++// GCC 4.8 didn't have stdatomic, but was advertising it.
++// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58016
++#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ == 4 || (__GNUC__ == 4 && (__GNUC_MINOR__ == 8)))
++#include <compat/atomics/gcc/stdatomic.h>
++#else
+ #include <stdatomic.h>
++#endif
+ 
+ #include "attributes.h"
+ #include "cpu.h"
diff --git a/chromium-65.0.3325.146-gcc-round-fix.patch b/chromium-65.0.3325.146-gcc-round-fix.patch
new file mode 100644
index 0000000..a29779d
--- /dev/null
+++ b/chromium-65.0.3325.146-gcc-round-fix.patch
@@ -0,0 +1,12 @@
+diff -up chromium-65.0.3325.146/third_party/webrtc/p2p/base/port.cc.gcc-round-fix chromium-65.0.3325.146/third_party/webrtc/p2p/base/port.cc
+--- chromium-65.0.3325.146/third_party/webrtc/p2p/base/port.cc.gcc-round-fix	2018-03-07 10:57:11.284376048 -0500
++++ chromium-65.0.3325.146/third_party/webrtc/p2p/base/port.cc	2018-03-07 10:58:16.590742636 -0500
+@@ -10,7 +10,7 @@
+ 
+ #include "p2p/base/port.h"
+ 
+-#include <math.h>
++#include <cmath>
+ 
+ #include <algorithm>
+ #include <utility>
diff --git a/chromium-65.0.3325.146-memcpy-fix.patch b/chromium-65.0.3325.146-memcpy-fix.patch
new file mode 100644
index 0000000..b2b2cd4
--- /dev/null
+++ b/chromium-65.0.3325.146-memcpy-fix.patch
@@ -0,0 +1,12 @@
+diff -up chromium-65.0.3325.146/cc/paint/raw_memory_transfer_cache_entry.cc.memcpyfix chromium-65.0.3325.146/cc/paint/raw_memory_transfer_cache_entry.cc
+--- chromium-65.0.3325.146/cc/paint/raw_memory_transfer_cache_entry.cc.memcpyfix	2018-03-07 11:04:14.690379817 -0500
++++ chromium-65.0.3325.146/cc/paint/raw_memory_transfer_cache_entry.cc	2018-03-07 11:06:04.339878069 -0500
+@@ -3,7 +3,7 @@
+ // found in the LICENSE file.
+ 
+ #include "cc/paint/raw_memory_transfer_cache_entry.h"
+-
++#include <memory.h>
+ #include <string.h>
+ 
+ namespace cc {
diff --git a/chromium-65.0.3325.162-epel7-stdc++.patch b/chromium-65.0.3325.162-epel7-stdc++.patch
new file mode 100644
index 0000000..ee2066b
--- /dev/null
+++ b/chromium-65.0.3325.162-epel7-stdc++.patch
@@ -0,0 +1,12 @@
+diff -up chromium-65.0.3325.162/build/config/posix/BUILD.gn.epel7 chromium-65.0.3325.162/build/config/posix/BUILD.gn
+--- chromium-65.0.3325.162/build/config/posix/BUILD.gn.epel7	2018-03-20 16:14:42.425926323 -0400
++++ chromium-65.0.3325.162/build/config/posix/BUILD.gn	2018-03-20 16:15:10.150152245 -0400
+@@ -74,6 +74,8 @@ config("runtime_library") {
+         "rt",
+       ]
+     }
++  } else {
++    libs += [ "stdc++" ]
+   }
+ 
+   if (!is_mac && !is_ios && sysroot != "") {
diff --git a/chromium-66.0.3359.117-GCC-fully-declare-ConfigurationPolicyProvider.patch b/chromium-66.0.3359.117-GCC-fully-declare-ConfigurationPolicyProvider.patch
new file mode 100644
index 0000000..d5b19cf
--- /dev/null
+++ b/chromium-66.0.3359.117-GCC-fully-declare-ConfigurationPolicyProvider.patch
@@ -0,0 +1,18 @@
+diff -up chromium-66.0.3359.117/components/policy/core/browser/browser_policy_connector_base.h.gcc-cpolicyprovider chromium-66.0.3359.117/components/policy/core/browser/browser_policy_connector_base.h
+--- chromium-66.0.3359.117/components/policy/core/browser/browser_policy_connector_base.h.gcc-cpolicyprovider	2018-04-25 16:33:40.872222779 -0400
++++ chromium-66.0.3359.117/components/policy/core/browser/browser_policy_connector_base.h	2018-04-25 16:37:23.175883637 -0400
+@@ -11,13 +11,13 @@
+ #include "base/callback_forward.h"
+ #include "base/macros.h"
+ #include "components/policy/core/browser/configuration_policy_handler_list.h"
++#include "components/policy/core/common/configuration_policy_provider.h"
+ #include "components/policy/core/common/schema.h"
+ #include "components/policy/core/common/schema_registry.h"
+ #include "components/policy/policy_export.h"
+ 
+ namespace policy {
+ 
+-class ConfigurationPolicyProvider;
+ class PolicyService;
+ class PolicyServiceImpl;
+ 
diff --git a/chromium-66.0.3359.117-gcc5-r3.patch b/chromium-66.0.3359.117-gcc5-r3.patch
new file mode 100644
index 0000000..56abcf1
--- /dev/null
+++ b/chromium-66.0.3359.117-gcc5-r3.patch
@@ -0,0 +1,38 @@
+diff -up chromium-66.0.3359.117/gpu/ipc/common/mailbox_struct_traits.h.gcc5-r3 chromium-66.0.3359.117/gpu/ipc/common/mailbox_struct_traits.h
+--- chromium-66.0.3359.117/gpu/ipc/common/mailbox_struct_traits.h.gcc5-r3	2018-04-17 21:04:33.000000000 -0400
++++ chromium-66.0.3359.117/gpu/ipc/common/mailbox_struct_traits.h	2018-04-18 12:12:40.065663210 -0400
+@@ -15,7 +15,7 @@ namespace mojo {
+ template <>
+ struct StructTraits<gpu::mojom::MailboxDataView, gpu::Mailbox> {
+   static base::span<const int8_t> name(const gpu::Mailbox& mailbox) {
+-    return mailbox.name;
++    return base::make_span(mailbox.name);
+   }
+   static bool Read(gpu::mojom::MailboxDataView data, gpu::Mailbox* out);
+ };
+diff -up chromium-66.0.3359.117/services/viz/public/cpp/compositing/filter_operation_struct_traits.h.gcc5-r3 chromium-66.0.3359.117/services/viz/public/cpp/compositing/filter_operation_struct_traits.h
+diff -up chromium-66.0.3359.117/services/viz/public/cpp/compositing/quads_struct_traits.h.gcc5-r3 chromium-66.0.3359.117/services/viz/public/cpp/compositing/quads_struct_traits.h
+--- chromium-66.0.3359.117/services/viz/public/cpp/compositing/quads_struct_traits.h.gcc5-r3	2018-04-17 21:04:43.000000000 -0400
++++ chromium-66.0.3359.117/services/viz/public/cpp/compositing/quads_struct_traits.h	2018-04-18 12:12:40.067663160 -0400
+@@ -308,7 +308,7 @@ struct StructTraits<viz::mojom::TextureQ
+   static base::span<const float> vertex_opacity(const viz::DrawQuad& input) {
+     const viz::TextureDrawQuad* quad =
+         viz::TextureDrawQuad::MaterialCast(&input);
+-    return quad->vertex_opacity;
++    return base::make_span(quad->vertex_opacity);
+   }
+ 
+   static bool y_flipped(const viz::DrawQuad& input) {
+diff -up chromium-66.0.3359.117/third_party/WebKit/Source/platform/wtf/typed_arrays/ArrayBufferContents.h.gcc5-r3 chromium-66.0.3359.117/third_party/WebKit/Source/platform/wtf/typed_arrays/ArrayBufferContents.h
+diff -up chromium-66.0.3359.117/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc.gcc5-r3 chromium-66.0.3359.117/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc
+--- chromium-66.0.3359.117/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc.gcc5-r3	2018-04-17 21:06:20.000000000 -0400
++++ chromium-66.0.3359.117/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc	2018-04-18 12:12:40.068663134 -0400
+@@ -10,7 +10,7 @@
+ 
+ #include "modules/audio_processing/aec3/aec_state.h"
+ 
+-#include <math.h>
++#include <cmath>
+ 
+ #include <numeric>
+ #include <vector>
diff --git a/chromium-66.0.3359.117-missing-files.patch b/chromium-66.0.3359.117-missing-files.patch
new file mode 100644
index 0000000..746d56e
--- /dev/null
+++ b/chromium-66.0.3359.117-missing-files.patch
@@ -0,0 +1,272 @@
+diff -up chromium-66.0.3359.117/third_party/blink/tools/blinkpy/common/__init__.py.missing chromium-66.0.3359.117/third_party/blink/tools/blinkpy/common/__init__.py
+--- chromium-66.0.3359.117/third_party/blink/tools/blinkpy/common/__init__.py.missing	2018-04-19 09:51:46.165723235 -0400
++++ chromium-66.0.3359.117/third_party/blink/tools/blinkpy/common/__init__.py	2018-04-19 09:51:46.171723115 -0400
+@@ -0,0 +1,3 @@
++# Copyright 2017 The Chromium Authors. All rights reserved.
++# Use of this source code is governed by a BSD-style license that can be
++# found in the LICENSE file.
+diff -up chromium-66.0.3359.117/third_party/blink/tools/blinkpy/common/name_style_converter.py.missing chromium-66.0.3359.117/third_party/blink/tools/blinkpy/common/name_style_converter.py
+--- chromium-66.0.3359.117/third_party/blink/tools/blinkpy/common/name_style_converter.py.missing	2018-04-19 09:51:46.171723115 -0400
++++ chromium-66.0.3359.117/third_party/blink/tools/blinkpy/common/name_style_converter.py	2018-04-19 09:51:46.172723095 -0400
+@@ -0,0 +1,110 @@
++# Copyright 2017 The Chromium Authors. All rights reserved.
++# Use of this source code is governed by a BSD-style license that can be
++# found in the LICENSE file.
++# pylint: disable=import-error,print-statement,relative-import
++import re
++SPECIAL_TOKENS = [
++    # This list should be sorted by length.
++    'CString',
++    'Float32',
++    'Float64',
++    'Base64',
++    'IFrame',
++    'Latin1',
++    'PlugIn',
++    'SQLite',
++    'Uint16',
++    'Uint32',
++    'WebGL2',
++    'ASCII',
++    'CType',
++    'DList',
++    'Int16',
++    'Int32',
++    'MPath',
++    'OList',
++    'TSpan',
++    'UList',
++    'UTF16',
++    'Uint8',
++    'WebGL',
++    'XPath',
++    'ETC1',
++    'HTML',
++    'Int8',
++    'S3TC',
++    'SPv2',
++    'UTF8',
++    'API',
++    'CSS',
++    'DOM',
++    'EXT',
++    'RTC',
++    'SVG',
++    '2D',
++    'AX',
++    'V0',
++    'V8',
++]
++MATCHING_EXPRESSION = '((?:[A-Z][a-z]+)|[0-9]D?$)'
++class SmartTokenizer(object):
++    """Detects special cases that are not easily discernible without additional
++       knowledge, such as recognizing that in SVGSVGElement, the first two SVGs
++       are separate tokens, but WebGL is one token."""
++    def __init__(self, name):
++        self.remaining = name
++    def tokenize(self):
++        name = self.remaining
++        tokens = []
++        while len(name) > 0:
++            matched_token = None
++            for token in SPECIAL_TOKENS:
++                if name.startswith(token):
++                    matched_token = token
++                    break
++            if not matched_token:
++                match = re.search(MATCHING_EXPRESSION, name)
++                if not match:
++                    matched_token = name
++                elif match.start(0) != 0:
++                    matched_token = name[:match.start(0)]
++                else:
++                    matched_token = match.group(0)
++            tokens.append(name[:len(matched_token)])
++            name = name[len(matched_token):]
++        return tokens
++class NameStyleConverter(object):
++    """Converts names from camelCase to various other styles.
++    """
++    def __init__(self, name):
++        self.tokens = self.tokenize(name)
++    def tokenize(self, name):
++        tokenizer = SmartTokenizer(name)
++        return tokenizer.tokenize()
++    def to_snake_case(self):
++        """Snake case is the file and variable name style per Google C++ Style
++           Guide:
++           https://google.github.io/styleguide/cppguide.html#Variable_Names
++           Also known as the hacker case.
++           https://en.wikipedia.org/wiki/Snake_case
++        """
++        return '_'.join([token.lower() for token in self.tokens])
++    def to_upper_camel_case(self):
++        """Upper-camel case is the class and function name style per
++           Google C++ Style Guide:
++           https://google.github.io/styleguide/cppguide.html#Function_Names
++           Also known as the PascalCase.
++           https://en.wikipedia.org/wiki/Camel_case.
++        """
++        return ''.join([token[0].upper() + token[1:] for token in self.tokens])
++    def to_macro_case(self):
++        """Macro case is the macro name style per Google C++ Style Guide:
++           https://google.github.io/styleguide/cppguide.html#Macro_Names
++        """
++        return '_'.join([token.upper() for token in self.tokens])
++    def to_all_cases(self):
++        return {
++            'snake_case': self.to_snake_case(),
++            'upper_camel_case': self.to_upper_camel_case(),
++            'macro_case': self.to_macro_case(),
++        }
+diff -up chromium-66.0.3359.117/third_party/blink/tools/blinkpy/common/name_style_converter_test.py.missing chromium-66.0.3359.117/third_party/blink/tools/blinkpy/common/name_style_converter_test.py
+--- chromium-66.0.3359.117/third_party/blink/tools/blinkpy/common/name_style_converter_test.py.missing	2018-04-19 09:51:46.172723095 -0400
++++ chromium-66.0.3359.117/third_party/blink/tools/blinkpy/common/name_style_converter_test.py	2018-04-19 09:51:46.173723075 -0400
+@@ -0,0 +1,140 @@
++# Copyright 2017 The Chromium Authors. All rights reserved.
++# Use of this source code is governed by a BSD-style license that can be
++# found in the LICENSE file.
++# pylint: disable=import-error,print-statement,relative-import,protected-access
++"""Unit tests for name_style_converter.py."""
++import unittest
++from name_style_converter import NameStyleConverter
++from name_style_converter import SmartTokenizer
++class SmartTokenizerTest(unittest.TestCase):
++    def test_simple_cases(self):
++        tokenizer = SmartTokenizer('foo')
++        self.assertEqual(tokenizer.tokenize(), ['foo'])
++        tokenizer = SmartTokenizer('fooBar')
++        self.assertEqual(tokenizer.tokenize(), ['foo', 'Bar'])
++        tokenizer = SmartTokenizer('fooBarBaz')
++        self.assertEqual(tokenizer.tokenize(), ['foo', 'Bar', 'Baz'])
++        tokenizer = SmartTokenizer('Baz')
++        self.assertEqual(tokenizer.tokenize(), ['Baz'])
++        tokenizer = SmartTokenizer('')
++        self.assertEqual(tokenizer.tokenize(), [])
++        tokenizer = SmartTokenizer('FOO')
++        self.assertEqual(tokenizer.tokenize(), ['FOO'])
++        tokenizer = SmartTokenizer('foo2')
++        self.assertEqual(tokenizer.tokenize(), ['foo', '2'])
++    def test_tricky_cases(self):
++        tokenizer = SmartTokenizer('XMLHttpRequest')
++        self.assertEqual(tokenizer.tokenize(), ['XML', 'Http', 'Request'])
++        tokenizer = SmartTokenizer('HTMLElement')
++        self.assertEqual(tokenizer.tokenize(), ['HTML', 'Element'])
++        tokenizer = SmartTokenizer('WebGLRenderingContext')
++        self.assertEqual(tokenizer.tokenize(),
++                         ['WebGL', 'Rendering', 'Context'])
++        tokenizer = SmartTokenizer('CanvasRenderingContext2D')
++        self.assertEqual(tokenizer.tokenize(),
++                         ['Canvas', 'Rendering', 'Context', '2D'])
++        tokenizer = SmartTokenizer('CanvasRenderingContext2DAPITest')
++        self.assertEqual(tokenizer.tokenize(),
++                         ['Canvas', 'Rendering', 'Context', '2D', 'API', 'Test'])
++        tokenizer = SmartTokenizer('SVGSVGElement')
++        self.assertEqual(tokenizer.tokenize(), ['SVG', 'SVG', 'Element'])
++        tokenizer = SmartTokenizer('CanvasRenderingContext2D')
++        self.assertEqual(tokenizer.tokenize(), ['Canvas', 'Rendering', 'Context', '2D'])
++        tokenizer = SmartTokenizer('CSSURLImageValue')
++        self.assertEqual(tokenizer.tokenize(), ['CSS', 'URL', 'Image', 'Value'])
++        tokenizer = SmartTokenizer('CSSPropertyAPID')
++        self.assertEqual(tokenizer.tokenize(), ['CSS', 'Property', 'API', 'D'])
++        tokenizer = SmartTokenizer('AXARIAGridCell')
++        self.assertEqual(tokenizer.tokenize(), ['AX', 'ARIA', 'Grid', 'Cell'])
++        tokenizer = SmartTokenizer('CDATASection')
++        self.assertEqual(tokenizer.tokenize(), ['CDATA', 'Section'])
++        tokenizer = SmartTokenizer('ASCIICType')
++        self.assertEqual(tokenizer.tokenize(), ['ASCII', 'CType'])
++        tokenizer = SmartTokenizer('CString')
++        self.assertEqual(tokenizer.tokenize(), ['CString'])
++        tokenizer = SmartTokenizer('HTMLDListElement')
++        self.assertEqual(tokenizer.tokenize(), ['HTML', 'DList', 'Element'])
++        tokenizer = SmartTokenizer('HTMLOListElement')
++        self.assertEqual(tokenizer.tokenize(), ['HTML', 'OList', 'Element'])
++        tokenizer = SmartTokenizer('HTMLIFrameElement')
++        self.assertEqual(tokenizer.tokenize(), ['HTML', 'IFrame', 'Element'])
++        tokenizer = SmartTokenizer('HTMLPlugInElement')
++        self.assertEqual(tokenizer.tokenize(), ['HTML', 'PlugIn', 'Element'])
++        # No special handling for OptGroup, FieldSet, and TextArea.
++        tokenizer = SmartTokenizer('HTMLOptGroupElement')
++        self.assertEqual(tokenizer.tokenize(), ['HTML', 'Opt', 'Group', 'Element'])
++        tokenizer = SmartTokenizer('HTMLFieldSetElement')
++        self.assertEqual(tokenizer.tokenize(), ['HTML', 'Field', 'Set', 'Element'])
++        tokenizer = SmartTokenizer('HTMLTextAreaElement')
++        self.assertEqual(tokenizer.tokenize(), ['HTML', 'Text', 'Area', 'Element'])
++        tokenizer = SmartTokenizer('Path2D')
++        self.assertEqual(tokenizer.tokenize(), ['Path', '2D'])
++        tokenizer = SmartTokenizer('Point2D')
++        self.assertEqual(tokenizer.tokenize(), ['Point', '2D'])
++        tokenizer = SmartTokenizer('CanvasRenderingContext2DState')
++        self.assertEqual(tokenizer.tokenize(), ['Canvas', 'Rendering', 'Context', '2D', 'State'])
++        tokenizer = SmartTokenizer('RTCDTMFSender')
++        self.assertEqual(tokenizer.tokenize(), ['RTC', 'DTMF', 'Sender'])
++        tokenizer = SmartTokenizer('WebGLCompressedTextureS3TCsRGB')
++        self.assertEqual(tokenizer.tokenize(), ['WebGL', 'Compressed', 'Texture', 'S3TC', 'sRGB'])
++        tokenizer = SmartTokenizer('WebGL2CompressedTextureETC1')
++        self.assertEqual(tokenizer.tokenize(), ['WebGL2', 'Compressed', 'Texture', 'ETC1'])
++        tokenizer = SmartTokenizer('EXTsRGB')
++        self.assertEqual(tokenizer.tokenize(), ['EXT', 'sRGB'])
++        tokenizer = SmartTokenizer('SVGFEBlendElement')
++        self.assertEqual(tokenizer.tokenize(), ['SVG', 'FE', 'Blend', 'Element'])
++        tokenizer = SmartTokenizer('SVGMPathElement')
++        self.assertEqual(tokenizer.tokenize(), ['SVG', 'MPath', 'Element'])
++        tokenizer = SmartTokenizer('SVGTSpanElement')
++        self.assertEqual(tokenizer.tokenize(), ['SVG', 'TSpan', 'Element'])
++        tokenizer = SmartTokenizer('SVGURIReference')
++        self.assertEqual(tokenizer.tokenize(), ['SVG', 'URI', 'Reference'])
++        tokenizer = SmartTokenizer('UTF16TextIterator')
++        self.assertEqual(tokenizer.tokenize(), ['UTF16', 'Text', 'Iterator'])
++        tokenizer = SmartTokenizer('UTF8Decoder')
++        self.assertEqual(tokenizer.tokenize(), ['UTF8', 'Decoder'])
++        tokenizer = SmartTokenizer('Uint8Array')
++        self.assertEqual(tokenizer.tokenize(), ['Uint8', 'Array'])
++        tokenizer = SmartTokenizer('DOMWindowBase64')
++        self.assertEqual(tokenizer.tokenize(), ['DOM', 'Window', 'Base64'])
++        tokenizer = SmartTokenizer('TextCodecLatin1')
++        self.assertEqual(tokenizer.tokenize(), ['Text', 'Codec', 'Latin1'])
++        tokenizer = SmartTokenizer('V8BindingForCore')
++        self.assertEqual(tokenizer.tokenize(), ['V8', 'Binding', 'For', 'Core'])
++        tokenizer = SmartTokenizer('V8DOMRect')
++        self.assertEqual(tokenizer.tokenize(), ['V8', 'DOM', 'Rect'])
++        tokenizer = SmartTokenizer('V0InsertionPoint')
++        self.assertEqual(tokenizer.tokenize(), ['V0', 'Insertion', 'Point'])
++        tokenizer = SmartTokenizer('ShadowDOMV0Test')
++        self.assertEqual(tokenizer.tokenize(), ['Shadow', 'DOM', 'V0', 'Test'])
++        tokenizer = SmartTokenizer('ElementShadowV0')
++        self.assertEqual(tokenizer.tokenize(), ['Element', 'Shadow', 'V0'])
++        tokenizer = SmartTokenizer('StubChromeClientForSPv2')
++        self.assertEqual(tokenizer.tokenize(), ['Stub', 'Chrome', 'Client', 'For', 'SPv2'])
++        tokenizer = SmartTokenizer('SQLiteAuthorizer')
++        self.assertEqual(tokenizer.tokenize(), ['SQLite', 'Authorizer'])
++        tokenizer = SmartTokenizer('XPathEvaluator')
++        self.assertEqual(tokenizer.tokenize(), ['XPath', 'Evaluator'])
++        tokenizer = SmartTokenizer('IsXHTMLDocument')
++        self.assertEqual(tokenizer.tokenize(), ['Is', 'XHTML', 'Document'])
++        tokenizer = SmartTokenizer('Animation.idl')
++        self.assertEqual(tokenizer.tokenize(), ['Animation', '.idl'])
++class NameStyleConverterTest(unittest.TestCase):
++    def test_snake_case(self):
++        converter = NameStyleConverter('HTMLElement')
++        self.assertEqual(converter.to_snake_case(), 'html_element')
++    def test_upper_camel_case(self):
++        converter = NameStyleConverter('someSuperThing')
++        self.assertEqual(converter.to_upper_camel_case(), 'SomeSuperThing')
++        converter = NameStyleConverter('SVGElement')
++        self.assertEqual(converter.to_upper_camel_case(), 'SVGElement')
++    def test_macro_case(self):
++        converter = NameStyleConverter('WebGLBaz2D')
++        self.assertEqual(converter.to_macro_case(), 'WEBGL_BAZ_2D')
++    def test_all_cases(self):
++        converter = NameStyleConverter('SVGScriptElement')
++        self.assertEqual(converter.to_all_cases(), {
++            'snake_case': 'svg_script_element',
++            'upper_camel_case': 'SVGScriptElement',
++            'macro_case': 'SVG_SCRIPT_ELEMENT',
++        })
+diff -up chromium-66.0.3359.117/third_party/blink/tools/blinkpy/__init__.py.missing chromium-66.0.3359.117/third_party/blink/tools/blinkpy/__init__.py
+--- chromium-66.0.3359.117/third_party/blink/tools/blinkpy/__init__.py.missing	2018-04-19 11:34:40.621293007 -0400
++++ chromium-66.0.3359.117/third_party/blink/tools/blinkpy/__init__.py	2018-04-19 11:34:34.440413163 -0400
+@@ -0,0 +1,3 @@
++# Copyright 2017 The Chromium Authors. All rights reserved.
++# Use of this source code is governed by a BSD-style license that can be
++# found in the LICENSE file.
diff --git a/chromium-66.0.3359.117-system-clang.patch b/chromium-66.0.3359.117-system-clang.patch
new file mode 100644
index 0000000..e90dc58
--- /dev/null
+++ b/chromium-66.0.3359.117-system-clang.patch
@@ -0,0 +1,12 @@
+diff -up chromium-66.0.3359.117/build/config/clang/clang.gni.system-clang chromium-66.0.3359.117/build/config/clang/clang.gni
+--- chromium-66.0.3359.117/build/config/clang/clang.gni.system-clang	2018-04-18 12:08:45.658190297 -0400
++++ chromium-66.0.3359.117/build/config/clang/clang.gni	2018-04-18 12:09:37.612032982 -0400
+@@ -4,7 +4,7 @@
+ 
+ import("//build/toolchain/toolchain.gni")
+ 
+-default_clang_base_path = "//third_party/llvm-build/Release+Asserts"
++default_clang_base_path = "/usr"
+ 
+ declare_args() {
+   # Indicates if the build should use the Chrome-specific plugins for enforcing
diff --git a/chromium-67.0.3396.62-gcc5.patch b/chromium-67.0.3396.62-gcc5.patch
new file mode 100644
index 0000000..ceef85d
--- /dev/null
+++ b/chromium-67.0.3396.62-gcc5.patch
@@ -0,0 +1,12 @@
+diff -up chromium-67.0.3396.62/third_party/webgl/src/specs/latest/2.0/webgl2.idl.gcc5 chromium-67.0.3396.62/third_party/webgl/src/specs/latest/2.0/webgl2.idl
+--- chromium-67.0.3396.62/third_party/webgl/src/specs/latest/2.0/webgl2.idl.gcc5	2018-05-30 04:44:33.000000000 -0400
++++ chromium-67.0.3396.62/third_party/webgl/src/specs/latest/2.0/webgl2.idl	2018-05-30 11:59:26.218625660 -0400
+@@ -262,7 +262,7 @@ interface mixin WebGL2RenderingContextBa
+   const GLenum UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES          = 0x8A43;
+   const GLenum UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER     = 0x8A44;
+   const GLenum UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER   = 0x8A46;
+-  const GLenum INVALID_INDEX                                 = 0xFFFFFFFF;
++  const GLenum INVALID_INDEX                                 = 256;
+   const GLenum MAX_VERTEX_OUTPUT_COMPONENTS                  = 0x9122;
+   const GLenum MAX_FRAGMENT_INPUT_COMPONENTS                 = 0x9125;
+   const GLenum MAX_SERVER_WAIT_TIMEOUT                       = 0x9111;
diff --git a/chromium-54.0.2840.59-gn-system.patch b/chromium-67.0.3396.62-gn-system.patch
similarity index 69%
rename from chromium-54.0.2840.59-gn-system.patch
rename to chromium-67.0.3396.62-gn-system.patch
index fc855ad..4a08e94 100644
--- a/chromium-54.0.2840.59-gn-system.patch
+++ b/chromium-67.0.3396.62-gn-system.patch
@@ -1,20 +1,7 @@
-diff -up chromium-54.0.2840.59/build/linux/unbundle/libjpeg.gn.gnsystem chromium-54.0.2840.59/build/linux/unbundle/libjpeg.gn
---- chromium-54.0.2840.59/build/linux/unbundle/libjpeg.gn.gnsystem	2016-10-13 16:06:00.464796742 -0400
-+++ chromium-54.0.2840.59/build/linux/unbundle/libjpeg.gn	2016-10-13 16:06:08.976631824 -0400
-@@ -16,6 +16,10 @@ source_set("libjpeg") {
-   libs = [ "jpeg" ]
- }
- 
-+config("system_libjpeg") {
-+  defines = [ "USE_SYSTEM_LIBJPEG=1" ]
-+}
-+
- source_set("simd") {
- }
- 
-diff -up chromium-54.0.2840.59/build/linux/unbundle/libusb.gn.gnsystem chromium-54.0.2840.59/build/linux/unbundle/libusb.gn
---- chromium-54.0.2840.59/build/linux/unbundle/libusb.gn.gnsystem	2016-10-13 15:47:48.147891525 -0400
-+++ chromium-54.0.2840.59/build/linux/unbundle/libusb.gn	2016-10-13 15:47:48.147891525 -0400
+diff -up chromium-67.0.3396.62/build/linux/unbundle/libjpeg.gn.gnsystem chromium-67.0.3396.62/build/linux/unbundle/libjpeg.gn
+diff -up chromium-67.0.3396.62/build/linux/unbundle/libusb.gn.gnsystem chromium-67.0.3396.62/build/linux/unbundle/libusb.gn
+--- chromium-67.0.3396.62/build/linux/unbundle/libusb.gn.gnsystem	2018-05-30 12:18:36.949488683 -0400
++++ chromium-67.0.3396.62/build/linux/unbundle/libusb.gn	2018-05-30 12:18:36.949488683 -0400
 @@ -0,0 +1,24 @@
 +# Copyright 2016 The Chromium Authors. All rights reserved.
 +# Use of this source code is governed by a BSD-style license that can be
@@ -40,10 +27,10 @@ diff -up chromium-54.0.2840.59/build/linux/unbundle/libusb.gn.gnsystem chromium-
 +  ]
 +  public_configs = [ ":system_libusb" ]
 +}
-diff -up chromium-54.0.2840.59/build/linux/unbundle/opus.gn.gnsystem chromium-54.0.2840.59/build/linux/unbundle/opus.gn
---- chromium-54.0.2840.59/build/linux/unbundle/opus.gn.gnsystem	2016-10-13 15:47:48.147891525 -0400
-+++ chromium-54.0.2840.59/build/linux/unbundle/opus.gn	2016-10-13 15:47:48.147891525 -0400
-@@ -0,0 +1,161 @@
+diff -up chromium-67.0.3396.62/build/linux/unbundle/opus.gn.gnsystem chromium-67.0.3396.62/build/linux/unbundle/opus.gn
+--- chromium-67.0.3396.62/build/linux/unbundle/opus.gn.gnsystem	2018-05-30 04:43:03.000000000 -0400
++++ chromium-67.0.3396.62/build/linux/unbundle/opus.gn	2018-05-30 12:18:36.950488661 -0400
+@@ -1,3 +1,164 @@
 +# Copyright 2016 The Chromium Authors. All rights reserved.
 +# Use of this source code is governed by a BSD-style license that can be
 +# found in the LICENSE file.
@@ -205,19 +192,17 @@ diff -up chromium-54.0.2840.59/build/linux/unbundle/opus.gn.gnsystem chromium-54
 +  ]
 +}
 +
-diff -up chromium-54.0.2840.59/build/linux/unbundle/replace_gn_files.py.gnsystem chromium-54.0.2840.59/build/linux/unbundle/replace_gn_files.py
---- chromium-54.0.2840.59/build/linux/unbundle/replace_gn_files.py.gnsystem	2016-10-12 15:02:53.000000000 -0400
-+++ chromium-54.0.2840.59/build/linux/unbundle/replace_gn_files.py	2016-10-13 15:47:48.147891525 -0400
-@@ -23,10 +23,12 @@ REPLACEMENTS = {
+ # Copyright 2017 The Chromium Authors. All rights reserved.
+ # Use of this source code is governed by a BSD-style license that can be
+ # found in the LICENSE file.
+diff -up chromium-67.0.3396.62/build/linux/unbundle/replace_gn_files.py.gnsystem chromium-67.0.3396.62/build/linux/unbundle/replace_gn_files.py
+--- chromium-67.0.3396.62/build/linux/unbundle/replace_gn_files.py.gnsystem	2018-05-30 12:18:36.951488638 -0400
++++ chromium-67.0.3396.62/build/linux/unbundle/replace_gn_files.py	2018-05-30 12:20:02.542534270 -0400
+@@ -27,6 +27,7 @@ REPLACEMENTS = {
    'libevent': 'base/third_party/libevent/BUILD.gn',
-   'libjpeg': 'build/secondary/third_party/libjpeg_turbo/BUILD.gn',
+   'libjpeg': 'third_party/libjpeg.gni',
    'libpng': 'third_party/libpng/BUILD.gn',
 +  'libusb': 'third_party/libusb/BUILD.gn',
    'libvpx': 'third_party/libvpx/BUILD.gn',
    'libwebp': 'third_party/libwebp/BUILD.gn',
    'libxml': 'third_party/libxml/BUILD.gn',
-   'libxslt': 'third_party/libxslt/BUILD.gn',
-+  'opus': 'third_party/opus/BUILD.gn',
-   're2': 'third_party/re2/BUILD.gn',
-   'snappy': 'third_party/snappy/BUILD.gn',
-   'yasm': 'third_party/yasm/yasm_assemble.gni',
diff --git a/chromium-67.0.3396.62-skia-aarch64-buildfix.patch b/chromium-67.0.3396.62-skia-aarch64-buildfix.patch
new file mode 100644
index 0000000..6b37b08
--- /dev/null
+++ b/chromium-67.0.3396.62-skia-aarch64-buildfix.patch
@@ -0,0 +1,21 @@
+diff -up chromium-67.0.3396.62/third_party/skia/src/opts/SkRasterPipeline_opts.h.aarch64fix chromium-67.0.3396.62/third_party/skia/src/opts/SkRasterPipeline_opts.h
+--- chromium-67.0.3396.62/third_party/skia/src/opts/SkRasterPipeline_opts.h.aarch64fix	2018-05-30 12:38:06.131467092 -0400
++++ chromium-67.0.3396.62/third_party/skia/src/opts/SkRasterPipeline_opts.h	2018-05-30 12:38:39.861734819 -0400
+@@ -653,7 +653,7 @@ SI F approx_powf(F x, F y) {
+ }
+ 
+ SI F from_half(U16 h) {
+-#if defined(__aarch64__) && !defined(SK_BUILD_FOR_GOOGLE3)  // Temporary workaround for some Google3 builds.
++#if defined(JUMPER_IS_NEON) && defined(__aarch64__) && !defined(SK_BUILD_FOR_GOOGLE3)  // Temporary workaround for some Google3 builds.
+     return vcvt_f32_f16(h);
+ 
+ #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512)
+@@ -673,7 +673,7 @@ SI F from_half(U16 h) {
+ }
+ 
+ SI U16 to_half(F f) {
+-#if defined(__aarch64__) && !defined(SK_BUILD_FOR_GOOGLE3)  // Temporary workaround for some Google3 builds.
++#if defined(JUMPER_IS_NEON) && defined(__aarch64__) && !defined(SK_BUILD_FOR_GOOGLE3)  // Temporary workaround for some Google3 builds.
+     return vcvt_f16_f32(f);
+ 
+ #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512)
diff --git a/chromium-69-extra-media.patch b/chromium-69-extra-media.patch
new file mode 100644
index 0000000..fc1cb99
--- /dev/null
+++ b/chromium-69-extra-media.patch
@@ -0,0 +1,274 @@
+diff -up chromium-69.0.3497.100/media/base/audio_codecs.cc.37~ chromium-69.0.3497.100/media/base/audio_codecs.cc
+--- chromium-69.0.3497.100/media/base/audio_codecs.cc.37~	2018-09-17 21:10:16.000000000 +0200
++++ chromium-69.0.3497.100/media/base/audio_codecs.cc	2018-10-02 22:30:05.030093084 +0200
+@@ -46,6 +46,8 @@ std::string GetCodecName(AudioCodec code
+       return "ac3";
+     case kCodecMpegHAudio:
+       return "mpeg-h-audio";
++    case kCodecDTS:
++      return "dts";
+   }
+   NOTREACHED();
+   return "";
+@@ -72,6 +74,8 @@ AudioCodec StringToAudioCodec(const std:
+     return kCodecVorbis;
+   if (base::StartsWith(codec_id, "mp4a.40.", base::CompareCase::SENSITIVE))
+     return kCodecAAC;
++  if (codec_id == "dts")
++    return kCodecDTS;
+   return kUnknownAudioCodec;
+ }
+ 
+diff -up chromium-69.0.3497.100/media/base/audio_codecs.h.37~ chromium-69.0.3497.100/media/base/audio_codecs.h
+--- chromium-69.0.3497.100/media/base/audio_codecs.h.37~	2018-09-17 21:10:16.000000000 +0200
++++ chromium-69.0.3497.100/media/base/audio_codecs.h	2018-10-02 22:30:05.030093084 +0200
+@@ -33,13 +33,14 @@ enum AudioCodec {
+   kCodecALAC = 15,
+   kCodecAC3 = 16,
+   kCodecMpegHAudio = 17,
++  kCodecDTS = 18,
+   // DO NOT ADD RANDOM AUDIO CODECS!
+   //
+   // The only acceptable time to add a new codec is if there is production code
+   // that uses said codec in the same CL.
+ 
+   // Must always be equal to the largest entry ever logged.
+-  kAudioCodecMax = kCodecMpegHAudio,
++  kAudioCodecMax = kCodecDTS,
+ };
+ 
+ std::string MEDIA_EXPORT GetCodecName(AudioCodec codec);
+diff -up chromium-69.0.3497.100/media/base/decode_capabilities.cc.37~ chromium-69.0.3497.100/media/base/decode_capabilities.cc
+--- chromium-69.0.3497.100/media/base/decode_capabilities.cc.37~	2018-09-17 21:10:16.000000000 +0200
++++ chromium-69.0.3497.100/media/base/decode_capabilities.cc	2018-10-02 22:30:05.031093090 +0200
+@@ -176,13 +176,13 @@ bool IsSupportedVideoConfig(const VideoC
+     case media::kCodecH264:
+     case media::kCodecVP8:
+     case media::kCodecTheora:
+-      return true;
+-
+-    case media::kUnknownVideoCodec:
+     case media::kCodecVC1:
+     case media::kCodecMPEG2:
+     case media::kCodecMPEG4:
+     case media::kCodecHEVC:
++      return true;
++
++    case media::kUnknownVideoCodec:
+     case media::kCodecDolbyVision:
+       return false;
+   }
+diff -up chromium-69.0.3497.100/media/base/mime_util_internal.cc.37~ chromium-69.0.3497.100/media/base/mime_util_internal.cc
+--- chromium-69.0.3497.100/media/base/mime_util_internal.cc.37~	2018-09-17 21:10:16.000000000 +0200
++++ chromium-69.0.3497.100/media/base/mime_util_internal.cc	2018-10-02 22:31:21.254548374 +0200
+@@ -74,6 +74,8 @@ const base::flat_map<std::string, MimeUt
+         {"vorbis", MimeUtil::VORBIS}, {"opus", MimeUtil::OPUS},
+         {"flac", MimeUtil::FLAC}, {"vp8", MimeUtil::VP8},
+         {"vp8.0", MimeUtil::VP8}, {"theora", MimeUtil::THEORA},
++        {"dts", MimeUtil::DTS}, {"mp2", MimeUtil::MP2},
++        {"mp4v.20.8", MimeUtil::MPEG4_SP}, {"mp4v.20.240", MimeUtil::MPEG4_ASP},
+       },
+       base::KEEP_FIRST_OF_DUPES);
+ 
+@@ -172,6 +174,9 @@ VideoCodec MimeUtilToVideoCodec(MimeUtil
+       return kCodecTheora;
+     case MimeUtil::DOLBY_VISION:
+       return kCodecDolbyVision;
++    case MimeUtil::MPEG4_SP:
++    case MimeUtil::MPEG4_ASP:
++      return kCodecMPEG4;
+     default:
+       break;
+   }
+@@ -266,6 +271,31 @@ void MimeUtil::AddSupportedMediaFormats(
+   CodecSet ogg_codecs(ogg_audio_codecs);
+   ogg_codecs.insert(ogg_video_codecs.begin(), ogg_video_codecs.end());
+ 
++  CodecSet matroska_audio_codecs;
++  matroska_audio_codecs.insert(OPUS);
++  matroska_audio_codecs.insert(VORBIS);
++  matroska_audio_codecs.insert(AC3);
++  matroska_audio_codecs.insert(EAC3);
++  matroska_audio_codecs.insert(DTS);
++  matroska_audio_codecs.insert(MP3);
++  matroska_audio_codecs.insert(MP2);
++  matroska_audio_codecs.insert(MPEG2_AAC);
++  matroska_audio_codecs.insert(MPEG4_AAC);
++  matroska_audio_codecs.insert(PCM);
++  
++  CodecSet matroska_video_codecs;
++  matroska_video_codecs.insert(THEORA);
++  matroska_video_codecs.insert(VP8);
++  matroska_video_codecs.insert(VP9);
++  matroska_video_codecs.insert(H264);
++  matroska_video_codecs.insert(MPEG4_SP);
++  matroska_video_codecs.insert(MPEG4_ASP);
++#if BUILDFLAG(ENABLE_HEVC_DEMUXING)
++  matroska_video_codecs.insert(HEVC);
++#endif  // BUILDFLAG(ENABLE_HEVC_DEMUXING)
++  CodecSet matroska_codecs(matroska_audio_codecs);
++  matroska_codecs.insert(matroska_video_codecs.begin(), matroska_video_codecs.end());
++
+   const CodecSet webm_audio_codecs{OPUS, VORBIS};
+   CodecSet webm_video_codecs{VP8, VP9};
+ #if BUILDFLAG(ENABLE_AV1_DECODER)
+@@ -307,6 +337,8 @@ void MimeUtil::AddSupportedMediaFormats(
+ #if BUILDFLAG(ENABLE_HEVC_DEMUXING)
+   mp4_video_codecs.emplace(HEVC);
+ #endif  // BUILDFLAG(ENABLE_HEVC_DEMUXING)
++  mp4_video_codecs.emplace(MPEG4_SP);
++  mp4_video_codecs.emplace(MPEG4_ASP);
+ 
+ #if BUILDFLAG(ENABLE_DOLBY_VISION_DEMUXING)
+   mp4_video_codecs.emplace(DOLBY_VISION);
+@@ -341,12 +373,16 @@ void MimeUtil::AddSupportedMediaFormats(
+   DCHECK(!mp4_video_codecs.empty());
+   AddContainerWithCodecs("video/mp4", mp4_codecs, false);
+ 
++  AddContainerWithCodecs("audio/x-matroska", matroska_audio_codecs, false);
++  AddContainerWithCodecs("video/x-matroska", matroska_video_codecs, false);
++
+ #if BUILDFLAG(USE_PROPRIETARY_CODECS)
+   AddContainerWithCodecs("audio/aac", implicit_codec, true);  // AAC / ADTS.
+   // These strings are supported for backwards compatibility only and thus only
+   // support the codecs needed for compatibility.
+   AddContainerWithCodecs("audio/x-m4a", aac, true);
+   AddContainerWithCodecs("video/x-m4v", avc_and_aac, true);
++  AddContainerWithCodecs("video/x-msvideo", matroska_codecs, true);
+ 
+ #if BUILDFLAG(ENABLE_MSE_MPEG2TS_STREAM_PARSER)
+   CodecSet mp2t_codecs{H264, MPEG2_AAC, MPEG4_AAC, MP3};
+@@ -968,9 +1004,13 @@ bool MimeUtil::IsCodecProprietary(Codec
+     case H264:
+     case HEVC:
+     case DOLBY_VISION:
++    case DTS:
++    case MPEG4_SP:
++    case MPEG4_ASP:
+       return true;
+ 
+     case MP3:
++    case MP2:
+     case PCM:
+     case VORBIS:
+     case OPUS:
+diff -up chromium-69.0.3497.100/media/base/mime_util_internal.h.37~ chromium-69.0.3497.100/media/base/mime_util_internal.h
+--- chromium-69.0.3497.100/media/base/mime_util_internal.h.37~	2018-09-17 21:10:16.000000000 +0200
++++ chromium-69.0.3497.100/media/base/mime_util_internal.h	2018-10-02 22:30:05.031093090 +0200
+@@ -46,7 +46,11 @@ class MEDIA_EXPORT MimeUtil {
+     DOLBY_VISION,
+     AV1,
+     MPEG_H_AUDIO,
+-    LAST_CODEC = MPEG_H_AUDIO
++    DTS,
++    MP2,
++    MPEG4_SP,
++    MPEG4_ASP,
++    LAST_CODEC = MPEG4_ASP
+   };
+ 
+   // Platform configuration structure.  Controls which codecs are supported at
+diff -up chromium-69.0.3497.100/media/ffmpeg/ffmpeg_common.cc.37~ chromium-69.0.3497.100/media/ffmpeg/ffmpeg_common.cc
+--- chromium-69.0.3497.100/media/ffmpeg/ffmpeg_common.cc.37~	2018-09-17 21:10:16.000000000 +0200
++++ chromium-69.0.3497.100/media/ffmpeg/ffmpeg_common.cc	2018-10-02 22:30:05.031093090 +0200
+@@ -115,6 +115,8 @@ AudioCodec CodecIDToAudioCodec(AVCodecID
+       return kCodecOpus;
+     case AV_CODEC_ID_ALAC:
+       return kCodecALAC;
++    case AV_CODEC_ID_DTS:
++      return kCodecDTS;
+     default:
+       DVLOG(1) << "Unknown audio CodecID: " << codec_id;
+   }
+@@ -166,6 +168,10 @@ AVCodecID AudioCodecToCodecID(AudioCodec
+       return AV_CODEC_ID_PCM_MULAW;
+     case kCodecOpus:
+       return AV_CODEC_ID_OPUS;
++    case kCodecAC3:
++      return AV_CODEC_ID_AC3;
++    case kCodecDTS:
++      return AV_CODEC_ID_DTS;
+     default:
+       DVLOG(1) << "Unknown AudioCodec: " << audio_codec;
+   }
+diff -up chromium-69.0.3497.100/media/filters/ffmpeg_video_decoder.cc.37~ chromium-69.0.3497.100/media/filters/ffmpeg_video_decoder.cc
+--- chromium-69.0.3497.100/media/filters/ffmpeg_video_decoder.cc.37~	2018-09-17 21:10:16.000000000 +0200
++++ chromium-69.0.3497.100/media/filters/ffmpeg_video_decoder.cc	2018-10-02 22:30:05.031093090 +0200
+@@ -58,7 +58,6 @@ static int GetThreadCount(const VideoDec
+       case kUnknownVideoCodec:
+       case kCodecVC1:
+       case kCodecMPEG2:
+-      case kCodecHEVC:
+       case kCodecVP9:
+       case kCodecAV1:
+       case kCodecDolbyVision:
+@@ -72,6 +71,7 @@ static int GetThreadCount(const VideoDec
+       case kCodecH264:
+       case kCodecMPEG4:
+       case kCodecVP8:
++      case kCodecHEVC:
+         // Normalize to three threads for 1080p content, then scale linearly
+         // with number of pixels.
+         // Examples:
+diff -up chromium-69.0.3497.100/media/remoting/proto_enum_utils.cc.37~ chromium-69.0.3497.100/media/remoting/proto_enum_utils.cc
+--- chromium-69.0.3497.100/media/remoting/proto_enum_utils.cc.37~	2018-09-17 21:10:16.000000000 +0200
++++ chromium-69.0.3497.100/media/remoting/proto_enum_utils.cc	2018-10-02 22:30:05.031093090 +0200
+@@ -58,6 +58,7 @@ base::Optional<AudioCodec> ToMediaAudioC
+     CASE_RETURN_OTHER(kCodecALAC);
+     CASE_RETURN_OTHER(kCodecAC3);
+     CASE_RETURN_OTHER(kCodecMpegHAudio);
++    CASE_RETURN_OTHER(kCodecDTS);
+   }
+   return base::nullopt;  // Not a 'default' to ensure compile-time checks.
+ }
+@@ -85,6 +86,7 @@ base::Optional<pb::AudioDecoderConfig::C
+     CASE_RETURN_OTHER(kCodecALAC);
+     CASE_RETURN_OTHER(kCodecAC3);
+     CASE_RETURN_OTHER(kCodecMpegHAudio);
++    CASE_RETURN_OTHER(kCodecDTS);
+   }
+   return base::nullopt;  // Not a 'default' to ensure compile-time checks.
+ }
+diff -up chromium-69.0.3497.100/media/remoting/rpc.proto.37~ chromium-69.0.3497.100/media/remoting/rpc.proto
+--- chromium-69.0.3497.100/media/remoting/media_remoting_rpc.proto.37~	2018-09-17 21:10:16.000000000 +0200
++++ chromium-69.0.3497.100/media/remoting/media_remoting_rpc.proto	2018-10-02 22:30:05.031093090 +0200
+@@ -67,6 +67,7 @@ message AudioDecoderConfig {
+     kCodecALAC = 15;
+     kCodecAC3 = 16;
+     kCodecMpegHAudio = 17;
++    kCodecDTS = 18;
+   }
+ 
+   // Proto version of media::SampleFormat.
+diff -up chromium-69.0.3497.100/net/base/mime_util.cc.37~ chromium-69.0.3497.100/net/base/mime_util.cc
+--- chromium-69.0.3497.100/net/base/mime_util.cc.37~	2018-09-17 21:10:18.000000000 +0200
++++ chromium-69.0.3497.100/net/base/mime_util.cc	2018-10-02 22:30:05.031093090 +0200
+@@ -101,6 +101,9 @@ static const MimeInfo kPrimaryMappings[]
+     {"text/xml", "xml"},
+     {"video/mp4", "mp4,m4v"},
+     {"video/ogg", "ogv,ogm"},
++    {"video/x-matroska", "mkv"},
++    {"audio/x-matroska", "mkv"},
++    {"video/x-msvideo", "avi"},
+ };
+ 
+ static const MimeInfo kSecondaryMappings[] = {
+@@ -490,6 +493,7 @@ static const char* const kStandardAudioT
+   "audio/vorbis",
+   "audio/wav",
+   "audio/webm",
++  "audio/x-matroska",
+   "audio/x-m4a",
+   "audio/x-ms-wma",
+   "audio/vnd.rn-realaudio",
+@@ -507,8 +511,10 @@ static const char* const kStandardVideoT
+   "video/webm",
+   "video/x-dv",
+   "video/x-m4v",
++  "video/x-matroska",
+   "video/x-mpeg",
+   "video/x-ms-asf",
++  "video/x-msvideo",
+   "video/x-ms-wmv"
+ };
+ 
diff --git a/chromium-69-no-static-libstdc++.patch b/chromium-69-no-static-libstdc++.patch
new file mode 100644
index 0000000..c2f9ea9
--- /dev/null
+++ b/chromium-69-no-static-libstdc++.patch
@@ -0,0 +1,11 @@
+diff -up chromium-69.0.3497.100/tools/gn/build/gen.py.omv~ chromium-69.0.3497.100/tools/gn/build/gen.py
+--- chromium-69.0.3497.100/tools/gn/build/gen.py.omv~	2018-10-02 23:08:29.804860884 +0200
++++ chromium-69.0.3497.100/tools/gn/build/gen.py	2018-10-02 23:08:33.896888587 +0200
+@@ -369,7 +369,6 @@ def WriteGNNinja(path, platform, host, o
+
+     if platform.is_linux():
+       ldflags.extend([
+-          '-static-libstdc++',
+           '-Wl,--as-needed',
+       ])
+       libs.extend([
diff --git a/chromium-69-wmvflvmpg.patch b/chromium-69-wmvflvmpg.patch
new file mode 100644
index 0000000..a76d43f
--- /dev/null
+++ b/chromium-69-wmvflvmpg.patch
@@ -0,0 +1,135 @@
+diff -up chromium-69.0.3497.100/media/base/mime_util_internal.cc.38~ chromium-69.0.3497.100/media/base/mime_util_internal.cc
+--- chromium-69.0.3497.100/media/base/mime_util_internal.cc.38~	2018-10-02 22:33:23.202267666 +0200
++++ chromium-69.0.3497.100/media/base/mime_util_internal.cc	2018-10-02 22:35:18.081936900 +0200
+@@ -76,6 +76,11 @@ const base::flat_map<std::string, MimeUt
+         {"vp8.0", MimeUtil::VP8}, {"theora", MimeUtil::THEORA},
+         {"dts", MimeUtil::DTS}, {"mp2", MimeUtil::MP2},
+         {"mp4v.20.8", MimeUtil::MPEG4_SP}, {"mp4v.20.240", MimeUtil::MPEG4_ASP},
++        {"msmpeg4v1", MimeUtil::MSMPEG4v1}, {"msmpeg4v2", MimeUtil::MSMPEG4v2},
++        {"msmpeg4v3", MimeUtil::MSMPEG4v3}, {"wmv7", MimeUtil::WMV7},
++        {"wmv8", MimeUtil::WMV8}, {"wmv9", MimeUtil::WMV9},
++        {"vc-1", MimeUtil::VC1}, {"wma", MimeUtil::WMA},
++        {"vp6", MimeUtil::VP6}, {"mpeg1", MimeUtil::MPEG1}
+       },
+       base::KEEP_FIRST_OF_DUPES);
+ 
+@@ -306,6 +311,9 @@ void MimeUtil::AddSupportedMediaFormats(
+   CodecSet webm_codecs(webm_audio_codecs);
+   webm_codecs.insert(webm_video_codecs.begin(), webm_video_codecs.end());
+ 
++  CodecSet mp1_codecs;
++  mp1_codecs.insert(MPEG1);
++
+   const CodecSet mp3_codecs{MP3};
+ 
+   CodecSet mp4_audio_codecs{FLAC, MP3, OPUS};
+@@ -352,6 +360,29 @@ void MimeUtil::AddSupportedMediaFormats(
+   CodecSet mp4_codecs(mp4_audio_codecs);
+   mp4_codecs.insert(mp4_video_codecs.begin(), mp4_video_codecs.end());
+ 
++  CodecSet wma_codecs;
++  wma_codecs.insert(WMA);
++
++  CodecSet wmv_codecs(wma_codecs);
++  wmv_codecs.insert(MSMPEG4v1);
++  wmv_codecs.insert(MSMPEG4v2);
++  wmv_codecs.insert(MSMPEG4v3);
++  wmv_codecs.insert(MPEG4_SP);
++  wmv_codecs.insert(MPEG4_ASP);
++  wmv_codecs.insert(WMV7);
++  wmv_codecs.insert(WMV8);
++  wmv_codecs.insert(WMV9);
++  wmv_codecs.insert(VC1);
++
++  matroska_codecs.insert(MSMPEG4v1);
++  matroska_codecs.insert(MSMPEG4v2);
++  matroska_codecs.insert(MSMPEG4v3);
++
++  CodecSet flv_codecs;
++  flv_codecs.insert(VP6);
++  flv_codecs.insert(mp4_codecs.begin(), mp4_codecs.end());
++  flv_codecs.insert(MP3);
++
+   const CodecSet implicit_codec;
+   AddContainerWithCodecs("audio/wav", wav_codecs, false);
+   AddContainerWithCodecs("audio/x-wav", wav_codecs, false);
+@@ -375,6 +406,11 @@ void MimeUtil::AddSupportedMediaFormats(
+ 
+   AddContainerWithCodecs("audio/x-matroska", matroska_audio_codecs, false);
+   AddContainerWithCodecs("video/x-matroska", matroska_video_codecs, false);
++  AddContainerWithCodecs("video/x-ms-wmv", wmv_codecs, true);
++  AddContainerWithCodecs("video/x-ms-wma", wma_codecs, true);
++  AddContainerWithCodecs("video/x-ms-asf", wmv_codecs, true);
++  AddContainerWithCodecs("video/x-flv", flv_codecs, true);
++  AddContainerWithCodecs("video/mpeg", mp1_codecs, true);
+ 
+ #if BUILDFLAG(USE_PROPRIETARY_CODECS)
+   AddContainerWithCodecs("audio/aac", implicit_codec, true);  // AAC / ADTS.
+@@ -1007,6 +1043,15 @@ bool MimeUtil::IsCodecProprietary(Codec
+     case DTS:
+     case MPEG4_SP:
+     case MPEG4_ASP:
++    case MSMPEG4v1:
++    case MSMPEG4v2:
++    case MSMPEG4v3:
++    case WMV7:
++    case WMV8:
++    case WMV9:
++    case VC1:
++    case WMA:
++    case VP6:
+       return true;
+ 
+     case MP3:
+@@ -1018,6 +1063,7 @@ bool MimeUtil::IsCodecProprietary(Codec
+     case VP8:
+     case VP9:
+     case THEORA:
++    case MPEG1:
+     case AV1:
+       return false;
+   }
+diff -up chromium-69.0.3497.100/media/base/mime_util_internal.h.38~ chromium-69.0.3497.100/media/base/mime_util_internal.h
+--- chromium-69.0.3497.100/media/base/mime_util_internal.h.38~	2018-10-02 22:33:23.202267666 +0200
++++ chromium-69.0.3497.100/media/base/mime_util_internal.h	2018-10-02 22:33:23.205267683 +0200
+@@ -50,7 +50,17 @@ class MEDIA_EXPORT MimeUtil {
+     MP2,
+     MPEG4_SP,
+     MPEG4_ASP,
+-    LAST_CODEC = MPEG4_ASP
++    MSMPEG4v1,
++    MSMPEG4v2,
++    MSMPEG4v3,
++    WMV7,
++    WMV8,
++    WMV9,
++    VC1,
++    WMA,
++    VP6,
++    MPEG1,
++    LAST_CODEC = MPEG1
+   };
+ 
+   // Platform configuration structure.  Controls which codecs are supported at
+diff -up chromium-69.0.3497.100/net/base/mime_util.cc.38~ chromium-69.0.3497.100/net/base/mime_util.cc
+--- chromium-69.0.3497.100/net/base/mime_util.cc.38~	2018-10-02 22:33:23.203267672 +0200
++++ chromium-69.0.3497.100/net/base/mime_util.cc	2018-10-02 22:33:23.205267683 +0200
+@@ -104,6 +104,10 @@ static const MimeInfo kPrimaryMappings[]
+     {"video/x-matroska", "mkv"},
+     {"audio/x-matroska", "mkv"},
+     {"video/x-msvideo", "avi"},
++    {"video/x-ms-wmv", "wmv"},
++    {"audio/x-ms-wma", "wma"},
++    {"video/x-flv", "flv"},
++    {"video/mpeg", "mpg,mpeg"}
+ };
+ 
+ static const MimeInfo kSecondaryMappings[] = {
+@@ -510,6 +514,7 @@ static const char* const kStandardVideoT
+   "video/sd-video",
+   "video/webm",
+   "video/x-dv",
++  "video/x-flv",
+   "video/x-m4v",
+   "video/x-matroska",
+   "video/x-mpeg",
diff --git a/chromium-69.0.3497.81-build-sanely-please.patch b/chromium-69.0.3497.81-build-sanely-please.patch
new file mode 100644
index 0000000..6241a97
--- /dev/null
+++ b/chromium-69.0.3497.81-build-sanely-please.patch
@@ -0,0 +1,33 @@
+diff -up chromium-69.0.3497.81/build/config/BUILD.gn.fyoursysroot chromium-69.0.3497.81/build/config/BUILD.gn
+--- chromium-69.0.3497.81/build/config/BUILD.gn.fyoursysroot	2018-09-06 13:43:44.863375238 -0400
++++ chromium-69.0.3497.81/build/config/BUILD.gn	2018-09-06 13:43:58.377083290 -0400
+@@ -284,9 +284,9 @@ group("executable_and_loadable_module_an
+     public_deps += [ "//build/config/sanitizers:deps" ]
+   }
+ 
+-  if (use_custom_libcxx) {
+-    public_deps += [ "//buildtools/third_party/libc++" ]
+-  }
++  # if (use_custom_libcxx) {
++  #   public_deps += [ "//buildtools/third_party/libc++" ]
++  # }
+ 
+   if (use_afl) {
+     public_deps += [ "//third_party/afl" ]
+diff -up chromium-69.0.3497.81/build/config/sysroot.gni.fyoursysroot chromium-69.0.3497.81/build/config/sysroot.gni
+--- chromium-69.0.3497.81/build/config/sysroot.gni.fyoursysroot	2018-09-06 13:40:46.212232232 -0400
++++ chromium-69.0.3497.81/build/config/sysroot.gni	2018-09-06 13:41:02.421882529 -0400
+@@ -15,9 +15,10 @@ declare_args() {
+   # The absolute path to directory containing linux sysroot images
+   target_sysroot_dir = "//build/linux"
+ 
+-  use_sysroot = current_cpu == "x86" || current_cpu == "x64" ||
+-                current_cpu == "arm" || current_cpu == "arm64" ||
+-                current_cpu == "mipsel" || current_cpu == "mips64el"
++  use_sysroot = false
++  # use_sysroot = current_cpu == "x86" || current_cpu == "x64" ||
++  #               current_cpu == "arm" || current_cpu == "arm64" ||
++  #               current_cpu == "mipsel" || current_cpu == "mips64el"
+ }
+ 
+ if (current_os == target_os && current_cpu == target_cpu &&
diff --git a/chromium-69.0.3497.81-gcc8-alignof.patch b/chromium-69.0.3497.81-gcc8-alignof.patch
new file mode 100644
index 0000000..234b391
--- /dev/null
+++ b/chromium-69.0.3497.81-gcc8-alignof.patch
@@ -0,0 +1,18 @@
+diff -up chromium-69.0.3497.81/mojo/public/c/system/macros.h.gcc8-alignof chromium-69.0.3497.81/mojo/public/c/system/macros.h
+--- chromium-69.0.3497.81/mojo/public/c/system/macros.h.gcc8-alignof	2018-09-06 10:11:54.336432699 -0400
++++ chromium-69.0.3497.81/mojo/public/c/system/macros.h	2018-09-06 10:13:56.555727572 -0400
+@@ -27,7 +27,13 @@
+   (sizeof(void*) == 4 ? 32 : 0)
+ 
+ // Like the C++11 |alignof| operator.
+-#if __cplusplus >= 201103L
++#if defined(__GNUC__) && __GNUC__ >= 8
++// GCC 8 has changed the alignof operator to return the minimal alignment
++// required by the target ABI, instead of the preferred alignment.
++// This means that on 32-bit x86, it will return 4 instead of 8.
++// Use __alignof__ instead to avoid this.
++#define MOJO_ALIGNOF(type) __alignof__(type)
++#elif __cplusplus >= 201103L
+ #define MOJO_ALIGNOF(type) alignof(type)
+ #elif defined(__GNUC__)
+ #define MOJO_ALIGNOF(type) __alignof__(type)
diff --git a/chromium-69.0.3497.81-norar.patch b/chromium-69.0.3497.81-norar.patch
new file mode 100644
index 0000000..9545b60
--- /dev/null
+++ b/chromium-69.0.3497.81-norar.patch
@@ -0,0 +1,79 @@
+diff -up chromium-69.0.3497.81/chrome/common/safe_browsing/BUILD.gn.nounrar chromium-69.0.3497.81/chrome/common/safe_browsing/BUILD.gn
+--- chromium-69.0.3497.81/chrome/common/safe_browsing/BUILD.gn.nounrar	2018-09-06 13:29:47.114511569 -0400
++++ chromium-69.0.3497.81/chrome/common/safe_browsing/BUILD.gn	2018-09-06 13:29:47.120511452 -0400
+@@ -55,40 +55,6 @@ if (safe_browsing_mode == 1) {
+       "//components/safe_browsing:csd_proto",
+     ]
+   }
+-
+-  source_set("rar_analyzer") {
+-    sources = [
+-      "rar_analyzer.cc",
+-      "rar_analyzer.h",
+-    ]
+-
+-    deps = [
+-      ":archive_analyzer_results",
+-      ":download_protection_util",
+-      ":file_type_policies",
+-      "//base",
+-      "//base:i18n",
+-      "//third_party/unrar:unrar",
+-    ]
+-
+-    defines = [
+-      "_FILE_OFFSET_BITS=64",
+-      "LARGEFILE_SOURCE",
+-      "RAR_SMP",
+-      "SILENT",
+-
+-      # The following is set to disable certain macro definitions in the unrar
+-      # source code.
+-      "CHROMIUM_UNRAR",
+-
+-      # Disables exceptions in unrar, replaces them with process termination.
+-      "UNRAR_NO_EXCEPTIONS",
+-    ]
+-
+-    public_deps = [
+-      "//components/safe_browsing:csd_proto",
+-    ]
+-  }
+ }
+ 
+ source_set("safe_browsing") {
+@@ -121,7 +87,6 @@ source_set("safe_browsing") {
+     deps += [
+       ":archive_analyzer_results",
+       ":download_protection_util",
+-      ":rar_analyzer",
+       "//components/safe_browsing:features",
+     ]
+ 
+diff -up chromium-69.0.3497.81/chrome/common/safe_browsing/DEPS.nounrar chromium-69.0.3497.81/chrome/common/safe_browsing/DEPS
+--- chromium-69.0.3497.81/chrome/common/safe_browsing/DEPS.nounrar	2018-09-06 13:29:47.119511472 -0400
++++ chromium-69.0.3497.81/chrome/common/safe_browsing/DEPS	2018-09-06 13:29:47.116511530 -0400
+@@ -1,6 +1,5 @@
+ include_rules = [
+   "+components/safe_browsing",
+   "+third_party/protobuf",
+-  "+third_party/unrar",
+   "+third_party/zlib",
+ ]
+diff -up chromium-69.0.3497.81/chrome/services/file_util/safe_archive_analyzer.cc.nounrar chromium-69.0.3497.81/chrome/services/file_util/safe_archive_analyzer.cc
+--- chromium-69.0.3497.81/chrome/services/file_util/safe_archive_analyzer.cc.nounrar	2018-09-07 10:10:42.286041744 -0400
++++ chromium-69.0.3497.81/chrome/services/file_util/safe_archive_analyzer.cc	2018-09-07 10:11:14.934308285 -0400
+@@ -47,9 +47,13 @@ void SafeArchiveAnalyzer::AnalyzeDmgFile
+ 
+ void SafeArchiveAnalyzer::AnalyzeRarFile(base::File rar_file,
+                                          AnalyzeRarFileCallback callback) {
++#if 0
+   DCHECK(rar_file.IsValid());
+ 
+   safe_browsing::ArchiveAnalyzerResults results;
+   safe_browsing::rar_analyzer::AnalyzeRarFile(std::move(rar_file), &results);
+   std::move(callback).Run(results);
++#else
++  NOTREACHED();
++#endif
+ }
diff --git a/chromium-70.0.3538.102-sysroot.patch b/chromium-70.0.3538.102-sysroot.patch
new file mode 100644
index 0000000..7df3f34
--- /dev/null
+++ b/chromium-70.0.3538.102-sysroot.patch
@@ -0,0 +1,22 @@
+--- chromium-70.0.3538.77/tools/gn/bootstrap/bootstrap.py	2018-10-24 22:54:15.000000000 +0100
++++ chromium-70.0.3538.102/tools/gn/bootstrap/bootstrap.py	2018-11-14 19:29:39.670979656 +0000
+@@ -46,10 +46,6 @@
+       '--build-path',
+       help='The directory in which to build gn, '
+       'relative to the src directory. (eg. out/Release)')
+-  parser.add_option(
+-      '--with-sysroot',
+-      action='store_true',
+-      help='Download and build with the Debian sysroot.')
+   parser.add_option('-v', '--verbose', help='ignored')
+   options, args = parser.parse_args(argv)
+   if args:
+@@ -71,8 +67,6 @@
+       '--no-last-commit-position',
+       '--out-path=' + gn_build_dir,
+   ]
+-  if not options.with_sysroot:
+-    cmd.append('--no-sysroot')
+   if options.debug:
+     cmd.append('--debug')
+   subprocess.check_call(cmd)
diff --git a/chromium-70.0.3538.67-sandbox-pie.patch b/chromium-70.0.3538.67-sandbox-pie.patch
new file mode 100644
index 0000000..0f104e9
--- /dev/null
+++ b/chromium-70.0.3538.67-sandbox-pie.patch
@@ -0,0 +1,20 @@
+diff -up chromium-70.0.3538.67/sandbox/linux/BUILD.gn.sandboxpie chromium-70.0.3538.67/sandbox/linux/BUILD.gn
+--- chromium-70.0.3538.67/sandbox/linux/BUILD.gn.sandboxpie	2018-10-18 12:14:05.766939769 -0400
++++ chromium-70.0.3538.67/sandbox/linux/BUILD.gn	2018-10-18 12:16:37.820027182 -0400
+@@ -315,10 +315,16 @@ if (is_linux) {
+       # For ULLONG_MAX
+       "-std=gnu99",
+ 
++      "-fPIE",
++
+       # These files have a suspicious comparison.
+       # TODO fix this and re-enable this warning.
+       "-Wno-sign-compare",
+     ]
++
++    ldflags = [
++      "-pie",
++    ]
+   }
+ }
+ 
diff --git a/chromium-70.0.3538.77-gcc7.patch b/chromium-70.0.3538.77-gcc7.patch
new file mode 100644
index 0000000..537e1bd
--- /dev/null
+++ b/chromium-70.0.3538.77-gcc7.patch
@@ -0,0 +1,117 @@
+--- chromium-70.0.3538.77/gpu/config/gpu_info.h.orig	2018-11-08 21:07:55.602876608 +0000
++++ chromium-70.0.3538.77/gpu/config/gpu_info.h	2018-11-08 21:08:07.971875817 +0000
+@@ -111,7 +111,7 @@
+     GPUDevice(GPUDevice&& other) noexcept;
+     ~GPUDevice() noexcept;
+     GPUDevice& operator=(const GPUDevice& other);
+-    GPUDevice& operator=(GPUDevice&& other) noexcept;
++    GPUDevice& operator=(GPUDevice&& other);
+ 
+     // The DWORD (uint32_t) representing the graphics card vendor id.
+     uint32_t vendor_id;
+--- chromium-70.0.3538.77/gpu/config/gpu_info.cc.orig	2018-11-08 21:07:37.703877753 +0000
++++ chromium-70.0.3538.77/gpu/config/gpu_info.cc	2018-11-08 21:07:47.841877105 +0000
+@@ -105,7 +105,7 @@
+     const GPUInfo::GPUDevice& other) = default;
+ 
+ GPUInfo::GPUDevice& GPUInfo::GPUDevice::operator=(
+-    GPUInfo::GPUDevice&& other) noexcept = default;
++    GPUInfo::GPUDevice&& other) = default;
+ 
+ GPUInfo::GPUInfo()
+     : optimus(false),
+--- chromium-68.0.3440.106/components/search_provider_logos/logo_common.cc.122692c	2018-08-17 14:54:30.587338865 -0400
++++ chromium-68.0.3440.106/components/search_provider_logos/logo_common.cc	2018-08-17 14:55:20.461184298 -0400
+@@ -14,22 +14,22 @@ LogoMetadata::LogoMetadata() = default;
+ LogoMetadata::LogoMetadata(const LogoMetadata&) = default;
+ LogoMetadata::LogoMetadata(LogoMetadata&&) noexcept = default;
+ LogoMetadata& LogoMetadata::operator=(const LogoMetadata&) = default;
+-LogoMetadata& LogoMetadata::operator=(LogoMetadata&&) noexcept = default;
++LogoMetadata& LogoMetadata::operator=(LogoMetadata&&) = default;
+ LogoMetadata::~LogoMetadata() = default;
+ 
+ EncodedLogo::EncodedLogo() = default;
+ EncodedLogo::EncodedLogo(const EncodedLogo&) = default;
+ EncodedLogo::EncodedLogo(EncodedLogo&&) noexcept = default;
+ EncodedLogo& EncodedLogo::operator=(const EncodedLogo&) = default;
+-EncodedLogo& EncodedLogo::operator=(EncodedLogo&&) noexcept = default;
++EncodedLogo& EncodedLogo::operator=(EncodedLogo&&) = default;
+ EncodedLogo::~EncodedLogo() = default;
+ 
+ Logo::Logo() = default;
+ Logo::~Logo() = default;
+ 
+ LogoCallbacks::LogoCallbacks() = default;
+-LogoCallbacks::LogoCallbacks(LogoCallbacks&&) noexcept = default;
+-LogoCallbacks& LogoCallbacks::operator=(LogoCallbacks&&) noexcept = default;
++LogoCallbacks::LogoCallbacks(LogoCallbacks&&) = default;
++LogoCallbacks& LogoCallbacks::operator=(LogoCallbacks&&) = default;
+ LogoCallbacks::~LogoCallbacks() = default;
+ 
+ }  // namespace search_provider_logos
+--- chromium-70.0.3538.77/chrome/common/media_router/media_sink.h.orig	2018-11-08 23:17:56.354377772 +0000
++++ chromium-70.0.3538.77/chrome/common/media_router/media_sink.h	2018-11-08 23:18:15.905376521 +0000
+@@ -54,7 +54,7 @@
+   ~MediaSink();
+ 
+   MediaSink& operator=(const MediaSink& other);
+-  MediaSink& operator=(MediaSink&& other) noexcept;
++  MediaSink& operator=(MediaSink&& other);
+ 
+   void set_sink_id(const MediaSink::Id& sink_id) { sink_id_ = sink_id; }
+   const MediaSink::Id& id() const { return sink_id_; }
+--- chromium-70.0.3538.77/chrome/common/media_router/media_sink.cc.orig	2018-11-08 23:17:22.962379907 +0000
++++ chromium-70.0.3538.77/chrome/common/media_router/media_sink.cc	2018-11-08 23:17:36.625379033 +0000
+@@ -24,7 +24,7 @@
+ MediaSink::~MediaSink() = default;
+ 
+ MediaSink& MediaSink::operator=(const MediaSink& other) = default;
+-MediaSink& MediaSink::operator=(MediaSink&& other) noexcept = default;
++MediaSink& MediaSink::operator=(MediaSink&& other) = default;
+ 
+ bool MediaSink::Equals(const MediaSink& other) const {
+   return sink_id_ == other.sink_id_;
+--- chromium-70.0.3538.77/components/policy/core/common/policy_map.cc.orig	2018-11-08 23:55:51.325232293 +0000
++++ chromium-70.0.3538.77/components/policy/core/common/policy_map.cc	2018-11-08 23:56:17.654230610 +0000
+@@ -18,7 +18,7 @@
+ PolicyMap::Entry::~Entry() = default;
+ 
+ PolicyMap::Entry::Entry(Entry&&) noexcept = default;
+-PolicyMap::Entry& PolicyMap::Entry::operator=(Entry&&) noexcept = default;
++PolicyMap::Entry& PolicyMap::Entry::operator=(Entry&&) = default;
+ 
+ PolicyMap::Entry PolicyMap::Entry::DeepCopy() const {
+   Entry copy;
+--- chromium-70.0.3538.77/components/policy/core/common/policy_map.h.orig	2018-11-08 23:56:03.948231486 +0000
++++ chromium-70.0.3538.77/components/policy/core/common/policy_map.h	2018-11-08 23:56:35.908229442 +0000
+@@ -40,7 +40,7 @@
+     ~Entry();
+ 
+     Entry(Entry&&) noexcept;
+-    Entry& operator=(Entry&&) noexcept;
++    Entry& operator=(Entry&&);
+ 
+     // Returns a copy of |this|.
+     Entry DeepCopy() const;
+--- chromium-70.0.3538.77/components/signin/core/browser/account_info.h.orig	2018-11-09 00:03:20.709203557 +0000
++++ chromium-70.0.3538.77/components/signin/core/browser/account_info.h	2018-11-09 00:03:59.284201090 +0000
+@@ -20,7 +20,7 @@
+   AccountInfo(AccountInfo&& other) noexcept;
+ 
+   AccountInfo& operator=(const AccountInfo& other);
+-  AccountInfo& operator=(AccountInfo&& other) noexcept;
++  AccountInfo& operator=(AccountInfo&& other);
+ 
+   std::string account_id;  // The account ID used by OAuth2TokenService.
+   std::string gaia;
+--- chromium-70.0.3538.77/components/signin/core/browser/account_info.cc.orig	2018-11-09 00:03:15.789203871 +0000
++++ chromium-70.0.3538.77/components/signin/core/browser/account_info.cc	2018-11-09 00:03:52.644201514 +0000
+@@ -32,7 +32,7 @@
+ 
+ AccountInfo& AccountInfo::operator=(const AccountInfo& other) = default;
+ 
+-AccountInfo& AccountInfo::operator=(AccountInfo&& other) noexcept = default;
++AccountInfo& AccountInfo::operator=(AccountInfo&& other) = default;
+ 
+ bool AccountInfo::IsEmpty() const {
+   return account_id.empty() && email.empty() && gaia.empty() &&
diff --git a/chromium-browser-stable.rpmlintrc b/chromium-browser-stable.rpmlintrc
new file mode 100644
index 0000000..cc102ee
--- /dev/null
+++ b/chromium-browser-stable.rpmlintrc
@@ -0,0 +1,3 @@
+# False positive -- this is about libEGL.so and friends
+# symlinks in swiftshader
+addFilter("E: devel-file-in-non-devel-package")
diff --git a/chromium-browser-stable.spec b/chromium-browser-stable.spec
index 717939e..8e5826e 100644
--- a/chromium-browser-stable.spec
+++ b/chromium-browser-stable.spec
@@ -1,3 +1,12 @@
+%define channel stable
+%if "%{channel}" == "stable"
+%define namesuffix %{nil}
+%else
+%define namesuffix -%{channel}
+%endif
+
+%define _disable_ld_no_undefined 1
+
 # eol 'fix' corrupts some .bin files
 %define dont_fix_eol 1
 
@@ -5,9 +14,6 @@
 %define crname chromium-browser
 %define _crdir %{_libdir}/%{crname}
 %define _src %{_topdir}/SOURCES
-# Valid current basever numbers can be found at
-# http://omahaproxy.appspot.com/
-%define basever 58.0.3029.110
 %define	debug_package %nil
 
 %ifarch %ix86
@@ -22,16 +28,14 @@
 %define    google_default_client_secret RDdr-pHq2gStY4uw0m-zxXeo
 
 %bcond_with	plf
-# Chromium breaks on wayland, hidpi, and colors with gtk3 enabled.
-%bcond_with	gtk3
 # crisb - ozone causes a segfault on startup as of 57.0.2987.133
 %bcond_with	ozone
 %bcond_with	system_icu
 %bcond_without	system_ffmpeg
-%bcond_without	system_minizip
+# Temporarily broken, cr_z_* symbols used even when we're supposed to use system minizip
+%bcond_with	system_minizip
 # chromium 58 fails with system vpx 1.6.1
 %bcond_with	system_vpx
-%bcond_without	system_harfbuzz
 
 # Always support proprietary codecs
 # or html5 does not work
@@ -40,84 +44,136 @@
 %define distsuffix plf
 %endif
 
-Name: 		chromium-browser-stable
-Version: 	%basever
-Release: 	2%{?extrarelsuffix}
+Name: 		chromium-browser-%{channel}
+# Working version numbers can be found at
+# http://omahaproxy.appspot.com/
+Version: 	70.0.3538.102
+Release: 	1%{?extrarelsuffix}
 Summary: 	A fast webkit-based web browser
 Group: 		Networking/WWW
 License: 	BSD, LGPL
 # From : http://gsdview.appspot.com/chromium-browser-official/
-Source0: 	https://commondatastorage.googleapis.com/chromium-browser-official/chromium-%{basever}.tar.xz
+Source0: 	https://commondatastorage.googleapis.com/chromium-browser-official/chromium-%{version}.tar.xz
 Source1: 	chromium-wrapper
-Source2: 	chromium-browser.desktop
+Source2: 	chromium-browser%{namesuffix}.desktop
 Source3:	master_preferences
-
-%if %mdvver >= 201500
-# Don't use clang's integrated as while trying to check the version of gas
-#Patch4:		chromium-36.0.1985.143-clang-no-integrated-as.patch
-%endif
-
-#Patch20:	chromium-last-commit-position-r0.patch
+Source100:	%{name}.rpmlintrc
 
 ### Chromium Fedora Patches ###
-Patch0:         chromium-56.0.2924.87-gcc5.patch
-Patch1:         chromium-45.0.2454.101-linux-path-max.patch
-Patch2:         chromium-55.0.2883.75-addrfix.patch
-Patch4:         chromium-46.0.2490.71-notest.patch
+Patch0:         https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-67.0.3396.62-gcc5.patch
+Patch1:         https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-45.0.2454.101-linux-path-max.patch
+Patch2:         https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-55.0.2883.75-addrfix.patch
+Patch4:         https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-46.0.2490.71-notest.patch
+#Patch6:		https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-47.0.2526.80-pnacl-fgnu-inline-asm.patch
 # Ignore broken nacl open fd counter
-Patch7:         chromium-47.0.2526.80-nacl-ignore-broken-fd-counter.patch
+Patch7:         https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-47.0.2526.80-nacl-ignore-broken-fd-counter.patch
 # Use libusb_interrupt_event_handler from current libusbx (1.0.21-0.1.git448584a)
-Patch9:         chromium-48.0.2564.116-libusb_interrupt_event_handler.patch
+Patch9:         https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-48.0.2564.116-libusb_interrupt_event_handler.patch
 # Ignore deprecations in cups 2.2
 # https://bugs.chromium.org/p/chromium/issues/detail?id=622493
-Patch12:        chromium-55.0.2883.75-cups22.patch
-# Add ICU Text Codec aliases (from openSUSE via Russian Fedora)
-Patch14:        chromium-55.0.2883.75-more-codec-aliases.patch
+Patch12:        https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-55.0.2883.75-cups22.patch
 # Use PIE in the Linux sandbox (from openSUSE via Russian Fedora)
-Patch15:        chromium-55.0.2883.75-sandbox-pie.patch
+Patch15:        https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-70.0.3538.67-sandbox-pie.patch
 # Enable ARM CPU detection for webrtc (from archlinux via Russian Fedora)
-Patch16:        chromium-52.0.2743.82-arm-webrtc.patch
+#Patch16:        chromium-52.0.2743.82-arm-webrtc.patch
 # Use /etc/chromium for master_prefs
-Patch18:        chromium-52.0.2743.82-master-prefs-path.patch
+Patch18:        https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-52.0.2743.82-master-prefs-path.patch
 # Use gn system files
-Patch20:        chromium-54.0.2840.59-gn-system.patch
+Patch20:        https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-67.0.3396.62-gn-system.patch
 # Fix last commit position issue
 # https://groups.google.com/a/chromium.org/forum/#!topic/gn-dev/7nlJv486bD4
-Patch21:        chromium-53.0.2785.92-last-commit-position.patch
+# Patch21:        https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-60.0.3112.78-last-commit-position.patch
 # Fix issue where timespec is not defined when sys/stat.h is included.
-Patch22:        chromium-53.0.2785.92-boringssl-time-fix.patch
+Patch22:        https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-53.0.2785.92-boringssl-time-fix.patch
 # I wouldn't have to do this if there was a standard way to append extra compiler flags
-Patch24:        chromium-54.0.2840.59-nullfix.patch
+Patch24:        https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-59.0.3071.86-nullfix.patch
 # Add explicit includedir for jpeglib.h
-Patch25:        chromium-54.0.2840.59-jpeg-include-dir.patch
+Patch25:        https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-54.0.2840.59-jpeg-include-dir.patch
 # On i686, pass --no-keep-memory --reduce-memory-overheads to ld.
-Patch26:        chromium-54.0.2840.59-i686-ld-memory-tricks.patch
-# obj/content/renderer/renderer/child_frame_compositing_helper.o: In function `content::ChildFrameCompositingHelper::OnSetSurface(cc::SurfaceId const&, gfx::Size const&, float, cc::SurfaceSequence const&)':
-# /builddir/build/BUILD/chromium-54.0.2840.90/out/Release/../../content/renderer/child_frame_compositing_helper.cc:214: undefined reference to `cc_blink::WebLayerImpl::setOpaque(bool)'
-Patch27:        chromium-54.0.2840.90-setopaque.patch
-# Use -fpermissive to build WebKit
-Patch31:        chromium-56.0.2924.87-fpermissive.patch
-# Fix issue with compilation on gcc7
-# Thanks to Ben Noordhuis
-Patch33:        chromium-56.0.2924.87-gcc7.patch
+Patch26:        https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-59.0.3071.86-i686-ld-memory-tricks.patch
+Patch32:	https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-69.0.3497.81-norar.patch
+Patch33:	chromium-50-system-ffmpeg-3.patch
+Patch36:	https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-58.0.3029.96-revert-b794998819088f76b4cf44c8db6940240c563cf4.patch
+# Correctly compile the stdatomic.h in ffmpeg with gcc 4.8
+Patch37:	https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-64.0.3282.119-ffmpeg-stdatomic.patch
+# Nacl can't die soon enough
+Patch39:	https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-66.0.3359.117-system-clang.patch
+# Do not prefix libpng functions
+Patch42:	https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-60.0.3112.78-no-libpng-prefix.patch
+# Do not mangle libjpeg
+Patch43:	https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-60.0.3112.78-jpeg-nomangle.patch
+# Do not mangle zlib
+Patch45:	https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-60.0.3112.78-no-zlib-mangle.patch
+# Apply these changes to work around EPEL7 compiler issues
+Patch46:	https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-62.0.3202.62-kmaxskip-constexpr.patch
+#Patch47:	https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-60.0.3112.90-vulkan-force-c99.patch
+# Fix libavutil include pathing to find arch specific timer.h
+# For some reason, this only fails on aarch64. No idea why.
+Patch50:	https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-60.0.3112.113-libavutil-timer-include-path-fix.patch
+# from gentoo
+Patch53:	https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-61.0.3163.79-gcc-no-opt-safe-math.patch
+# Only needed when glibc 2.26.90 or later is used
+Patch57:	https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-63.0.3289.84-aarch64-glibc-2.26.90.patch
+# From gentoo
+Patch62:	https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-66.0.3359.117-gcc5-r3.patch
+# Do not try to use libc++ in the remoting stack
+# Patch63:	chromium-63.0.3289.84-nolibc++.patch
+# To use round with gcc, you need to #include <cmath>
+Patch65:	https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-65.0.3325.146-gcc-round-fix.patch
+# Include proper headers to invoke memcpy()
+Patch67:	https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-65.0.3325.146-memcpy-fix.patch
+# From Debian
+Patch86:	https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-67.0.3396.62-skia-aarch64-buildfix.patch
+# Use lstdc++ on EPEL7 only
+Patch87:	https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-65.0.3325.162-epel7-stdc++.patch
+# Missing files in tarball
+Patch88:	https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-66.0.3359.117-missing-files.patch
+# https://chromium.googlesource.com/chromium/src/+/ba4141e451f4e0b1b19410b1b503bd32e150df06%5E%21/#F0
+# Patch89:	chromium-66.0.3359.117-gcc-optional-move-fixes.patch
+# https://chromium.googlesource.com/chromium/src/+/4f2b52281ce1649ea8347489443965ad33262ecc%5E%21
+# Patch90:	chromium-66.0.3359.117-gcc-copy-constructor-fix.patch
+# https://bugs.chromium.org/p/chromium/issues/detail?id=816952
+# Patch91:	chromium-66.0.3359.117-gcc-vector-copy-constructor-fix.patch
+Patch94:	https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-66.0.3359.117-GCC-fully-declare-ConfigurationPolicyProvider.patch
+# Patch95:	chromium-65.0.3325.146-GCC-IDB-methods-String-renamed-to-GetString.patch
+# https://github.com/archlinuxarm/PKGBUILDs/blob/master/extra/chromium/0006-GCC-do-not-use-initializer-list-for-NoDestructor-of-.patch
+# Patch96:	chromium-66.0.3359.117-GCC-do-not-use-initializer-list-for-NoDestructor-of-.patch
+# https://chromium.googlesource.com/chromium/src/+/b84682f31dc99b9c90f5a04947075815697c68d9%5E%21/#F0
+# Patch97:	chromium-66.0.3359.139-arm-init-fix.patch
+# GCC8 has changed the alignof operator to return the minimal alignment required by the target ABI
+# instead of the preferred alignment. This means int64_t is now 4 on i686 (instead of 8).
+# Use __alignof__ to get the value we expect (and chromium checks for).
+Patch98:	https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-69.0.3497.81-gcc8-alignof.patch
+# Don't build in a Debian chroot
+Patch99:	https://src.fedoraproject.org/rpms/chromium/raw/master/f/chromium-69.0.3497.81-build-sanely-please.patch
+
+Patch100: 	chromium-gcc8-r589614.patch
+Patch101:	chromium-gcc8-r591015.patch
+Patch102:	chromium-gcc8-r588316.patch
+Patch103:	chromium-gcc8-r588547.patch
 
 ### Chromium Tests Patches ###
-Patch100:       chromium-46.0.2490.86-use_system_opus.patch
-Patch101:       chromium-55.0.2883.75-use_system_harfbuzz.patch
-
 # suse, system libs
-Patch103:	arm_use_right_compiler.patch
-Patch104:	chromium-system-ffmpeg-r3.patch
-Patch105:	chromium-system-jinja-r13.patch
+Patch200:	arm_use_right_compiler.patch
+# Gentoo, fix widevine
+Patch201:	https://gitweb.gentoo.org/repo/gentoo.git/plain/www-client/chromium/files/chromium-widevine-r2.patch
+# Arch Linux, fix for compile error with system ICU
+Patch202:	https://raw.githubusercontent.com/archlinuxarm/PKGBUILDs/master/extra/chromium/chromium-system-icu.patch
 
 # mga
-Patch111:	chromium-55-extra-media.patch
-Patch112:	chromium-40-wmvflvmpg.patch
-Patch114:	chromium-55-flac.patch
+Patch300:	chromium-69-extra-media.patch
+Patch301:	chromium-69-wmvflvmpg.patch
+Patch302:	chromium-55-flac.patch
+
+# omv
+Patch500:	chromium-59-clang-workaround.patch
+Patch501:	chromium-64-system-curl.patch
+Patch502:	chromium-69-no-static-libstdc++.patch
+Patch503:	revert-Xclang-instcombine-lower-dbg-declare.patch
+Patch504:	chromium-70.0.3538.77-gcc7.patch
 
-# arch
-# fix gn build
-Patch120:	chromium-gn-bootstrap-r2.patch
+# fixed upstream
+Patch505:	chromium-70.0.3538.102-sysroot.patch
 
 Provides: 	%{crname}
 Obsoletes: 	chromium-browser-unstable < 26.0.1410.51
@@ -128,24 +184,25 @@ BuildRequires: 	bison
 BuildRequires: 	re2c
 BuildRequires: 	flex
 #BuildRequires: 	v8-devel
+BuildRequires:	pkgconfig(alsa)
+BuildRequires:	pkgconfig(krb5)
+BuildRequires:	pkgconfig(re2)
+BuildRequires:	pkgconfig(com_err)
 BuildRequires: 	alsa-oss-devel
-%if %mdvver >= 201500
 BuildRequires:	atomic-devel
 BuildRequires:	harfbuzz-devel
-%else
-BuildRequires:	%{_lib}atomic1
-%endif
 BuildRequires:  pkgconfig(icu-i18n)
 BuildRequires: 	snappy-devel
 BuildRequires: 	jsoncpp-devel
 BuildRequires: 	pkgconfig(expat)
 BuildRequires: 	pkgconfig(glib-2.0)
-BuildRequires:	pkgconfig(re2)
 BuildRequires: 	pkgconfig(wayland-egl)
 BuildRequires: 	pkgconfig(nss)
 BuildRequires: 	bzip2-devel
 BuildRequires: 	jpeg-devel
 BuildRequires: 	pkgconfig(libpng)
+BuildRequires:	pkgconfig(libcurl)
+BuildRequires:	clang lld
 %if %{with system_ffmpeg}
 BuildRequires:  pkgconfig(libavcodec)
 BuildRequires:  pkgconfig(libavfilter)
@@ -180,6 +237,7 @@ BuildRequires: 	pkgconfig(flac)
 BuildRequires: 	pkgconfig(opus)
 BuildRequires: 	pkgconfig(libwebp)
 BuildRequires: 	pkgconfig(speex)
+BuildRequires:	pkgconfig(lcms2)
 %if %{with system_minizip}
 BuildRequires: 	pkgconfig(minizip)
 %endif
@@ -189,11 +247,7 @@ BuildRequires: 	pkgconfig(libusb-1.0)
 BuildRequires:  speech-dispatcher-devel
 BuildRequires:  pkgconfig(libpci)
 BuildRequires:	pkgconfig(libexif)
-%if %mdvver >= 201500
 BuildRequires:	python2
-%else
-BuildRequires:	python
-%endif
 BuildRequires:	ninja
 BuildRequires:	nodejs
 BuildRequires:	python2-markupsafe
@@ -211,6 +265,7 @@ browser which is updated with features and fixes once they have been
 thoroughly tested. If you want the latest features, install the
 chromium-browser-dev package instead.
 
+%if "%{channel}" == "stable"
 %package -n chromium-browser
 Summary: 	A fast webkit-based web browser (transition package)
 Epoch: 		1
@@ -224,14 +279,15 @@ technology to make the web faster, safer, and easier.
 This is a transition package that installs the stable channel Chromium
 browser. If you prefer the dev channel browser, install the
 chromium-browser-dev package instead.
+%endif
 
-%package -n chromedriver
-Summary:        WebDriver for Google Chrome/Chromium
-Group:          Development/Other
-Requires:       %{name} = %{version}-%{release}
+%package -n chromedriver%{namesuffix}
+Summary:	WebDriver for Google Chrome/Chromium
+Group:		Development/Other
+Requires:	%{name} = %{version}-%{release}
 
 
-%description -n chromedriver
+%description -n chromedriver%{namesuffix}
 WebDriver is an open source tool for automated testing of webapps across many
 browsers. It provides capabilities for navigating to web pages, user input,
 JavaScript execution, and more. ChromeDriver is a standalone server which
@@ -240,13 +296,16 @@ members of the Chromium and WebDriver teams.
 
 
 %prep
-%setup -q -n chromium-%{basever}
+%setup -q -n chromium-%{version}
 %apply_patches
 
 rm -rf third_party/binutils/
 
 echo "%{revision}" > build/LASTCHANGE.in
 
+sed -i 's!-nostdlib++!!g'  build/config/posix/BUILD.gn
+sed -i 's!ffmpeg_buildflags!ffmpeg_features!g' build/linux/unbundle/ffmpeg.gn
+ 
 # Hard code extra version
 FILE=chrome/common/channel_info_posix.cc
 sed -i.orig -e 's/getenv("CHROME_VERSION_EXTRA")/"%{product_vendor} %{product_version}"/' $FILE
@@ -261,153 +320,199 @@ mkdir -p third_party/node/linux/node-linux-x64/bin
 ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/
 
 # Remove bundled libs
-keeplibs=(
-    base/third_party/dmg_fp
-    base/third_party/dynamic_annotations
-    base/third_party/nspr
-    base/third_party/icu
-    base/third_party/superfasthash
-    base/third_party/symbolize
-    base/third_party/valgrind
-    base/third_party/xdg_mime
-    base/third_party/xdg_user_dirs
-    breakpad/src/third_party/curl
-    chrome/third_party/mozilla_security_manager
-    courgette/third_party
-    net/third_party/mozilla_security_manager
-    net/third_party/nss
-    third_party/WebKit
-    third_party/wayland
-    third_party/analytics
-    third_party/angle
-    third_party/angle/src/common/third_party/numerics
-    third_party/angle/src/third_party/compiler
-    third_party/angle/src/third_party/libXNVCtrl
-    third_party/angle/src/third_party/murmurhash
-    third_party/angle/src/third_party/trace_event
-    third_party/boringssl
-    third_party/brotli
-    third_party/cacheinvalidation
-    third_party/catapult
-    third_party/catapult/third_party/polymer
-    third_party/catapult/third_party/py_vulcanize
-    third_party/catapult/third_party/py_vulcanize/third_party/rcssmin
-    third_party/catapult/third_party/py_vulcanize/third_party/rjsmin
-    third_party/catapult/tracing/third_party/d3
-    third_party/catapult/tracing/third_party/gl-matrix
-    third_party/catapult/tracing/third_party/jszip
-    third_party/catapult/tracing/third_party/mannwhitneyu
-    third_party/ced
-    third_party/cld_2
-    third_party/cld_3
-    third_party/cros_system_api
-    third_party/devscripts
-    third_party/dom_distiller_js
-    third_party/fips181
-    third_party/flatbuffers
-    third_party/flot
-    third_party/google_input_tools
-    third_party/google_input_tools/third_party/closure_library
-    third_party/google_input_tools/third_party/closure_library/third_party/closure
-    third_party/hunspell
-    third_party/iccjpeg
-    third_party/inspector_protocol
-    third_party/jstemplate
-    third_party/khronos
-    third_party/leveldatabase
-    third_party/libXNVCtrl
-    third_party/libaddressinput
-    third_party/libjingle
-    third_party/libphonenumber
-    third_party/libsecret
-    third_party/libsrtp
-    third_party/libudev
-    third_party/libusb
-    third_party/libwebm
-    third_party/libxml/chromium
-    third_party/libyuv
-    third_party/lss
-    third_party/lzma_sdk
-    third_party/mesa
-    third_party/modp_b64
-    third_party/mt19937ar
-    third_party/node
-    third_party/node/node_modules/vulcanize/third_party/UglifyJS2
-    third_party/openh264
-    third_party/openmax_dl
-    third_party/opus
-    third_party/ots
-    third_party/pdfium
-    third_party/pdfium/third_party/agg23
-    third_party/pdfium/third_party/base
-    third_party/pdfium/third_party/bigint
-    third_party/pdfium/third_party/freetype
-    third_party/pdfium/third_party/lcms2-2.6
-    third_party/pdfium/third_party/libjpeg
-    third_party/pdfium/third_party/libopenjpeg20
-    third_party/pdfium/third_party/libpng16
-    third_party/pdfium/third_party/libtiff
-    third_party/pdfium/third_party/zlib_v128
-    third_party/polymer
-    third_party/protobuf
-    third_party/protobuf/third_party/six
-    third_party/qcms
-    third_party/sfntly
-    third_party/skia
-    third_party/smhasher
-    third_party/sqlite
-    third_party/tcmalloc
-    third_party/usrsctp
-    third_party/web-animations-js
-    third_party/webdriver
-    third_party/webrtc
-    third_party/widevine
-    third_party/woff2
-    third_party/x86inc
-    third_party/zlib/google
-    url/third_party/mozilla
-    v8/src/third_party/valgrind
-    v8/third_party/inspector_protocol
-    third_party/libva
-    third_party/yasm
-    third_party/jinja2
-    third_party/markupsafe
-    third_party/simplejson
-    third_party/ply
-    third_party/catapult/third_party/beautifulsoup4
-    third_party/catapult/third_party/html5lib-python
-    third_party/catapult/third_party/six
-)
-
-%if !%{with system_minizip}
-keeplibs+=( third_party/zlib )
-%endif
-%if !%{with system_icu}
-keeplibs+=( third_party/icu )
-%endif
-%if !%{with system_vpx}
-keeplibs+=(
-    third_party/libvpx
-    third_party/libvpx/source/libvpx/third_party/x86inc
-)
-%endif
-%if !%{with system_ffmpeg}
-keeplibs+=( third_party/ffmpeg )
-%endif
-%if !%{with system_harfbuzz}
-keeplibs+=( third_party/harfbuzz-ng )
-%endif
-# needed due to bugs in GN
-keeplibs+=(
-    base/third_party/libevent
-    third_party/adobe
-    third_party/speech-dispatcher
-    third_party/usb_ids
-    third_party/xdg-utils
-    third_party/yasm/run_yasm.py
-)
-python2 build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove
-
+python2 build/linux/unbundle/remove_bundled_libraries.py \
+	'buildtools/third_party/libc++' \
+	'buildtools/third_party/libc++abi' \
+	'base/third_party/dmg_fp' \
+	'base/third_party/dynamic_annotations' \
+	'base/third_party/icu' \
+	'base/third_party/libevent' \
+	'base/third_party/nspr' \
+	'base/third_party/superfasthash' \
+	'base/third_party/symbolize' \
+	'base/third_party/valgrind' \
+	'base/third_party/xdg_mime' \
+	'base/third_party/xdg_user_dirs' \
+	'chrome/third_party/mozilla_security_manager' \
+	'courgette/third_party' \
+	'net/third_party/http2' \
+	'net/third_party/mozilla_security_manager' \
+	'net/third_party/nss' \
+	'net/third_party/quic' \
+	'net/third_party/spdy' \
+        'net/third_party/uri_template' \
+	'third_party/WebKit' \
+	'third_party/abseil-cpp' \
+	'third_party/adobe' \
+	'third_party/analytics' \
+	'third_party/angle' \
+	'third_party/angle/src/common/third_party/base' \
+	'third_party/angle/src/common/third_party/smhasher' \
+	'third_party/angle/src/third_party/compiler' \
+	'third_party/angle/src/third_party/libXNVCtrl' \
+	'third_party/angle/src/third_party/trace_event' \
+	'third_party/angle/third_party/glslang' \
+	'third_party/angle/third_party/spirv-headers' \
+	'third_party/angle/third_party/spirv-tools' \
+	'third_party/angle/third_party/vulkan-headers' \
+	'third_party/angle/third_party/vulkan-loader' \
+	'third_party/angle/third_party/vulkan-tools' \
+	'third_party/angle/third_party/vulkan-validation-layers' \
+	'third_party/apple_apsl' \
+	'third_party/blanketjs' \
+	'third_party/blink' \
+	'third_party/boringssl' \
+	'third_party/boringssl/src/third_party/fiat' \
+	'third_party/breakpad' \
+	'third_party/breakpad/breakpad/src/third_party/curl' \
+	'third_party/brotli' \
+	'third_party/cacheinvalidation' \
+	'third_party/catapult' \
+	'third_party/catapult/common/py_vulcanize/third_party/rcssmin' \
+	'third_party/catapult/common/py_vulcanize/third_party/rjsmin' \
+	'third_party/catapult/third_party/beautifulsoup4' \
+	'third_party/catapult/third_party/html5lib-python' \
+	'third_party/catapult/third_party/polymer' \
+	'third_party/catapult/third_party/six' \
+	'third_party/catapult/tracing/third_party/d3' \
+	'third_party/catapult/tracing/third_party/gl-matrix' \
+	'third_party/catapult/tracing/third_party/jszip' \
+	'third_party/catapult/tracing/third_party/mannwhitneyu' \
+	'third_party/catapult/tracing/third_party/oboe' \
+	'third_party/catapult/tracing/third_party/pako' \
+        'third_party/ced' \
+	'third_party/cld_3' \
+	'third_party/crashpad' \
+	'third_party/crashpad/crashpad/third_party/zlib/' \
+	'third_party/crc32c' \
+	'third_party/cros_system_api' \
+	'third_party/devscripts' \
+	'third_party/dom_distiller_js' \
+	'third_party/expat' \
+	'third_party/ffmpeg' \
+	'third_party/fips181' \
+	'third_party/flac' \
+        'third_party/flatbuffers' \
+	'third_party/flot' \
+	'third_party/fontconfig' \
+	'third_party/freetype' \
+	'third_party/glslang-angle' \
+	'third_party/google_input_tools' \
+	'third_party/google_input_tools/third_party/closure_library' \
+	'third_party/google_input_tools/third_party/closure_library/third_party/closure' \
+	'third_party/googletest' \
+	'third_party/harfbuzz-ng' \
+	'third_party/hunspell' \
+	'third_party/iccjpeg' \
+	'third_party/icu' \
+	'third_party/inspector_protocol' \
+	'third_party/jinja2' \
+	'third_party/jstemplate' \
+	'third_party/khronos' \
+	'third_party/leveldatabase' \
+	'third_party/libXNVCtrl' \
+	'third_party/libaddressinput' \
+	'third_party/libaom' \
+        'third_party/libaom/source/libaom/third_party/vector' \
+        'third_party/libaom/source/libaom/third_party/x86inc' \
+	'third_party/libdrm' \
+	'third_party/libjingle' \
+	'third_party/libjpeg_turbo' \
+	'third_party/libphonenumber' \
+	'third_party/libpng' \
+	'third_party/libsecret' \
+        'third_party/libsrtp' \
+	'third_party/libsync' \
+	'third_party/libudev' \
+	'third_party/libusb' \
+	'third_party/libvpx' \
+	'third_party/libvpx/source/libvpx/third_party/x86inc' \
+	'third_party/libxml' \
+	'third_party/libxml/chromium' \
+	'third_party/libxslt' \
+	'third_party/libwebm' \
+	'third_party/libwebp' \
+	'third_party/libyuv' \
+	'third_party/llvm-build' \
+	'third_party/lss' \
+	'third_party/lzma_sdk' \
+	'third_party/markupsafe' \
+	'third_party/mesa' \
+	'third_party/metrics_proto' \
+	'third_party/modp_b64' \
+	'third_party/node' \
+	'third_party/node/node_modules/polymer-bundler/lib/third_party/UglifyJS2' \
+	'third_party/openh264' \
+	'third_party/openmax_dl' \
+	'third_party/opus' \
+	'third_party/ots' \
+	'third_party/pdfium' \
+	'third_party/pdfium/third_party/agg23' \
+	'third_party/pdfium/third_party/base' \
+	'third_party/pdfium/third_party/bigint' \
+	'third_party/pdfium/third_party/freetype' \
+	'third_party/pdfium/third_party/lcms' \
+	'third_party/pdfium/third_party/libopenjpeg20' \
+        'third_party/pdfium/third_party/libpng16' \
+        'third_party/pdfium/third_party/libtiff' \
+	'third_party/pdfium/third_party/skia_shared' \
+	'third_party/perfetto' \
+        'third_party/ply' \
+	'third_party/polymer' \
+	'third_party/protobuf' \
+	'third_party/protobuf/third_party/six' \
+	'third_party/pyjson5' \
+	'third_party/qcms' \
+	'third_party/qunit' \
+	'third_party/re2' \
+	'third_party/rnnoise' \
+	'third_party/s2cellid' \
+	'third_party/sfntly' \
+	'third_party/simplejson' \
+	'third_party/sinonjs' \
+	'third_party/skia' \
+	'third_party/skia/third_party/gif' \
+	'third_party/skia/third_party/skcms' \
+	'third_party/skia/third_party/vulkan' \
+	'third_party/smhasher' \
+	'third_party/snappy' \
+	'third_party/speech-dispatcher' \
+	'third_party/spirv-headers' \
+	'third_party/spirv-tools-angle' \
+	'third_party/sqlite' \
+	'third_party/swiftshader' \
+	'third_party/swiftshader/third_party/subzero' \
+	'third_party/swiftshader/third_party/LLVM' \
+	'third_party/swiftshader/third_party/llvm-subzero' \
+	'third_party/tcmalloc' \
+	'third_party/test_fonts' \
+        'third_party/usb_ids' \
+	'third_party/usrsctp' \
+	'third_party/vulkan' \
+	'third_party/vulkan-validation-layers' \
+	'third_party/web-animations-js' \
+	'third_party/webdriver' \
+	'third_party/webrtc' \
+        'third_party/webrtc/common_audio/third_party/fft4g' \
+        'third_party/webrtc/common_audio/third_party/spl_sqrt_floor' \
+        'third_party/webrtc/modules/third_party/fft' \
+        'third_party/webrtc/modules/third_party/g711' \
+        'third_party/webrtc/modules/third_party/g722' \
+        'third_party/webrtc/rtc_base/third_party/base64' \
+        'third_party/webrtc/rtc_base/third_party/sigslot' \
+	'third_party/widevine' \
+        'third_party/woff2' \
+        'third_party/xdg-utils' \
+        'third_party/yasm' \
+        'third_party/zlib' \
+	'third_party/zlib/google' \
+	'tools/gn/base/third_party/icu' \
+	'url/third_party/mozilla' \
+	'v8/src/third_party/utf8-decoder' \
+	'v8/src/third_party/valgrind' \
+	'v8/third_party/v8' \
+	'v8/third_party/inspector_protocol' \
+	--do-remove
 
 # Look, I don't know. This package is spit and chewing gum. Sorry.
 rm -rf third_party/markupsafe
@@ -416,11 +521,11 @@ ln -s %{python2_sitearch}/markupsafe third_party/markupsafe
 
 # workaround build failure
 if [ ! -f chrome/test/data/webui/i18n_process_css_test.html ]; then
-    touch chrome/test/data/webui/i18n_process_css_test.html
+	touch chrome/test/data/webui/i18n_process_css_test.html
 fi
 
 %build
-%ifarch %{arm}
+%ifarch %{arm} %{ix86}
 # Use linker flags to reduce memory consumption on low-mem architectures
 %global optflags %(echo %{optflags} | sed -e 's/-g /-g0 /' -e 's/-gdwarf-4//')
 mkdir -p bfd
@@ -430,100 +535,98 @@ export PATH=$PWD/bfd:$PATH
 %global ldflags %{ldflags} -fuse-ld=bfd -Wl,--no-keep-memory -Wl,--reduce-memory-overheads
 %endif
 
-%if %mdvver >= 201500
-%ifarch %arm
 export CC=gcc
 export CXX=g++
-%else
-export CC=clang
-export CXX=clang++
-%endif
-%else
-export CC=gcc
-export CXX=g++
-%endif
 
 # gn is rather convoluted and not python3 friendly -- let's make
 # sure it sees python2 when it calls python
 export PATH=`pwd`:$PATH
 
-myconf_gn=" use_sysroot=false is_debug=false use_gold=true"
-%if %mdvver >= 201500
-%ifarch %arm
-myconf_gn+=" is_clang=false"
-%else
-myconf_gn+=" is_clang=true clang_base_path=\"/usr\" clang_use_chrome_plugins=false"
-%endif
+CHROMIUM_CORE_GN_DEFINES=" use_sysroot=false is_debug=false fieldtrial_testing_like_official_build=true use_lld=false"
+%ifarch %{ix86}
+CHROMIUM_CORE_GN_DEFINES+=" use_gold=false"
 %else
-myconf_gn+=" is_clang=false"
-%endif
-
-myconf_gn+=" treat_warnings_as_errors=false"
-myconf_gn+=" use_system_libjpeg=true "
-%if %mdvver >= 201500
-#myconf_gn+=" use_system_harfbuzz=true "
-%endif
-myconf_gn+=" use_gnome_keyring=false "
-myconf_gn+=" fatal_linker_warnings=false "
-myconf_gn+=" system_libdir=\"%{_lib}\""
-myconf_gn+=" use_allocator=\"none\""
-myconf_gn+=" use_aura=true "
-myconf_gn+=" use_gconf=false"
-myconf_gn+=" icu_use_data_file=true"
-%if %{with gtk3}
-myconf_gn+=" use_gtk3=true "
-%else
-myconf_gn+=" use_gtk3=false "
+CHROMIUM_CORE_GN_DEFINES+=" use_gold=true"
 %endif
+CHROMIUM_CORE_GN_DEFINES+=" is_clang=false clang_base_path=\"%{_prefix}\" clang_use_chrome_plugins=false "
+CHROMIUM_CORE_GN_DEFINES+=" treat_warnings_as_errors=false use_custom_libcxx=false "
+CHROMIUM_CORE_GN_DEFINES+=" use_system_libjpeg=true "
+CHROMIUM_CORE_GN_DEFINES+=" use_system_lcms2=true "
+CHROMIUM_CORE_GN_DEFINES+=" use_system_libpng=true "
+CHROMIUM_CORE_GN_DEFINES+=" use_system_harfbuzz=true "
+CHROMIUM_CORE_GN_DEFINES+=" use_gnome_keyring=false "
+CHROMIUM_CORE_GN_DEFINES+=" fatal_linker_warnings=false "
+CHROMIUM_CORE_GN_DEFINES+=" system_libdir=\"%{_lib}\""
+CHROMIUM_CORE_GN_DEFINES+=" use_allocator=\"none\""
+CHROMIUM_CORE_GN_DEFINES+=" use_aura=true "
+#CHROMIUM_CORE_GN_DEFINES+=" use_gio=true"
+CHROMIUM_CORE_GN_DEFINES+=" icu_use_data_file=true"
 %if %{with ozone}
-myconf_gn+=" use_ozone=true "
+CHROMIUM_CORE_GN_DEFINES+=" use_ozone=true "
 %endif
-myconf_gn+=" enable_nacl=false "
-myconf_gn+=" proprietary_codecs=true "
-myconf_gn+=" ffmpeg_branding=\"Chrome\" "
-myconf_gn+=" enable_ac3_eac3_audio_demuxing=true "
-myconf_gn+=" enable_hevc_demuxing=true "
-myconf_gn+=" enable_mse_mpeg2ts_stream_parser=true "
-%ifarch i586
-myconf_gn+=" target_cpu=\"x86\""
+CHROMIUM_CORE_GN_DEFINES+=" enable_nacl=false "
+CHROMIUM_CORE_GN_DEFINES+=" proprietary_codecs=true "
+CHROMIUM_CORE_GN_DEFINES+=" ffmpeg_branding=\"ChromeOS\" "
+CHROMIUM_CORE_GN_DEFINES+=" enable_ac3_eac3_audio_demuxing=true "
+CHROMIUM_CORE_GN_DEFINES+=" enable_hevc_demuxing=true "
+CHROMIUM_CORE_GN_DEFINES+=" enable_mse_mpeg2ts_stream_parser=true "
+%ifarch %{ix86}
+CHROMIUM_CORE_GN_DEFINES+=" target_cpu=\"x86\""
 %endif
-%ifarch x86_64
-myconf_gn+=" target_cpu=\"x64\""
+%ifarch %{x86_64}
+CHROMIUM_CORE_GN_DEFINES+=" target_cpu=\"x64\""
 %endif
-%ifarch %arm
-myconf_gn+=" target_cpu=\"arm\""
-myconf_gn+=" remove_webcore_debug_symbols=true"
-myconf_gn+=" rtc_build_with_neon=true"
+%ifarch %{arm}
+CHROMIUM_CORE_GN_DEFINES+=" target_cpu=\"arm\""
+CHROMIUM_CORE_GN_DEFINES+=" remove_webcore_debug_symbols=true"
+CHROMIUM_CORE_GN_DEFINES+=" rtc_build_with_neon=true"
 %endif
-%ifarch aarch64
-myconf_gn+=" target_cpu=\"arm64\""
+%ifarch %{aarch64}
+CHROMIUM_CORE_GN_DEFINES+=" target_cpu=\"arm64\""
 %endif
-myconf_gn+=" google_api_key=\"%{google_api_key}\""
-myconf_gn+=" google_default_client_id=\"%{google_default_client_id}\""
-myconf_gn+=" google_default_client_secret=\"%{google_default_client_secret}\""
+CHROMIUM_CORE_GN_DEFINES+=" google_api_key=\"%{google_api_key}\""
+CHROMIUM_CORE_GN_DEFINES+=" google_default_client_id=\"%{google_default_client_id}\""
+CHROMIUM_CORE_GN_DEFINES+=" google_default_client_secret=\"%{google_default_client_secret}\""
+CHROMIUM_CORE_GN_DEFINES+=' use_jumbo_build=true jumbo_file_merge_limit=4'
+
+CHROMIUM_BROWSER_GN_DEFINES="use_pulseaudio=true icu_use_data_file=true"
+CHROMIUM_BROWSER_GN_DEFINES+=" enable_nacl=false"
+CHROMIUM_BROWSER_GN_DEFINES+=" is_component_ffmpeg=true is_component_build=true"
+CHROMIUM_BROWSER_GN_DEFINES+=" enable_hangout_services_extension=true"
+CHROMIUM_BROWSER_GN_DEFINES+=" use_aura=true"
+CHROMIUM_BROWSER_GN_DEFINES+=" enable_widevine=true"
+CHROMIUM_BROWSER_GN_DEFINES+=" enable_webrtc=true"
+
+CHROMIUM_HEADLESS_GN_DEFINES=' use_ozone=true ozone_auto_platforms=false ozone_platform="headless" ozone_platform_headless=true'
+CHROMIUM_HEADLESS_GN_DEFINES+=' headless_use_embedded_resources=true icu_use_data_file=false v8_use_external_startup_data=false'
+CHROMIUM_HEADLESS_GN_DEFINES+=' enable_nacl=false enable_print_preview=false enable_remoting=false use_alsa=false'
+CHROMIUM_HEADLESS_GN_DEFINES+=' use_cups=false use_dbus=false use_gio=false use_kerberos=false use_libpci=false'
+CHROMIUM_HEADLESS_GN_DEFINES+=' use_pulseaudio=false use_udev=false'
 
-# Set system libraries to be used
 gn_system_libraries="
     flac
+    fontconfig
+    freetype
+    harfbuzz-ng
+    libdrm
     libjpeg
-    libpng
-    libwebp
     libusb
+    libevent
+    libwebp
     libxml
     libxslt
     re2
     snappy
     yasm
 "
+#    libpng
+#    opus
 # cb - chrome 58
 # libevent as system lib causes some hanging issues particularly with extensions
 
 %if %{with system_minizip}
 gn_system_libraries+=" zlib"
 %endif
-%if %{with system_harfbuzz}
-gn_system_libraries+=" harfbuzz-ng"
-%endif
 %if %{with system_icu}
 gn_system_libraries+=" icu"
 %endif
@@ -535,11 +638,11 @@ gn_system_libraries+=" ffmpeg"
 %endif
 python2 build/linux/unbundle/replace_gn_files.py --system-libraries ${gn_system_libraries}
 
-python2 tools/gn/bootstrap/bootstrap.py -v --gn-gen-args "${myconf_gn}"
+python2 tools/gn/bootstrap/bootstrap.py -v "${CHROMIUM_CORE_GN_DEFINES} ${CHROMIUM_BROWSER_GN_DEFILES}"
 
 python2 third_party/libaddressinput/chromium/tools/update-strings.py
 
-out/Release/gn gen --args="${myconf_gn}" out/Release
+out/Release/gn gen --args="${CHROMIUM_CORE_GN_DEFINES}" out/Release
 
 # Note: DON'T use system sqlite (3.7.3) -- it breaks history search
 # As of 36.0.1985.143, use_system_icu breaks the build.
@@ -557,11 +660,11 @@ install -m 755 %{SOURCE1} %{buildroot}%{_libdir}/%{name}/
 install -m 755 out/Release/chrome %{buildroot}%{_libdir}/%{name}/
 install -m 4755 out/Release/chrome_sandbox %{buildroot}%{_libdir}/%{name}/chrome-sandbox
 cp -a out/Release/chromedriver %{buildroot}%{_libdir}/%{name}/chromedriver
-install -m 644 out/Release/chrome.1 %{buildroot}%{_mandir}/man1/%{name}.1
 install -m 644 out/Release/locales/*.pak %{buildroot}%{_libdir}/%{name}/locales/
 install -m 644 out/Release/chrome_100_percent.pak %{buildroot}%{_libdir}/%{name}/
 install -m 644 out/Release/resources.pak %{buildroot}%{_libdir}/%{name}/
-install -m 644 out/Release/icudtl.dat %{buildroot}%{_libdir}/%{name}/
+# May or may not be there depending on whether or not we use system icu
+[ -e out/Release/icudtl.dat ] && install -m 644 out/Release/icudtl.dat %{buildroot}%{_libdir}/%{name}/
 install -m 644 out/Release/*.bin %{buildroot}%{_libdir}/%{name}/
 install -m 644 chrome/browser/resources/default_apps/* %{buildroot}%{_libdir}/%{name}/default_apps/
 ln -s %{_libdir}/%{name}/chromium-wrapper %{buildroot}%{_bindir}/%{name}
@@ -585,10 +688,18 @@ done
 mkdir -p %{buildroot}%{_sysconfdir}/chromium
 install -m 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/chromium
 
+# FIXME ultimately Chromium should just use the system version
+# instead of looking in its own directory... But for now, symlinking
+# stuff where Chromium wants it will do
+mkdir -p %{buildroot}%{_libdir}/%{name}/swiftshader
+ln -s %{_libdir}/libGLESv2.so.2.0.0 %{buildroot}%{_libdir}/%{name}/swiftshader/libGLESv2.so
+ln -s %{_libdir}/libEGL.so.1.0.0 %{buildroot}%{_libdir}/%{name}/swiftshader/libEGL.so
 
 find %{buildroot} -name "*.nexe" -exec strip {} \;
 
+%if "%{channel}" == "stable"
 %files -n chromium-browser
+%endif
 
 %files
 %doc LICENSE AUTHORS
@@ -598,19 +709,18 @@ find %{buildroot} -name "*.nexe" -exec strip {} \;
 %{_libdir}/%{name}/chromium-wrapper
 %{_libdir}/%{name}/chrome
 %{_libdir}/%{name}/chrome-sandbox
-%{_libdir}/%{name}/icudtl.dat
+%optional %{_libdir}/%{name}/icudtl.dat
 %{_libdir}/%{name}/locales
 %{_libdir}/%{name}/chrome_100_percent.pak
 %{_libdir}/%{name}/resources.pak
 %{_libdir}/%{name}/resources
 %{_libdir}/%{name}/themes
 %{_libdir}/%{name}/default_apps
-%{_mandir}/man1/%{name}*
 %{_datadir}/applications/*.desktop
 %{_datadir}/icons/hicolor/*/apps/%{name}.png
+%{_libdir}/%{name}/swiftshader
 
-
-%files -n chromedriver
+%files -n chromedriver%{namesuffix}
 %doc LICENSE AUTHORS
 %{_bindir}/chromedriver
 %{_libdir}/%{name}/chromedriver
diff --git a/chromium-gcc8-r588316.patch b/chromium-gcc8-r588316.patch
new file mode 100644
index 0000000..d980805
--- /dev/null
+++ b/chromium-gcc8-r588316.patch
@@ -0,0 +1,98 @@
+From 87902b3202f81d689dd314c17006ffc907fe12a1 Mon Sep 17 00:00:00 2001
+From: Wang Qing <wangqing-hf@loongson.cn>
+Date: Mon, 3 Sep 2018 02:41:08 +0000
+Subject: [PATCH] Fix build error for blink.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This CLs fixed the error of constexpr function call to non-constexpr function.
+
+Bug: 878202
+Change-Id: I6ad217a687e62a9a384980d852743a56479de3a9
+Reviewed-on: https://chromium-review.googlesource.com/1192467
+Commit-Queue: 汪 清 <wangqing-hf@loongson.cn>
+Reviewed-by: Eric Willigers <ericwilligers@chromium.org>
+Cr-Commit-Position: refs/heads/master@{#588316}
+---
+ .../core/animation/animation_time_delta.cc    | 22 ++++++++++++++
+ .../core/animation/animation_time_delta.h     | 30 +++++++------------
+ 2 files changed, 32 insertions(+), 20 deletions(-)
+
+diff --git a/third_party/blink/renderer/core/animation/animation_time_delta.cc b/third_party/blink/renderer/core/animation/animation_time_delta.cc
+index 1b25469c7f2f..2e30a18890da 100644
+--- a/third_party/blink/renderer/core/animation/animation_time_delta.cc
++++ b/third_party/blink/renderer/core/animation/animation_time_delta.cc
+@@ -7,6 +7,28 @@
+ namespace blink {
+ 
+ #if !defined(BLINK_ANIMATION_USE_TIME_DELTA)
++// Comparison operators on AnimationTimeDelta.
++bool CORE_EXPORT operator==(const AnimationTimeDelta& lhs,
++                                      const AnimationTimeDelta& rhs) {
++  return lhs.InSecondsF() == rhs.InSecondsF();
++}
++bool CORE_EXPORT operator!=(const AnimationTimeDelta& lhs,
++                                      const AnimationTimeDelta& rhs) {
++  return lhs.InSecondsF() != rhs.InSecondsF();
++}
++bool CORE_EXPORT operator>(const AnimationTimeDelta& lhs,
++                                     const AnimationTimeDelta& rhs) {
++  return lhs.InSecondsF() > rhs.InSecondsF();
++}
++bool CORE_EXPORT operator>=(const AnimationTimeDelta& lhs,
++                                      const AnimationTimeDelta& rhs) {
++  return lhs.InSecondsF() >= rhs.InSecondsF();
++}
++bool CORE_EXPORT operator<=(const AnimationTimeDelta& lhs,
++                                      const AnimationTimeDelta& rhs) {
++  return lhs.InSecondsF() <= rhs.InSecondsF();
++}
++
+ std::ostream& operator<<(std::ostream& os, AnimationTimeDelta time) {
+   return os << time.InSecondsF() << " s";
+ }
+diff --git a/third_party/blink/renderer/core/animation/animation_time_delta.h b/third_party/blink/renderer/core/animation/animation_time_delta.h
+index 1903c1150d3e..95d218466d90 100644
+--- a/third_party/blink/renderer/core/animation/animation_time_delta.h
++++ b/third_party/blink/renderer/core/animation/animation_time_delta.h
+@@ -90,26 +90,16 @@ AnimationTimeDelta operator*(T a, AnimationTimeDelta td) {
+ }
+ 
+ // Comparison operators on AnimationTimeDelta.
+-constexpr bool CORE_EXPORT operator==(const AnimationTimeDelta& lhs,
+-                                      const AnimationTimeDelta& rhs) {
+-  return lhs.InSecondsF() == rhs.InSecondsF();
+-}
+-constexpr bool CORE_EXPORT operator!=(const AnimationTimeDelta& lhs,
+-                                      const AnimationTimeDelta& rhs) {
+-  return lhs.InSecondsF() != rhs.InSecondsF();
+-}
+-constexpr bool CORE_EXPORT operator>(const AnimationTimeDelta& lhs,
+-                                     const AnimationTimeDelta& rhs) {
+-  return lhs.InSecondsF() > rhs.InSecondsF();
+-}
+-constexpr bool CORE_EXPORT operator>=(const AnimationTimeDelta& lhs,
+-                                      const AnimationTimeDelta& rhs) {
+-  return lhs.InSecondsF() >= rhs.InSecondsF();
+-}
+-constexpr bool CORE_EXPORT operator<=(const AnimationTimeDelta& lhs,
+-                                      const AnimationTimeDelta& rhs) {
+-  return lhs.InSecondsF() <= rhs.InSecondsF();
+-}
++bool CORE_EXPORT operator==(const AnimationTimeDelta& lhs,
++                                      const AnimationTimeDelta& rhs);
++bool CORE_EXPORT operator!=(const AnimationTimeDelta& lhs,
++                                      const AnimationTimeDelta& rhs);
++bool CORE_EXPORT operator>(const AnimationTimeDelta& lhs,
++                                     const AnimationTimeDelta& rhs);
++bool CORE_EXPORT operator>=(const AnimationTimeDelta& lhs,
++                                      const AnimationTimeDelta& rhs);
++bool CORE_EXPORT operator<=(const AnimationTimeDelta& lhs,
++                                      const AnimationTimeDelta& rhs);
+ 
+ // Defined to allow DCHECK_EQ/etc to work with the class.
+ CORE_EXPORT std::ostream& operator<<(std::ostream& os, AnimationTimeDelta time);
+-- 
+2.17.2
+
diff --git a/chromium-gcc8-r588547.patch b/chromium-gcc8-r588547.patch
new file mode 100644
index 0000000..5f12f7f
--- /dev/null
+++ b/chromium-gcc8-r588547.patch
@@ -0,0 +1,30 @@
+From e3ad3deb6a6e79284f3748fa7410311d87df91c5 Mon Sep 17 00:00:00 2001
+From: Henrique Nakashima <hnakashima@chromium.org>
+Date: Tue, 4 Sep 2018 16:49:51 +0000
+Subject: [PATCH] IWYU: stdint.h in pdfium_mem_buffer_file_write.h for uint8_t
+
+Bug: 879900
+Change-Id: I9c15d1c280a23c53d31f2d72c9d0d1db79eab886
+Reviewed-on: https://chromium-review.googlesource.com/1204410
+Reviewed-by: Lei Zhang <thestig@chromium.org>
+Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
+Cr-Commit-Position: refs/heads/master@{#588547}
+---
+ pdf/pdfium/pdfium_mem_buffer_file_write.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/pdf/pdfium/pdfium_mem_buffer_file_write.h b/pdf/pdfium/pdfium_mem_buffer_file_write.h
+index 03c54bb63800..82e82d23684d 100644
+--- a/pdf/pdfium/pdfium_mem_buffer_file_write.h
++++ b/pdf/pdfium/pdfium_mem_buffer_file_write.h
+@@ -6,6 +6,7 @@
+ #define PDF_PDFIUM_PDFIUM_MEM_BUFFER_FILE_WRITE_H_
+ 
+ #include <stddef.h>
++#include <stdint.h>
+ 
+ #include <vector>
+ 
+-- 
+2.17.2
+
diff --git a/chromium-gcc8-r589614.patch b/chromium-gcc8-r589614.patch
new file mode 100644
index 0000000..0c187fd
--- /dev/null
+++ b/chromium-gcc8-r589614.patch
@@ -0,0 +1,37 @@
+From cbdb8bd6567c8143dc8c1e5e86a21a8ea064eea4 Mon Sep 17 00:00:00 2001
+From: Maksim Sisov <msisov@igalia.com>
+Date: Fri, 7 Sep 2018 18:57:42 +0000
+Subject: [PATCH] OmniboxTextView: fix gcc error for structure initialization
+
+It looks like there is bug in GCC 6, which cannot go through
+structure initialization normally.
+
+Thus, instead of a default initialization of one of the members,
+explicitly initialize it to a default value.
+
+Change-Id: Ia55cc6658e6b6b2f8a80c2582dd28f001c9e648c
+Reviewed-on: https://chromium-review.googlesource.com/1213181
+Reviewed-by: Scott Violet <sky@chromium.org>
+Commit-Queue: Maksim Sisov <msisov@igalia.com>
+Cr-Commit-Position: refs/heads/master@{#589614}
+---
+ chrome/browser/ui/views/omnibox/omnibox_text_view.cc | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/chrome/browser/ui/views/omnibox/omnibox_text_view.cc b/chrome/browser/ui/views/omnibox/omnibox_text_view.cc
+index f0a8083dc930..9021284f166d 100644
+--- a/chrome/browser/ui/views/omnibox/omnibox_text_view.cc
++++ b/chrome/browser/ui/views/omnibox/omnibox_text_view.cc
+@@ -175,7 +175,8 @@ void ApplyTextStyleForType(SuggestionAnswer::TextStyle text_style,
+       style = {part_color, .baseline = gfx::SUPERIOR};
+       break;
+     case SuggestionAnswer::TextStyle::BOLD:
+-      style = {part_color, .weight = gfx::Font::Weight::BOLD};
++      style = {part_color, .baseline = gfx::NORMAL_BASELINE,
++               .weight = gfx::Font::Weight::BOLD};
+       break;
+     case SuggestionAnswer::TextStyle::NORMAL:
+     case SuggestionAnswer::TextStyle::NORMAL_DIM:
+-- 
+2.17.2
+
diff --git a/chromium-gcc8-r591015.patch b/chromium-gcc8-r591015.patch
new file mode 100644
index 0000000..65c09e8
--- /dev/null
+++ b/chromium-gcc8-r591015.patch
@@ -0,0 +1,70 @@
+From e98f8ef8b2f236ecbb01df8c39e6ee1c8fbe8d7d Mon Sep 17 00:00:00 2001
+From: Maksim Sisov <msisov@igalia.com>
+Date: Thu, 13 Sep 2018 15:17:29 +0000
+Subject: [PATCH] ScrollPaintPropertyNode: Rename SnapContainerData() to
+ GetSnapContainerData()
+
+GCC is stricter than clang when it comes to class members' names and how
+they can change the meaning of a previously existing symbol with the same
+name.
+
+Here is a short error message:
+
+error: changes meaning of 'SnapContainerData' from 'using SnapContainerData =
+class cc::SnapContainerData' [-fpermissive]  using SnapContainerData =
+cc::SnapContainerData;
+
+Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_slimming_paint_v2;master.tryserver.blink:linux_trusty_blink_rel
+Change-Id: I0de5460f17b13484253e1ff0538b111c9a3b0d13
+Reviewed-on: https://chromium-review.googlesource.com/1213180
+Commit-Queue: Maksim Sisov <msisov@igalia.com>
+Reviewed-by: Philip Rogers <pdr@chromium.org>
+Cr-Commit-Position: refs/heads/master@{#591015}
+---
+ .../blink/renderer/core/paint/paint_property_tree_update_tests.cc       | 2 +-
+ .../renderer/platform/graphics/compositing/property_tree_manager.cc     | 2 +-
+ .../blink/renderer/platform/graphics/paint/scroll_paint_property_node.h | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/third_party/blink/renderer/core/paint/paint_property_tree_update_tests.cc b/third_party/blink/renderer/core/paint/paint_property_tree_update_tests.cc
+index 0d999d45076f..1fe1815a5659 100644
+--- a/third_party/blink/renderer/core/paint/paint_property_tree_update_tests.cc
++++ b/third_party/blink/renderer/core/paint/paint_property_tree_update_tests.cc
+@@ -1310,7 +1310,7 @@ TEST_P(PaintPropertyTreeUpdateTest, EnsureSnapContainerData) {
+   GetDocument().View()->Resize(300, 300);
+   GetDocument().View()->UpdateAllLifecyclePhases();
+ 
+-  auto doc_snap_container_data = DocScroll()->SnapContainerData();
++  auto doc_snap_container_data = DocScroll()->GetSnapContainerData();
+   ASSERT_TRUE(doc_snap_container_data);
+   EXPECT_EQ(doc_snap_container_data->scroll_snap_type().axis, SnapAxis::kBoth);
+   EXPECT_EQ(doc_snap_container_data->scroll_snap_type().strictness,
+diff --git a/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.cc b/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.cc
+index 745b8c8b387e..5f87eeea9435 100644
+--- a/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.cc
++++ b/third_party/blink/renderer/platform/graphics/compositing/property_tree_manager.cc
+@@ -333,7 +333,7 @@ void PropertyTreeManager::CreateCompositorScrollNode(
+           scroll_node->OverscrollBehaviorX()),
+       static_cast<cc::OverscrollBehavior::OverscrollBehaviorType>(
+           scroll_node->OverscrollBehaviorY()));
+-  compositor_node.snap_container_data = scroll_node->SnapContainerData();
++  compositor_node.snap_container_data = scroll_node->GetSnapContainerData();
+ 
+   auto compositor_element_id = scroll_node->GetCompositorElementId();
+   if (compositor_element_id) {
+diff --git a/third_party/blink/renderer/platform/graphics/paint/scroll_paint_property_node.h b/third_party/blink/renderer/platform/graphics/paint/scroll_paint_property_node.h
+index e1479269ccc3..5bd7f65f10ba 100644
+--- a/third_party/blink/renderer/platform/graphics/paint/scroll_paint_property_node.h
++++ b/third_party/blink/renderer/platform/graphics/paint/scroll_paint_property_node.h
+@@ -99,7 +99,7 @@ class PLATFORM_EXPORT ScrollPaintPropertyNode
+     return state_.overscroll_behavior.y;
+   }
+ 
+-  base::Optional<SnapContainerData> SnapContainerData() const {
++  base::Optional<SnapContainerData> GetSnapContainerData() const {
+     return state_.snap_container_data;
+   }
+ 
+-- 
+2.14.3
+
diff --git a/chromium-gn-bootstrap-r2.patch b/chromium-gn-bootstrap-r2.patch
deleted file mode 100644
index 76287e1..0000000
--- a/chromium-gn-bootstrap-r2.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: tools/gn/bootstrap/bootstrap.py
-diff --git a/tools/gn/bootstrap/bootstrap.py b/tools/gn/bootstrap/bootstrap.py
-index 38cfb117d29c3895291379f00d8dc8c8b0727474..679170e610f8292bcbeb76508fd247d322a69c79 100755
---- a/tools/gn/bootstrap/bootstrap.py
-+++ b/tools/gn/bootstrap/bootstrap.py
-@@ -385,6 +385,7 @@ def write_gn_ninja(path, root_gen_dir, options):
-       'base/base_switches.cc',
-       'base/build_time.cc',
-       'base/callback_internal.cc',
-+      'base/callback_helpers.cc',
-       'base/command_line.cc',
-       'base/debug/activity_tracker.cc',
-       'base/debug/alias.cc',
diff --git a/chromium-system-ffmpeg-r3.patch b/chromium-system-ffmpeg-r3.patch
deleted file mode 100644
index 3abfc16..0000000
--- a/chromium-system-ffmpeg-r3.patch
+++ /dev/null
@@ -1,48 +0,0 @@
---- a/media/ffmpeg/ffmpeg_common.h.orig	2016-09-09 13:16:07.757294768 +0000
-+++ b/media/ffmpeg/ffmpeg_common.h	2016-09-09 13:16:41.705989273 +0000
-@@ -22,10 +22,6 @@
- 
- // Include FFmpeg header files.
- extern "C" {
--// Disable deprecated features which result in spammy compile warnings.  This
--// list of defines must mirror those in the 'defines' section of FFmpeg's
--// BUILD.gn file or the headers below will generate different structures!
--#define FF_API_CONVERGENCE_DURATION 0
- // Upstream libavcodec/utils.c still uses the deprecated
- // av_dup_packet(), causing deprecation warnings.
- // The normal fix for such things is to disable the feature as below,
-@@ -35,7 +35,6 @@
- MSVC_PUSH_DISABLE_WARNING(4244);
- #include <libavcodec/avcodec.h>
- #include <libavformat/avformat.h>
--#include <libavformat/internal.h>
- #include <libavformat/avio.h>
- #include <libavutil/avutil.h>
- #include <libavutil/imgutils.h>
---- a/media/filters/ffmpeg_demuxer.cc.orig	2016-09-09 14:21:40.185828912 +0000
-+++ b/media/filters/ffmpeg_demuxer.cc	2016-09-09 14:21:52.894089352 +0000
-@@ -1185,24 +1185,6 @@
-   // If no estimate is found, the stream entry will be kInfiniteDuration.
-   std::vector<base::TimeDelta> start_time_estimates(format_context->nb_streams,
-                                                     kInfiniteDuration);
--  const AVFormatInternal* internal = format_context->internal;
--  if (internal && internal->packet_buffer &&
--      format_context->start_time != static_cast<int64_t>(AV_NOPTS_VALUE)) {
--    struct AVPacketList* packet_buffer = internal->packet_buffer;
--    while (packet_buffer != internal->packet_buffer_end) {
--      DCHECK_LT(static_cast<size_t>(packet_buffer->pkt.stream_index),
--                start_time_estimates.size());
--      const AVStream* stream =
--          format_context->streams[packet_buffer->pkt.stream_index];
--      if (packet_buffer->pkt.pts != static_cast<int64_t>(AV_NOPTS_VALUE)) {
--        const base::TimeDelta packet_pts =
--            ConvertFromTimeBase(stream->time_base, packet_buffer->pkt.pts);
--        if (packet_pts < start_time_estimates[stream->index])
--          start_time_estimates[stream->index] = packet_pts;
--      }
--      packet_buffer = packet_buffer->next;
--    }
--  }
- 
-   std::unique_ptr<MediaTracks> media_tracks(new MediaTracks());
- 
diff --git a/chromium-system-icu.patch b/chromium-system-icu.patch
new file mode 100644
index 0000000..89a7b00
--- /dev/null
+++ b/chromium-system-icu.patch
@@ -0,0 +1,19 @@
+diff --git a/third_party/blink/renderer/platform/text/character_property_data_generator.h b/third_party/blink/renderer/platform/text/character_property_data_generator.h
+index 28fb6a9..bb4dbd7 100644
+--- a/third_party/blink/renderer/platform/text/character_property_data_generator.h
++++ b/third_party/blink/renderer/platform/text/character_property_data_generator.h
+@@ -244,10 +244,12 @@ static const UChar32 kIsHangulRanges[] = {
+     0xD7B0, 0xD7FF,
+     // Halfwidth Hangul Jamo
+     // https://www.unicode.org/charts/nameslist/c_FF00.html
+-    0xFFA0, 0xFFDC,
++    0xFFA0, 0xFFDB,
+ };
+ 
+-static const UChar32 kIsHangulArray[] = {};
++static const UChar32 kIsHangulArray[] = {
++  0xFFDC,
++};
+ 
+ }  // namespace blink
+ 
diff --git a/chromium-system-jinja-r13.patch b/chromium-system-jinja-r13.patch
deleted file mode 100644
index 943b68a..0000000
--- a/chromium-system-jinja-r13.patch
+++ /dev/null
@@ -1,31 +0,0 @@
---- a/third_party/WebKit/Source/build/scripts/scripts.gni.orig	2016-06-02 09:54:28.510152077 +0000
-+++ b/third_party/WebKit/Source/build/scripts/scripts.gni	2016-06-02 09:54:50.966612510 +0000
-@@ -9,10 +9,6 @@
- _scripts_dir = "//third_party/WebKit/Source/build/scripts"
- 
- scripts_for_json5_files = [
--  # jinja2/__init__.py contains version string, so sufficient as
--  # dependency for whole jinja2 package
--  "//third_party/jinja2/__init__.py",
--  "//third_party/markupsafe/__init__.py",  # jinja2 dep
-   "$_scripts_dir/hasher.py",
-   "$_scripts_dir/json5_generator.py",
-   "$_scripts_dir/license.py",
---- a/third_party/WebKit/Source/bindings/scripts/scripts.gni.orig	2016-09-09 13:40:51.971660406 +0000
-+++ b/third_party/WebKit/Source/bindings/scripts/scripts.gni	2016-09-09 13:41:15.472141236 +0000
-@@ -9,15 +9,9 @@
- bindings_scripts_output_dir = "$root_gen_dir/blink/bindings/scripts"
- 
- jinja_module_files = [
--  "//third_party/jinja2/__init__.py",
--  "//third_party/markupsafe/__init__.py",  # jinja2 dep
- ]
- 
- idl_lexer_parser_files = get_path_info([
--                                         # PLY (Python Lex-Yacc)
--                                         "//third_party/ply/lex.py",
--                                         "//third_party/ply/yacc.py",
--
-                                          # Web IDL lexer/parser (base parser)
-                                          "//tools/idl_parser/idl_lexer.py",
-                                          "//tools/idl_parser/idl_node.py",
diff --git a/chromium-widevine-r2.patch b/chromium-widevine-r2.patch
new file mode 100644
index 0000000..5527f7f
--- /dev/null
+++ b/chromium-widevine-r2.patch
@@ -0,0 +1,39 @@
+Minimal patch to get chromium to compile with widevine support.
+
+Exactly the same as -r1, but we now need to patch
+ninja to pretty please not terminate our build.
+
+caveat emptor: it's in no way clear that building chromium this
+way is safer, from a security perspective, than whatever Google
+Chrome does.
+
+Upstream appears to be cooking up a code-signing trust-chain
+which may protect users against malicious cdm blobs; I doubt
+we benefit from these using this kludge.  Ideally, someone
+would look into this more carefully than I have ... tbh as
+soon as I got my "stories" back, I pretty much lost interest :)
+
+-gmt
+
+--
+--- a/third_party/widevine/cdm/stub/widevine_cdm_version.h
++++ b/third_party/widevine/cdm/stub/widevine_cdm_version.h
+@@ -10,6 +10,7 @@
+
+ #include "third_party/widevine/cdm/widevine_cdm_common.h"
+
++#define WIDEVINE_CDM_VERSION_STRING "unknown"
+ #define WIDEVINE_CDM_AVAILABLE
+
+ #endif  // WIDEVINE_CDM_VERSION_H_
+--- a/third_party/widevine/cdm/BUILD.gn
++++ b/third_party/widevine/cdm/BUILD.gn
+@@ -11,7 +11,7 @@ import("//third_party/widevine/cdm/widev
+ # Internal Cast builds set enable_widevine=true to bring in Widevine support.
+ # TODO(xhwang): Support component updated CDM on other platforms and remove this
+ # assert.
+-assert(!enable_widevine || is_win || is_mac || is_chromecast,
++assert(!enable_widevine || is_win || is_mac || is_chromecast || is_linux,
+        "Component updated CDM only supported on Windows and Mac for now.")
+
+ widevine_arch = current_cpu
diff --git a/revert-Xclang-instcombine-lower-dbg-declare.patch b/revert-Xclang-instcombine-lower-dbg-declare.patch
new file mode 100644
index 0000000..0d40ead
--- /dev/null
+++ b/revert-Xclang-instcombine-lower-dbg-declare.patch
@@ -0,0 +1,24 @@
+Author: Olivier Tilloy <olivier.tilloy@canonical.com>
+Description: revert of 074fa51f85b15ad2e2d6c804a03825d48dbeb063, which requires Clang r313108 (unreleased yet)
+
+--- a/build/config/compiler/BUILD.gn
++++ b/build/config/compiler/BUILD.gn
+@@ -466,18 +466,6 @@ config("compiler") {
+     }
+   }
+
+-  if (is_clang && !is_nacl && current_toolchain == host_toolchain &&
+-      target_os != "chromeos") {
+-    cflags += [
+-      # TODO(hans): Remove this once Clang generates better optimized debug info
+-      # by default. https://crbug.com/765793
+-      "-Xclang",
+-      "-mllvm",
+-      "-Xclang",
+-      "-instcombine-lower-dbg-declare=0",
+-    ]
+-  }
+-
+   # Print absolute paths in diagnostics. There is no precedent for doing this
+   # on Linux/Mac (GCC doesn't support it), but MSVC does this with /FC and
+   # Windows developers rely on it (crbug.com/636109) so only do this on Windows.
Not Available

cris [@T] beebgames.comlgtm2201d 14hrs
benbullard79 [@T] cox.netSeems OK2200d 07hrs
benbullard79 [@T] cox.netSeems OK2195d 16hrs
benbullard79 [@T] cox.netSeems OK2195d 16hrs
benbullard79 [@T] cox.netsuperceded2195d 16hrs
benbullard79 [@T] cox.netNo Comment.2195d 16hrs