diff --git a/patches/frameworks/base/0001-Utils-Import-restart-systemui-api.patch b/patches/frameworks/base/0001-Utils-Import-restart-systemui-api.patch
new file mode 100644
index 0000000..91a6cd2
--- /dev/null
+++ b/patches/frameworks/base/0001-Utils-Import-restart-systemui-api.patch
@@ -0,0 +1,134 @@
+From 797c4020f25fb4a76dee82f5fc7008aada330d2f Mon Sep 17 00:00:00 2001
+From: SpiritCroc <dev@spiritcroc.de>
+Date: Sun, 11 Nov 2018 14:59:35 -0700
+Subject: [PATCH 01/26] Utils: Import restart systemui api
+
+Change-Id: Ief06016032e14fe15ec8348722546c54e0d379c7
+---
+ .../internal/util/omni/DeviceUtils.java       | 61 +++++++++++++++++++
+ core/res/res/values/bliss_strings.xml         |  4 ++
+ core/res/res/values/bliss_symbols.xml         |  4 ++
+ 3 files changed, 69 insertions(+)
+
+diff --git a/core/java/com/android/internal/util/omni/DeviceUtils.java b/core/java/com/android/internal/util/omni/DeviceUtils.java
+index 811b52d57cc..59db7500a1c 100644
+--- a/core/java/com/android/internal/util/omni/DeviceUtils.java
++++ b/core/java/com/android/internal/util/omni/DeviceUtils.java
+@@ -15,8 +15,12 @@
+ */
+ package com.android.internal.util.omni;
+ 
++import android.app.ActivityManager;
++import android.app.AlertDialog;
++import android.app.IActivityManager;
+ import android.bluetooth.BluetoothAdapter;
+ import android.content.Context;
++import android.content.DialogInterface;
+ import android.content.pm.ApplicationInfo;
+ import android.content.pm.PackageInfo;
+ import android.content.pm.PackageManager;
+@@ -29,6 +33,7 @@ import android.hardware.camera2.CameraManager;
+ import android.hardware.SensorManager;
+ import android.net.ConnectivityManager;
+ import android.nfc.NfcAdapter;
++import android.os.AsyncTask;
+ import android.os.RemoteException;
+ import android.os.SystemProperties;
+ import android.os.Vibrator;
+@@ -45,6 +50,7 @@ import com.android.internal.telephony.PhoneConstants;
+ import static android.hardware.Sensor.TYPE_LIGHT;
+ import static android.hardware.Sensor.TYPE_PROXIMITY;
+ 
++import com.android.internal.R;
+ import java.util.List;
+ import java.util.Locale;
+ 
+@@ -221,4 +227,59 @@ public class DeviceUtils {
+             e.printStackTrace();
+         }
+     }
++
++    public static void restartSystemUi(Context context) {
++        new RestartSystemUiTask(context).execute();
++    }
++
++     public static void showSystemUiRestartDialog(Context context) {
++        new AlertDialog.Builder(context)
++                .setTitle(R.string.systemui_restart_title)
++                .setMessage(R.string.systemui_restart_message)
++                .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
++                    public void onClick(DialogInterface dialog, int id) {
++                        restartSystemUi(context);
++                    }
++                })
++                .setNegativeButton(R.string.cancel, null)
++                .show();
++    }
++
++     private static class RestartSystemUiTask extends AsyncTask<Void, Void, Void> {
++         private Context mContext;
++         public RestartSystemUiTask(Context context) {
++            super();
++            mContext = context;
++        }
++
++         @Override
++        protected Void doInBackground(Void... params) {
++            try {
++                ActivityManager am =
++                        (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
++                IActivityManager ams = ActivityManager.getService();
++                for (ActivityManager.RunningAppProcessInfo app: am.getRunningAppProcesses()) {
++                    if ("com.android.systemui".equals(app.processName)) {
++                        ams.killApplicationProcess(app.processName, app.uid);
++                        break;
++                    }
++                }
++                //Class ActivityManagerNative = Class.forName("android.app.ActivityManagerNative");
++                //Method getDefault = ActivityManagerNative.getDeclaredMethod("getDefault", null);
++                //Object amn = getDefault.invoke(null, null);
++                //Method killApplicationProcess = amn.getClass().getDeclaredMethod("killApplicationProcess", String.class, int.class);
++                //mContext.stopService(new Intent().setComponent(new ComponentName("com.android.systemui", "com.android.systemui.SystemUIService")));
++                //am.killBackgroundProcesses("com.android.systemui");
++                //for (ActivityManager.RunningAppProcessInfo app : am.getRunningAppProcesses()) {
++                //    if ("com.android.systemui".equals(app.processName)) {
++                //        killApplicationProcess.invoke(amn, app.processName, app.uid);
++                //        break;
++                //    }
++                //}
++            } catch (Exception e) {
++                e.printStackTrace();
++            }
++            return null;
++        }
++    }
+ }
+diff --git a/core/res/res/values/bliss_strings.xml b/core/res/res/values/bliss_strings.xml
+index 9ba4f1844ca..da16771ba18 100644
+--- a/core/res/res/values/bliss_strings.xml
++++ b/core/res/res/values/bliss_strings.xml
+@@ -54,4 +54,8 @@
+     <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+     <string name="permdesc_fakePackageSignature">Allows the app to pretend to be a different app. Malicious applications might be able to use this to access private application data. Legitimate uses include an emulator pretending to be what it emulates. Grant this permission with caution only!</string>
+ 
++    <!-- SystemUI Restart -->
++    <string name="systemui_restart_title">SystemUI restart required</string>
++    <string name="systemui_restart_message">For all changes to take effect, a SystemUI restart is required. Restart SystemUI now?</string>
++
+ </resources>
+diff --git a/core/res/res/values/bliss_symbols.xml b/core/res/res/values/bliss_symbols.xml
+index 35d9555b2f9..f8e2bdb5bf6 100644
+--- a/core/res/res/values/bliss_symbols.xml
++++ b/core/res/res/values/bliss_symbols.xml
+@@ -145,4 +145,8 @@
+   <!-- Oreo's recents component activity -->
+   <java-symbol type="string" name="config_recentsComponentNameOreo" />
+ 
++  <!-- SystemUI Restart -->
++  <java-symbol type="string" name="systemui_restart_title" />
++  <java-symbol type="string" name="systemui_restart_message" />
++
+ </resources>
+-- 
+2.17.1
+
diff --git a/patches/frameworks/base/0001-Revert-Telephony-Stop-using-rssnr-it-falsly-shows-wr.patch b/patches/frameworks/base/0002-Revert-Telephony-Stop-using-rssnr-it-falsly-shows-wr.patch
similarity index 84%
rename from patches/frameworks/base/0001-Revert-Telephony-Stop-using-rssnr-it-falsly-shows-wr.patch
rename to patches/frameworks/base/0002-Revert-Telephony-Stop-using-rssnr-it-falsly-shows-wr.patch
index a2c13bb..b3b9044 100644
--- a/patches/frameworks/base/0001-Revert-Telephony-Stop-using-rssnr-it-falsly-shows-wr.patch
+++ b/patches/frameworks/base/0002-Revert-Telephony-Stop-using-rssnr-it-falsly-shows-wr.patch
@@ -1,7 +1,7 @@
-From 06588b0051026c442e024a832ea29b991ff6525c Mon Sep 17 00:00:00 2001
+From d5d060f229203c48962b0580946fe115775d3338 Mon Sep 17 00:00:00 2001
 From: Jackeagle <jackeagle102@gmail.com>
 Date: Thu, 18 Oct 2018 04:55:17 -0400
