From e4af9a55a31a9cc8b22f2e176fecdf17e0c107bd Mon Sep 17 00:00:00 2001 From: waydabber <37590873+waydabber@users.noreply.github.com> Date: Wed, 2 Oct 2024 13:46:54 +0200 Subject: [PATCH] Various fixes and updates for Sequoia --- MonitorControl.xcodeproj/project.pbxproj | 48 ++-- .../xcschemes/MonitorControl.xcscheme | 2 +- MonitorControl/Enums/PrefKey.swift | 4 +- MonitorControl/Info.plist | 4 +- MonitorControl/Model/AppleDisplay.swift | 3 +- MonitorControl/Support/AppDelegate.swift | 5 +- MonitorControl/Support/Arm64DDC.swift | 2 +- MonitorControl/Support/Bridging-Header.h | 4 +- MonitorControl/Support/DisplayManager.swift | 10 +- MonitorControl/Support/MenuHandler.swift | 12 +- MonitorControl/UI/Base.lproj/Main.storyboard | 228 +++++++++--------- .../AboutPrefsViewController.swift | 4 - .../Preferences/DisplaysPrefsCellView.swift | 4 - .../DisplaysPrefsViewController.swift | 7 +- MonitorControlHelper/Info.plist | 2 +- 15 files changed, 170 insertions(+), 169 deletions(-) diff --git a/MonitorControl.xcodeproj/project.pbxproj b/MonitorControl.xcodeproj/project.pbxproj index e06faa6..637602c 100644 --- a/MonitorControl.xcodeproj/project.pbxproj +++ b/MonitorControl.xcodeproj/project.pbxproj @@ -427,8 +427,9 @@ 56754EA31D9A4016007BCDC5 /* Project object */ = { isa = PBXProject; attributes = { + BuildIndependentTargetsInParallel = YES; LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1250; + LastUpgradeCheck = 1610; ORGANIZATIONNAME = MonitorControl; TargetAttributes = { 56754EAA1D9A4016007BCDC5 = { @@ -521,6 +522,7 @@ /* Begin PBXShellScriptBuildPhase section */ 28D1DE0C227FCFAF004CB494 /* [Format] Run SwiftFormat */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 12; files = ( ); @@ -539,6 +541,7 @@ }; 28F6A5802283515F00A4ADCD /* Increase Build Number */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); @@ -557,6 +560,7 @@ }; 28F6A5822283548F00A4ADCD /* Sync Version Numbers */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); @@ -575,6 +579,7 @@ }; 6CB1BDB2253C7EBE00B52124 /* [Localization] Run BartyCrouch */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 12; files = ( ); @@ -589,10 +594,11 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "export PATH=\"$PATH:/opt/homebrew/bin\"\nif which bartycrouch > /dev/null; then\n bartycrouch update -x\n bartycrouch lint -x\nelse\n echo \"warning: BartyCrouch not installed, download it from https://github.com/Flinesoft/BartyCrouch\"\nfi\n"; + shellScript = "echo Skipping bartycrouch\n# export PATH=\"$PATH:/opt/homebrew/bin\"\n# if which bartycrouch > /dev/null; then\n# bartycrouch update -x\n# bartycrouch lint -x\n# else\n# echo \"warning: BartyCrouch not installed, download it from https://github.com/Flinesoft/BartyCrouch\"\n# fi\n"; }; F03A8DF01FFB9D4C0034DC27 /* [Lint] Run SwiftLint */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 12; files = ( ); @@ -769,6 +775,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "-"; COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; @@ -830,6 +837,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "-"; COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -856,10 +864,12 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_ENTITLEMENTS = MonitorControl/MonitorControlDebug.entitlements; CODE_SIGN_IDENTITY = "-"; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1179; - DEVELOPMENT_TEAM = ""; + CURRENT_PROJECT_VERSION = 7100; + DEAD_CODE_STRIPPING = YES; + DEVELOPMENT_TEAM = 299YSU96J7; ENABLE_HARDENED_RUNTIME = YES; FRAMEWORK_SEARCH_PATHS = ( "$(PROJECT_DIR)/**", @@ -871,8 +881,8 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.14; - MARKETING_VERSION = 4.2.1; - PRODUCT_BUNDLE_IDENTIFIER = me.guillaumeb.MonitorControl; + MARKETING_VERSION = 4.3.2; + PRODUCT_BUNDLE_IDENTIFIER = app.monitorcontrol.MonitorControl; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "MonitorControl/Support/Bridging-Header.h"; @@ -891,10 +901,12 @@ ARCHS = "$(ARCHS_STANDARD)"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "-"; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 1179; - DEVELOPMENT_TEAM = ""; + CURRENT_PROJECT_VERSION = 7100; + DEAD_CODE_STRIPPING = YES; + DEVELOPMENT_TEAM = 299YSU96J7; ENABLE_HARDENED_RUNTIME = YES; FRAMEWORK_SEARCH_PATHS = ( "$(PROJECT_DIR)/**", @@ -906,8 +918,8 @@ "@executable_path/../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 10.14; - MARKETING_VERSION = 4.2.1; - PRODUCT_BUNDLE_IDENTIFIER = me.guillaumeb.MonitorControl; + MARKETING_VERSION = 4.3.2; + PRODUCT_BUNDLE_IDENTIFIER = app.monitorcontrol.MonitorControl; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "MonitorControl/Support/Bridging-Header.h"; @@ -929,10 +941,12 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_ENTITLEMENTS = MonitorControlHelper/MonitorControlHelper.entitlements; CODE_SIGN_IDENTITY = "-"; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 631; - DEVELOPMENT_TEAM = ""; + CURRENT_PROJECT_VERSION = 7100; + DEAD_CODE_STRIPPING = YES; + DEVELOPMENT_TEAM = 299YSU96J7; ENABLE_HARDENED_RUNTIME = YES; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = MonitorControlHelper/Info.plist; @@ -942,7 +956,7 @@ ); MACOSX_DEPLOYMENT_TARGET = 10.14; MARKETING_VERSION = 4.1.0; - PRODUCT_BUNDLE_IDENTIFIER = me.guillaumeb.MonitorControlHelper; + PRODUCT_BUNDLE_IDENTIFIER = app.monitorcontrol.MonitorControlHelper; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_VERSION = 5.5; @@ -958,10 +972,12 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_ENTITLEMENTS = MonitorControlHelper/MonitorControlHelper.entitlements; CODE_SIGN_IDENTITY = "-"; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 631; - DEVELOPMENT_TEAM = ""; + CURRENT_PROJECT_VERSION = 7100; + DEAD_CODE_STRIPPING = YES; + DEVELOPMENT_TEAM = 299YSU96J7; ENABLE_HARDENED_RUNTIME = YES; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = MonitorControlHelper/Info.plist; @@ -971,7 +987,7 @@ ); MACOSX_DEPLOYMENT_TARGET = 10.14; MARKETING_VERSION = 4.1.0; - PRODUCT_BUNDLE_IDENTIFIER = me.guillaumeb.MonitorControlHelper; + PRODUCT_BUNDLE_IDENTIFIER = app.monitorcontrol.MonitorControlHelper; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_VERSION = 5.5; diff --git a/MonitorControl.xcodeproj/xcshareddata/xcschemes/MonitorControl.xcscheme b/MonitorControl.xcodeproj/xcshareddata/xcschemes/MonitorControl.xcscheme index 6cf2cc5..1e099db 100644 --- a/MonitorControl.xcodeproj/xcshareddata/xcschemes/MonitorControl.xcscheme +++ b/MonitorControl.xcodeproj/xcshareddata/xcschemes/MonitorControl.xcscheme @@ -1,6 +1,6 @@ CFBundleShortVersionString $(MARKETING_VERSION) CFBundleVersion - 7052 + 7104 LSApplicationCategoryType public.app-category.utilities LSMinimumSystemVersion @@ -33,7 +33,7 @@ SUEnableJavaScript SUFeedURL - https://monitorcontrol.app/appcast.xml + https://monitorcontrol.app/appcast2.xml SUPublicEDKey KuISgz+2n2/qnP/Rom5nWYAp+Pru+U3UtnAlnUjj6Pw= diff --git a/MonitorControl/Model/AppleDisplay.swift b/MonitorControl/Model/AppleDisplay.swift index 85bc92f..d49eae4 100644 --- a/MonitorControl/Model/AppleDisplay.swift +++ b/MonitorControl/Model/AppleDisplay.swift @@ -24,9 +24,8 @@ class AppleDisplay: Display { guard !self.isDummy else { return } - self.displayQueue.sync { + _ = self.displayQueue.sync { DisplayServicesSetBrightness(self.identifier, value) - DisplayServicesBrightnessChanged(self.identifier, Double(value)) } } diff --git a/MonitorControl/Support/AppDelegate.swift b/MonitorControl/Support/AppDelegate.swift index 56428e0..905672f 100644 --- a/MonitorControl/Support/AppDelegate.swift +++ b/MonitorControl/Support/AppDelegate.swift @@ -64,7 +64,10 @@ class AppDelegate: NSObject, NSApplicationDelegate { @objc func quitClicked(_: AnyObject) { os_log("Quit clicked", type: .info) - NSApplication.shared.terminate(self) + menu.closeMenu() + DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { + NSApplication.shared.terminate(self) + } } @objc func prefsClicked(_: AnyObject) { diff --git a/MonitorControl/Support/Arm64DDC.swift b/MonitorControl/Support/Arm64DDC.swift index b6e678a..2ec0425 100644 --- a/MonitorControl/Support/Arm64DDC.swift +++ b/MonitorControl/Support/Arm64DDC.swift @@ -104,7 +104,7 @@ class Arm64DDC: NSObject { } if !reply.isEmpty { usleep(readSleepTime ?? 50000) - if IOAVServiceReadI2C(service, UInt32(ARM64_DDC_7BIT_ADDRESS), UInt32(dataAddress), &reply, UInt32(reply.count)) == 0 { + if IOAVServiceReadI2C(service, UInt32(ARM64_DDC_7BIT_ADDRESS), 0, &reply, UInt32(reply.count)) == 0 { success = self.checksum(chk: 0x50, data: &reply, start: 0, end: reply.count - 2) == reply[reply.count - 1] } } diff --git a/MonitorControl/Support/Bridging-Header.h b/MonitorControl/Support/Bridging-Header.h index f67561a..00e8361 100644 --- a/MonitorControl/Support/Bridging-Header.h +++ b/MonitorControl/Support/Bridging-Header.h @@ -13,7 +13,6 @@ extern IOReturn IOAVServiceReadI2C(IOAVService service, uint32_t chipAddress, ui extern IOReturn IOAVServiceWriteI2C(IOAVService service, uint32_t chipAddress, uint32_t dataAddress, void* inputBuffer, uint32_t inputBufferSize); extern CFDictionaryRef CoreDisplay_DisplayCreateInfoDictionary(CGDirectDisplayID); -extern void DisplayServicesBrightnessChanged(CGDirectDisplayID display, double brightness); extern int DisplayServicesGetBrightness(CGDirectDisplayID display, float *brightness); extern int DisplayServicesSetBrightness(CGDirectDisplayID display, float brightness); extern int DisplayServicesGetLinearBrightness(CGDirectDisplayID display, float *brightness); @@ -21,6 +20,9 @@ extern int DisplayServicesSetLinearBrightness(CGDirectDisplayID display, float b extern void CGSServiceForDisplayNumber(CGDirectDisplayID display, io_service_t* service); +bool CGSIsHDREnabled(CGDirectDisplayID display) __attribute__((weak_import)); +bool CGSIsHDRSupported(CGDirectDisplayID display) __attribute__((weak_import)); + @class NSString; @protocol OSDUIHelperProtocol diff --git a/MonitorControl/Support/DisplayManager.swift b/MonitorControl/Support/DisplayManager.swift index c09be41..f659bd7 100644 --- a/MonitorControl/Support/DisplayManager.swift +++ b/MonitorControl/Support/DisplayManager.swift @@ -474,15 +474,17 @@ class DisplayManager { } static func isAppleDisplay(displayID: CGDirectDisplayID) -> Bool { + if #available(macOS 15.0, *) { + if CGDisplayVendorNumber(displayID) != 1552, CGSIsHDRSupported(displayID), CGSIsHDREnabled(displayID) { + return CGDisplayIsBuiltin(displayID) != 0 + } + } var brightness: Float = -1 let ret = DisplayServicesGetBrightness(displayID, &brightness) if ret == 0, brightness >= 0 { // If brightness read appears to be successful using DisplayServices then it should be an Apple display return true } - if CGDisplayIsBuiltin(displayID) != 0 { // If built-in display then it should be Apple (except for hackintosh notebooks...) - return true - } - return false + return CGDisplayIsBuiltin(displayID) != 0 // If built-in display, it should be Apple } static func getByDisplayID(displayID: CGDirectDisplayID) -> NSScreen? { diff --git a/MonitorControl/Support/MenuHandler.swift b/MonitorControl/Support/MenuHandler.swift index 34615a7..bd0cd51 100644 --- a/MonitorControl/Support/MenuHandler.swift +++ b/MonitorControl/Support/MenuHandler.swift @@ -24,6 +24,10 @@ class MenuHandler: NSMenu, NSMenuDelegate { app.keyboardShortcuts.disengage() } + func closeMenu() { + self.cancelTrackingWithoutAnimation() + } + func updateMenus(dontClose: Bool = false) { os_log("Menu update initiated", type: .info) if !dontClose { @@ -210,7 +214,7 @@ class MenuHandler: NSMenu, NSMenuDelegate { func addDefaultMenuOptions() { if !DEBUG_MACOS10, #available(macOS 11.0, *), prefs.integer(forKey: PrefKey.menuItemStyle.rawValue) == MenuItemStyle.icon.rawValue { - let iconSize = CGFloat(22) + let iconSize = CGFloat(18) let viewWidth = max(130, self.size.width) var compensateForBlock: CGFloat = 0 if viewWidth > 230 { // if there are display blocks, we need to compensate a bit for the negative inset of the blocks @@ -226,7 +230,7 @@ class MenuHandler: NSMenu, NSMenuDelegate { preferencesIcon.image = NSImage(systemSymbolName: "gearshape", accessibilityDescription: NSLocalizedString("Preferences…", comment: "Shown in menu")) preferencesIcon.alternateImage = NSImage(systemSymbolName: "gearshape.fill", accessibilityDescription: NSLocalizedString("Preferences…", comment: "Shown in menu")) preferencesIcon.alphaValue = 0.3 - preferencesIcon.frame = NSRect(x: menuItemView.frame.maxX - iconSize * 3 - 30 - 16 + compensateForBlock, y: menuItemView.frame.origin.y + 5, width: iconSize, height: iconSize) + preferencesIcon.frame = NSRect(x: menuItemView.frame.maxX - iconSize * 3 - 20 - 17 + compensateForBlock, y: menuItemView.frame.origin.y + 5, width: iconSize, height: iconSize) preferencesIcon.imageScaling = .scaleProportionallyUpOrDown preferencesIcon.action = #selector(app.prefsClicked) @@ -239,7 +243,7 @@ class MenuHandler: NSMenu, NSMenuDelegate { updateIcon.alternateImage = NSImage(systemSymbolName: symbolName + ".fill", accessibilityDescription: NSLocalizedString("Check for updates…", comment: "Shown in menu")) updateIcon.alphaValue = 0.3 - updateIcon.frame = NSRect(x: menuItemView.frame.maxX - iconSize * 2 - 10 - 16 + compensateForBlock, y: menuItemView.frame.origin.y + 5, width: iconSize, height: iconSize) + updateIcon.frame = NSRect(x: menuItemView.frame.maxX - iconSize * 2 - 14 - 17 + compensateForBlock, y: menuItemView.frame.origin.y + 5, width: iconSize, height: iconSize) updateIcon.imageScaling = .scaleProportionallyUpOrDown updateIcon.action = #selector(app.updaterController.checkForUpdates(_:)) updateIcon.target = app.updaterController @@ -252,7 +256,7 @@ class MenuHandler: NSMenu, NSMenuDelegate { quitIcon.image = NSImage(systemSymbolName: symbolName, accessibilityDescription: NSLocalizedString("Quit", comment: "Shown in menu")) quitIcon.alternateImage = NSImage(systemSymbolName: symbolName + ".fill", accessibilityDescription: NSLocalizedString("Quit", comment: "Shown in menu")) quitIcon.alphaValue = 0.3 - quitIcon.frame = NSRect(x: menuItemView.frame.maxX - iconSize - 16 + compensateForBlock, y: menuItemView.frame.origin.y + 5, width: iconSize, height: iconSize) + quitIcon.frame = NSRect(x: menuItemView.frame.maxX - iconSize - 17 + compensateForBlock, y: menuItemView.frame.origin.y + 5, width: iconSize, height: iconSize) quitIcon.imageScaling = .scaleProportionallyUpOrDown quitIcon.action = #selector(app.quitClicked) diff --git a/MonitorControl/UI/Base.lproj/Main.storyboard b/MonitorControl/UI/Base.lproj/Main.storyboard index c8a9264..f470e5a 100644 --- a/MonitorControl/UI/Base.lproj/Main.storyboard +++ b/MonitorControl/UI/Base.lproj/Main.storyboard @@ -1,8 +1,8 @@ - + - + @@ -42,7 +42,7 @@ - + @@ -65,7 +65,7 @@ - + @@ -89,7 +89,7 @@ - + @@ -114,7 +114,7 @@ - + @@ -139,7 +139,7 @@ - + @@ -156,7 +156,7 @@ - + @@ -170,7 +170,7 @@ - + @@ -186,7 +186,7 @@ - + @@ -198,7 +198,7 @@ - + @@ -209,7 +209,7 @@ - + @@ -220,7 +220,7 @@ - + @@ -236,7 +236,7 @@ - + @@ -349,7 +349,7 @@ - + @@ -363,7 +363,7 @@ - + @@ -378,7 +378,7 @@ - + @@ -392,7 +392,7 @@ - + @@ -408,7 +408,7 @@ - + @@ -437,7 +437,7 @@ - + @@ -460,7 +460,7 @@ - + @@ -484,7 +484,7 @@ - + @@ -494,7 +494,7 @@ - + @@ -530,7 +530,7 @@ - + @@ -540,7 +540,7 @@ - + @@ -554,7 +554,7 @@ - + @@ -570,7 +570,7 @@ - + @@ -586,7 +586,7 @@ - + @@ -609,7 +609,7 @@ - + @@ -634,7 +634,7 @@ - + @@ -658,7 +658,7 @@ - + @@ -738,7 +738,7 @@ - + @@ -752,7 +752,7 @@ - + @@ -771,7 +771,7 @@ - + @@ -802,7 +802,7 @@ - + @@ -822,7 +822,7 @@ - + @@ -868,7 +868,7 @@ - + @@ -878,7 +878,7 @@ - + @@ -892,7 +892,7 @@ - + @@ -910,7 +910,7 @@ - + @@ -920,7 +920,7 @@ - + @@ -943,7 +943,7 @@ - + @@ -968,7 +968,7 @@ - + @@ -985,7 +985,7 @@ - + @@ -999,7 +999,7 @@ - + @@ -1037,7 +1037,7 @@ - + @@ -1057,7 +1057,7 @@ - + @@ -1085,7 +1085,7 @@ - + @@ -1099,7 +1099,7 @@ - + @@ -1117,7 +1117,7 @@ - + @@ -1128,7 +1128,7 @@ - + @@ -1138,7 +1138,7 @@ - + @@ -1276,7 +1276,7 @@ - + @@ -1307,7 +1307,7 @@ - + @@ -1320,7 +1320,7 @@ - + @@ -1329,7 +1329,7 @@ - + @@ -1338,7 +1338,7 @@ - + @@ -1350,7 +1350,7 @@ - + @@ -1378,7 +1378,7 @@ - + @@ -1393,7 +1393,7 @@ - + @@ -1405,7 +1405,7 @@ - + @@ -1417,7 +1417,7 @@ - + @@ -1429,7 +1429,7 @@ - + @@ -1441,7 +1441,7 @@ - + @@ -1453,7 +1453,7 @@ - + @@ -1485,7 +1485,7 @@ - + @@ -1505,7 +1505,7 @@ - + @@ -1514,7 +1514,7 @@ - + @@ -1523,7 +1523,7 @@ - + @@ -1532,7 +1532,7 @@ - + @@ -1541,7 +1541,7 @@ - + @@ -1550,7 +1550,7 @@ - + @@ -1559,7 +1559,7 @@ - + @@ -1568,7 +1568,7 @@ - + @@ -1593,7 +1593,7 @@ - - - + @@ -1624,7 +1624,7 @@ - - - - + @@ -1669,7 +1669,7 @@ - + @@ -1681,7 +1681,7 @@ - + @@ -1693,7 +1693,7 @@ - + @@ -1705,7 +1705,7 @@ - + @@ -1714,7 +1714,7 @@ - + @@ -1750,7 +1750,7 @@ - + @@ -1759,7 +1759,7 @@ - + @@ -1783,7 +1783,7 @@ - - + @@ -1830,7 +1830,7 @@ - + @@ -1967,7 +1967,7 @@ - + @@ -1976,7 +1976,7 @@ - + @@ -1985,7 +1985,7 @@ - + @@ -2002,18 +2002,6 @@ - - - - - - @the0neyouseek (Guillaume B.) -@JoniVR (Joni Van Roost) -@waydabber (István T.) - - - - @@ -2031,7 +2019,7 @@