-Subject: [PATCH 01/26] Revert "Telephony: Stop using rssnr, it falsly shows
+Subject: [PATCH 02/26] Revert "Telephony: Stop using rssnr, it falsly shows
  wrong signal bars"
 
 This reverts commit b9ff83d0b1d5a81d55057ae2fa892e5d0f1083be.
@@ -10,7 +10,7 @@
  1 file changed, 3 deletions(-)
 
 diff --git a/telephony/java/android/telephony/SignalStrength.java b/telephony/java/android/telephony/SignalStrength.java
-index 55c0c77..4e56396 100644
+index 55c0c778972..4e5639683a7 100644
 --- a/telephony/java/android/telephony/SignalStrength.java
 +++ b/telephony/java/android/telephony/SignalStrength.java
 @@ -897,9 +897,6 @@ public class SignalStrength implements Parcelable {
@@ -24,5 +24,5 @@
          if (snrIconLevel != -1 && rsrpIconLevel != -1) {
              /*
 -- 
-2.7.4
+2.17.1
 
diff --git a/patches/frameworks/base/0002-Fix-backlight-control-on-Galaxy-S9.patch b/patches/frameworks/base/0003-Fix-backlight-control-on-Galaxy-S9.patch
similarity index 83%
rename from patches/frameworks/base/0002-Fix-backlight-control-on-Galaxy-S9.patch
rename to patches/frameworks/base/0003-Fix-backlight-control-on-Galaxy-S9.patch
index d994ca4..20ef93a 100644
--- a/patches/frameworks/base/0002-Fix-backlight-control-on-Galaxy-S9.patch
+++ b/patches/frameworks/base/0003-Fix-backlight-control-on-Galaxy-S9.patch
@@ -1,14 +1,14 @@
-From 8d2e50a9e6932d4c0a65269a3e8ad9743912686d Mon Sep 17 00:00:00 2001
+From 8fa619b8a4e063730776b3ac63d1be73a5b1ac46 Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Sat, 24 Mar 2018 08:01:48 +0100
-Subject: [PATCH 02/26] Fix backlight control on Galaxy S9(+)
+Subject: [PATCH 03/26] Fix backlight control on Galaxy S9(+)
 
 ---
- services/core/java/com/android/server/lights/LightsService.java | 7 +++++++
+ .../core/java/com/android/server/lights/LightsService.java | 7 +++++++
  1 file changed, 7 insertions(+)
 
 diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
-index a94ed60..762b0ae 100644
+index a94ed608b9c..762b0ae4037 100644
 --- a/services/core/java/com/android/server/lights/LightsService.java
 +++ b/services/core/java/com/android/server/lights/LightsService.java
 @@ -21,6 +21,7 @@ import android.app.ActivityManager;
@@ -33,5 +33,5 @@
                  color = 0xff000000 | (color << 16) | (color << 8) | color;
                  setLightLocked(color, LIGHT_FLASH_NONE, 0, 0, brightnessMode);
 -- 
-2.7.4
+2.17.1
 
diff --git a/patches/frameworks/base/0003-Revert-Revert-Remove-getIntWithSubId-in-TelephonyMan.patch b/patches/frameworks/base/0003-Revert-Revert-Remove-getIntWithSubId-in-TelephonyMan.patch
deleted file mode 100644
index 18c5098..0000000
--- a/patches/frameworks/base/0003-Revert-Revert-Remove-getIntWithSubId-in-TelephonyMan.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From 76ad65fa9d4689eed28b24b9ba55059389a6cf96 Mon Sep 17 00:00:00 2001
-From: jhenrique09 <jhenrique09.mcz@hotmail.com>
-Date: Sat, 11 Aug 2018 13:40:00 -0400
-Subject: [PATCH 03/26] Revert "Revert "Remove getIntWithSubId in
- TelephonyManager.""
-
-This reverts commit e788decb1b366a9df9683d86314ea4cf22a10d74.
----
- .../java/android/telephony/TelephonyManager.java   | 39 ----------------------
- 1 file changed, 39 deletions(-)
-
-diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
-index 3ecb6bb..b916a79 100644
---- a/telephony/java/android/telephony/TelephonyManager.java
-+++ b/telephony/java/android/telephony/TelephonyManager.java
-@@ -6633,45 +6633,6 @@ public class TelephonyManager {
-     }
- 
-     /**
--     * This function retrieves value for setting "name+subId", and if that is not found
--     * retrieves value for setting "name", and if that is not found throws
--     * SettingNotFoundException
--     *
--     * @hide
--     */
--    public static int getIntWithSubId(ContentResolver cr, String name, int subId)
--            throws SettingNotFoundException {
--        try {
--            return Settings.Global.getInt(cr, name + subId);
--        } catch (SettingNotFoundException e) {
--            try {
--                int val = Settings.Global.getInt(cr, name);
--                Settings.Global.putInt(cr, name + subId, val);
--
--                /* We are now moving from 'setting' to 'setting+subId', and using the value stored
--                 * for 'setting' as default. Reset the default (since it may have a user set
--                 * value). */
--                int default_val = val;
--                if (name.equals(Settings.Global.MOBILE_DATA)) {
--                    default_val = "true".equalsIgnoreCase(
--                            SystemProperties.get("ro.com.android.mobiledata", "true")) ? 1 : 0;
--                } else if (name.equals(Settings.Global.DATA_ROAMING)) {
--                    default_val = "true".equalsIgnoreCase(
--                            SystemProperties.get("ro.com.android.dataroaming", "false")) ? 1 : 0;
--                }
--
--                if (default_val != val) {
--                    Settings.Global.putInt(cr, name, default_val);
--                }
--
--                return val;
--            } catch (SettingNotFoundException exc) {
--                throw new SettingNotFoundException(name);
--            }
--        }
--    }
--
--    /**
-      * Returns the IMS Registration Status for a particular Subscription ID.
-      *
-      * @param subId Subscription ID
--- 
-2.7.4
-
diff --git a/patches/frameworks/base/0004-Relax-requirement-for-visible-flag-to-sdcards.patch b/patches/frameworks/base/0004-Relax-requirement-for-visible-flag-to-sdcards.patch
index cf63de5..ab6d087 100644
--- a/patches/frameworks/base/0004-Relax-requirement-for-visible-flag-to-sdcards.patch
+++ b/patches/frameworks/base/0004-Relax-requirement-for-visible-flag-to-sdcards.patch
@@ -1,4 +1,4 @@
-From bce6b073e39f1c12839debc4e1df55f992bf4409 Mon Sep 17 00:00:00 2001
+From a9b12570584788b9e4b1ee8a41cdc79f2cbf51e3 Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Tue, 28 Nov 2017 18:28:04 +0100
 Subject: [PATCH 04/26] Relax requirement for visible flag to sdcards
@@ -9,11 +9,11 @@
 
 Change-Id: Ia616671c03562d1eadaff5531a5c708a62d7ad3a
 ---
- services/core/java/com/android/server/StorageManagerService.java | 3 ++-
+ .../core/java/com/android/server/StorageManagerService.java    | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java
-index a35357f..14ca559 100644
+index a35357f2864..14ca559c306 100644
 --- a/services/core/java/com/android/server/StorageManagerService.java
 +++ b/services/core/java/com/android/server/StorageManagerService.java
 @@ -1178,7 +1178,8 @@ class StorageManagerService extends IStorageManager.Stub
@@ -27,5 +27,5 @@
              }
  
 -- 
-2.7.4
+2.17.1
 
diff --git a/patches/frameworks/base/0005-Also-scan-system-overlay.patch b/patches/frameworks/base/0005-Also-scan-system-overlay.patch
index c499e5e..127d880 100644
--- a/patches/frameworks/base/0005-Also-scan-system-overlay.patch
+++ b/patches/frameworks/base/0005-Also-scan-system-overlay.patch
@@ -1,4 +1,4 @@
-From 11e5882f79432d04eda5dc7415a33ce051db14d5 Mon Sep 17 00:00:00 2001
+From fe2320fb75d4b04720641632c8009d0bcb4ee3c6 Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Tue, 1 May 2018 17:47:36 +0200
 Subject: [PATCH 05/26] Also scan /system/overlay
@@ -10,7 +10,7 @@
  2 files changed, 7 insertions(+), 2 deletions(-)
 
 diff --git a/core/jni/android_util_AssetManager.cpp b/core/jni/android_util_AssetManager.cpp
-index fa9f445..1d3bf73 100644
+index fa9f44557d3..1d3bf73eebb 100644
 --- a/core/jni/android_util_AssetManager.cpp
 +++ b/core/jni/android_util_AssetManager.cpp
 @@ -149,7 +149,7 @@ static void NativeVerifySystemIdmaps(JNIEnv* /*env*/, jclass /*clazz*/) {
@@ -34,7 +34,7 @@
        if (argc > 5) {
          execv(AssetManager::IDMAP_BIN, (char* const*)argv);
 diff --git a/core/jni/fd_utils.cpp b/core/jni/fd_utils.cpp
-index c5904e0..6548215 100644
+index c5904e0e9e5..6548215772a 100644
 --- a/core/jni/fd_utils.cpp
 +++ b/core/jni/fd_utils.cpp
 @@ -93,7 +93,8 @@ bool FileDescriptorWhitelist::IsAllowed(const std::string& path) const {
@@ -48,5 +48,5 @@
        && path.find("/../") == std::string::npos) {
      return true;
 -- 
-2.7.4
+2.17.1
 
diff --git a/patches/frameworks/base/0006-Don-t-crash-if-there-is-IR-HAL-is-not-declared.patch b/patches/frameworks/base/0006-Don-t-crash-if-there-is-IR-HAL-is-not-declared.patch
index 9fb6edb..ca478ae 100644
--- a/patches/frameworks/base/0006-Don-t-crash-if-there-is-IR-HAL-is-not-declared.patch
+++ b/patches/frameworks/base/0006-Don-t-crash-if-there-is-IR-HAL-is-not-declared.patch
@@ -1,4 +1,4 @@
-From cb0dd6d660d6bfdf2127bbe7cc0239eca775eb75 Mon Sep 17 00:00:00 2001
+From 5d5a6a281c69f7eb8b78ddd7a4b7b120fe3d56df Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Thu, 17 May 2018 20:28:35 +0200
 Subject: [PATCH 06/26] Don't crash if there is IR HAL is not declared
@@ -8,7 +8,7 @@
  1 file changed, 2 deletions(-)
 
 diff --git a/services/core/java/com/android/server/ConsumerIrService.java b/services/core/java/com/android/server/ConsumerIrService.java
-index 2ed6c77..c574a03 100644
+index 2ed6c77baa0..c574a03c9a3 100644
 --- a/services/core/java/com/android/server/ConsumerIrService.java
 +++ b/services/core/java/com/android/server/ConsumerIrService.java
 @@ -50,8 +50,6 @@ public class ConsumerIrService extends IConsumerIrService.Stub {
@@ -21,5 +21,5 @@
      }
  
 -- 
-2.7.4
+2.17.1
 
diff --git a/patches/frameworks/base/0007-Fix-62.patch b/patches/frameworks/base/0007-Fix-62.patch
index 1b68961..8794785 100644
--- a/patches/frameworks/base/0007-Fix-62.patch
+++ b/patches/frameworks/base/0007-Fix-62.patch
@@ -1,17 +1,17 @@
-From df2b78aa40160a50dc2bd50c8b4debfe1662179c Mon Sep 17 00:00:00 2001
+From 7b666d0761c2a1af8e206943d394468a1315b334 Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Wed, 30 May 2018 14:05:30 +0200
 Subject: [PATCH 07/26] Fix(?) #62
 
 ---
- .../SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java     | 5 ++++-
+ .../src/com/android/keyguard/KeyguardUpdateMonitor.java      | 5 ++++-
  1 file changed, 4 insertions(+), 1 deletion(-)
 
 diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
-index 8a8a569..98df114 100644
+index e988e678ea7..8f99fa7ff3b 100644
 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
 +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
-@@ -898,7 +898,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
+@@ -895,7 +895,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
  
          @Override
          public void onAuthenticationError(int errMsgId, CharSequence errString) {
@@ -24,5 +24,5 @@
  
          @Override
 -- 
-2.7.4
+2.17.1
 
diff --git a/patches/frameworks/base/0008-S9-brightness-override-only-for-screen.patch b/patches/frameworks/base/0008-S9-brightness-override-only-for-screen.patch
index e31aafa..25368f1 100644
--- a/patches/frameworks/base/0008-S9-brightness-override-only-for-screen.patch
+++ b/patches/frameworks/base/0008-S9-brightness-override-only-for-screen.patch
@@ -1,14 +1,14 @@
-From 5aaac501604c1a512a74a1a683bd3b0d426d5e46 Mon Sep 17 00:00:00 2001
+From fcb2d6953ad707ff8eabdf0eb5b2525e23d6392c Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <pierre-hugues.husson@softathome.com>
 Date: Thu, 7 Jun 2018 13:36:51 +0200
 Subject: [PATCH 08/26] S9 brightness override only for screen
 
 ---
- .../core/java/com/android/server/lights/LightsService.java   | 12 +++++++-----
+ .../com/android/server/lights/LightsService.java     | 12 +++++++-----
  1 file changed, 7 insertions(+), 5 deletions(-)
 
 diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
-index 762b0ae..eb25943 100644
+index 762b0ae4037..eb25943fa6b 100644
 --- a/services/core/java/com/android/server/lights/LightsService.java
 +++ b/services/core/java/com/android/server/lights/LightsService.java
 @@ -53,11 +53,13 @@ public class LightsService extends SystemService {
@@ -31,5 +31,5 @@
                  int color = brightness & 0x000000ff;
                  color = 0xff000000 | (color << 16) | (color << 8) | color;
 -- 
-2.7.4
+2.17.1
 
diff --git a/patches/frameworks/base/0009-Fix-OP6-brightness.patch b/patches/frameworks/base/0009-Fix-OP6-brightness.patch
index 688c3a9..11f6c18 100644
--- a/patches/frameworks/base/0009-Fix-OP6-brightness.patch
+++ b/patches/frameworks/base/0009-Fix-OP6-brightness.patch
@@ -1,14 +1,14 @@
-From 2f75c91fb2bdd2647dd1954a82ae0051a0a00ac6 Mon Sep 17 00:00:00 2001
+From 6923e824c890e6ed6a65881341749a83b489c954 Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <pierre-hugues.husson@softathome.com>
 Date: Thu, 7 Jun 2018 13:42:02 +0200
 Subject: [PATCH 09/26] Fix OP6 brightness
 
 ---
- .../core/java/com/android/server/lights/LightsService.java   | 12 ++++++++++++
+ .../com/android/server/lights/LightsService.java     | 12 ++++++++++++
  1 file changed, 12 insertions(+)
 
 diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
-index eb25943..a77af44 100644
+index eb25943fa6b..a77af445ba6 100644
 --- a/services/core/java/com/android/server/lights/LightsService.java
 +++ b/services/core/java/com/android/server/lights/LightsService.java
 @@ -59,6 +59,18 @@ public class LightsService extends SystemService {
@@ -31,5 +31,5 @@
  
                  int color = brightness & 0x000000ff;
 -- 
-2.7.4
+2.17.1
 
diff --git a/patches/frameworks/base/0010-Try-to-make-brightness-more-generic-using-property-s.patch b/patches/frameworks/base/0010-Try-to-make-brightness-more-generic-using-property-s.patch
index 88a774e..090287c 100644
--- a/patches/frameworks/base/0010-Try-to-make-brightness-more-generic-using-property-s.patch
+++ b/patches/frameworks/base/0010-Try-to-make-brightness-more-generic-using-property-s.patch
@@ -1,15 +1,15 @@
-From 2e537ac68e587286bee27ff78cd6154ed9923683 Mon Sep 17 00:00:00 2001
+From 82c87e64737aed3c80aa16566ac3546182d00ffc Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Sun, 10 Jun 2018 22:54:55 +0200
 Subject: [PATCH 10/26] Try to make brightness more generic using property set
  by rw-system
 
 ---
- services/core/java/com/android/server/lights/LightsService.java | 6 ++++--
+ .../core/java/com/android/server/lights/LightsService.java  | 6 ++++--
  1 file changed, 4 insertions(+), 2 deletions(-)
 
 diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
-index a77af44..4dc44de 100644
+index a77af445ba6..4dc44de37cd 100644
 --- a/services/core/java/com/android/server/lights/LightsService.java
 +++ b/services/core/java/com/android/server/lights/LightsService.java
 @@ -62,9 +62,11 @@ public class LightsService extends SystemService {
@@ -27,5 +27,5 @@
  
                      if(qcomExtendBrightness) {
 -- 
-2.7.4
+2.17.1
 
diff --git a/patches/frameworks/base/0011-property-matching-RROs-allow-to-prefix-the-value-wit.patch b/patches/frameworks/base/0011-property-matching-RROs-allow-to-prefix-the-value-wit.patch
index 653e8dd..557f85b 100644
--- a/patches/frameworks/base/0011-property-matching-RROs-allow-to-prefix-the-value-wit.patch
+++ b/patches/frameworks/base/0011-property-matching-RROs-allow-to-prefix-the-value-wit.patch
@@ -1,4 +1,4 @@
-From f7dd56eb01d249e15fbff250dc3939751770511c Mon Sep 17 00:00:00 2001
+From 92055b58d15be699f3652f6d9726de7da1188768 Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Tue, 12 Jun 2018 22:55:32 +0200
 Subject: [PATCH 11/26] property-matching RROs: allow to prefix the value with
@@ -9,7 +9,7 @@
  1 file changed, 5 insertions(+)
 
 diff --git a/cmds/idmap/scan.cpp b/cmds/idmap/scan.cpp
-index d69dd79..2be6d23 100644
+index d69dd79555a..2be6d23ac78 100644
 --- a/cmds/idmap/scan.cpp
 +++ b/cmds/idmap/scan.cpp
 @@ -1,5 +1,6 @@
@@ -31,5 +31,5 @@
      }
  
 -- 
-2.7.4
+2.17.1
 
diff --git a/patches/frameworks/base/0012-Fix-typo-on-fnmatch-return-value-check.patch b/patches/frameworks/base/0012-Fix-typo-on-fnmatch-return-value-check.patch
index 867df17..971502d 100644
--- a/patches/frameworks/base/0012-Fix-typo-on-fnmatch-return-value-check.patch
+++ b/patches/frameworks/base/0012-Fix-typo-on-fnmatch-return-value-check.patch
@@ -1,4 +1,4 @@
-From c76d3ec31672441e234863a864edcb81b30ac5b9 Mon Sep 17 00:00:00 2001
+From 6434c54e04ece8b327af3f1d453b9d2845f12fe2 Mon Sep 17 00:00:00 2001
 From: Song Fuchang <song.fc@gmail.com>
 Date: Sun, 17 Jun 2018 22:39:37 +0800
 Subject: [PATCH 12/26] Fix typo on fnmatch return value check
@@ -8,7 +8,7 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/cmds/idmap/scan.cpp b/cmds/idmap/scan.cpp
-index 2be6d23..0acff23 100644
+index 2be6d23ac78..0acff23d031 100644
 --- a/cmds/idmap/scan.cpp
 +++ b/cmds/idmap/scan.cpp
 @@ -94,7 +94,7 @@ namespace {
@@ -21,5 +21,5 @@
  
          return (strcmp(propBuf, val) == 0);
 -- 
-2.7.4
+2.17.1
 
diff --git a/patches/frameworks/base/0013-Add-Qualcomm-starlte.patch b/patches/frameworks/base/0013-Add-Qualcomm-starlte.patch
index 194c040..74fd837 100644
--- a/patches/frameworks/base/0013-Add-Qualcomm-starlte.patch
+++ b/patches/frameworks/base/0013-Add-Qualcomm-starlte.patch
@@ -1,14 +1,14 @@
-From 672a57ba8016499f4c78b63ce4ec56ff4ae1162b Mon Sep 17 00:00:00 2001
+From c232a221826b04cacf0c9ba19d0f687b5adb61f4 Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Mon, 25 Jun 2018 22:43:32 +0200
 Subject: [PATCH 13/26] Add Qualcomm starlte
 
 ---
- services/core/java/com/android/server/lights/LightsService.java | 4 +++-
+ .../core/java/com/android/server/lights/LightsService.java    | 4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)
 
 diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
-index 4dc44de..2886f29 100644
+index 4dc44de37cd..2886f2900d9 100644
 --- a/services/core/java/com/android/server/lights/LightsService.java
 +++ b/services/core/java/com/android/server/lights/LightsService.java
 @@ -55,7 +55,9 @@ public class LightsService extends SystemService {
@@ -23,5 +23,5 @@
                          return;
                      }
 -- 
-2.7.4
+2.17.1
 
diff --git a/patches/frameworks/base/0014-remaining-of-HAL-onEnroll-is-actually-a-percent-of-p.patch b/patches/frameworks/base/0014-remaining-of-HAL-onEnroll-is-actually-a-percent-of-p.patch
index 006c736..b42ac73 100644
--- a/patches/frameworks/base/0014-remaining-of-HAL-onEnroll-is-actually-a-percent-of-p.patch
+++ b/patches/frameworks/base/0014-remaining-of-HAL-onEnroll-is-actually-a-percent-of-p.patch
@@ -1,15 +1,15 @@
-From 193e90216abdd2758da4c42935bf2bf792bffa46 Mon Sep 17 00:00:00 2001
+From 7f583a4e841bfa0525abb0a523fee67f500a7e2f Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Mon, 2 Jul 2018 23:36:39 +0200
 Subject: [PATCH 14/26] "remaining" of HAL onEnroll is actually a percent of
  progress
 
 ---
- .../java/com/android/server/fingerprint/FingerprintService.java     | 6 +++++-
+ .../com/android/server/fingerprint/FingerprintService.java  | 6 +++++-
  1 file changed, 5 insertions(+), 1 deletion(-)
 
 diff --git a/services/core/java/com/android/server/fingerprint/FingerprintService.java b/services/core/java/com/android/server/fingerprint/FingerprintService.java
-index 06329e57..6f09433 100644
+index 06329e571b4..6f09433c002 100644
 --- a/services/core/java/com/android/server/fingerprint/FingerprintService.java
 +++ b/services/core/java/com/android/server/fingerprint/FingerprintService.java
 @@ -1046,7 +1046,11 @@ public class FingerprintService extends SystemService implements IHwBinder.Death
@@ -26,5 +26,5 @@
              });
          }
 -- 
-2.7.4
+2.17.1
 
diff --git a/patches/frameworks/base/0015-Show-APN-Settings-for-CDMA-carriers.patch b/patches/frameworks/base/0015-Show-APN-Settings-for-CDMA-carriers.patch
index 226f8f6..f656493 100644
--- a/patches/frameworks/base/0015-Show-APN-Settings-for-CDMA-carriers.patch
+++ b/patches/frameworks/base/0015-Show-APN-Settings-for-CDMA-carriers.patch
@@ -1,4 +1,4 @@
-From 450bb6695075a8307306d87c45fe4de06be9b544 Mon Sep 17 00:00:00 2001
+From 4929e9f4ecda2f7083e8f975526e0f42e8ddac9f Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Mon, 6 Aug 2018 12:49:00 +0200
 Subject: [PATCH 15/26] Show APN Settings for CDMA carriers
@@ -8,10 +8,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
-index f66164c..0cf93a1 100644
+index a8b39e3b06b..5b1e1fc6c74 100644
 --- a/telephony/java/android/telephony/CarrierConfigManager.java
 +++ b/telephony/java/android/telephony/CarrierConfigManager.java
-@@ -2019,7 +2019,7 @@ public class CarrierConfigManager {
+@@ -2084,7 +2084,7 @@ public class CarrierConfigManager {
          sDefaults.putBoolean(KEY_MDN_IS_ADDITIONAL_VOICEMAIL_NUMBER_BOOL, false);
          sDefaults.putBoolean(KEY_OPERATOR_SELECTION_EXPAND_BOOL, true);
          sDefaults.putBoolean(KEY_PREFER_2G_BOOL, true);
@@ -21,5 +21,5 @@
          sDefaults.putBoolean(KEY_SMS_REQUIRES_DESTINATION_NUMBER_CONVERSION_BOOL, false);
          sDefaults.putBoolean(KEY_SHOW_ONSCREEN_DIAL_BUTTON_BOOL, true);
 -- 
-2.7.4
+2.17.1
 
diff --git a/patches/frameworks/base/0016-Change-SignalStrentgh-to-change-behaviour-based-on-p.patch b/patches/frameworks/base/0016-Change-SignalStrentgh-to-change-behaviour-based-on-p.patch
index 2812eb2..846777e 100644
--- a/patches/frameworks/base/0016-Change-SignalStrentgh-to-change-behaviour-based-on-p.patch
+++ b/patches/frameworks/base/0016-Change-SignalStrentgh-to-change-behaviour-based-on-p.patch
@@ -1,4 +1,4 @@
-From 372ab41c59413ba81891195d72f6ebde33eb9b08 Mon Sep 17 00:00:00 2001
+From 5d298fdddbdf236dcd3908e8cfd2bd00c8a221a2 Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Mon, 6 Aug 2018 20:01:44 +0200
 Subject: [PATCH 16/26] Change SignalStrentgh to change behaviour based on
@@ -6,11 +6,11 @@
 
 Change-Id: I940ed724047567ec5195ac93ea04574c3d92f70b
 ---
- .../java/android/telephony/SignalStrength.java     | 39 +++++++++++++++-------
+ .../android/telephony/SignalStrength.java     | 39 +++++++++++++------
  1 file changed, 27 insertions(+), 12 deletions(-)
 
 diff --git a/telephony/java/android/telephony/SignalStrength.java b/telephony/java/android/telephony/SignalStrength.java
-index 4e56396..ff906d3 100644
+index 4e5639683a7..ff906d330d4 100644
 --- a/telephony/java/android/telephony/SignalStrength.java
 +++ b/telephony/java/android/telephony/SignalStrength.java
 @@ -854,6 +854,7 @@ public class SignalStrength implements Parcelable {
@@ -74,5 +74,5 @@
  
      }
 -- 
-2.7.4
+2.17.1
 
diff --git a/patches/frameworks/base/0017-idmap-Don-t-silently-ignore-RROs-with-same-priority.patch b/patches/frameworks/base/0017-idmap-Don-t-silently-ignore-RROs-with-same-priority.patch
index 190c4c2..ffa27e6 100644
--- a/patches/frameworks/base/0017-idmap-Don-t-silently-ignore-RROs-with-same-priority.patch
+++ b/patches/frameworks/base/0017-idmap-Don-t-silently-ignore-RROs-with-same-priority.patch
@@ -1,4 +1,4 @@
-From 01ca7e2062fe3986d7a978c04b6ad7b63d8adb23 Mon Sep 17 00:00:00 2001
+From 918aacb06ef25d3c6ede826ef65916103b9c5584 Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Sun, 19 Aug 2018 10:51:06 +0200
 Subject: [PATCH 17/26] idmap: Don't silently ignore RROs with same priority
@@ -9,7 +9,7 @@
  1 file changed, 2 insertions(+)
 
 diff --git a/cmds/idmap/scan.cpp b/cmds/idmap/scan.cpp
-index 0acff23..d1dde52 100644
+index 0acff23d031..d1dde52732f 100644
 --- a/cmds/idmap/scan.cpp
 +++ b/cmds/idmap/scan.cpp
 @@ -29,6 +29,8 @@ namespace {
@@ -22,5 +22,5 @@
          }
  
 -- 
-2.7.4
+2.17.1
 
diff --git a/patches/frameworks/base/0018-Move-SysuiDarkThemeOverlay-to-system.patch b/patches/frameworks/base/0018-Move-SysuiDarkThemeOverlay-to-system.patch
index ec1ec55..104d6dd 100644
--- a/patches/frameworks/base/0018-Move-SysuiDarkThemeOverlay-to-system.patch
+++ b/patches/frameworks/base/0018-Move-SysuiDarkThemeOverlay-to-system.patch
@@ -1,4 +1,4 @@
-From 4dd5e23ac2e61f674e7693e88da13d16394b450a Mon Sep 17 00:00:00 2001
+From 1d441d72b476758932f06c9d742701af4756dedd Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Sun, 19 Aug 2018 10:57:21 +0200
 Subject: [PATCH 18/26] Move SysuiDarkThemeOverlay to /system
@@ -9,7 +9,7 @@
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 diff --git a/packages/overlays/SysuiDarkThemeOverlay/Android.mk b/packages/overlays/SysuiDarkThemeOverlay/Android.mk
-index 7b277bc..89cfcf8 100644
+index 7b277bcf035..89cfcf819c2 100644
 --- a/packages/overlays/SysuiDarkThemeOverlay/Android.mk
 +++ b/packages/overlays/SysuiDarkThemeOverlay/Android.mk
 @@ -11,4 +11,5 @@ LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
@@ -20,5 +20,5 @@
 +LOCAL_IS_RUNTIME_RESOURCE_OVERLAY := true
 +include $(BUILD_PACKAGE)
 -- 
-2.7.4
+2.17.1
 
diff --git a/patches/frameworks/base/0019-Reintroduce-button-backlight-and-respective-inactivi.patch b/patches/frameworks/base/0019-Reintroduce-button-backlight-and-respective-inactivi.patch
index f5e4c6f..076a85d 100644
--- a/patches/frameworks/base/0019-Reintroduce-button-backlight-and-respective-inactivi.patch
+++ b/patches/frameworks/base/0019-Reintroduce-button-backlight-and-respective-inactivi.patch
@@ -1,4 +1,4 @@
-From 4b97606860972babc31af062db1a1b8345942f28 Mon Sep 17 00:00:00 2001
+From 2beeca83b6ef8837355d84c5939ee543d6d2701f Mon Sep 17 00:00:00 2001
 From: Ricardo Cerqueira <cyanogenmod@cerqueira.org>
 Date: Fri, 23 Nov 2012 14:23:16 +0000
 Subject: [PATCH 19/26] Reintroduce button-backlight (and respective inactivity
@@ -14,12 +14,12 @@
 
 Change-Id: I6094c446e0b8c23f57d30652a3cbd35dee5e821a
 ---
- .../com/android/server/display/DisplayPowerController.java   | 11 +++++++++++
- .../java/com/android/server/power/PowerManagerService.java   | 12 ++++++++++++
+ .../server/display/DisplayPowerController.java       | 11 +++++++++++
+ .../android/server/power/PowerManagerService.java    | 12 ++++++++++++
  2 files changed, 23 insertions(+)
 
 diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
-index db3368a..1f96902 100644
+index a09c426d7fa..4a727dc94a3 100644
 --- a/services/core/java/com/android/server/display/DisplayPowerController.java
 +++ b/services/core/java/com/android/server/display/DisplayPowerController.java
 @@ -21,6 +21,7 @@ import com.android.internal.app.IBatteryStats;
@@ -62,7 +62,7 @@
  
          // Always use the VR brightness when in the VR state.
 diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
-index d39401d..b325810 100644
+index d39401ddecd..b32581046f5 100644
 --- a/services/core/java/com/android/server/power/PowerManagerService.java
 +++ b/services/core/java/com/android/server/power/PowerManagerService.java
 @@ -230,6 +230,9 @@ public final class PowerManagerService extends SystemService
@@ -113,5 +113,5 @@
                      } else {
                          nextTimeout = mLastUserActivityTime + screenOffTimeout;
 -- 
-2.7.4
+2.17.1
 
diff --git a/patches/frameworks/base/0020-power-Disable-keyboard-button-lights-while-dozing-dr.patch b/patches/frameworks/base/0020-power-Disable-keyboard-button-lights-while-dozing-dr.patch
index 07f6129..4996927 100644
--- a/patches/frameworks/base/0020-power-Disable-keyboard-button-lights-while-dozing-dr.patch
+++ b/patches/frameworks/base/0020-power-Disable-keyboard-button-lights-while-dozing-dr.patch
@@ -1,4 +1,4 @@
-From 5036b3d244cb7b784688f6fcf3d9cec74b796ac0 Mon Sep 17 00:00:00 2001
+From b56a05837a3f080ffad773d7b4f8ad89fe69a697 Mon Sep 17 00:00:00 2001
 From: Steve Kondik <steve@cyngn.com>
 Date: Sat, 3 Jan 2015 05:13:26 -0800
 Subject: [PATCH 20/26] power: Disable keyboard/button lights while
@@ -10,11 +10,11 @@
 
 Change-Id: I7f1fc35a1573717d1ea101a07c4171d6f66d1553
 ---
- services/core/java/com/android/server/power/PowerManagerService.java | 2 +-
+ .../core/java/com/android/server/power/PowerManagerService.java | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
-index b325810..1ac93c7 100644
+index b32581046f5..1ac93c733f1 100644
 --- a/services/core/java/com/android/server/power/PowerManagerService.java
 +++ b/services/core/java/com/android/server/power/PowerManagerService.java
 @@ -2006,7 +2006,7 @@ public final class PowerManagerService extends SystemService
@@ -27,5 +27,5 @@
                              + screenOffTimeout - screenDimDuration;
                      if (now < nextTimeout) {
 -- 
-2.7.4
+2.17.1
 
diff --git a/patches/frameworks/base/0021-It-is-okay-not-to-have-wifi-in-SystemUI-on-FDE-lock.patch b/patches/frameworks/base/0021-It-is-okay-not-to-have-wifi-in-SystemUI-on-FDE-lock.patch
index 40703d6..cd4ba84 100644
--- a/patches/frameworks/base/0021-It-is-okay-not-to-have-wifi-in-SystemUI-on-FDE-lock.patch
+++ b/patches/frameworks/base/0021-It-is-okay-not-to-have-wifi-in-SystemUI-on-FDE-lock.patch
@@ -1,16 +1,16 @@
-From aabb69b5de04daa55c6576dea758a0fa838dea25 Mon Sep 17 00:00:00 2001
+From 160cb121fe386b18361771dc6886fee42c6a4552 Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Mon, 20 Aug 2018 22:27:02 +0200
 Subject: [PATCH 21/26] It is okay not to have wifi in SystemUI (on FDE lock)
 
 ---
- .../SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java     | 2 +-
- .../com/android/systemui/statusbar/policy/HotspotControllerImpl.java  | 1 +
- .../com/android/systemui/statusbar/policy/WifiSignalController.java   | 4 +++-
+ .../src/com/android/settingslib/wifi/WifiTracker.java         | 2 +-
+ .../systemui/statusbar/policy/HotspotControllerImpl.java      | 1 +
+ .../systemui/statusbar/policy/WifiSignalController.java       | 4 +++-
  3 files changed, 5 insertions(+), 2 deletions(-)
 
 diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
-index d8f0886..76cd70d 100644
+index d8f0886730d..76cd70d5c84 100644
 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
 +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
 @@ -207,7 +207,7 @@ public class WifiTracker implements LifecycleObserver, OnStart, OnStop, OnDestro
@@ -23,7 +23,7 @@
          mFilter = filter;
  
 diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java
-index d6d0673..07db5f8 100644
+index 3c16329e6f1..050a9c5257e 100644
 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java
 +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java
 @@ -113,6 +113,7 @@ public class HotspotControllerImpl implements HotspotController, WifiManager.Sof
@@ -35,7 +35,7 @@
              mWifiManager.registerSoftApCallback(
                      this,
 diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java
-index e5e576d..78b3050 100644
+index e5e576d6b80..78b30500da7 100644
 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java
 +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java
 @@ -59,7 +59,9 @@ public class WifiSignalController extends
@@ -50,5 +50,5 @@
              mWifiChannel.connect(context, handler, wifiMessenger);
          }
 -- 
-2.7.4
+2.17.1
 
diff --git a/patches/frameworks/base/0022-Don-t-wake-IR-HAL-to-the-infinity-and-beyond.patch b/patches/frameworks/base/0022-Don-t-wake-IR-HAL-to-the-infinity-and-beyond.patch
index b42fdf3..dbf6464 100644
--- a/patches/frameworks/base/0022-Don-t-wake-IR-HAL-to-the-infinity-and-beyond.patch
+++ b/patches/frameworks/base/0022-Don-t-wake-IR-HAL-to-the-infinity-and-beyond.patch
@@ -1,4 +1,4 @@
-From 52b034278a9809942e93a1d630b38d2050b74615 Mon Sep 17 00:00:00 2001
+From c31d457bbc90e1c0dc0a5e21f0591af959b4a92b Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Tue, 21 Aug 2018 22:24:02 +0200
 Subject: [PATCH 22/26] Don't wake IR HAL to the infinity and beyond
@@ -9,7 +9,7 @@
  2 files changed, 1 insertion(+), 6 deletions(-)
 
 diff --git a/services/core/java/com/android/server/ConsumerIrService.java b/services/core/java/com/android/server/ConsumerIrService.java
-index c574a03..82ec033 100644
+index c574a03c9a3..82ec033bc30 100644
 --- a/services/core/java/com/android/server/ConsumerIrService.java
 +++ b/services/core/java/com/android/server/ConsumerIrService.java
 @@ -46,11 +46,6 @@ public class ConsumerIrService extends IConsumerIrService.Stub {
@@ -25,7 +25,7 @@
  
      @Override
 diff --git a/services/core/jni/com_android_server_ConsumerIrService.cpp b/services/core/jni/com_android_server_ConsumerIrService.cpp
-index 2ca348b..148fba9 100644
+index 2ca348b3ae4..148fba9a688 100644
 --- a/services/core/jni/com_android_server_ConsumerIrService.cpp
 +++ b/services/core/jni/com_android_server_ConsumerIrService.cpp
 @@ -36,7 +36,7 @@ static sp<IConsumerIr> mHal;
@@ -38,5 +38,5 @@
  }
  
 -- 
-2.7.4
+2.17.1
 
diff --git a/patches/frameworks/base/0023-Switch-samsung-light-fingerprint-match-to-regexp-to-.patch b/patches/frameworks/base/0023-Switch-samsung-light-fingerprint-match-to-regexp-to-.patch
index 09269ae..2a77571 100644
--- a/patches/frameworks/base/0023-Switch-samsung-light-fingerprint-match-to-regexp-to-.patch
+++ b/patches/frameworks/base/0023-Switch-samsung-light-fingerprint-match-to-regexp-to-.patch
@@ -1,15 +1,15 @@
-From 53efb21888f88be64b11ee70fef324dc8413353e Mon Sep 17 00:00:00 2001
+From 2807a9946b7a22c46cd98f10f64a6bc55101b860 Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Thu, 23 Aug 2018 23:39:16 +0200
 Subject: [PATCH 23/26] Switch samsung light fingerprint match to regexp, to
  include Note9
 
 ---
- services/core/java/com/android/server/lights/LightsService.java | 4 +---
+ .../core/java/com/android/server/lights/LightsService.java    | 4 +---
  1 file changed, 1 insertion(+), 3 deletions(-)
 
 diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
-index 2886f29..2ad3877 100644
+index 2886f2900d9..2ad38774b9d 100644
 --- a/services/core/java/com/android/server/lights/LightsService.java
 +++ b/services/core/java/com/android/server/lights/LightsService.java
 @@ -55,9 +55,7 @@ public class LightsService extends SystemService {
@@ -24,5 +24,5 @@
                          return;
                      }
 -- 
-2.7.4
+2.17.1
 
diff --git a/patches/frameworks/base/0024-Add-a-property-toggle-to-enable-high-brightness-rang.patch b/patches/frameworks/base/0024-Add-a-property-toggle-to-enable-high-brightness-rang.patch
index f81e076..1aa969b 100644
--- a/patches/frameworks/base/0024-Add-a-property-toggle-to-enable-high-brightness-rang.patch
+++ b/patches/frameworks/base/0024-Add-a-property-toggle-to-enable-high-brightness-rang.patch
@@ -1,15 +1,15 @@
-From b9e8f8e4bb881dbbe1916512fa9ddbf52e603572 Mon Sep 17 00:00:00 2001
+From 54e3c7f10257e7fb9419429e6e3bebfccde3aeba Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Mon, 27 Aug 2018 00:47:13 +0200
 Subject: [PATCH 24/26] Add a property toggle to enable high brightness range
  on samsung device
 
 ---
- services/core/java/com/android/server/lights/LightsService.java | 6 +++++-
+ .../core/java/com/android/server/lights/LightsService.java  | 6 +++++-
  1 file changed, 5 insertions(+), 1 deletion(-)
 
 diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
-index 2ad3877..89008ea 100644
+index 2ad38774b9d..89008ea3134 100644
 --- a/services/core/java/com/android/server/lights/LightsService.java
 +++ b/services/core/java/com/android/server/lights/LightsService.java
 @@ -56,7 +56,11 @@ public class LightsService extends SystemService {
@@ -26,5 +26,5 @@
                      }
  
 -- 
-2.7.4
+2.17.1
 
diff --git a/patches/frameworks/base/0025-Add-japanese-S9.patch b/patches/frameworks/base/0025-Add-japanese-S9.patch
index f7bc6c8..f501cb2 100644
--- a/patches/frameworks/base/0025-Add-japanese-S9.patch
+++ b/patches/frameworks/base/0025-Add-japanese-S9.patch
@@ -1,14 +1,14 @@
-From b700f3655ef093f91cd842dc8346a1cd5d836bfb Mon Sep 17 00:00:00 2001
+From be5482c01553a3dfc8e2b2e176c9d7f8069d5f53 Mon Sep 17 00:00:00 2001
 From: Pierre-Hugues Husson <phh@phh.me>
 Date: Tue, 28 Aug 2018 20:39:26 +0200
 Subject: [PATCH 25/26] Add japanese S9
 
 ---
- services/core/java/com/android/server/lights/LightsService.java | 3 ++-
+ .../core/java/com/android/server/lights/LightsService.java     | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
-index 89008ea..47c1d92 100644
+index 89008ea3134..47c1d9297fe 100644
 --- a/services/core/java/com/android/server/lights/LightsService.java
 +++ b/services/core/java/com/android/server/lights/LightsService.java
 @@ -55,7 +55,8 @@ public class LightsService extends SystemService {
@@ -22,5 +22,5 @@
                          if(SystemProperties.getBoolean("persist.sys.samsung.full_brightness", false)) {
                              newBrightness = (int) (brightness * 40960.0 / 255.0);
 -- 
-2.7.4
+2.17.1
 
diff --git a/patches/frameworks/base/0026-Re-order-services-so-that-it-works-even-without-qtag.patch b/patches/frameworks/base/0026-Re-order-services-so-that-it-works-even-without-qtag.patch
new file mode 100644
index 0000000..bab659b
--- /dev/null
+++ b/patches/frameworks/base/0026-Re-order-services-so-that-it-works-even-without-qtag.patch
@@ -0,0 +1,36 @@
+From 377d3dd22093bbf4f324777af4865b46168496dd Mon Sep 17 00:00:00 2001
+From: Pierre-Hugues Husson <phh@phh.me>
+Date: Thu, 8 Nov 2018 23:04:03 +0100
+Subject: [PATCH 26/26] Re-order services so that it works even without qtaguid
+
+---
+ .../com/android/server/net/NetworkPolicyManagerService.java | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+index db33bd8f08d..c612b2ab211 100644
+--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
++++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+@@ -710,6 +710,9 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
+         Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "systemReady");
+         final int oldPriority = Process.getThreadPriority(Process.myTid());
+         try {
++            mUsageStats = LocalServices.getService(UsageStatsManagerInternal.class);
++            mNetworkStats = LocalServices.getService(NetworkStatsManagerInternal.class);
++
+             // Boost thread's priority during system server init
+             Process.setThreadPriority(Process.THREAD_PRIORITY_FOREGROUND);
+             if (!isBandwidthControlEnabled()) {
+@@ -717,9 +720,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
+                 return;
+             }
+ 
+-            mUsageStats = LocalServices.getService(UsageStatsManagerInternal.class);
+-            mNetworkStats = LocalServices.getService(NetworkStatsManagerInternal.class);
+-
+             synchronized (mUidRulesFirstLock) {
+                 synchronized (mNetworkPoliciesSecondLock) {
+                     updatePowerSaveWhitelistUL();
+-- 
+2.17.1
+
diff --git a/patches/frameworks/base/0026-Revert-Revert-CameraServiceProxy-Add-client-API-leve.patch b/patches/frameworks/base/0026-Revert-Revert-CameraServiceProxy-Add-client-API-leve.patch
deleted file mode 100644
index 1a22278..0000000
--- a/patches/frameworks/base/0026-Revert-Revert-CameraServiceProxy-Add-client-API-leve.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From 291679ee3ce0959101b2b905208e0275d3d463a9 Mon Sep 17 00:00:00 2001
-From: Jackeagle <jackeagle102@gmail.com>
-Date: Sat, 20 Oct 2018 12:13:12 -0400
-Subject: [PATCH 26/26] Revert "Revert "CameraServiceProxy: Add client API
- level to log metrics""
-
-This reverts commit 7c97b7bb8b1b7f87974fcd13c1ae267288ca3e79.
----
- proto/src/metrics_constants.proto                        |  5 +++++
- .../com/android/server/camera/CameraServiceProxy.java    | 16 ++++++++++------
- 2 files changed, 15 insertions(+), 6 deletions(-)
-
-diff --git a/proto/src/metrics_constants.proto b/proto/src/metrics_constants.proto
-index 62f9377..e568b12 100644
---- a/proto/src/metrics_constants.proto
-+++ b/proto/src/metrics_constants.proto
-@@ -5447,6 +5447,11 @@ message MetricsEvent {
-     // OS: P
-     PACKAGE_OPTIMIZATION_COMPILATION_REASON = 1321;
- 
-+    // FIELD: The camera API level used.
-+    // CATEGORY: CAMERA
-+    // OS: P
-+    FIELD_CAMERA_API_LEVEL = 1322;
-+
-     // OPEN: Settings > Battery > Battery tip > Battery tip Dialog
-     // CATEGORY: SETTINGS
-     // OS: P
-diff --git a/services/core/java/com/android/server/camera/CameraServiceProxy.java b/services/core/java/com/android/server/camera/CameraServiceProxy.java
-index 45d2375..0ee55ed 100644
---- a/services/core/java/com/android/server/camera/CameraServiceProxy.java
-+++ b/services/core/java/com/android/server/camera/CameraServiceProxy.java
-@@ -103,13 +103,15 @@ public class CameraServiceProxy extends SystemService
-     private static class CameraUsageEvent {
-         public final int mCameraFacing;
-         public final String mClientName;
-+        public final int mAPILevel;
- 
-         private boolean mCompleted;
-         private long mDurationOrStartTimeMs;  // Either start time, or duration once completed
- 
--        public CameraUsageEvent(int facing, String clientName) {
-+        public CameraUsageEvent(int facing, String clientName, int apiLevel) {
-             mCameraFacing = facing;
-             mClientName = clientName;
-+            mAPILevel = apiLevel;
-             mDurationOrStartTimeMs = SystemClock.elapsedRealtime();
-             mCompleted = false;
-         }
-@@ -173,7 +175,7 @@ public class CameraServiceProxy extends SystemService
- 
-         @Override
-         public void notifyCameraState(String cameraId, int newCameraState, int facing,
--                String clientName) {
-+                String clientName, int apiLevel) {
-             if (Binder.getCallingUid() != Process.CAMERASERVER_UID) {
-                 Slog.e(TAG, "Calling UID: " + Binder.getCallingUid() + " doesn't match expected " +
-                         " camera service UID!");
-@@ -182,9 +184,9 @@ public class CameraServiceProxy extends SystemService
-             String state = cameraStateToString(newCameraState);
-             String facingStr = cameraFacingToString(facing);
-             if (DEBUG) Slog.v(TAG, "Camera " + cameraId + " facing " + facingStr + " state now " +
--                    state + " for client " + clientName);
-+                    state + " for client " + clientName + " API Level " + apiLevel);
- 
--            updateActivityCount(cameraId, newCameraState, facing, clientName);
-+            updateActivityCount(cameraId, newCameraState, facing, clientName, apiLevel);
-         }
-     };
- 
-@@ -303,6 +305,7 @@ public class CameraServiceProxy extends SystemService
-                         .setType(MetricsEvent.TYPE_ACTION)
-                         .setSubtype(subtype)
-                         .setLatency(e.getDuration())
-+                        .addTaggedData(MetricsEvent.FIELD_CAMERA_API_LEVEL, e.mAPILevel)
-                         .setPackageName(e.mClientName);
-                 mLogger.write(l);
-             }
-@@ -383,7 +386,8 @@ public class CameraServiceProxy extends SystemService
-         return true;
-     }
- 
--    private void updateActivityCount(String cameraId, int newCameraState, int facing, String clientName) {
-+    private void updateActivityCount(String cameraId, int newCameraState, int facing,
-+            String clientName, int apiLevel) {
-         synchronized(mLock) {
-             // Update active camera list and notify NFC if necessary
-             boolean wasEmpty = mActiveCameraUsage.isEmpty();
-@@ -391,7 +395,7 @@ public class CameraServiceProxy extends SystemService
-                 case ICameraServiceProxy.CAMERA_STATE_OPEN:
-                     break;
-                 case ICameraServiceProxy.CAMERA_STATE_ACTIVE:
--                    CameraUsageEvent newEvent = new CameraUsageEvent(facing, clientName);
-+                    CameraUsageEvent newEvent = new CameraUsageEvent(facing, clientName, apiLevel);
-                     CameraUsageEvent oldEvent = mActiveCameraUsage.put(cameraId, newEvent);
-                     if (oldEvent != null) {
-                         Slog.w(TAG, "Camera " + cameraId + " was already marked as active");
--- 
-2.7.4
-
