From 3d23bbb9e1e4bf394f3945af31c3896a5ca34aad Mon Sep 17 00:00:00 2001 From: Shmoopi Date: Fri, 8 Sep 2017 20:13:37 -0400 Subject: [PATCH 1/8] Create License --- LICENSE | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..1cf1c35 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2012 Shmoopi LLC + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From 3ebee2d31f65675fc0aa726aa5b4f5b6c5f2be9a Mon Sep 17 00:00:00 2001 From: Shmoopi Date: Fri, 8 Sep 2017 23:02:20 -0400 Subject: [PATCH 2/8] Release 2.0.0 --- .gitignore | 30 + README.md | 270 ++--- Sample Images/Screenshot1.png | Bin 124774 -> 129046 bytes Sample Images/Screenshot2.png | Bin 62559 -> 61650 bytes System Services/SystemServices.h | 47 +- System Services/SystemServices.m | 1017 +++++------------ .../Utilities/SSAccelerometerInfo.m | 5 +- System Services/Utilities/SSAccessoryInfo.m | 48 +- System Services/Utilities/SSApplicationInfo.m | 14 +- System Services/Utilities/SSBatteryInfo.m | 26 +- System Services/Utilities/SSCarrierInfo.m | 56 +- System Services/Utilities/SSDiskInfo.m | 106 +- System Services/Utilities/SSHardwareInfo.m | 296 ++--- System Services/Utilities/SSJailbreakCheck.h | 3 - System Services/Utilities/SSJailbreakCheck.m | 108 +- .../Utilities/SSLocalizationInfo.m | 30 +- System Services/Utilities/SSMemoryInfo.m | 92 +- System Services/Utilities/SSNetworkInfo.h | 9 - System Services/Utilities/SSNetworkInfo.m | 457 ++------ System Services/Utilities/SSProcessInfo.h | 16 - System Services/Utilities/SSProcessInfo.m | 250 +--- System Services/Utilities/SSProcessorInfo.h | 8 +- System Services/Utilities/SSProcessorInfo.m | 118 +- System Services/Utilities/SSUUID.h | 8 - System Services/Utilities/SSUUID.m | 273 +---- System Services/Utilities/route.h | 104 +- SystemServices.podspec | 15 +- .../project.pbxproj | 53 +- .../SystemServicesDemo.xccheckout | 41 - .../UserInterfaceState.xcuserstate | Bin 135655 -> 0 bytes .../WorkspaceSettings.xcsettings | 10 - .../UserInterfaceState.xcuserstate | Bin 58796 -> 0 bytes .../WorkspaceSettings.xcsettings | 10 - .../xcdebugger/Breakpoints.xcbkptlist | 14 - .../xcdebugger/Breakpoints_v2.xcbkptlist | 17 - .../xcschemes/SystemServicesDemo.xcscheme | 91 -- .../xcschemes/xcschememanagement.plist | 22 - .../xcdebugger/Breakpoints.xcbkptlist | 5 - .../xcschemes/SystemServicesDemo.xcscheme | 86 -- .../xcschemes/xcschememanagement.plist | 22 - .../SystemServicesDemo/DetailViewController.h | 24 - .../SystemServicesDemo/DetailViewController.m | 49 - .../SystemServicesDemo/Images/Processes.png | Bin 3808 -> 0 bytes .../Images/Processes@2x.png | Bin 5172 -> 0 bytes .../SystemServicesDemo/PCPieChart.m | 794 +++++++------ .../SystemServicesDemoNetworkViewController.m | 5 +- ...ystemServicesDemoProcessesViewController.h | 15 - ...ystemServicesDemoProcessesViewController.m | 197 ---- .../SystemServicesDemoViewController.m | 7 +- .../en.lproj/MainStoryboard.storyboard | 243 +--- 50 files changed, 1539 insertions(+), 3572 deletions(-) create mode 100644 .gitignore delete mode 100644 SystemServicesDemo/SystemServicesDemo.xcodeproj/project.xcworkspace/xcshareddata/SystemServicesDemo.xccheckout delete mode 100755 SystemServicesDemo/SystemServicesDemo.xcodeproj/project.xcworkspace/xcuserdata/kramer.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100755 SystemServicesDemo/SystemServicesDemo.xcodeproj/project.xcworkspace/xcuserdata/kramer.xcuserdatad/WorkspaceSettings.xcsettings delete mode 100755 SystemServicesDemo/SystemServicesDemo.xcodeproj/project.xcworkspace/xcuserdata/nick.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100755 SystemServicesDemo/SystemServicesDemo.xcodeproj/project.xcworkspace/xcuserdata/nick.xcuserdatad/WorkspaceSettings.xcsettings delete mode 100755 SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/kramer.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist delete mode 100644 SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/kramer.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist delete mode 100755 SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/kramer.xcuserdatad/xcschemes/SystemServicesDemo.xcscheme delete mode 100755 SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/kramer.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100755 SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/nick.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist delete mode 100755 SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/nick.xcuserdatad/xcschemes/SystemServicesDemo.xcscheme delete mode 100755 SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/nick.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100644 SystemServicesDemo/SystemServicesDemo/DetailViewController.h delete mode 100644 SystemServicesDemo/SystemServicesDemo/DetailViewController.m delete mode 100644 SystemServicesDemo/SystemServicesDemo/Images/Processes.png delete mode 100644 SystemServicesDemo/SystemServicesDemo/Images/Processes@2x.png delete mode 100644 SystemServicesDemo/SystemServicesDemo/SystemServicesDemoProcessesViewController.h delete mode 100644 SystemServicesDemo/SystemServicesDemo/SystemServicesDemoProcessesViewController.m diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..00c9364 --- /dev/null +++ b/.gitignore @@ -0,0 +1,30 @@ +# OS X +.DS_Store + +# Xcode +## Build generated +build/ +DerivedData/ + +## Various settings +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata/ + +## Other +*.moved-aside +*.xccheckout +*.xcscmblueprint +*.xcuserstate + +## Obj-C/Swift specific +*.hmap +*.ipa +*.dSYM.zip +*.dSYM \ No newline at end of file diff --git a/README.md b/README.md index 9f2c964..b7dada2 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ -iOS-System-Services -=================== +# iOS-System-Services

@@ -7,17 +6,16 @@ iOS-System-Services

-This is a singleton class to gather all available information about a device. It gives you over 75 methods to determine everything about a device, including: - * Hardware & Network Information - * Battery Usage - * Accelerometer Data - * Disk Usage - * Running Processes - * Memory Usage - * And a complete UDID replacement based on unchanging device information. +This is a singleton class to gather all available information about a device. It gives you over 60 methods to determine everything about a device, including: -Installation -=================== +* Hardware Information +* Network Information +* Battery Usage +* Accelerometer Data +* Disk Usage +* Memory Usage + +## Installation [![Version](https://img.shields.io/cocoapods/v/SystemServices.svg?style=flat)](http://cocoapods.org/pods/SystemServices) [![License](https://img.shields.io/cocoapods/l/SystemServices.svg?style=flat)](http://cocoapods.org/pods/SystemServices) @@ -27,318 +25,282 @@ iOS System Services is available through [CocoaPods](http://cocoapods.org). To i it, simply add the following line to your Podfile: ```ruby -pod 'SystemServices', '~> 1.1.1' +pod 'SystemServices', '~> 2.0.0' ``` -Changes -=================== +## Changes -1. Added CocoaPods Support -2. Fixed Bugs and Addressed Naming Issues -3. Deprecated Older/Unavailable Methods -4. Fixed Duplicate Implementations -5. Removed Constants File and Unnecessary Dependencies +1. Removed Older/Unavailable Methods +2. Updated Demo Project +3. Added CocoaPods Support +4. Fixed Bugs and Addressed Naming Issues +5. Deprecated Older/Unavailable Methods -Available Device Information -=================== +## Available Device Information -``` +```objective-c // System Information // Properties - + /* All System Information in Dictionary Format */ NSDictionary *allSystemInformation; - + /* Hardware Information */ - + // System Uptime (dd hh mm) NSString *systemsUptime; - + // Model of Device NSString *deviceModel; - + // Device Name NSString *deviceName; - + // System Name NSString *systemName; - + // System Version NSString *systemsVersion; - + // System Device Type (Not Formatted = iPhone1,0) NSString *systemDeviceTypeNotFormatted; - + // System Device Type (Formatted = iPhone 1) NSString *systemDeviceTypeFormatted; - + // Get the Screen Width (X) NSInteger screenWidth; - + // Get the Screen Height (Y) NSInteger screenHeight; - + // Get the Screen Brightness float screenBrightness; - + // Multitasking enabled? BOOL multitaskingEnabled; - + // Proximity sensor enabled? BOOL proximitySensorEnabled; - + // Debugger Attached? BOOL debuggerAttached; - + // Plugged In? BOOL pluggedIn; - + /* Jailbreak Check */ - + // Jailbroken? int jailbroken; - + /* Processor Information */ - + // Number of processors NSInteger numberProcessors; - + // Number of Active Processors NSInteger numberActiveProcessors; - - // Processor Speed in MHz - NSInteger processorSpeed; - - // Processor Bus Speed in MHz - NSInteger processorBusSpeed; - + + // Processor Usage Information + NSArray *processorsUsage; + /* Accessory Information */ - + // Are any accessories attached? BOOL accessoriesAttached; - + // Are headphone attached? BOOL headphonesAttached; - + // Number of attached accessories NSInteger numberAttachedAccessories; - + // Name of attached accessory/accessories (seperated by , comma's) NSString *nameAttachedAccessories; - + /* Carrier Information */ - + // Carrier Name NSString *carrierName; - + // Carrier Country NSString *carrierCountry; - + // Carrier Mobile Country Code NSString *carrierMobileCountryCode; - + // Carrier ISO Country Code NSString *carrierISOCountryCode; - + // Carrier Mobile Network Code NSString *carrierMobileNetworkCode; - + // Carrier Allows VOIP BOOL carrierAllowsVOIP; - + /* Battery Information */ - + // Battery Level float batteryLevel; - + // Charging? BOOL charging; - + // Fully Charged? BOOL fullyCharged; - + /* Network Information */ - + // Get Current IP Address NSString *currentIPAddress; - - // Get Current MAC Address - NSString *currentMACAddress; - + // Get External IP Address NSString *externalIPAddress; - + // Get Cell IP Address NSString *cellIPAddress; - - // Get Cell MAC Address - NSString *cellMACAddress; - + // Get Cell Netmask Address NSString *cellNetmaskAddress; - + // Get Cell Broadcast Address NSString *cellBroadcastAddress; - + // Get WiFi IP Address NSString *wiFiIPAddress; - - // Get WiFi MAC Address - NSString *wiFiMACAddress; - + // Get WiFi Netmask Address NSString *wiFiNetmaskAddress; - + // Get WiFi Broadcast Address NSString *wiFiBroadcastAddress; // Get WiFi Router Address NSString *wiFiRouterAddress; - + // Connected to WiFi? BOOL connectedToWiFi; - + // Connected to Cellular Network? BOOL connectedToCellNetwork; - + /* Process Information */ - + // Process ID int processID; - - // Process Name - NSString *processName; - - // Process Status - int processStatus; - - // Parent Process ID - int parentPID; - - // List of process information including PID's, Names, PPID's, and Status' - NSMutableArray *processesInformation; - + /* Disk Information */ - + // Total Disk Space NSString *diskSpace; - + // Total Free Disk Space (Raw) NSString *freeDiskSpaceinRaw; - + // Total Free Disk Space (Percentage) NSString *freeDiskSpaceinPercent; - + // Total Used Disk Space (Raw) NSString *usedDiskSpaceinRaw; - + // Total Used Disk Space (Percentage) NSString *usedDiskSpaceinPercent; - + // Get the total disk space in long format long long longDiskSpace; - + // Get the total free disk space in long format long long longFreeDiskSpace; - + /* Memory Information */ - + // Total Memory double totalMemory; - + // Free Memory (Raw) double freeMemoryinRaw; - + // Free Memory (Percent) double freeMemoryinPercent; - + // Used Memory (Raw) double usedMemoryinRaw; - + // Used Memory (Percent) double usedMemoryinPercent; - + // Active Memory (Raw) double activeMemoryinRaw; - + // Active Memory (Percent) double activeMemoryinPercent; - + // Inactive Memory (Raw) double inactiveMemoryinRaw; - + // Inactive Memory (Percent) double inactiveMemoryinPercent; - + // Wired Memory (Raw) double wiredMemoryinRaw; - + // Wired Memory (Percent) double wiredMemoryinPercent; - + // Purgable Memory (Raw) double purgableMemoryinRaw; - + // Purgable Memory (Percent) double purgableMemoryinPercent; - + /* Accelerometer Information */ - + // Device Orientation UIInterfaceOrientation deviceOrientation; - + /* Localization Information */ - + // Country NSString *country; - + // Language NSString *language; - + // TimeZone NSString *timeZoneSS; - + // Currency Symbol NSString *currency; - + /* Application Information */ - + // Application Version NSString *applicationVersion; - + // Clipboard Content NSString *clipboardContent; - + // Application CPU Usage - float cpuUsage; - + float applicationCPUUsage; + /* Universal Unique Identifiers */ - - // Unique ID - NSString *uniqueID; - - // Device Signature - NSString *deviceSignature; - + // CFUUID NSString *cfuuid; ``` -Third-Party Plugins -=================== -A big thank you to the makers of: - * Annotated Gauge iOS Class here: https://github.com/sabymike/MSSimpleGauge - * Pie Chart iOS Class here: https://github.com/honcheng/iOSPlot - * NSObject+PerformBlockAfterDelay iOS Class here: http://www.mikeash.com/pyblog/friday-qa-2009-08-14-practical-blocks.html +## Third-Party Plugins -License -=================== +A big thank you to the makers of: -Copyright © 2009-2016 Shmoopi LLC +* Annotated Gauge iOS Class here: +* Pie Chart iOS Class here: +* NSObject+PerformBlockAfterDelay iOS Class here: -This class and its usage are very intuitive and provide as simple an interface as possible for developers to plug into. Please feel free to customize the class as much as you'd like, or use any of the code within your projects. If you do add to the project, make sure to let me know so we can merge any changes. +## License -If you like what you see here, or on our website, please feel free to drop us a line or purchase one of our applications! +Copyright © 2012 Shmoopi LLC -~Shmoopi LLC +If you like what you see here, or on our website, please feel free to drop us a line or purchase one of our applications! \ No newline at end of file diff --git a/Sample Images/Screenshot1.png b/Sample Images/Screenshot1.png index 82d5282c156d61bdab9cb0660d38a7adf158395f..e49a8c27ac376a20670908352b8c3eec0b624591 100644 GIT binary patch literal 129046 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 F_J5HBP>TQn literal 124774 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�uz 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 b - - - - HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges - - SnapshotAutomaticallyBeforeSignificantChanges - - - diff --git a/SystemServicesDemo/SystemServicesDemo.xcodeproj/project.xcworkspace/xcuserdata/nick.xcuserdatad/UserInterfaceState.xcuserstate b/SystemServicesDemo/SystemServicesDemo.xcodeproj/project.xcworkspace/xcuserdata/nick.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100755 index 705c8d582d63aa0015cf21425401a00d39d65f22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58796 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 Q1^ - - - - HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges - - SnapshotAutomaticallyBeforeSignificantChanges - - - diff --git a/SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/kramer.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/kramer.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist deleted file mode 100755 index ac62168..0000000 --- a/SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/kramer.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - diff --git a/SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/kramer.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/kramer.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist deleted file mode 100644 index 8f94031..0000000 --- a/SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/kramer.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - diff --git a/SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/kramer.xcuserdatad/xcschemes/SystemServicesDemo.xcscheme b/SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/kramer.xcuserdatad/xcschemes/SystemServicesDemo.xcscheme deleted file mode 100755 index a379a29..0000000 --- a/SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/kramer.xcuserdatad/xcschemes/SystemServicesDemo.xcscheme +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/kramer.xcuserdatad/xcschemes/xcschememanagement.plist b/SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/kramer.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100755 index db75307..0000000 --- a/SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/kramer.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - SchemeUserState - - SystemServicesDemo.xcscheme - - orderHint - 0 - - - SuppressBuildableAutocreation - - 01ADF9F216051BFE008B0A6B - - primary - - - - - diff --git a/SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/nick.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/nick.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist deleted file mode 100755 index 05301bc..0000000 --- a/SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/nick.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/nick.xcuserdatad/xcschemes/SystemServicesDemo.xcscheme b/SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/nick.xcuserdatad/xcschemes/SystemServicesDemo.xcscheme deleted file mode 100755 index 68ef1b0..0000000 --- a/SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/nick.xcuserdatad/xcschemes/SystemServicesDemo.xcscheme +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/nick.xcuserdatad/xcschemes/xcschememanagement.plist b/SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/nick.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100755 index db75307..0000000 --- a/SystemServicesDemo/SystemServicesDemo.xcodeproj/xcuserdata/nick.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - SchemeUserState - - SystemServicesDemo.xcscheme - - orderHint - 0 - - - SuppressBuildableAutocreation - - 01ADF9F216051BFE008B0A6B - - primary - - - - - diff --git a/SystemServicesDemo/SystemServicesDemo/DetailViewController.h b/SystemServicesDemo/SystemServicesDemo/DetailViewController.h deleted file mode 100644 index 203490c..0000000 --- a/SystemServicesDemo/SystemServicesDemo/DetailViewController.h +++ /dev/null @@ -1,24 +0,0 @@ -// -// DetailViewController.h -// SystemServicesDemo -// -// Created by Kramer on 10/1/13. -// Copyright (c) 2013 Shmoopi LLC. All rights reserved. -// - -#import - -@interface DetailViewController : UIViewController - -@property (nonatomic, retain) NSString *slblName, *slblPID, *slblParentID, *slblParentName, *slblPriority, *slblStartDate, *slblStatus, *slblFlags; - -@property (strong, nonatomic) IBOutlet UILabel *lblName; -@property (strong, nonatomic) IBOutlet UILabel *lblPID; -@property (strong, nonatomic) IBOutlet UILabel *lblParentID; -@property (strong, nonatomic) IBOutlet UILabel *lblParentName; -@property (strong, nonatomic) IBOutlet UILabel *lblPriority; -@property (strong, nonatomic) IBOutlet UILabel *lblStartDate; -@property (strong, nonatomic) IBOutlet UILabel *lblStatus; -@property (strong, nonatomic) IBOutlet UILabel *lblFlags; - -@end diff --git a/SystemServicesDemo/SystemServicesDemo/DetailViewController.m b/SystemServicesDemo/SystemServicesDemo/DetailViewController.m deleted file mode 100644 index 7705b69..0000000 --- a/SystemServicesDemo/SystemServicesDemo/DetailViewController.m +++ /dev/null @@ -1,49 +0,0 @@ -// -// DetailViewController.m -// SystemServicesDemo -// -// Created by Kramer on 10/1/13. -// Copyright (c) 2013 Shmoopi LLC. All rights reserved. -// - -#import "DetailViewController.h" - -@interface DetailViewController () - -@end - -@implementation DetailViewController - -@synthesize slblName, slblFlags, slblStatus, slblStartDate, slblPriority, slblParentName, slblParentID, slblPID, lblName, lblFlags, lblStatus, lblStartDate, lblPriority, lblParentName, lblParentID, lblPID; - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - // Do any additional setup after loading the view. - - self.lblName.text = slblName; - self.lblFlags.text = slblFlags; - self.lblStatus.text = slblStatus; - self.lblStartDate.text = slblStartDate; - self.lblPriority.text = slblPriority; - self.lblParentName.text = slblParentName; - self.lblParentID.text = slblParentID; - self.lblPID.text = slblPID; -} - -- (void)didReceiveMemoryWarning -{ - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. -} - -@end diff --git a/SystemServicesDemo/SystemServicesDemo/Images/Processes.png b/SystemServicesDemo/SystemServicesDemo/Images/Processes.png deleted file mode 100644 index f927c02b4fa33dbef9855e89ec10a0582378f6f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3808 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 iRWcod8TuxvT>l57%*0VRRuA0(0000 * @copyright 2011 Muh Hon Cheng * @version - * + * */ #import "PCPieChart.h" @@ -70,12 +70,12 @@ - (id)initWithFrame:(CGRect)frame if (self) { // Initialization code [self setBackgroundColor:[UIColor clearColor]]; - - _titleFont = [UIFont boldSystemFontOfSize:10]; - _percentageFont = [UIFont boldSystemFontOfSize:20]; - _showArrow = YES; - _sameColorLabel = NO; - } + + _titleFont = [UIFont boldSystemFontOfSize:10]; + _percentageFont = [UIFont boldSystemFontOfSize:20]; + _showArrow = YES; + _sameColorLabel = NO; + } return self; } @@ -112,349 +112,409 @@ - (void)drawRect:(CGRect)rect } CGContextRef ctx = UIGraphicsGetCurrentContext(); - UIGraphicsPushContext(ctx); - CGContextSetRGBFillColor(ctx, 1.0f, 1.0f, 1.0f, 1.0f); // white color - CGContextSetShadow(ctx, CGSizeMake(0.0f, 0.0f), margin); - CGContextFillEllipseInRect(ctx, CGRectMake(x, y, self.diameter, self.diameter)); // a white filled circle with a diameter of 100 pixels, centered in (60, 60) - UIGraphicsPopContext(); - CGContextSetShadow(ctx, CGSizeMake(0.0f, 0.0f), 0); - - float nextStartDeg = 0; - float endDeg = 0; - NSMutableArray *tmpComponents = [NSMutableArray array]; - int last_insert = -1; - for (int i=0; i<[self.components count]; i++) - { - PCPieComponent *component = [self.components objectAtIndex:i]; - float perc = [component value]/total; - endDeg = nextStartDeg+perc*360; - - CGContextSetFillColorWithColor(ctx, [component.colour CGColor]); - CGContextMoveToPoint(ctx, origin_x, origin_y); - CGContextAddArc(ctx, origin_x, origin_y, inner_radius, (nextStartDeg-90)*M_PI/180.0, (endDeg-90)*M_PI/180.0, 0); - CGContextClosePath(ctx); - CGContextFillPath(ctx); - - CGContextSetRGBStrokeColor(ctx, 1, 1, 1, 1); - CGContextSetLineWidth(ctx, gap); - CGContextMoveToPoint(ctx, origin_x, origin_y); - CGContextAddArc(ctx, origin_x, origin_y, inner_radius, (nextStartDeg-90)*M_PI/180.0, (endDeg-90)*M_PI/180.0, 0); - CGContextClosePath(ctx); - CGContextStrokePath(ctx); - - [component setStartDeg:nextStartDeg]; - [component setEndDeg:endDeg]; - if (nextStartDeg<180) - { - [tmpComponents addObject:component]; - } - else - { - if (last_insert==-1) - { - last_insert = i; - [tmpComponents addObject:component]; - } - else - { - [tmpComponents insertObject:component atIndex:last_insert]; - } - } - - nextStartDeg = endDeg; - } - - nextStartDeg = 0; - endDeg = 0; - float max_text_width = x - 10; - for (int i=0; i<[tmpComponents count]; i++) - { - PCPieComponent *component = [tmpComponents objectAtIndex:i]; - nextStartDeg = component.startDeg; - endDeg = component.endDeg; - - if (nextStartDeg > 180 || (nextStartDeg < 180 && endDeg> 270) ) - { - // left - - // display percentage label - if (self.sameColorLabel) - { - CGContextSetFillColorWithColor(ctx, [component.colour CGColor]); - } - else - { - CGContextSetRGBFillColor(ctx, 0.1f, 0.1f, 0.1f, 1.0f); - } - //CGContextSetRGBStrokeColor(ctx, 1.0f, 1.0f, 1.0f, 1.0f); - //CGContextSetRGBFillColor(ctx, 1.0f, 1.0f, 1.0f, 1.0f); - CGContextSetShadow(ctx, CGSizeMake(0.0f, 0.0f), 3); - - //float text_x = x + 10; - NSString *percentageText = [NSString stringWithFormat:@"%.1f%%", component.value/total*100]; - CGSize optimumSize = [percentageText sizeWithFont:self.percentageFont constrainedToSize:CGSizeMake(max_text_width,100)]; - CGRect percFrame = CGRectMake(5, left_label_y, max_text_width, optimumSize.height); + UIGraphicsPushContext(ctx); + CGContextSetRGBFillColor(ctx, 1.0f, 1.0f, 1.0f, 1.0f); // white color + CGContextSetShadow(ctx, CGSizeMake(0.0f, 0.0f), margin); + CGContextFillEllipseInRect(ctx, CGRectMake(x, y, self.diameter, self.diameter)); // a white filled circle with a diameter of 100 pixels, centered in (60, 60) + UIGraphicsPopContext(); + CGContextSetShadow(ctx, CGSizeMake(0.0f, 0.0f), 0); - if (self.hasOutline) { - CGContextSaveGState(ctx); - - CGContextSetLineWidth(ctx, 1.0f); - CGContextSetLineJoin(ctx, kCGLineJoinRound); - CGContextSetTextDrawingMode (ctx, kCGTextFillStroke); - CGContextSetRGBStrokeColor(ctx, 0.2f, 0.2f, 0.2f, 0.8f); - - [percentageText drawInRect:percFrame withFont:self.percentageFont lineBreakMode:NSLineBreakByWordWrapping alignment:NSTextAlignmentRight]; - - CGContextRestoreGState(ctx); - } else { - [percentageText drawInRect:percFrame withFont:self.percentageFont lineBreakMode:NSLineBreakByWordWrapping alignment:NSTextAlignmentRight]; + float nextStartDeg = 0; + float endDeg = 0; + NSMutableArray *tmpComponents = [NSMutableArray array]; + int last_insert = -1; + for (int i=0; i<[self.components count]; i++) + { + PCPieComponent *component = [self.components objectAtIndex:i]; + float perc = [component value]/total; + endDeg = nextStartDeg+perc*360; + + CGContextSetFillColorWithColor(ctx, [component.colour CGColor]); + CGContextMoveToPoint(ctx, origin_x, origin_y); + CGContextAddArc(ctx, origin_x, origin_y, inner_radius, (nextStartDeg-90)*M_PI/180.0, (endDeg-90)*M_PI/180.0, 0); + CGContextClosePath(ctx); + CGContextFillPath(ctx); + + CGContextSetRGBStrokeColor(ctx, 1, 1, 1, 1); + CGContextSetLineWidth(ctx, gap); + CGContextMoveToPoint(ctx, origin_x, origin_y); + CGContextAddArc(ctx, origin_x, origin_y, inner_radius, (nextStartDeg-90)*M_PI/180.0, (endDeg-90)*M_PI/180.0, 0); + CGContextClosePath(ctx); + CGContextStrokePath(ctx); + + [component setStartDeg:nextStartDeg]; + [component setEndDeg:endDeg]; + if (nextStartDeg<180) + { + [tmpComponents addObject:component]; + } + else + { + if (last_insert==-1) + { + last_insert = i; + [tmpComponents addObject:component]; + } + else + { + [tmpComponents insertObject:component atIndex:last_insert]; + } + } + + nextStartDeg = endDeg; } - - if (self.showArrow) - { - // draw line to point to chart - CGContextSetRGBStrokeColor(ctx, 0.2f, 0.2f, 0.2f, 1); - CGContextSetRGBFillColor(ctx, 0.0f, 0.0f, 0.0f, 1.0f); - //CGContextSetRGBStrokeColor(ctx, 1.0f, 1.0f, 1.0f, 1.0f); - //CGContextSetRGBFillColor(ctx, 1.0f, 1.0f, 1.0f, 1.0f); - //CGContextSetShadow(ctx, CGSizeMake(0.0f, 0.0f), 5); - - - int x1 = inner_radius/4*3*cos((nextStartDeg+component.value/total*360/2-90)*M_PI/180.0)+origin_x; - int y1 = inner_radius/4*3*sin((nextStartDeg+component.value/total*360/2-90)*M_PI/180.0)+origin_y; - CGContextSetLineWidth(ctx, 1); - if (left_label_y + optimumSize.height/2 < y)//(left_label_y==LABEL_TOP_MARGIN) - { - - CGContextMoveToPoint(ctx, 5 + max_text_width, left_label_y + optimumSize.height/2); - CGContextAddLineToPoint(ctx, x1, left_label_y + optimumSize.height/2); - CGContextAddLineToPoint(ctx, x1, y1); - CGContextStrokePath(ctx); - - //CGContextSetRGBFillColor(ctx, 0.0f, 0.0f, 0.0f, 1.0f); - CGContextMoveToPoint(ctx, x1-ARROW_HEAD_WIDTH/2, y1); - CGContextAddLineToPoint(ctx, x1, y1+ARROW_HEAD_LENGTH); - CGContextAddLineToPoint(ctx, x1+ARROW_HEAD_WIDTH/2, y1); - CGContextClosePath(ctx); - CGContextFillPath(ctx); - - } - else - { - - CGContextMoveToPoint(ctx, 5 + max_text_width, left_label_y + optimumSize.height/2); - if (left_label_y + optimumSize.height/2 > y + self.diameter) - { - CGContextAddLineToPoint(ctx, x1, left_label_y + optimumSize.height/2); - CGContextAddLineToPoint(ctx, x1, y1); - CGContextStrokePath(ctx); - - //CGContextSetRGBFillColor(ctx, 0.0f, 0.0f, 0.0f, 1.0f); - CGContextMoveToPoint(ctx, x1-ARROW_HEAD_WIDTH/2, y1); - CGContextAddLineToPoint(ctx, x1, y1-ARROW_HEAD_LENGTH); - CGContextAddLineToPoint(ctx, x1+ARROW_HEAD_WIDTH/2, y1); - CGContextClosePath(ctx); - CGContextFillPath(ctx); - } - else - { - float y_diff = y1 - (left_label_y + optimumSize.height/2); - if ( (y_diff < 2*ARROW_HEAD_LENGTH && y_diff>0) || (-1*y_diff < 2*ARROW_HEAD_LENGTH && y_diff<0)) - { - - // straight arrow - y1 = left_label_y + optimumSize.height/2; - - CGContextAddLineToPoint(ctx, x1, y1); - CGContextStrokePath(ctx); - - //CGContextSetRGBFillColor(ctx, 0.0f, 0.0f, 0.0f, 1.0f); - CGContextMoveToPoint(ctx, x1, y1-ARROW_HEAD_WIDTH/2); - CGContextAddLineToPoint(ctx, x1+ARROW_HEAD_LENGTH, y1); - CGContextAddLineToPoint(ctx, x1, y1+ARROW_HEAD_WIDTH/2); - CGContextClosePath(ctx); - CGContextFillPath(ctx); - } - else if (left_label_y + optimumSize.height/2 180 || (nextStartDeg < 180 && endDeg> 270) ) + { + // left + + // display percentage label + if (self.sameColorLabel) + { + CGContextSetFillColorWithColor(ctx, [component.colour CGColor]); + } + else + { + CGContextSetRGBFillColor(ctx, 0.1f, 0.1f, 0.1f, 1.0f); + } + //CGContextSetRGBStrokeColor(ctx, 1.0f, 1.0f, 1.0f, 1.0f); + //CGContextSetRGBFillColor(ctx, 1.0f, 1.0f, 1.0f, 1.0f); + CGContextSetShadow(ctx, CGSizeMake(0.0f, 0.0f), 3); + + //float text_x = x + 10; + NSString *percentageText = [NSString stringWithFormat:@"%.1f%%", component.value/total*100]; + CGRect textRect = [percentageText boundingRectWithSize:CGSizeMake(max_text_width,100) + options:NSStringDrawingUsesLineFragmentOrigin + attributes:@{ + NSFontAttributeName:self.percentageFont, + NSForegroundColorAttributeName: component.colour + } + context:nil]; + CGSize optimumSize = textRect.size; + CGRect percFrame = CGRectMake(5, left_label_y, max_text_width, optimumSize.height); + + if (self.hasOutline) { + CGContextSaveGState(ctx); + + CGContextSetLineWidth(ctx, 1.0f); + CGContextSetLineJoin(ctx, kCGLineJoinRound); + CGContextSetTextDrawingMode (ctx, kCGTextFillStroke); + CGContextSetRGBStrokeColor(ctx, 0.2f, 0.2f, 0.2f, 0.8f); + + // Create the attributes + /// Make a copy of the default paragraph style + NSMutableParagraphStyle *paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy]; + /// Set line break mode + paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping; + /// Set text alignment + paragraphStyle.alignment = NSTextAlignmentRight; + [percentageText drawInRect:percFrame withAttributes:@{ + NSFontAttributeName: self.percentageFont, + NSParagraphStyleAttributeName: paragraphStyle, + NSForegroundColorAttributeName: component.colour + }]; + + CGContextRestoreGState(ctx); + } else { + // Create the attributes + /// Make a copy of the default paragraph style + NSMutableParagraphStyle *paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy]; + /// Set line break mode + paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping; + /// Set text alignment + paragraphStyle.alignment = NSTextAlignmentRight; + [percentageText drawInRect:percFrame withAttributes:@{ + NSFontAttributeName: self.percentageFont, + NSParagraphStyleAttributeName: paragraphStyle, + NSForegroundColorAttributeName: component.colour + }]; + } + + if (self.showArrow) + { + // draw line to point to chart + CGContextSetRGBStrokeColor(ctx, 0.2f, 0.2f, 0.2f, 1); + CGContextSetRGBFillColor(ctx, 0.0f, 0.0f, 0.0f, 1.0f); + //CGContextSetRGBStrokeColor(ctx, 1.0f, 1.0f, 1.0f, 1.0f); + //CGContextSetRGBFillColor(ctx, 1.0f, 1.0f, 1.0f, 1.0f); + //CGContextSetShadow(ctx, CGSizeMake(0.0f, 0.0f), 5); + + + int x1 = inner_radius/4*3*cos((nextStartDeg+component.value/total*360/2-90)*M_PI/180.0)+origin_x; + int y1 = inner_radius/4*3*sin((nextStartDeg+component.value/total*360/2-90)*M_PI/180.0)+origin_y; + CGContextSetLineWidth(ctx, 1); + if (left_label_y + optimumSize.height/2 < y)//(left_label_y==LABEL_TOP_MARGIN) + { + + CGContextMoveToPoint(ctx, 5 + max_text_width, left_label_y + optimumSize.height/2); + CGContextAddLineToPoint(ctx, x1, left_label_y + optimumSize.height/2); + CGContextAddLineToPoint(ctx, x1, y1); + CGContextStrokePath(ctx); + + //CGContextSetRGBFillColor(ctx, 0.0f, 0.0f, 0.0f, 1.0f); + CGContextMoveToPoint(ctx, x1-ARROW_HEAD_WIDTH/2, y1); + CGContextAddLineToPoint(ctx, x1, y1+ARROW_HEAD_LENGTH); + CGContextAddLineToPoint(ctx, x1+ARROW_HEAD_WIDTH/2, y1); + CGContextClosePath(ctx); + CGContextFillPath(ctx); + + } + else + { + + CGContextMoveToPoint(ctx, 5 + max_text_width, left_label_y + optimumSize.height/2); + if (left_label_y + optimumSize.height/2 > y + self.diameter) + { + CGContextAddLineToPoint(ctx, x1, left_label_y + optimumSize.height/2); + CGContextAddLineToPoint(ctx, x1, y1); + CGContextStrokePath(ctx); + + //CGContextSetRGBFillColor(ctx, 0.0f, 0.0f, 0.0f, 1.0f); + CGContextMoveToPoint(ctx, x1-ARROW_HEAD_WIDTH/2, y1); + CGContextAddLineToPoint(ctx, x1, y1-ARROW_HEAD_LENGTH); + CGContextAddLineToPoint(ctx, x1+ARROW_HEAD_WIDTH/2, y1); + CGContextClosePath(ctx); + CGContextFillPath(ctx); + } + else + { + float y_diff = y1 - (left_label_y + optimumSize.height/2); + if ( (y_diff < 2*ARROW_HEAD_LENGTH && y_diff>0) || (-1*y_diff < 2*ARROW_HEAD_LENGTH && y_diff<0)) + { + + // straight arrow + y1 = left_label_y + optimumSize.height/2; + + CGContextAddLineToPoint(ctx, x1, y1); + CGContextStrokePath(ctx); + + //CGContextSetRGBFillColor(ctx, 0.0f, 0.0f, 0.0f, 1.0f); + CGContextMoveToPoint(ctx, x1, y1-ARROW_HEAD_WIDTH/2); + CGContextAddLineToPoint(ctx, x1+ARROW_HEAD_LENGTH, y1); + CGContextAddLineToPoint(ctx, x1, y1+ARROW_HEAD_WIDTH/2); + CGContextClosePath(ctx); + CGContextFillPath(ctx); + } + else if (left_label_y + optimumSize.height/20) || (-1*y_diff < 2*ARROW_HEAD_LENGTH && y_diff<0)) - { - // straight arrow - y1 = right_label_y + optimumSize.height/2; - - CGContextMoveToPoint(ctx, text_x, right_label_y + optimumSize.height/2); - CGContextAddLineToPoint(ctx, x1, y1); - CGContextStrokePath(ctx); - - //CGContextSetRGBFillColor(ctx, 0.0f, 0.0f, 0.0f, 1.0f); - CGContextMoveToPoint(ctx, x1, y1-ARROW_HEAD_WIDTH/2); - CGContextAddLineToPoint(ctx, x1-ARROW_HEAD_LENGTH, y1); - CGContextAddLineToPoint(ctx, x1, y1+ARROW_HEAD_WIDTH/2); - CGContextClosePath(ctx); - CGContextFillPath(ctx); - } - else if (right_label_y + optimumSize.height/2180) - { - // arrow point up - y1 += ARROW_HEAD_LENGTH; - - CGContextMoveToPoint(ctx, text_x, right_label_y + optimumSize.height/2); - CGContextAddLineToPoint(ctx, x1, right_label_y + optimumSize.height/2); - CGContextAddLineToPoint(ctx, x1, y1); - CGContextStrokePath(ctx); - - //CGContextSetRGBFillColor(ctx, 0.0f, 0.0f, 0.0f, 1.0f); - CGContextMoveToPoint(ctx, x1+ARROW_HEAD_WIDTH/2, y1); - CGContextAddLineToPoint(ctx, x1, y1-ARROW_HEAD_LENGTH); - CGContextAddLineToPoint(ctx, x1-ARROW_HEAD_WIDTH/2, y1); - CGContextClosePath(ctx); - CGContextFillPath(ctx); - } - } - } - - // display title on the left - CGContextSetRGBFillColor(ctx, 0.4f, 0.4f, 0.4f, 1.0f); - right_label_y += optimumSize.height - 4; - optimumSize = [component.title sizeWithFont:self.titleFont constrainedToSize:CGSizeMake(max_text_width,100)]; - CGRect titleFrame = CGRectMake(text_x, right_label_y, optimumSize.width, optimumSize.height); - [component.title drawInRect:titleFrame withFont:self.titleFont]; - right_label_y += optimumSize.height + 10; - } - nextStartDeg = endDeg; - } + //CGContextSetRGBStrokeColor(ctx, 1.0f, 1.0f, 1.0f, 1.0f); + //CGContextSetRGBFillColor(ctx, 1.0f, 1.0f, 1.0f, 1.0f); + //CGContextSetShadow(ctx, CGSizeMake(0.0f, 0.0f), 5); + + CGContextSetLineWidth(ctx, 1); + int x1 = inner_radius/4*3*cos((nextStartDeg+component.value/total*360/2-90)*M_PI/180.0)+origin_x; + int y1 = inner_radius/4*3*sin((nextStartDeg+component.value/total*360/2-90)*M_PI/180.0)+origin_y; + + + if (right_label_y + optimumSize.height/2 < y)//(right_label_y==LABEL_TOP_MARGIN) + { + + CGContextMoveToPoint(ctx, text_x - 3, right_label_y + optimumSize.height/2); + CGContextAddLineToPoint(ctx, x1, right_label_y + optimumSize.height/2); + CGContextAddLineToPoint(ctx, x1, y1); + CGContextStrokePath(ctx); + + //CGContextSetRGBFillColor(ctx, 0.0f, 0.0f, 0.0f, 1.0f); + CGContextMoveToPoint(ctx, x1-ARROW_HEAD_WIDTH/2, y1); + CGContextAddLineToPoint(ctx, x1, y1+ARROW_HEAD_LENGTH); + CGContextAddLineToPoint(ctx, x1+ARROW_HEAD_WIDTH/2, y1); + CGContextClosePath(ctx); + CGContextFillPath(ctx); + } + else + { + float y_diff = y1 - (right_label_y + optimumSize.height/2); + if ( (y_diff < 2*ARROW_HEAD_LENGTH && y_diff>0) || (-1*y_diff < 2*ARROW_HEAD_LENGTH && y_diff<0)) + { + // straight arrow + y1 = right_label_y + optimumSize.height/2; + + CGContextMoveToPoint(ctx, text_x, right_label_y + optimumSize.height/2); + CGContextAddLineToPoint(ctx, x1, y1); + CGContextStrokePath(ctx); + + //CGContextSetRGBFillColor(ctx, 0.0f, 0.0f, 0.0f, 1.0f); + CGContextMoveToPoint(ctx, x1, y1-ARROW_HEAD_WIDTH/2); + CGContextAddLineToPoint(ctx, x1-ARROW_HEAD_LENGTH, y1); + CGContextAddLineToPoint(ctx, x1, y1+ARROW_HEAD_WIDTH/2); + CGContextClosePath(ctx); + CGContextFillPath(ctx); + } + else if (right_label_y + optimumSize.height/2180) + { + // arrow point up + y1 += ARROW_HEAD_LENGTH; + + CGContextMoveToPoint(ctx, text_x, right_label_y + optimumSize.height/2); + CGContextAddLineToPoint(ctx, x1, right_label_y + optimumSize.height/2); + CGContextAddLineToPoint(ctx, x1, y1); + CGContextStrokePath(ctx); + + //CGContextSetRGBFillColor(ctx, 0.0f, 0.0f, 0.0f, 1.0f); + CGContextMoveToPoint(ctx, x1+ARROW_HEAD_WIDTH/2, y1); + CGContextAddLineToPoint(ctx, x1, y1-ARROW_HEAD_LENGTH); + CGContextAddLineToPoint(ctx, x1-ARROW_HEAD_WIDTH/2, y1); + CGContextClosePath(ctx); + CGContextFillPath(ctx); + } + } + } + + // display title on the left + CGContextSetRGBFillColor(ctx, 0.4f, 0.4f, 0.4f, 1.0f); + right_label_y += optimumSize.height - 4; + textRect = [component.title boundingRectWithSize:CGSizeMake(max_text_width,100) + options:NSStringDrawingUsesLineFragmentOrigin + attributes:@{NSFontAttributeName:self.titleFont} + context:nil]; + optimumSize = textRect.size; + CGRect titleFrame = CGRectMake(text_x, right_label_y, optimumSize.width, optimumSize.height); + [component.title drawInRect:titleFrame withAttributes:@{NSFontAttributeName:self.titleFont}]; + right_label_y += optimumSize.height + 10; + } + nextStartDeg = endDeg; + } } } diff --git a/SystemServicesDemo/SystemServicesDemo/SystemServicesDemoNetworkViewController.m b/SystemServicesDemo/SystemServicesDemo/SystemServicesDemoNetworkViewController.m index 0e141c7..266ae16 100644 --- a/SystemServicesDemo/SystemServicesDemo/SystemServicesDemoNetworkViewController.m +++ b/SystemServicesDemo/SystemServicesDemo/SystemServicesDemoNetworkViewController.m @@ -39,14 +39,11 @@ - (void)getAllNetworkInformation { NSString *CarrierMobileNetworkCode = [NSString stringWithFormat:@"Carrier Mobile Network Code: %@",[SystemSharedServices carrierMobileNetworkCode]]; NSString *CarrierAllowsVOIP = ([SystemSharedServices carrierAllowsVOIP]) ? @"Carrier Allows VOIP: Yes" : @"Carrier Allows VOIP: No"; NSString *CurrentIPAddress = [NSString stringWithFormat:@"Current IP Address: %@",[SystemSharedServices currentIPAddress]]; - NSString *CurrentMACAddress = [NSString stringWithFormat:@"Current MAC Address: %@",[SystemSharedServices currentMACAddress]]; NSString *ExternalIPAddress = [NSString stringWithFormat:@"External IP Address: %@",[SystemSharedServices externalIPAddress]]; NSString *CellIPAddress = [NSString stringWithFormat:@"Cell IP Address: %@",[SystemSharedServices cellIPAddress]]; - NSString *CellMACAddress = [NSString stringWithFormat:@"Cell MAC Address: %@",[SystemSharedServices cellMACAddress]]; NSString *CellNetmaskAddress = [NSString stringWithFormat:@"Cell Netmask Address: %@",[SystemSharedServices cellNetmaskAddress]]; NSString *CellBroadcastAddress = [NSString stringWithFormat:@"Cell Broadcast Address: %@",[SystemSharedServices cellBroadcastAddress]]; NSString *WiFiIPAddress = [NSString stringWithFormat:@"WiFi IP Address: %@",[SystemSharedServices wiFiIPAddress]]; - NSString *WiFiMACAddress = [NSString stringWithFormat:@"WiFi MAC Address: %@",[SystemSharedServices wiFiMACAddress]]; NSString *WiFiNetmaskAddress = [NSString stringWithFormat:@"WiFi Netmask Address: %@",[SystemSharedServices wiFiNetmaskAddress]]; NSString *WiFiBroadcastAddress = [NSString stringWithFormat:@"WiFi Broadcast Address: %@",[SystemSharedServices wiFiBroadcastAddress]]; NSString *WiFiRouterAddress = [NSString stringWithFormat:@"WiFi Router Address: %@",[SystemSharedServices wiFiRouterAddress]]; @@ -54,7 +51,7 @@ - (void)getAllNetworkInformation { NSString *ConnectedToCellNetwork = ([SystemSharedServices connectedToCellNetwork]) ? @"Connected to Cell Network: Yes" : @"Connected to Cell Network: No"; // Make an array to hold all the objects - NSArray *array = [[NSArray alloc] initWithObjects:CarrierName, CarrierCountry, CarrierMobileCountryCode, CarrierISOCountryCode, CarrierMobileNetworkCode, CarrierAllowsVOIP, CurrentIPAddress, CurrentMACAddress, ExternalIPAddress, CellIPAddress, CellMACAddress, CellNetmaskAddress, CellBroadcastAddress, WiFiIPAddress, WiFiMACAddress, WiFiNetmaskAddress, WiFiBroadcastAddress, WiFiRouterAddress, ConnectedToWiFi, ConnectedToCellNetwork, nil]; + NSArray *array = [[NSArray alloc] initWithObjects:CarrierName, CarrierCountry, CarrierMobileCountryCode, CarrierISOCountryCode, CarrierMobileNetworkCode, CarrierAllowsVOIP, CurrentIPAddress, ExternalIPAddress, CellIPAddress, CellNetmaskAddress, CellBroadcastAddress, WiFiIPAddress, WiFiNetmaskAddress, WiFiBroadcastAddress, WiFiRouterAddress, ConnectedToWiFi, ConnectedToCellNetwork, nil]; // Run through all the information for (NSString *objects in array) { diff --git a/SystemServicesDemo/SystemServicesDemo/SystemServicesDemoProcessesViewController.h b/SystemServicesDemo/SystemServicesDemo/SystemServicesDemoProcessesViewController.h deleted file mode 100644 index 990fc78..0000000 --- a/SystemServicesDemo/SystemServicesDemo/SystemServicesDemoProcessesViewController.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// SystemServicesDemoProcessesViewController.h -// SystemServicesDemo -// -// Created by Kramer on 4/4/13. -// Copyright (c) 2013 Shmoopi LLC. All rights reserved. -// - -#import - -@interface SystemServicesDemoProcessesViewController : UITableViewController - -- (IBAction)refresh:(id)sender; - -@end diff --git a/SystemServicesDemo/SystemServicesDemo/SystemServicesDemoProcessesViewController.m b/SystemServicesDemo/SystemServicesDemo/SystemServicesDemoProcessesViewController.m deleted file mode 100644 index 62a6fdc..0000000 --- a/SystemServicesDemo/SystemServicesDemo/SystemServicesDemoProcessesViewController.m +++ /dev/null @@ -1,197 +0,0 @@ -// -// SystemServicesDemoProcessesViewController.m -// SystemServicesDemo -// -// Created by Kramer on 4/4/13. -// Copyright (c) 2013 Shmoopi LLC. All rights reserved. -// - -#import "SystemServicesDemoProcessesViewController.h" -#import "SystemServices.h" - -#import "DetailViewController.h" - -#define SystemSharedServices [SystemServices sharedServices] - -@interface SystemServicesDemoProcessesViewController () { - // Make an array from all the system processes - NSMutableArray *tableArray; -} - -@end - -@implementation SystemServicesDemoProcessesViewController - -- (id)initWithStyle:(UITableViewStyle)style -{ - self = [super initWithStyle:style]; - if (self) { - // Custom initialization - - } - return self; -} - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - [self setAutomaticallyAdjustsScrollViewInsets:NO]; - [self.tableView setContentInset:UIEdgeInsetsMake(26,0,19,0)]; - - // Set up the tableArray; - tableArray = [[NSMutableArray alloc] initWithArray:[SystemSharedServices processesInformation]]; - - // Error check the array - if (tableArray.count < 1) { - // Invalid array - tableArray = nil; - tableArray = [[NSMutableArray alloc] initWithObjects:@"Unknown", nil]; - } - - // Uncomment the following line to preserve selection between presentations. - // self.clearsSelectionOnViewWillAppear = NO; - - // Uncomment the following line to display an Edit button in the navigation bar for this view controller. - // self.navigationItem.rightBarButtonItem = self.editButtonItem; -} - -- (void)didReceiveMemoryWarning -{ - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. -} - -#pragma mark - Table view data source - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView -{ - // Return the number of sections. - return 1; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section -{ - // Return the number of rows in the section. - return tableArray.count; -} - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath -{ - static NSString *CellIdentifier = @"CustomCell"; - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; - if (cell == nil) { - - cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier]; - - } - - if ([[tableArray objectAtIndex:indexPath.row] isKindOfClass:[NSDictionary class]]) { - cell.textLabel.text = [[tableArray objectAtIndex:indexPath.row] objectForKey:@"Name"]; - } - - if ([[tableArray objectAtIndex:indexPath.row] isKindOfClass:[NSDictionary class]]) { - cell.detailTextLabel.text = [[tableArray objectAtIndex:indexPath.row] objectForKey:@"PID"]; - } - - return cell; -} - -/* -// Override to support conditional editing of the table view. -- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath -{ - // Return NO if you do not want the specified item to be editable. - return YES; -} -*/ - -/* -// Override to support editing the table view. -- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath -{ - if (editingStyle == UITableViewCellEditingStyleDelete) { - // Delete the row from the data source - [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; - } - else if (editingStyle == UITableViewCellEditingStyleInsert) { - // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view - } -} -*/ - -/* -// Override to support rearranging the table view. -- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath -{ -} -*/ - -/* -// Override to support conditional rearranging of the table view. -- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath -{ - // Return NO if you do not want the item to be re-orderable. - return YES; -} - */ - -#pragma mark - Table view delegate - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath -{ - // Navigation logic may go here. Create and push another view controller. - - // Create a dictionary from the selected cell - NSDictionary *processData = [tableArray objectAtIndex:indexPath.row]; - - NSString *parentProcessName; - - // Determine the parent process - if it's more than 0 - if ([[processData objectForKey:@"ParentID"] integerValue] > 0) { - for (NSDictionary *dicts in tableArray) { - if ([[dicts objectForKey:@"PID"] integerValue] == [[processData objectForKey:@"ParentID"] integerValue]) { - // Parent process - parentProcessName = [dicts objectForKey:@"Name"]; - break; - } - } - } else if ([[processData objectForKey:@"ParentID"] integerValue] == -1) { - parentProcessName = @"Kernel"; - } else { - parentProcessName = @"Unknown"; - } - - DetailViewController *detailViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Detail"]; - - // Set up the information on the detail view controller - [detailViewController setTitle:[[tableArray objectAtIndex:indexPath.row] objectForKey:@"Name"]]; - // Set the labels - [detailViewController setSlblName:[NSString stringWithFormat:@"Name: %@", [processData objectForKey:@"Name"]]]; - [detailViewController setSlblPID:[NSString stringWithFormat:@"PID: %@", [processData objectForKey:@"PID"]]]; - [detailViewController setSlblParentID:[NSString stringWithFormat:@"ParentID: %@", [processData objectForKey:@"ParentID"]]]; - [detailViewController setSlblParentName:[NSString stringWithFormat:@"Parent Name: %@", parentProcessName]]; - [detailViewController setSlblPriority:[NSString stringWithFormat:@"Priority: %@", [processData objectForKey:@"Priority"]]]; - [detailViewController setSlblStartDate:[NSString stringWithFormat:@"Start Date: %@", [processData objectForKey:@"StartDate"]]]; - [detailViewController setSlblStatus:[NSString stringWithFormat:@"Status: %@", [processData objectForKey:@"Status"]]]; - [detailViewController setSlblFlags:[NSString stringWithFormat:@"Flags: %@", [processData objectForKey:@"Flags"]]]; - - // Pass the selected object to the new view controller. - [self.navigationController pushViewController:detailViewController animated:YES]; -} - -- (IBAction)refresh:(id)sender { - // Set up the tableArray; - tableArray = [[NSMutableArray alloc] initWithArray:[SystemSharedServices processesInformation]]; - - // Error check the array - if (tableArray.count < 1) { - // Invalid array - tableArray = nil; - tableArray = [[NSMutableArray alloc] initWithObjects:@"Unknown", nil]; - } - - // Reload the tableview - [self.tableView reloadData]; -} -@end diff --git a/SystemServicesDemo/SystemServicesDemo/SystemServicesDemoViewController.m b/SystemServicesDemo/SystemServicesDemo/SystemServicesDemoViewController.m index 00c6dc2..c7cbaf6 100755 --- a/SystemServicesDemo/SystemServicesDemo/SystemServicesDemoViewController.m +++ b/SystemServicesDemo/SystemServicesDemo/SystemServicesDemoViewController.m @@ -67,8 +67,7 @@ - (void)getAllHardwareInformation { NSString *Jailbroken = ([SystemSharedServices jailbroken] != NOTJAIL) ? @"Jailbroken: Yes" : @"Jailbroken: No"; NSString *NumberProcessors = [NSString stringWithFormat:@"Number of Processors: %ld", (long)[SystemSharedServices numberProcessors]]; NSString *NumberActiveProcessors = [NSString stringWithFormat:@"Number of Active Processors: %ld", (long)[SystemSharedServices numberActiveProcessors]]; - NSString *ProcessorSpeed = [NSString stringWithFormat:@"Processor Speed: %ldMhz", (long)[SystemSharedServices processorSpeed]]; - NSString *ProcessorBusSpeed = [NSString stringWithFormat:@"Processor Bus Speed: %ldMhz", (long)[SystemSharedServices processorBusSpeed]]; + NSString *ProcessorsUsage = [NSString stringWithFormat:@"Processors Usage: %@", [SystemSharedServices processorsUsage]]; NSString *AccessoriesAttached = ([SystemSharedServices accessoriesAttached]) ? @"Accessories Attached: Yes" : @"Accessories Attached: No"; NSString *HeadphonesAttached = ([SystemSharedServices headphonesAttached]) ? @"Headphones Attached: Yes" : @"Headphones Attached: No"; NSString *NumberAttachedAccessories = [NSString stringWithFormat:@"Number of Attached Accessories: %ld", (long)[SystemSharedServices numberAttachedAccessories]]; @@ -83,12 +82,10 @@ - (void)getAllHardwareInformation { NSString *Currency = [NSString stringWithFormat:@"Currency: %@", [SystemSharedServices currency]]; NSString *ApplicationVersion = [NSString stringWithFormat:@"Application Version: %@", [SystemSharedServices applicationVersion]]; NSString *ClipboardContent = [NSString stringWithFormat:@"ClipBoard Content: \"%@\"", [SystemSharedServices clipboardContent]]; - NSString *UniqueID = [NSString stringWithFormat:@"Unique ID: %@", [SystemSharedServices uniqueID]]; - NSString *DeviceSignature = [NSString stringWithFormat:@"Device Signature: %@", [SystemSharedServices deviceSignature]]; NSString *CFUUID = [NSString stringWithFormat:@"CFUUID: %@", [SystemSharedServices cfuuid]]; // Make an array of all the hardware information - NSArray *arrayofHW = [[NSArray alloc] initWithObjects:SystemUptime, DeviceModel, DeviceName, SystemName, SystemVersion, SystemDeviceTypeFormattedNO, SystemDeviceTypeFormattedYES, ScreenWidth, ScreenHeight, ScreenBrightness, MultitaskingEnabled, ProximitySensorEnabled, DebuggerAttached, PluggedIn, Jailbroken, NumberProcessors, NumberActiveProcessors, ProcessorSpeed, ProcessorBusSpeed, AccessoriesAttached, HeadphonesAttached, NumberAttachedAccessories, NameAttachedAccessories, BatteryLevel, Charging, FullyCharged, DeviceOrientation, Country, Language, TimeZone, Currency, ApplicationVersion, ClipboardContent, UniqueID, DeviceSignature, CFUUID, nil]; + NSArray *arrayofHW = [[NSArray alloc] initWithObjects:SystemUptime, DeviceModel, DeviceName, SystemName, SystemVersion, SystemDeviceTypeFormattedNO, SystemDeviceTypeFormattedYES, ScreenWidth, ScreenHeight, ScreenBrightness, MultitaskingEnabled, ProximitySensorEnabled, DebuggerAttached, PluggedIn, Jailbroken, NumberProcessors, NumberActiveProcessors, ProcessorsUsage, AccessoriesAttached, HeadphonesAttached, NumberAttachedAccessories, NameAttachedAccessories, BatteryLevel, Charging, FullyCharged, DeviceOrientation, Country, Language, TimeZone, Currency, ApplicationVersion, ClipboardContent, CFUUID, nil]; // Run through all the information for (NSString *objects in arrayofHW) { diff --git a/SystemServicesDemo/SystemServicesDemo/en.lproj/MainStoryboard.storyboard b/SystemServicesDemo/SystemServicesDemo/en.lproj/MainStoryboard.storyboard index 769d193..b766e43 100755 --- a/SystemServicesDemo/SystemServicesDemo/en.lproj/MainStoryboard.storyboard +++ b/SystemServicesDemo/SystemServicesDemo/en.lproj/MainStoryboard.storyboard @@ -1,8 +1,12 @@ - - + + + + + - + + @@ -10,20 +14,18 @@ - + - - + + - - + - - + @@ -39,27 +41,25 @@ - + - + - - + + - - + - - + @@ -75,7 +75,7 @@ - + @@ -85,33 +85,30 @@ - - + - - + - + - - + @@ -197,20 +186,19 @@ - + - + - - + @@ -251,168 +236,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -421,7 +245,6 @@ - @@ -429,7 +252,7 @@ - + @@ -438,7 +261,6 @@ - @@ -446,7 +268,7 @@ - + @@ -455,7 +277,6 @@ - @@ -463,7 +284,7 @@ - + @@ -472,7 +293,6 @@ - @@ -480,7 +300,7 @@ - + @@ -488,6 +308,5 @@ - From ba21ee7c62247bfb58ec0ae8a77e8a76f5f44102 Mon Sep 17 00:00:00 2001 From: Shmoopi Date: Thu, 28 Sep 2017 12:39:28 -0400 Subject: [PATCH 3/8] Fixed Route.h issue, added checks for pedometer, updated device identifiers, clarified comments. --- README.md | 332 +++++++++--------- System Services/SystemServices.h | 9 + System Services/SystemServices.m | 35 +- System Services/Utilities/SSHardwareInfo.h | 9 + System Services/Utilities/SSHardwareInfo.m | 187 +++++++--- System Services/Utilities/SSJailbreakCheck.m | 4 +- System Services/Utilities/SSNetworkInfo.m | 4 - SystemServices.podspec | 6 +- .../SystemServicesDemoViewController.m | 5 +- 9 files changed, 375 insertions(+), 216 deletions(-) diff --git a/README.md b/README.md index b7dada2..b05cda8 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,17 @@ iOS System Services is available through [CocoaPods](http://cocoapods.org). To i it, simply add the following line to your Podfile: ```ruby -pod 'SystemServices', '~> 2.0.0' +pod 'SystemServices', '~> 2.0.1' +``` + +## Usage + +```objective-c +// Import System Services +#import "SystemServices.h" + +// Log all System Information +NSLog(@"All System Information: %@", [SystemServices sharedServices].allSystemInformation); ``` ## Changes @@ -43,252 +53,252 @@ pod 'SystemServices', '~> 2.0.0' // Properties - /* All System Information in Dictionary Format */ - NSDictionary *allSystemInformation; +/* All System Information in Dictionary Format */ +NSDictionary *allSystemInformation; - /* Hardware Information */ +/* Hardware Information */ - // System Uptime (dd hh mm) - NSString *systemsUptime; +// System Uptime (dd hh mm) +NSString *systemsUptime; - // Model of Device - NSString *deviceModel; +// Model of Device +NSString *deviceModel; - // Device Name - NSString *deviceName; +// Device Name +NSString *deviceName; - // System Name - NSString *systemName; +// System Name +NSString *systemName; - // System Version - NSString *systemsVersion; +// System Version +NSString *systemsVersion; - // System Device Type (Not Formatted = iPhone1,0) - NSString *systemDeviceTypeNotFormatted; +// System Device Type (Not Formatted = iPhone1,0) +NSString *systemDeviceTypeNotFormatted; - // System Device Type (Formatted = iPhone 1) - NSString *systemDeviceTypeFormatted; +// System Device Type (Formatted = iPhone 1) +NSString *systemDeviceTypeFormatted; - // Get the Screen Width (X) - NSInteger screenWidth; +// Get the Screen Width (X) +NSInteger screenWidth; - // Get the Screen Height (Y) - NSInteger screenHeight; +// Get the Screen Height (Y) +NSInteger screenHeight; - // Get the Screen Brightness - float screenBrightness; +// Get the Screen Brightness +float screenBrightness; - // Multitasking enabled? - BOOL multitaskingEnabled; +// Multitasking enabled? +BOOL multitaskingEnabled; - // Proximity sensor enabled? - BOOL proximitySensorEnabled; +// Proximity sensor enabled? +BOOL proximitySensorEnabled; - // Debugger Attached? - BOOL debuggerAttached; +// Debugger Attached? +BOOL debuggerAttached; - // Plugged In? - BOOL pluggedIn; +// Plugged In? +BOOL pluggedIn; - /* Jailbreak Check */ +/* Jailbreak Check */ - // Jailbroken? - int jailbroken; +// Jailbroken? +int jailbroken; - /* Processor Information */ +/* Processor Information */ - // Number of processors - NSInteger numberProcessors; +// Number of processors +NSInteger numberProcessors; - // Number of Active Processors - NSInteger numberActiveProcessors; +// Number of Active Processors +NSInteger numberActiveProcessors; - // Processor Usage Information - NSArray *processorsUsage; +// Processor Usage Information +NSArray *processorsUsage; - /* Accessory Information */ +/* Accessory Information */ - // Are any accessories attached? - BOOL accessoriesAttached; +// Are any accessories attached? +BOOL accessoriesAttached; - // Are headphone attached? - BOOL headphonesAttached; +// Are headphone attached? +BOOL headphonesAttached; - // Number of attached accessories - NSInteger numberAttachedAccessories; +// Number of attached accessories +NSInteger numberAttachedAccessories; - // Name of attached accessory/accessories (seperated by , comma's) - NSString *nameAttachedAccessories; +// Name of attached accessory/accessories (seperated by , comma's) +NSString *nameAttachedAccessories; - /* Carrier Information */ +/* Carrier Information */ - // Carrier Name - NSString *carrierName; +// Carrier Name +NSString *carrierName; - // Carrier Country - NSString *carrierCountry; +// Carrier Country +NSString *carrierCountry; - // Carrier Mobile Country Code - NSString *carrierMobileCountryCode; +// Carrier Mobile Country Code +NSString *carrierMobileCountryCode; - // Carrier ISO Country Code - NSString *carrierISOCountryCode; +// Carrier ISO Country Code +NSString *carrierISOCountryCode; - // Carrier Mobile Network Code - NSString *carrierMobileNetworkCode; +// Carrier Mobile Network Code +NSString *carrierMobileNetworkCode; - // Carrier Allows VOIP - BOOL carrierAllowsVOIP; +// Carrier Allows VOIP +BOOL carrierAllowsVOIP; - /* Battery Information */ +/* Battery Information */ - // Battery Level - float batteryLevel; +// Battery Level +float batteryLevel; - // Charging? - BOOL charging; +// Charging? +BOOL charging; - // Fully Charged? - BOOL fullyCharged; +// Fully Charged? +BOOL fullyCharged; - /* Network Information */ +/* Network Information */ - // Get Current IP Address - NSString *currentIPAddress; +// Get Current IP Address +NSString *currentIPAddress; - // Get External IP Address - NSString *externalIPAddress; +// Get External IP Address +NSString *externalIPAddress; - // Get Cell IP Address - NSString *cellIPAddress; +// Get Cell IP Address +NSString *cellIPAddress; - // Get Cell Netmask Address - NSString *cellNetmaskAddress; +// Get Cell Netmask Address +NSString *cellNetmaskAddress; - // Get Cell Broadcast Address - NSString *cellBroadcastAddress; +// Get Cell Broadcast Address +NSString *cellBroadcastAddress; - // Get WiFi IP Address - NSString *wiFiIPAddress; +// Get WiFi IP Address +NSString *wiFiIPAddress; - // Get WiFi Netmask Address - NSString *wiFiNetmaskAddress; +// Get WiFi Netmask Address +NSString *wiFiNetmaskAddress; - // Get WiFi Broadcast Address - NSString *wiFiBroadcastAddress; +// Get WiFi Broadcast Address +NSString *wiFiBroadcastAddress; - // Get WiFi Router Address - NSString *wiFiRouterAddress; +// Get WiFi Router Address +NSString *wiFiRouterAddress; - // Connected to WiFi? - BOOL connectedToWiFi; +// Connected to WiFi? +BOOL connectedToWiFi; - // Connected to Cellular Network? - BOOL connectedToCellNetwork; +// Connected to Cellular Network? +BOOL connectedToCellNetwork; - /* Process Information */ +/* Process Information */ - // Process ID - int processID; +// Process ID +int processID; - /* Disk Information */ +/* Disk Information */ - // Total Disk Space - NSString *diskSpace; +// Total Disk Space +NSString *diskSpace; - // Total Free Disk Space (Raw) - NSString *freeDiskSpaceinRaw; +// Total Free Disk Space (Raw) +NSString *freeDiskSpaceinRaw; - // Total Free Disk Space (Percentage) - NSString *freeDiskSpaceinPercent; +// Total Free Disk Space (Percentage) +NSString *freeDiskSpaceinPercent; - // Total Used Disk Space (Raw) - NSString *usedDiskSpaceinRaw; +// Total Used Disk Space (Raw) +NSString *usedDiskSpaceinRaw; - // Total Used Disk Space (Percentage) - NSString *usedDiskSpaceinPercent; +// Total Used Disk Space (Percentage) +NSString *usedDiskSpaceinPercent; - // Get the total disk space in long format - long long longDiskSpace; +// Get the total disk space in long format +long long longDiskSpace; - // Get the total free disk space in long format - long long longFreeDiskSpace; +// Get the total free disk space in long format +long long longFreeDiskSpace; - /* Memory Information */ +/* Memory Information */ - // Total Memory - double totalMemory; +// Total Memory +double totalMemory; - // Free Memory (Raw) - double freeMemoryinRaw; +// Free Memory (Raw) +double freeMemoryinRaw; - // Free Memory (Percent) - double freeMemoryinPercent; +// Free Memory (Percent) +double freeMemoryinPercent; - // Used Memory (Raw) - double usedMemoryinRaw; +// Used Memory (Raw) +double usedMemoryinRaw; - // Used Memory (Percent) - double usedMemoryinPercent; +// Used Memory (Percent) +double usedMemoryinPercent; - // Active Memory (Raw) - double activeMemoryinRaw; +// Active Memory (Raw) +double activeMemoryinRaw; - // Active Memory (Percent) - double activeMemoryinPercent; +// Active Memory (Percent) +double activeMemoryinPercent; - // Inactive Memory (Raw) - double inactiveMemoryinRaw; +// Inactive Memory (Raw) +double inactiveMemoryinRaw; - // Inactive Memory (Percent) - double inactiveMemoryinPercent; +// Inactive Memory (Percent) +double inactiveMemoryinPercent; - // Wired Memory (Raw) - double wiredMemoryinRaw; +// Wired Memory (Raw) +double wiredMemoryinRaw; - // Wired Memory (Percent) - double wiredMemoryinPercent; +// Wired Memory (Percent) +double wiredMemoryinPercent; - // Purgable Memory (Raw) - double purgableMemoryinRaw; +// Purgable Memory (Raw) +double purgableMemoryinRaw; - // Purgable Memory (Percent) - double purgableMemoryinPercent; +// Purgable Memory (Percent) +double purgableMemoryinPercent; - /* Accelerometer Information */ +/* Accelerometer Information */ - // Device Orientation - UIInterfaceOrientation deviceOrientation; +// Device Orientation +UIInterfaceOrientation deviceOrientation; - /* Localization Information */ +/* Localization Information */ - // Country - NSString *country; +// Country +NSString *country; - // Language - NSString *language; +// Language +NSString *language; - // TimeZone - NSString *timeZoneSS; +// TimeZone +NSString *timeZoneSS; - // Currency Symbol - NSString *currency; +// Currency Symbol +NSString *currency; - /* Application Information */ +/* Application Information */ - // Application Version - NSString *applicationVersion; +// Application Version +NSString *applicationVersion; - // Clipboard Content - NSString *clipboardContent; +// Clipboard Content +NSString *clipboardContent; - // Application CPU Usage - float applicationCPUUsage; +// Application CPU Usage +float applicationCPUUsage; - /* Universal Unique Identifiers */ +/* Universal Unique Identifiers */ - // CFUUID - NSString *cfuuid; +// CFUUID +NSString *cfuuid; ``` ## Third-Party Plugins diff --git a/System Services/SystemServices.h b/System Services/SystemServices.h index b4380a5..14537d2 100755 --- a/System Services/SystemServices.h +++ b/System Services/SystemServices.h @@ -75,6 +75,15 @@ // Plugged In? @property (nonatomic, readonly) BOOL pluggedIn; +// Step-Counting Available? +@property (nonatomic, readonly) BOOL stepCountingAvailable; + +// Distance Available +@property (nonatomic, readonly) BOOL distanceAvailable; + +// Floor Counting Available +@property (nonatomic, readonly) BOOL floorCountingAvailable; + /* Jailbreak Check */ // Jailbroken? diff --git a/System Services/SystemServices.m b/System Services/SystemServices.m index 56e89a4..a8ca9e4 100755 --- a/System Services/SystemServices.m +++ b/System Services/SystemServices.m @@ -17,7 +17,7 @@ - (nullable NSDictionary *)getAllSystemInformation; @implementation SystemServices -@dynamic allSystemInformation, systemsUptime, deviceModel, deviceName, systemName, systemsVersion, systemDeviceTypeNotFormatted, systemDeviceTypeFormatted, screenWidth, screenHeight, screenBrightness, multitaskingEnabled, proximitySensorEnabled, debuggerAttached, pluggedIn, jailbroken, numberProcessors, numberActiveProcessors, processorsUsage, accessoriesAttached, headphonesAttached, numberAttachedAccessories, nameAttachedAccessories, carrierName, carrierCountry, carrierMobileCountryCode, carrierISOCountryCode, carrierMobileNetworkCode, carrierAllowsVOIP, batteryLevel, charging, fullyCharged, currentIPAddress, externalIPAddress, cellIPAddress, cellNetmaskAddress, cellBroadcastAddress, wiFiIPAddress, wiFiNetmaskAddress, wiFiBroadcastAddress, wiFiRouterAddress, connectedToWiFi, connectedToCellNetwork, processID, diskSpace, freeDiskSpaceinRaw, freeDiskSpaceinPercent, usedDiskSpaceinRaw, usedDiskSpaceinPercent, longDiskSpace, longFreeDiskSpace, totalMemory, freeMemoryinRaw, freeMemoryinPercent, usedMemoryinRaw, usedMemoryinPercent, activeMemoryinRaw, activeMemoryinPercent, inactiveMemoryinRaw, inactiveMemoryinPercent, wiredMemoryinRaw, wiredMemoryinPercent, purgableMemoryinRaw, purgableMemoryinPercent, deviceOrientation, country, language, timeZoneSS, currency, applicationVersion, clipboardContent, cfuuid, applicationCPUUsage; +@dynamic allSystemInformation, systemsUptime, deviceModel, deviceName, systemName, systemsVersion, systemDeviceTypeNotFormatted, systemDeviceTypeFormatted, screenWidth, screenHeight, screenBrightness, multitaskingEnabled, proximitySensorEnabled, debuggerAttached, pluggedIn, jailbroken, numberProcessors, numberActiveProcessors, processorsUsage, accessoriesAttached, headphonesAttached, numberAttachedAccessories, nameAttachedAccessories, carrierName, carrierCountry, carrierMobileCountryCode, carrierISOCountryCode, carrierMobileNetworkCode, carrierAllowsVOIP, batteryLevel, charging, fullyCharged, currentIPAddress, externalIPAddress, cellIPAddress, cellNetmaskAddress, cellBroadcastAddress, wiFiIPAddress, wiFiNetmaskAddress, wiFiBroadcastAddress, wiFiRouterAddress, connectedToWiFi, connectedToCellNetwork, processID, diskSpace, freeDiskSpaceinRaw, freeDiskSpaceinPercent, usedDiskSpaceinRaw, usedDiskSpaceinPercent, longDiskSpace, longFreeDiskSpace, totalMemory, freeMemoryinRaw, freeMemoryinPercent, usedMemoryinRaw, usedMemoryinPercent, activeMemoryinRaw, activeMemoryinPercent, inactiveMemoryinRaw, inactiveMemoryinPercent, wiredMemoryinRaw, wiredMemoryinPercent, purgableMemoryinRaw, purgableMemoryinPercent, deviceOrientation, country, language, timeZoneSS, currency, applicationVersion, clipboardContent, cfuuid, applicationCPUUsage, stepCountingAvailable, distanceAvailable, floorCountingAvailable; // Singleton + (nonnull instancetype)sharedServices { @@ -87,6 +87,18 @@ - (BOOL)pluggedIn { return [SSHardwareInfo pluggedIn]; } +- (BOOL)stepCountingAvailable { + return [SSHardwareInfo stepCountingAvailable]; +} + +- (BOOL)distanceAvailable { + return [SSHardwareInfo distanceAvailable]; +} + +- (BOOL)floorCountingAvailable { + return [SSHardwareInfo floorCountingAvailable]; +} + - (int)jailbroken { return [SSJailbreakCheck jailbroken]; } @@ -346,6 +358,9 @@ - (NSDictionary *)getAllSystemInformation { NSString *proximitySensorEnabled = ([self proximitySensorEnabled]) ? @"Yes" : @"No"; NSString *debuggerAttached = ([self debuggerAttached]) ? @"Yes" : @"No"; NSString *pluggedIn = ([self pluggedIn]) ? @"Yes" : @"No"; + NSString *stepCountingAvailable = ([self stepCountingAvailable]) ? @"Yes" : @"No"; + NSString *distanceAvailable = ([self distanceAvailable]) ? @"Yes" : @"No"; + NSString *floorCountingAvailable = ([self floorCountingAvailable]) ? @"Yes" : @"No"; NSString *jailbroken = [NSString stringWithFormat:@"%d", [self jailbroken]]; NSString *numberProcessors = [NSString stringWithFormat:@"%ld", (long)[self numberProcessors]]; NSString *numberActiveProcessors = [NSString stringWithFormat:@"%ld", (long)[self numberActiveProcessors]]; @@ -462,6 +477,18 @@ - (NSDictionary *)getAllSystemInformation { // Invalid value pluggedIn = @"Unknown"; } + if (stepCountingAvailable == nil || stepCountingAvailable.length <= 0) { + // Invalid value + stepCountingAvailable = @"Unknown"; + } + if (distanceAvailable == nil || distanceAvailable.length <= 0) { + // Invalid value + distanceAvailable = @"Unknown"; + } + if (floorCountingAvailable == nil || floorCountingAvailable.length <= 0) { + // Invalid value + floorCountingAvailable = @"Unknown"; + } if (jailbroken == nil || jailbroken.length <= 0) { // Invalid value jailbroken = @"Unknown"; @@ -711,6 +738,9 @@ - (NSDictionary *)getAllSystemInformation { proximitySensorEnabled, debuggerAttached, pluggedIn, + stepCountingAvailable, + distanceAvailable, + floorCountingAvailable, jailbroken, numberProcessors, numberActiveProcessors, @@ -785,6 +815,9 @@ - (NSDictionary *)getAllSystemInformation { @"ProximitySensorEnabled", @"DebuggerAttached", @"PluggedIn", + @"StepCountingAvailable", + @"DistanceAvailable", + @"FloorCountingAvailable", @"Jailbroken", @"NumberProcessors", @"NumberActiveProcessors", diff --git a/System Services/Utilities/SSHardwareInfo.h b/System Services/Utilities/SSHardwareInfo.h index f0eaab9..81405b8 100755 --- a/System Services/Utilities/SSHardwareInfo.h +++ b/System Services/Utilities/SSHardwareInfo.h @@ -51,4 +51,13 @@ // Plugged In? + (BOOL)pluggedIn; +// Step-Counting Available? ++ (BOOL)stepCountingAvailable; + +// Distance Available ++ (BOOL)distanceAvailable; + +// Floor Counting Available ++ (BOOL)floorCountingAvailable; + @end diff --git a/System Services/Utilities/SSHardwareInfo.m b/System Services/Utilities/SSHardwareInfo.m index bc373d0..a8a1013 100755 --- a/System Services/Utilities/SSHardwareInfo.m +++ b/System Services/Utilities/SSHardwareInfo.m @@ -11,6 +11,9 @@ // UIKit #import +// Core Motion +#import + // sysctl #import // utsname @@ -126,16 +129,18 @@ + (NSString *)systemDeviceTypeFormatted:(BOOL)formatted { // Set up a new Device Type String NSString *newDeviceType; // Set up a struct - struct utsname DT; + struct utsname dt; // Get the system information - uname(&DT); + uname(&dt); // Set the device type to the machine type - deviceType = [NSString stringWithFormat:@"%s", DT.machine]; + deviceType = [NSString stringWithFormat:@"%s", dt.machine]; + // Simulators if ([deviceType isEqualToString:@"i386"]) newDeviceType = @"iPhone Simulator"; else if ([deviceType isEqualToString:@"x86_64"]) newDeviceType = @"iPhone Simulator"; + // iPhones else if ([deviceType isEqualToString:@"iPhone1,1"]) newDeviceType = @"iPhone"; else if ([deviceType isEqualToString:@"iPhone1,2"]) @@ -147,17 +152,17 @@ + (NSString *)systemDeviceTypeFormatted:(BOOL)formatted { else if ([deviceType isEqualToString:@"iPhone4,1"]) newDeviceType = @"iPhone 4S"; else if ([deviceType isEqualToString:@"iPhone5,1"]) - newDeviceType = @"iPhone 5(GSM)"; + newDeviceType = @"iPhone 5 (GSM)"; else if ([deviceType isEqualToString:@"iPhone5,2"]) - newDeviceType = @"iPhone 5(GSM+CDMA)"; + newDeviceType = @"iPhone 5 (GSM+CDMA)"; else if ([deviceType isEqualToString:@"iPhone5,3"]) - newDeviceType = @"iPhone 5c(GSM)"; + newDeviceType = @"iPhone 5c (GSM)"; else if ([deviceType isEqualToString:@"iPhone5,4"]) - newDeviceType = @"iPhone 5c(GSM+CDMA)"; + newDeviceType = @"iPhone 5c (GSM+CDMA)"; else if ([deviceType isEqualToString:@"iPhone6,1"]) - newDeviceType = @"iPhone 5s(GSM)"; + newDeviceType = @"iPhone 5s (GSM)"; else if ([deviceType isEqualToString:@"iPhone6,2"]) - newDeviceType = @"iPhone 5s(GSM+CDMA)"; + newDeviceType = @"iPhone 5s (GSM+CDMA)"; else if ([deviceType isEqualToString:@"iPhone7,1"]) newDeviceType = @"iPhone 6 Plus"; else if ([deviceType isEqualToString:@"iPhone7,2"]) @@ -169,13 +174,26 @@ + (NSString *)systemDeviceTypeFormatted:(BOOL)formatted { else if ([deviceType isEqualToString:@"iPhone8,4"]) newDeviceType = @"iPhone SE"; else if ([deviceType isEqualToString:@"iPhone9,1"]) - newDeviceType = @"iPhone 7"; + newDeviceType = @"iPhone 7 (CDMA+GSM/LTE)"; else if ([deviceType isEqualToString:@"iPhone9,3"]) - newDeviceType = @"iPhone 7"; + newDeviceType = @"iPhone 7 (GSM/LTE)"; else if ([deviceType isEqualToString:@"iPhone9,2"]) - newDeviceType = @"iPhone 7 Plus"; + newDeviceType = @"iPhone 7 Plus (CDMA+GSM/LTE)"; else if ([deviceType isEqualToString:@"iPhone9,4"]) - newDeviceType = @"iPhone 7 Plus"; + newDeviceType = @"iPhone 7 Plus (GSM/LTE)"; + else if ([deviceType isEqualToString:@"iPhone10,1"]) + newDeviceType = @"iPhone 8 (CDMA+GSM/LTE)"; + else if ([deviceType isEqualToString:@"iPhone10,4"]) + newDeviceType = @"iPhone 8 (GSM/LTE)"; + else if ([deviceType isEqualToString:@"iPhone10,2"]) + newDeviceType = @"iPhone 8 Plus (CDMA+GSM/LTE)"; + else if ([deviceType isEqualToString:@"iPhone10,5"]) + newDeviceType = @"iPhone 8 Plus (GSM/LTE)"; + else if ([deviceType isEqualToString:@"iPhone10,3"]) + newDeviceType = @"iPhone X (CDMA+GSM/LTE)"; + else if ([deviceType isEqualToString:@"iPhone10,6"]) + newDeviceType = @"iPhone X (GSM/LTE)"; + // iPods else if ([deviceType isEqualToString:@"iPod1,1"]) newDeviceType = @"iPod Touch 1G"; else if ([deviceType isEqualToString:@"iPod2,1"]) @@ -188,63 +206,84 @@ + (NSString *)systemDeviceTypeFormatted:(BOOL)formatted { newDeviceType = @"iPod Touch 5G"; else if ([deviceType isEqualToString:@"iPod7,1"]) newDeviceType = @"iPod Touch 6G"; + // iPads else if ([deviceType isEqualToString:@"iPad1,1"]) newDeviceType = @"iPad"; else if ([deviceType isEqualToString:@"iPad2,1"]) - newDeviceType = @"iPad 2(WiFi)"; + newDeviceType = @"iPad 2 (WiFi)"; else if ([deviceType isEqualToString:@"iPad2,2"]) - newDeviceType = @"iPad 2(GSM)"; + newDeviceType = @"iPad 2 (GSM)"; else if ([deviceType isEqualToString:@"iPad2,3"]) - newDeviceType = @"iPad 2(CDMA)"; + newDeviceType = @"iPad 2 (CDMA)"; else if ([deviceType isEqualToString:@"iPad2,4"]) - newDeviceType = @"iPad 2(WiFi + New Chip)"; + newDeviceType = @"iPad 2 (WiFi + New Chip)"; else if ([deviceType isEqualToString:@"iPad2,5"]) - newDeviceType = @"iPad mini(WiFi)"; + newDeviceType = @"iPad mini (WiFi)"; else if ([deviceType isEqualToString:@"iPad2,6"]) - newDeviceType = @"iPad mini(GSM)"; + newDeviceType = @"iPad mini (GSM)"; else if ([deviceType isEqualToString:@"iPad2,7"]) - newDeviceType = @"iPad mini(GSM+CDMA)"; + newDeviceType = @"iPad mini (GSM+CDMA)"; else if ([deviceType isEqualToString:@"iPad3,1"]) - newDeviceType = @"iPad 3(WiFi)"; + newDeviceType = @"iPad 3 (WiFi)"; else if ([deviceType isEqualToString:@"iPad3,2"]) - newDeviceType = @"iPad 3(GSM+CDMA)"; + newDeviceType = @"iPad 3 (GSM)"; else if ([deviceType isEqualToString:@"iPad3,3"]) - newDeviceType = @"iPad 3(GSM)"; + newDeviceType = @"iPad 3 (GSM+CDMA)"; else if ([deviceType isEqualToString:@"iPad3,4"]) - newDeviceType = @"iPad 4(WiFi)"; + newDeviceType = @"iPad 4 (WiFi)"; else if ([deviceType isEqualToString:@"iPad3,5"]) - newDeviceType = @"iPad 4(GSM)"; + newDeviceType = @"iPad 4 (GSM)"; else if ([deviceType isEqualToString:@"iPad3,6"]) - newDeviceType = @"iPad 4(GSM+CDMA)"; - else if ([deviceType isEqualToString:@"iPad3,3"]) - newDeviceType = @"New iPad"; + newDeviceType = @"iPad 4 (GSM+CDMA)"; else if ([deviceType isEqualToString:@"iPad4,1"]) - newDeviceType = @"iPad Air(WiFi)"; + newDeviceType = @"iPad Air (WiFi)"; else if ([deviceType isEqualToString:@"iPad4,2"]) - newDeviceType = @"iPad Air(Cellular)"; + newDeviceType = @"iPad Air (Cellular)"; + else if ([deviceType isEqualToString:@"iPad4,3"]) + newDeviceType = @"iPad Air (China)"; else if ([deviceType isEqualToString:@"iPad4,4"]) - newDeviceType = @"iPad mini 2(WiFi)"; + newDeviceType = @"iPad mini 2 (WiFi)"; else if ([deviceType isEqualToString:@"iPad4,5"]) - newDeviceType = @"iPad mini 2(Cellular)"; + newDeviceType = @"iPad mini 2 (Cellular)"; else if ([deviceType isEqualToString:@"iPad5,1"]) - newDeviceType = @"iPad mini 4(WiFi)"; + newDeviceType = @"iPad mini 4 (WiFi)"; else if ([deviceType isEqualToString:@"iPad5,2"]) - newDeviceType = @"iPad mini 4(Cellular)"; + newDeviceType = @"iPad mini 4 (Cellular)"; else if ([deviceType isEqualToString:@"iPad5,4"]) - newDeviceType = @"iPad Air 2(WiFi)"; + newDeviceType = @"iPad Air 2 (WiFi)"; else if ([deviceType isEqualToString:@"iPad5,5"]) - newDeviceType = @"iPad Air 2(Cellular)"; + newDeviceType = @"iPad Air 2 (Cellular)"; else if ([deviceType isEqualToString:@"iPad6,3"]) - newDeviceType = @"9.7-inch iPad Pro(WiFi)"; + newDeviceType = @"9.7-inch iPad Pro (WiFi)"; else if ([deviceType isEqualToString:@"iPad6,4"]) - newDeviceType = @"9.7-inch iPad Pro(Cellular)"; + newDeviceType = @"9.7-inch iPad Pro (Cellular)"; else if ([deviceType isEqualToString:@"iPad6,7"]) - newDeviceType = @"12.9-inch iPad Pro(WiFi)"; + newDeviceType = @"12.9-inch iPad Pro (WiFi)"; else if ([deviceType isEqualToString:@"iPad6,8"]) - newDeviceType = @"12.9-inch iPad Pro(Cellular)"; + newDeviceType = @"12.9-inch iPad Pro (Cellular)"; + else if ([deviceType isEqualToString:@"iPad6,11"]) + newDeviceType = @"iPad 5 (WiFi)"; + else if ([deviceType isEqualToString:@"iPad6,12"]) + newDeviceType = @"iPad 5 (Cellular)"; + else if ([deviceType isEqualToString:@"iPad7,1"]) + newDeviceType = @"iPad Pro 12.9 (2nd Gen - WiFi)"; + else if ([deviceType isEqualToString:@"iPad7,2"]) + newDeviceType = @"iPad Pro 12.9 (2nd Gen - Cellular)"; + else if ([deviceType isEqualToString:@"iPad7,3"]) + newDeviceType = @"iPad Pro 10.5 (WiFi)"; + else if ([deviceType isEqualToString:@"iPad7,4"]) + newDeviceType = @"iPad Pro 10.5 (Cellular)"; + // Catch All iPad else if ([deviceType hasPrefix:@"iPad"]) newDeviceType = @"iPad"; - + // Apple TV + else if ([deviceType isEqualToString:@"AppleTV2,1"]) + newDeviceType = @"Apple TV 2"; + else if ([deviceType isEqualToString:@"AppleTV3,1"]) + newDeviceType = @"Apple TV 3"; + else if ([deviceType isEqualToString:@"AppleTV3,2"]) + newDeviceType = @"Apple TV 3 (2013)"; + // Return the new device type return newDeviceType; } @@ -256,11 +295,11 @@ + (NSString *)systemDeviceTypeFormatted:(BOOL)formatted { // Unformatted @try { // Set up a struct - struct utsname DT; + struct utsname dt; // Get the system information - uname(&DT); + uname(&dt); // Set the device type to the machine type - deviceType = [NSString stringWithFormat:@"%s", DT.machine]; + deviceType = [NSString stringWithFormat:@"%s", dt.machine]; // Return the device type return deviceType; @@ -450,4 +489,64 @@ + (BOOL)pluggedIn { } } +// Step-Counting Available? ++ (BOOL)stepCountingAvailable { + @try { + // Make sure the Pedometer class exists + if ([CMPedometer class]) { + // Make sure the selector exists + if ([CMPedometer respondsToSelector:@selector(isStepCountingAvailable)]) { + // Return whether it's available + return [CMPedometer isStepCountingAvailable]; + } + } + // Not available + return false; + } + @catch (NSException *exception) { + // Error + return false; + } +} + +// Distance Available ++ (BOOL)distanceAvailable { + @try { + // Make sure the Pedometer class exists + if ([CMPedometer class]) { + // Make sure the selector exists + if ([CMPedometer respondsToSelector:@selector(isDistanceAvailable)]) { + // Return whether it's available + return [CMPedometer isDistanceAvailable]; + } + } + // Not available + return false; + } + @catch (NSException *exception) { + // Error + return false; + } +} + +// Floor Counting Available ++ (BOOL)floorCountingAvailable { + @try { + // Make sure the Pedometer class exists + if ([CMPedometer class]) { + // Make sure the selector exists + if ([CMPedometer respondsToSelector:@selector(isFloorCountingAvailable)]) { + // Return whether it's available + return [CMPedometer isFloorCountingAvailable]; + } + } + // Not available + return false; + } + @catch (NSException *exception) { + // Error + return false; + } +} + @end diff --git a/System Services/Utilities/SSJailbreakCheck.m b/System Services/Utilities/SSJailbreakCheck.m index f132662..c733613 100755 --- a/System Services/Utilities/SSJailbreakCheck.m +++ b/System Services/Utilities/SSJailbreakCheck.m @@ -150,11 +150,11 @@ + (int)inaccessibleFilesCheck { } } - // Shouldn't get this far, return jailbroken + // No inaccessible files found, return NOT Jailbroken return NOTJAIL; } @catch (NSException *exception) { - // Error, return false + // Error, return NOT Jailbroken return NOTJAIL; } } diff --git a/System Services/Utilities/SSNetworkInfo.m b/System Services/Utilities/SSNetworkInfo.m index de8c6ab..7652916 100755 --- a/System Services/Utilities/SSNetworkInfo.m +++ b/System Services/Utilities/SSNetworkInfo.m @@ -15,11 +15,7 @@ #import // route -#if !TARGET_IPHONE_SIMULATOR -#include -#else #include "route.h" -#endif // sysctl #import diff --git a/SystemServices.podspec b/SystemServices.podspec index 2b04468..71362d3 100644 --- a/SystemServices.podspec +++ b/SystemServices.podspec @@ -9,7 +9,7 @@ Pod::Spec.new do |s| s.name = "SystemServices" - s.version = "2.0.0" + s.version = "2.0.1" s.summary = "iOS System Services is a class to gather all available information about a device." s.description = <<-DESC @@ -31,8 +31,8 @@ Pod::Spec.new do |s| s.author = { "Shmoopi" => "shmoopillc@gmail.com" } s.social_media_url = "http://twitter.com/shmoopillc" s.platform = :ios - s.platform = :ios, "9.0" - s.source = { :git => "https://github.com/Shmoopi/iOS-System-Services.git", :tag => "2.0.0" } + s.platform = :ios, "8.0" + s.source = { :git => "https://github.com/Shmoopi/iOS-System-Services.git", :tag => "2.0.1" } s.source_files = "SystemServices", "System Services/**/*.{h,m}" s.frameworks = "AVFoundation", "CoreTelephony", "Security", "CoreMotion", "ExternalAccessory" s.requires_arc = true diff --git a/SystemServicesDemo/SystemServicesDemo/SystemServicesDemoViewController.m b/SystemServicesDemo/SystemServicesDemo/SystemServicesDemoViewController.m index c7cbaf6..1303c7d 100755 --- a/SystemServicesDemo/SystemServicesDemo/SystemServicesDemoViewController.m +++ b/SystemServicesDemo/SystemServicesDemo/SystemServicesDemoViewController.m @@ -64,6 +64,9 @@ - (void)getAllHardwareInformation { NSString *ProximitySensorEnabled = ([SystemSharedServices proximitySensorEnabled]) ? @"Proximity Sensor: Yes" : @"Proximity Sensor: No"; NSString *DebuggerAttached = ([SystemSharedServices debuggerAttached]) ? @"Debugger Attached: Yes" : @"Debugger Attached: No"; NSString *PluggedIn = ([SystemSharedServices pluggedIn]) ? @"Plugged In: Yes" : @"Plugged In: No"; + NSString *stepCountingAvailable = ([SystemSharedServices stepCountingAvailable]) ? @"Step Counting Available: Yes" : @"Step Counting Available: No"; + NSString *distanceAvailable = ([SystemSharedServices distanceAvailable]) ? @"Distance Available: Yes" : @"Distance Available: No"; + NSString *floorCountingAvailable = ([SystemSharedServices floorCountingAvailable]) ? @"Floor Counting Available: Yes" : @"Floor Counting Available: No"; NSString *Jailbroken = ([SystemSharedServices jailbroken] != NOTJAIL) ? @"Jailbroken: Yes" : @"Jailbroken: No"; NSString *NumberProcessors = [NSString stringWithFormat:@"Number of Processors: %ld", (long)[SystemSharedServices numberProcessors]]; NSString *NumberActiveProcessors = [NSString stringWithFormat:@"Number of Active Processors: %ld", (long)[SystemSharedServices numberActiveProcessors]]; @@ -85,7 +88,7 @@ - (void)getAllHardwareInformation { NSString *CFUUID = [NSString stringWithFormat:@"CFUUID: %@", [SystemSharedServices cfuuid]]; // Make an array of all the hardware information - NSArray *arrayofHW = [[NSArray alloc] initWithObjects:SystemUptime, DeviceModel, DeviceName, SystemName, SystemVersion, SystemDeviceTypeFormattedNO, SystemDeviceTypeFormattedYES, ScreenWidth, ScreenHeight, ScreenBrightness, MultitaskingEnabled, ProximitySensorEnabled, DebuggerAttached, PluggedIn, Jailbroken, NumberProcessors, NumberActiveProcessors, ProcessorsUsage, AccessoriesAttached, HeadphonesAttached, NumberAttachedAccessories, NameAttachedAccessories, BatteryLevel, Charging, FullyCharged, DeviceOrientation, Country, Language, TimeZone, Currency, ApplicationVersion, ClipboardContent, CFUUID, nil]; + NSArray *arrayofHW = [[NSArray alloc] initWithObjects:SystemUptime, DeviceModel, DeviceName, SystemName, SystemVersion, SystemDeviceTypeFormattedNO, SystemDeviceTypeFormattedYES, ScreenWidth, ScreenHeight, ScreenBrightness, MultitaskingEnabled, ProximitySensorEnabled, DebuggerAttached, PluggedIn, stepCountingAvailable, distanceAvailable, floorCountingAvailable, Jailbroken, NumberProcessors, NumberActiveProcessors, ProcessorsUsage, AccessoriesAttached, HeadphonesAttached, NumberAttachedAccessories, NameAttachedAccessories, BatteryLevel, Charging, FullyCharged, DeviceOrientation, Country, Language, TimeZone, Currency, ApplicationVersion, ClipboardContent, CFUUID, nil]; // Run through all the information for (NSString *objects in arrayofHW) { From b2cfcb50225dc61c7d738e82ed155b0e66239495 Mon Sep 17 00:00:00 2001 From: Shmoopi Date: Thu, 28 Sep 2017 12:44:51 -0400 Subject: [PATCH 4/8] Release 2.0.1 --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index b05cda8..b3db905 100644 --- a/README.md +++ b/README.md @@ -100,6 +100,15 @@ BOOL debuggerAttached; // Plugged In? BOOL pluggedIn; +// Step-Counting Available? +BOOL stepCountingAvailable; + +// Distance Available +BOOL distanceAvailable; + +// Floor Counting Available +BOOL floorCountingAvailable; + /* Jailbreak Check */ // Jailbroken? From c9495bba13011c81b8f627070f65608bb67d41cb Mon Sep 17 00:00:00 2001 From: Zhihui Tang Date: Fri, 15 Jun 2018 14:06:25 +0200 Subject: [PATCH 5/8] Apple is using Gib instead of Gb: https://en.wikipedia.org/wiki/Gib --- System Services/Utilities/SSDiskInfo.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/System Services/Utilities/SSDiskInfo.m b/System Services/Utilities/SSDiskInfo.m index 1ac8f3e..80d1a5d 100755 --- a/System Services/Utilities/SSDiskInfo.m +++ b/System Services/Utilities/SSDiskInfo.m @@ -9,8 +9,8 @@ #import "SSDiskInfo.h" // Memory Info -#define MB (1024*1024) -#define GB (MB*1024) +#define MB (1000*1000) +#define GB (MB*1000) @implementation SSDiskInfo From 72abd8d0e3fff931f5e2b6a92095f06d63ab92f2 Mon Sep 17 00:00:00 2001 From: Stefan Nebel Date: Tue, 9 Apr 2019 17:13:48 +0200 Subject: [PATCH 6/8] New Devices fixed #53 --- System Services/Utilities/SSHardwareInfo.m | 36 +++++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/System Services/Utilities/SSHardwareInfo.m b/System Services/Utilities/SSHardwareInfo.m index a8a1013..6c0e0ca 100755 --- a/System Services/Utilities/SSHardwareInfo.m +++ b/System Services/Utilities/SSHardwareInfo.m @@ -183,16 +183,24 @@ + (NSString *)systemDeviceTypeFormatted:(BOOL)formatted { newDeviceType = @"iPhone 7 Plus (GSM/LTE)"; else if ([deviceType isEqualToString:@"iPhone10,1"]) newDeviceType = @"iPhone 8 (CDMA+GSM/LTE)"; - else if ([deviceType isEqualToString:@"iPhone10,4"]) - newDeviceType = @"iPhone 8 (GSM/LTE)"; else if ([deviceType isEqualToString:@"iPhone10,2"]) newDeviceType = @"iPhone 8 Plus (CDMA+GSM/LTE)"; - else if ([deviceType isEqualToString:@"iPhone10,5"]) - newDeviceType = @"iPhone 8 Plus (GSM/LTE)"; else if ([deviceType isEqualToString:@"iPhone10,3"]) newDeviceType = @"iPhone X (CDMA+GSM/LTE)"; + else if ([deviceType isEqualToString:@"iPhone10,4"]) + newDeviceType = @"iPhone 8 (GSM/LTE)"; + else if ([deviceType isEqualToString:@"iPhone10,5"]) + newDeviceType = @"iPhone 8 Plus (GSM/LTE)"; else if ([deviceType isEqualToString:@"iPhone10,6"]) newDeviceType = @"iPhone X (GSM/LTE)"; + else if ([deviceType isEqualToString:@"iPhone11,2"]) + newDeviceType = @"iPhone XS"; + else if ([deviceType isEqualToString:@"iPhone11,4"]) + newDeviceType = @"iPhone XS MAX"; + else if ([deviceType isEqualToString:@"iPhone11,6"]) + newDeviceType = @"iPhone XS MAX (CDMA+GSM/LTE)"; + else if ([deviceType isEqualToString:@"iPhone11,8"]) + newDeviceType = @"iPhone XR"; // iPods else if ([deviceType isEqualToString:@"iPod1,1"]) newDeviceType = @"iPod Touch 1G"; @@ -273,6 +281,26 @@ + (NSString *)systemDeviceTypeFormatted:(BOOL)formatted { newDeviceType = @"iPad Pro 10.5 (WiFi)"; else if ([deviceType isEqualToString:@"iPad7,4"]) newDeviceType = @"iPad Pro 10.5 (Cellular)"; + else if ([deviceType isEqualToString:@"iPad7,5"]) + newDeviceType = @"iPad 6 (WiFi)"; + else if ([deviceType isEqualToString:@"iPad7,6"]) + newDeviceType = @"iPad 6 (WiFi+Cellular)"; + else if ([deviceType isEqualToString:@"iPad8,1"]) + newDeviceType = @"iPad Pro 11 (3rd Gen - WiFi)"; + else if ([deviceType isEqualToString:@"iPad8,2"]) + newDeviceType = @"iPad Pro 11 (3rd Gen - 1TB, WiFi)"; + else if ([deviceType isEqualToString:@"iPad8,3"]) + newDeviceType = @"iPad Pro 11 (3rd Gen - WiFi+Cellular)"; + else if ([deviceType isEqualToString:@"iPad8,4"]) + newDeviceType = @"iPad Pro 11 (3rd Gen - 1TB, WiFi+Cellular)"; + else if ([deviceType isEqualToString:@"iPad8,5"]) + newDeviceType = @"iPad Pro 12.9 (3rd Gen - WiFi)"; + else if ([deviceType isEqualToString:@"iPad8,6"]) + newDeviceType = @"iPad Pro 12.9 (3rd Gen - 1TB, WiFi)"; + else if ([deviceType isEqualToString:@"iPad8,7"]) + newDeviceType = @"iPad Pro 12.9 (3rd Gen - WiFi+Cellular)"; + else if ([deviceType isEqualToString:@"iPad8,8"]) + newDeviceType = @"iPad Pro 12.9 (3rd Gen - 1TB, WiFi+Cellular)"; // Catch All iPad else if ([deviceType hasPrefix:@"iPad"]) newDeviceType = @"iPad"; From a2b9a67d80a3670f611504697d3a56e8e8375de4 Mon Sep 17 00:00:00 2001 From: David Hearst Date: Mon, 23 Dec 2019 11:37:19 -0800 Subject: [PATCH 7/8] Experiment: try caching "proximity enabled" when it's updated on the main thread. Avoid making a mutating UIKit call on a background thread, return the cached value under those circumstances. --- System Services/Utilities/SSHardwareInfo.m | 42 +++++++++++++--------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/System Services/Utilities/SSHardwareInfo.m b/System Services/Utilities/SSHardwareInfo.m index 6c0e0ca..0073714 100755 --- a/System Services/Utilities/SSHardwareInfo.m +++ b/System Services/Utilities/SSHardwareInfo.m @@ -19,6 +19,8 @@ // utsname #import +static BOOL sCachedIsProximityEnabled = false; + @implementation SSHardwareInfo // System Hardware Information @@ -27,7 +29,7 @@ @implementation SSHardwareInfo + (NSString *)systemUptime { // Set up the days/hours/minutes NSNumber *days, *hours, *minutes; - + // Get the info about a process NSProcessInfo *processInfo = [NSProcessInfo processInfo]; // Get the uptime of the system @@ -38,25 +40,25 @@ + (NSString *)systemUptime { NSDate *date = [[NSDate alloc] initWithTimeIntervalSinceNow:(0-uptimeInterval)]; unsigned int unitFlags = NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute; NSDateComponents *components = [calendar components:unitFlags fromDate:date toDate:[NSDate date] options:0]; - + // Get the day, hour and minutes days = [NSNumber numberWithLong:[components day]]; hours = [NSNumber numberWithLong:[components hour]]; minutes = [NSNumber numberWithLong:[components minute]]; - + // Format the dates NSString *uptime = [NSString stringWithFormat:@"%@ %@ %@", [days stringValue], [hours stringValue], [minutes stringValue]]; - + // Error checking if (!uptime) { // No uptime found // Return nil return nil; } - + // Return the uptime return uptime; } @@ -121,7 +123,7 @@ + (NSString *)systemVersion { + (NSString *)systemDeviceTypeFormatted:(BOOL)formatted { // Set up a Device Type String NSString *deviceType; - + // Check if it should be formatted if (formatted) { // Formatted @@ -134,7 +136,7 @@ + (NSString *)systemDeviceTypeFormatted:(BOOL)formatted { uname(&dt); // Set the device type to the machine type deviceType = [NSString stringWithFormat:@"%s", dt.machine]; - + // Simulators if ([deviceType isEqualToString:@"i386"]) newDeviceType = @"iPhone Simulator"; @@ -328,7 +330,7 @@ + (NSString *)systemDeviceTypeFormatted:(BOOL)formatted { uname(&dt); // Set the device type to the machine type deviceType = [NSString stringWithFormat:@"%s", dt.machine]; - + // Return the device type return deviceType; } @@ -352,7 +354,7 @@ + (NSInteger)screenWidth { // Invalid Width return -1; } - + // Successful return Width; } @@ -375,7 +377,7 @@ + (NSInteger)screenHeight { // Invalid Height return -1; } - + // Successful return Height; } @@ -396,7 +398,7 @@ + (float)screenBrightness { // Invalid brightness return -1; } - + // Successful return (brightness * 100); } @@ -422,14 +424,18 @@ + (BOOL)multitaskingEnabled { // Proximity sensor enabled? + (BOOL)proximitySensorEnabled { + if (![NSThread isMainThread]) { + return sCachedIsProximityEnabled; + } + // Is the proximity sensor enabled? if ([[UIDevice currentDevice] respondsToSelector:@selector(setProximityMonitoringEnabled:)]) { // Create a UIDevice variable UIDevice *device = [UIDevice currentDevice]; - + // Make a Bool for the proximity Sensor BOOL ProximitySensor; - + // Turn the sensor on, if not already on, and see if it works if (device.proximityMonitoringEnabled != YES) { // Sensor is off @@ -449,11 +455,13 @@ + (BOOL)proximitySensorEnabled { // Sensor is already on ProximitySensor = true; } - + // Return on or off + sCachedIsProximityEnabled = ProximitySensor; return ProximitySensor; } else { // Doesn't respond to selector + sCachedIsProximityEnabled = false; return false; } } @@ -474,17 +482,17 @@ + (BOOL)debuggerAttached { mib[3] = getpid(); size = sizeof(info); ret = sysctl(mib, sizeof(mib) / sizeof(*mib), &info, &size, NULL, 0); - + // Verify ret if (ret) { // Sysctl() failed // Return the output of sysctl return ret; } - + // Return whether the process is being traced or not return ( (info.kp_proc.p_flag & P_TRACED) != 0 ); - + } @catch (NSException *exception) { // Error From 5b317af59795bc0e4e4878010addbb1be205120d Mon Sep 17 00:00:00 2001 From: David Hearst Date: Tue, 21 Jul 2020 10:38:38 -0700 Subject: [PATCH 8/8] [IOS-9382] Remove ClipboardContent from Bonus Data MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Removed clipboard content from the -allSystemInformation method (it’s no longer bundled into the overall dictionary of system info). The SystemServices code still allows you to specifically ask for clipboard content, but the way TN app uses this code, it won’t access clipboard content when it calls -allSystemInformation. Also added a little more code and a couple asserts to the demo app to confirm that we aren’t including clipboard content in the overal dictionary. --- System Services/SystemServices.m | 7 ------- .../SystemServicesDemo.xcodeproj/project.pbxproj | 7 ++++--- .../SystemServicesDemo/SystemServicesDemoViewController.m | 6 +++++- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/System Services/SystemServices.m b/System Services/SystemServices.m index a8ca9e4..77d9922 100755 --- a/System Services/SystemServices.m +++ b/System Services/SystemServices.m @@ -416,7 +416,6 @@ - (NSDictionary *)getAllSystemInformation { NSString *timeZone = [self timeZoneSS]; NSString *currency = [self currency]; NSString *applicationVersion = [self applicationVersion]; - NSString *clipboardContent = [self clipboardContent]; NSString *cFUUID = [self cfuuid]; NSString *cPUUsage = [NSString stringWithFormat:@"%f", [self applicationCPUUsage]]; @@ -709,10 +708,6 @@ - (NSDictionary *)getAllSystemInformation { // Invalid value applicationVersion = @"Unknown"; } - if (clipboardContent == nil || clipboardContent.length <= 0) { - // Invalid value - clipboardContent = @"Unknown"; - } if (cFUUID == nil || cFUUID.length <= 0) { // Invalid value cFUUID = @"Unknown"; @@ -796,7 +791,6 @@ - (NSDictionary *)getAllSystemInformation { timeZone, currency, applicationVersion, - clipboardContent, cFUUID, cPUUsage, nil] @@ -873,7 +867,6 @@ - (NSDictionary *)getAllSystemInformation { @"TimeZone", @"Currency", @"ApplicationVersion", - @"ClipboardContent", @"CFUUID", @"CPUUsage", nil]]; diff --git a/SystemServicesDemo/SystemServicesDemo.xcodeproj/project.pbxproj b/SystemServicesDemo/SystemServicesDemo.xcodeproj/project.pbxproj index 70afd44..552ae24 100755 --- a/SystemServicesDemo/SystemServicesDemo.xcodeproj/project.pbxproj +++ b/SystemServicesDemo/SystemServicesDemo.xcodeproj/project.pbxproj @@ -364,7 +364,7 @@ ORGANIZATIONNAME = "Shmoopi LLC"; TargetAttributes = { 01ADF9F216051BFE008B0A6B = { - DevelopmentTeam = Q2636DAEP4; + DevelopmentTeam = 46H57CBD4Q; }; }; }; @@ -373,6 +373,7 @@ developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( + English, en, ); mainGroup = 01ADF9E816051BFE008B0A6B; @@ -556,7 +557,7 @@ 01ADFA1216051BFE008B0A6B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - DEVELOPMENT_TEAM = Q2636DAEP4; + DEVELOPMENT_TEAM = 46H57CBD4Q; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "SystemServicesDemo/SystemServicesDemo-Prefix.pch"; INFOPLIST_FILE = "SystemServicesDemo/SystemServicesDemo-Info.plist"; @@ -574,7 +575,7 @@ 01ADFA1316051BFE008B0A6B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - DEVELOPMENT_TEAM = Q2636DAEP4; + DEVELOPMENT_TEAM = 46H57CBD4Q; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "SystemServicesDemo/SystemServicesDemo-Prefix.pch"; INFOPLIST_FILE = "SystemServicesDemo/SystemServicesDemo-Info.plist"; diff --git a/SystemServicesDemo/SystemServicesDemo/SystemServicesDemoViewController.m b/SystemServicesDemo/SystemServicesDemo/SystemServicesDemoViewController.m index 1303c7d..c4f3167 100755 --- a/SystemServicesDemo/SystemServicesDemo/SystemServicesDemoViewController.m +++ b/SystemServicesDemo/SystemServicesDemo/SystemServicesDemoViewController.m @@ -86,7 +86,11 @@ - (void)getAllHardwareInformation { NSString *ApplicationVersion = [NSString stringWithFormat:@"Application Version: %@", [SystemSharedServices applicationVersion]]; NSString *ClipboardContent = [NSString stringWithFormat:@"ClipBoard Content: \"%@\"", [SystemSharedServices clipboardContent]]; NSString *CFUUID = [NSString stringWithFormat:@"CFUUID: %@", [SystemSharedServices cfuuid]]; - + + NSDictionary *allSystemInformation = [[SystemServices sharedServices] allSystemInformation]; + NSAssert(![[allSystemInformation allKeys] containsObject:@"ClipboardContent"], @"We should not be including clipboard content in allSystemInformation"); + NSAssert([[allSystemInformation allKeys] containsObject:@"ApplicationVersion"], @"We should be including application version in allSystemInformation"); + // Make an array of all the hardware information NSArray *arrayofHW = [[NSArray alloc] initWithObjects:SystemUptime, DeviceModel, DeviceName, SystemName, SystemVersion, SystemDeviceTypeFormattedNO, SystemDeviceTypeFormattedYES, ScreenWidth, ScreenHeight, ScreenBrightness, MultitaskingEnabled, ProximitySensorEnabled, DebuggerAttached, PluggedIn, stepCountingAvailable, distanceAvailable, floorCountingAvailable, Jailbroken, NumberProcessors, NumberActiveProcessors, ProcessorsUsage, AccessoriesAttached, HeadphonesAttached, NumberAttachedAccessories, NameAttachedAccessories, BatteryLevel, Charging, FullyCharged, DeviceOrientation, Country, Language, TimeZone, Currency, ApplicationVersion, ClipboardContent, CFUUID, nil];

WpRv@K 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�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 UY-mQojsO4v07*qoM6N<$f}o_a4gdfE diff --git a/Sample Images/Screenshot2.png b/Sample Images/Screenshot2.png index bffded35f83d710dfa0f20c6d6c98c21824e862b..0cd0308259fcfb664f9714c8425a4eb720c72d2b 100644 GIT binary patch literal 61650 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 F`aetsy3GIp literal 62559 zcmaI71yox>`|gWN@lw1vEwoUAYp`N1&_bcOI}|IP1S?Xcc=6)W0;M<<4PM-x;!c7G z3C>OWefNLPy=$GrVnH&QJu`du-tRo`@0mnsyj3Q7K>q*(1B2xCD+Nsq3`|)J3@kAM zJX8q-AzwNM#)CL}d3lZ3^71SiZZ0?`Hl46%{p;fkKc= z&6%QygBh3p?puTRSw06)!ENkMM%@n|XqnMrXyVf4ku!TMz4su-M$)ce;*kdmR9II| ze0FYc$6RsQUuVP^@^wiYw7d0N3J}&O70o2Ucog*!$eEe><;cFvefH%$JPa;wjxy*| zd9luS1QQCc0trTb$*&K&4ioo`xb``|)eFb(sKr?6<4F$3#~>WTiBc0G8)IEmnpJCC zCBk6Ir|`1jtP&&eVROv*)(8pxOt9N?A4z(+EVTaQ8xOU5hr3Uja5JZjacYObb-?fS z0K*SoK>j4cU45{=+&jTtR;dAt>gJc*;_(B-skY{!KE1#b!Bq3Fk1Jg+fRPEEi(BI0 z+Exxz@>Zc&dD#aPf+KSg=J6+ks}RUgwVh`;hm4fqqyy`+B@D<}c@wmq_T<~{46(bG z?@Q_rq{)-dUgtOU!pVeJt+>vXHNGnIUHQ1msi!0RMwI5V=u(`pkDw$V#XGYm=-74lX% zgjKs>=b4&@fA_>PGyQ}ECgM+~#@HXh$niG{w};Bdc++6mUe8**+cI+8Y8-A+vzNtI z=_MJ(x@yDG!(dn;FbbqO!j@wpRtQe|MDkGXIeDP4nba&XLXLG7_dLk$Bkg0{+7&S| zLW6d?kC;Z7qO#1iIArbQw7BJMViyEISO_}g9)&-6CI^orwZhSt^@>Z-F9ml6ih(t9Bw1Bv17{thv-)Ko5FvTD49*k^yk`*t=a=OcdBfewR3#v#rT`R zhkQO{zw6vmxq?#c@moUM5cdw;RlRy*BWY)u1KIk!V>sbgx8i!ZUsr;$G? zYrDtWN7xtJ7tex-<-%5E3D`aoI1ow_YKM?^yy@UF|H7p@$u2?B8UDI!s7t_t{aE0b z;#ev|VVq+wAvyk{;ISqh3M_Gi!C(g3Z0zv9V(vaYreUtSvcSqCc8Gj;i zKdB1iCfg?AX2K)w{`X&={fYm}q0KtQCd_iC^o^yIeg7#`Q^K(E{Z-=W8`z8h4xKR_ z8C~+AQrd$wue2rs%BuJJ?sF`2@8{U&Aaf2?fQ^rCjcz7xj~jpu`EE3uN<~~hsi%Vb ze>msryaQ+{+v|N}ihiw{M>QTZ0kL04xFK{96bO9;6~cBiY=^6nH}kc6?qNZ8!E$cE zI}PoRS}V^Tb?x5MYNWn5D%knitIea~sQLK)OH*tOi6^=!rIK*xp4of$e-m?J0HqEy#Day z!}etNWHEdg?tAv|>;w*=LlBE9J;;x8jo>fK&08&DofgX*E8+iMTu4`zRx(#`sTWyf zU6_=koj3JexU95{u?T9?BzGN1D%bOt^PO$>+q&U`vMlF<1Cd3YMH->r1*9ji=d?cF*Kf{k_hckz#jM0KJT3;ty7=cRmyZ8Dgg#k#qOGcwA(W~2RyiXygKpS$ zSVo+z!LGi-=(%xL&{!eZZ2Ngryq}ISH@rwh|^=9qrJ1Q zCl8R%k&v}g*wBgd5fifVTz`847I}PzT-^6bDekut+)Z8g|LxCk!+V)O1VpEQc+C_qC~Ass`w)2FS#eXf%rG(Me5+li16Z=G`)jb z-$TTh-tO$ptR(lTj#X*>Z%wdue}8pJfo`Qv=9kVc#qOydKWp5|=lYb#gBRGx>yBjS z(&yYU+=U^6-JWaI?%AATPabhLuZSO?A9X)8eyB=mdLnhPc~keg<#kxX(}du!4qpqk z*tEWB9v8b7?_-I}RjrJFsGZU;x&Exw;k&BwP5$pvjca^skp!cPY5Y>MoP1~!Q)LUN z1SB>gUd?tg@hx1qu*#|$M_)E~Hy z|CG#)l=QKi)Fepn?BnVxK;}50(YtH=mFjnAYuLNJvBCV2pKL!H1AbpOlo>QMR$LiI z=hzg96r5{jIvE>7Rc?pz>g5*rym-#_mR(2IouZ#cD}UR0^O>`a@Hir+wd>YxyWqaB zOv|f~UVS%1dQ{Dc*Dlat`gc^_)8C}Eigjmo*R|fBVqQY`AFdpR=%NLwY&S;^fXcuW zZ|5uD^UH|0=G(hO%|z_RC5=obQH`MM@hVkl$}PYYy5_fOQD=y}EP1OtV&q;w?Z0>c z*(FJ5cp)_{HPotqKfT~EG4D2UZey73XR3Vv_0Aoe7n{ZzywvEH4!-VQ8E?OnT=hO! zjD|{j#JV5;xlO!wVYZS^g`}PkoD{884z7=LK39JpAbJ6{@3q<4tJwZHGBH|6raa4D ze)sBreb;VDu)lhI8$PmYqSq`YxFt1>bh{iF)9ujJDnGeTygg}SxD_qDce^dI1%B{7 zE#28aZOTKc96Ctr`R#lo$O0kw&(-tLnAMKE|&}=Z*n0@(qVMLNLqE}5adjnCCq^F!3dLJ z1d|0L?Hws=Suh{n<#3dPc^Ss5HBB_^aBUJcXw3#()_@GHUB?l z|Er(>)K_=2w?>T=J)Zxm|G$_0|Lbemxp=ssX3fps^0l*vwHvCl{~j&y-`@VuHU8Tc z5P&}M|7{}vGt2)OD6pQYxWZ^28JxgYX!OYAk4i*!kn_HW|<>Ti9)b| zf?_9O{8J7#t@?&n5g`mD&Y@OU%HIi;8~S}o;&(M4J+Z3qUVF~UmhvThtAJyOeiD4Y zdm?%3H3Ifoh9c>__K_L2!{8-bgWWp+-6r&}gVc!sbX2-?W3jG*9f1%IJ(emf)&S3E zYiC90e{Tb2+1qRgNCHFKG$Y%7z2gO!i@KajTXsirDP@s8*9yo0j?^c-PIslT1~8}J zTzl$0YVg+m+huR=nXPsem0C{_Z^3*N3s&Lw`YK%ssUaGPsqGe z-H>iM*k$WiTD&t$@sjo*!m>fGsfPolbqfa1Ye}O9m>fMAscoW=CiirVl%f;8K^S=&BBqFmc9{ZxH5s3Q218%a6)w*#N zZpE}6UMukl6CoC4250Wv{W|k~`0lvvV|%U8w{p-eVOJd!@McxV18#-K^(H?1wXXL| z$QJLF6mS7acu9+4s~N;rRN#ZyDmLFlS=fop8P1h#o*6bPd%l z0N+2gOfeNLFrgnm$-ciq^eRhN`EIZ?KMS}!$sWMOf2<+&g`2lE&&Un-WOFRm-=pCM zF)$Ema+-&zN`d~mS-!tD1<%hfQByVV|DI2lLM{kCzgG{q(gF_{E3d$C{i5VomCA;4YcQE~y^;5#r*$WZD35KXrw;finAwO_ zVkgJ$*F+kQ`EYo^MJIDI^!#s0M!?-=U@?Nl6$#6Z4l`yc7HwW7+58Uhv%gFUxJ=n0 zZ@CNLVcr64XhQNypmC8$V$ozKXu~|YPXH&ZP zxh&nnGe*^pzvpbU++uH>bJFq7Q3K~lH6C$0XxI*QR%Y~k|LCG1;q7zgtI@FjFqxZG z7Us5{#ii>dq|y_qvtsoZ>5f&e=WNoQ`hTQ58`z9wF|&$${Yof zg~ZqY$p4hzeci9yBJe6*x)&jJ2v(oFAG%Ia_r0OS=C;+4_D0rrU6Tb|$b-8DvnVo$ zk`0~p&ryM<>i+IJ1>k=i`T4l@;tzl~j0s`~p3G;`jsYTi-3Ix45}EHWdaMgGy&fcu zNMG+Enzy9@WilJAWP}zsEBG?Bv~9FZbaBh55w{=;IHjJ!_h(w~Jjv%fneUDepYVY! zz3N8Msji)RJqT2=l2$lEz@Rnw^;zJpG~DyO!|UaH|JgayJ48y*?Bocwp(90RWQ<-W z?0wf%A8Yqa%X#glgXy(_hfxNhtE0>u;p555qf`n2q^bi+|84p#0!f0 zK*b~IkmjZ(W$F^_IS|VX@)BSDmYw8jQ)&Xo>3^xCo~iU)Z~%9}NQ-pNVnzVDHb3wy zt-9Z7V2~lA0Gj2!1m1iC0KXRB&T!v?32@X&K0Apan6qnWfY?Eiq>_8&3YdIS?aTLf zNJPVkA1}sB4hYVY+>+$gPJR#6_ClP?xOFf=UAlqCFs<2P@U@NUWxsAm@cN?Pw&Zez zQd^R8%mAR(*YWf<(j+zqIiVN7b$j65TGdVOfMf3m^;TI#%<4+5(m+voE@;dYF8=jJsx^ zsOas6Pl*QE03_C_4-`Ie4o8fpSxLV9!uJ`l2ZEtGVIEk%JFjDrU1A=&lSVeEljo2Q z?T~TSJL?U)x2}ER&ReX+b|Tc>;NlnJ1C?-y<$GOh!E6@(a+B?szB`cduC3Zyn4)n@ zPw|4zb4M(R)FnGPU-sF{5H8LdAUbWOPtqzfr*sToNc8YrXZ8+C(!csde_QT4k5KM%7#K#>&82uMGr`>!w1|C8bL2v z;#7GX3Nl=~>8w!;Oe`yTim`lecQQ$3ld{{0|9SO*bJM<#$x#rELU~U*25rM!MWa1J zOn`Y?8K`hwoqfyGoM0=pt8e}|t!p%$Q^C8yE+3Hb=lguc0~I>tB$G7!%r(}>=n@rn zmv?|5=gC;de?KOKs>(4&5jJgM0{rjI4hJ+O-Fo-NfgsYB`@vNHvmAkE!lr!A;L_na*$R-&R z`1`X^0abQ&p1;}8EI|EA5Msta)X~6jO6iT%(IY_fQAd#>qKb)~au~D-Ng{XQz2~W$ z3b^MvV_kXaTsM7MH#zC(ey}hBp6OrSeyg343q4DAkF{;_-`YLl2Fko?579GhgjqQi$H*G6f?XSi)VhcI7jz{USDvB*RL*(mhw1e5htTPv*Az-@J(LA^aw2`_@CLS@tA&3!|3X zzKS>ab}PG|6B3VI{&lDnI)-ieEoSL-{2)f^e0EfBF6(-MF-(Han^pGZqvR6qqracR z!|VGWgnA4nJ>gogl?sfK3R!u^b@RNW>|t504}=OiDBlHrVDn>lX}4eDad^Kl=B2r( z?8$HPa4^?W4v?zF5d7e9f$2Ccd#&Ns$+wy2r=b`0{N#W1XJrAMNFoP(Ilzep!3$D1Ql%>t3Y`Y=aW(gL3k^S-t1z2`A%fZFADFi*lGwOnE58B`DPOkE3q+^7CaH& zHS`7yw>KlQ%$$VmmePpeaJvV-^NK$p7=N&pICy-#H`|9g{=6c$1~>X0=LPfqF|#F8 z9=^raz1d&XzR;Xi9Df>FTvOPJxzdJPVWKuv3#>(7X z*lBG=)T%oHcdHEAY4N91M%S2~sJ+j$*VRM?xsr1s3^o-;kB-4*-_?-B+SOm4naB6fnqNz6{!W z(3phVrp6G@dGY!(^nACx)qf?3VCNfS4@!$NlGy`sQl)&(Q@hX$kzDF3E*-mCCk8`w z5P#Z?;LU2<6D4@}4a>+tTxw=fHt`h|Ex0i{Q^?b;b9^$a% zZTvX1@KR?&Fw}1CyK}Mp{K(11L&-B+gFxL<=UQPhnMqdlTV(6K-yA9k z6!890$D0fY3)nbf(e?zWgMD7fiz=kf;BR`;U_E;F`IRH_8lK=LpbMs#CzykNKhw5fL6};(lmQXcW zx`?B+`yomN9MHvLaQaewYjebj8m(NRwHLFkG49OXlj;WQry(frH?9g|IdkhqPJ4B~ z7vU8ARF>y^t|h^6ORO$ckXznexYlyLco-v zvuI&Y%Kckp_ zvuV*(2nA`$z#k^V<$QGT|9vjj_+~O!$@`nUnc%HMsZajccT0P# zU5A-^WtTm**3s7^J|`CMc9pJ(?m_0@bHQw?5$3A>Ue#^8f)43%|4?&jUQ8Rd&&)rL z7X4yH3pMo3B*x{~H3RAOnM&H6<3u9Q3R+#QMX|bcwn~>FaWs)M?Xxcs$JZSJApak_sQ0U5U*$ z<5wesZ~v;#HZ%qm=ajY$3#UHy*B^nmS6=N|z`h9?Uk?eLkN0)DhSo$lls9;pTn{i1 zLCc+fh}Qk8L8z>nRU{3vD@q)~<7Tdr32be53djxcL%o1NDiQ7+pM@#m39s@9Rh@o@ zEa2vY#1)tqcK;jGan34s|@8r+eM5K(15E#ESt-@~5}R6X2$mG+3Hz z9RZ2@O}{l&Twtqj-haRV-$OkxXf%@wLK-#fme;4<=A)! zVpslji)*)yW)F5Oqfe&);BBNwD zI{CsMRXR#eYmP&Y8S`;dc!~jwBv4U4hhimfbw*PZML5`_P)viOtoa87RkH#`J+O>~ zZVce4=FCDU>~O?7l4jn!px_5JNubiF$WT+&MRGfWC_b!c4CQ*nH#mAcd90%ZAIFXy ziqVZzD4`lB&^6J5qWaZCF%(Q*djA)m=)rZM8h^an@9&7;m0cL-TOP;|?;2}Ne>vUB6=B*peW78S@QmPQLL<;Vu{SL^s-}}y5p8fuMqUK~wfhD}0)F-91%lmdn zus^#j_1)b~ohIp>zcEheh5GZ~S8RM3s5YbQU$`=JAI8 z6UW^=N|yG6sN8Fn9z}kSN|GbM+nqOzD3C#xl4&1Zjf0N20cgblU6jPH^xX&8XUZdmwO{)771|^V@@Btt{^{_1|9Y~)dZuUD zWZI~?GLp?PzEGpLd(W^VIZMkukCm z%ig|9#i3tkD zEScMYcn8PJg0MYMDmo448T1=}%~=a>S1fPwQ45+eNY0+(wlx*V_uYxI?x!*F^=SxT zTwBuH#&9X;E^fSUDI9r`J%4sy<;jQ`F72ul1Ge&fWN%Z*+ovJI>g~7bZA9TT{9Fp( zA>kPuegsae*jl()3;btEf9u_DYqEFi_2MQfv2~vFoG~6i36xtD2yE(Vwt#rP{?x4K zwuDLm@$C;%LvxSJ-Lds%l5WiEQNwnY zAulSKL9EfVioJ@~-KMuVX~T{{U`YX2-?6E=N~4%alDa=4;TR)SIUFN_2mkpb?^{Eh z<^vRt5$sO^@LETbz-==vOZ2}>qh&aK&vXT&mWnMIC%@u4I-tr zdGGhU^Q!&Vrl`N{gv4H_M3hTXl&oL zr6PcJ9N6YxGk?j(9@lA>HFvq4&5UU7>@hqU&Y3YKUzOPXrS(?k_7o9B)12dr0&Ouf zHos>rBC96eN+xNkO9_X6<$>`w?&Pt^D8SqMT>`G>MUZv9!opHGpt{2!Dj!6bjLryY zKGvJ8vP_Eww7M!?%K3e-QH|-;B59o<_$Vf_Ka9l^XOapv-~GZ}rpJp;AKYZX3DJ0MGMYkvldLfc3k%WexQBSezOInt6z5GuX z5Lu?YTD({DQB@Xacv6_%o^+3!es{QiH*%YbLL5xkCek?a*A4y*X&|_nS;AKPH1EGk zUVq%pz@E!loprz_dx&+1qLR_OOC)Hz!rVEP4iTj~CJBiD&RS7{0%2WCrm>(GTd9^Y z5h*|8^Xh?$m=utQYFVw)$GT5rA(Q$2D8eRw-p0Z9J3C&kEjZfH1x1PV3w2GPmkWq~ zzz|Q*zQ0eyp$gP(S7ulBz`J5)kly7F6?_!=gKksUG)w<{p+Hx}uuj*x*tL;NnYw0W zpS3rLZF+4a?9(N%>rX<{>9}gAgwqJUiQBRktjXxva@Sm4P~GvlOUhRJ7bhH z$(b?xibIH`kMhR-jt1KUN(@f#QBbIs7cMfSlKG+Os23^@-1Hc*esZ# zZbWb^dAC)(8n{L&I6za^3UxHP?n#0>@O4DjlHF|L3ic1Q2v-B$_chObZ2ScYXul3F zQ&qMRjdo{fD4S2AmeP2Z_-(P~Fmz{H)@ENnRW^*O+?Qy!zZ&$21=4U?0{?3^+!vo#rm@8XG0iUBW z{*uqUAojM;p=D1V%VQuH`dlqjXf{}0^Yl3j*nfZhHAC%&+V+Z_d{OTim7)Y%pCU?YeKo8rwL;gz zLCLEOj2y2fwD596X}9`~X(w)dwDQ74$u&-lqD8cem28C8WDTD4D$^(>r}haY{|GTY z)S(sF6B?ApQ*~ba{Z$yH3@KSq8UyRo-~In|Wu|i{clp(@OQ-5TQj<1NUs`eU}a70h(5fBYTS+bJH!MQgq9)aW5NP1OaV#c4D~I>|p9?gi>)%HN+ZxM(R#k14|NuT2B=nbc}8 zKUhNdf#oPNiu%t}i`K9oN?NFzQ4?W@GwX;}zv+95ITC8X`{nZFz;^LMqk`uNz1sOd)T zhk64d({U-yCh-CMvFF9|FFdrD~==QvX^bUGY1r7ao*TCCuhajMIRNwLE+a&Fk{ zzzEg;{UuA%+qnT{%v`xP3^af`qhP%8k~BLk_s57-VF#Twad(@pl1a^FEzZ$ z?Gf!JARzfX#1VXPzRt(fczhzZj`D7*6t9R;99y@rSrqPLtwZzDBHLO8=)p0UR>Wxz zRV6}qX&8iJTXcW{^3y8@WaS!&U&+*%>UzS z#GqK``S^zoj|NoW8bB@d3?vcKXuBk`Ii)5RW|QWS9^PnTouu8p_w=y+WGmezrm8da zwtl8GoA*b;8_ujNotce!Knva;d$<(6D_D=L_5X1EX2O}GS;h;X5y&g@&bSnpP^ z?s7@#Zv%b5vnlrFC$$N?77Yr+m_J`7A-|?H7dTe+Jw;n{G0^n|qj`^sHv>&5B*EvE z!&e~Jes&mef4y1Pdh0~qQ2|=4d0kQNyU9I(@`>)F;tfULGNBzgK)TcKxzsH5>eP?Y zm4|!_Xa{Apo5AJr$pfLNXpz4~uk!h03L||8Vwe6c1}I4-YECcl8eblavc0mOSKE&8 zj)1xa`%&hkb{1->NkP@9L-k}z$G*YS!*w`CgH<_{CRmu^G5$J`k+>1$i&_G|G|r)9 zPB4%3-El10AI~b-M&ONyrVGmC3;Hy9@1A|V;P%(PFdCd5d^7}Hu;hj-8ADNX1h~H{ zzo*Zfl3Y5DL7-0U1%ll4qJyS|FMG(I2IUEL4xsHh#GtLTpd%ip?aiwioVx|_GX0whwtsFX%IB@GAGUlgaM16m<|P_16H?Z4 zo7%9<>>^Nw_lK2xcl5XdL(uvfb;oH)->j0QaH25uiK1duKNKZqad^ofqrv@Dx<(Wn z?q^d02Su6mVRjX zy8&f9B?AI32R2RbHcdOWR(_snDW{nFgD+8Dm>$}6ZkvXd4T;woqwc*;)U?WiQ8unV zTGFy~J(;64Vk3+@<|meymb27~;4ZDv)VGWlen6%=YPMi`gO-}KpF)3a%fBQJdW@uC zS%2-;R|9b-Q8o(f`Lol+@$8@?E?R5E!S0!q{;9k zO7Ll&?hm;@X+*q9z8jA}osYCCF6GCr3gS0ModYOVzB4KZ z{?4x2@==9nlU*$&4HOY3U`_XsEHg=LW45=>dhUCCKnhovs&SR?A{5xQUCivg;A&ad z2syJjJqw-s-t*C=ASmanGk`q84qrTF_NLWgaG8V z)37jY6|6kqc6Sr)Vn)4e1ci=1*|CjyjAeUUBo@stN)i|-VT%(3HbB`KwgV_9k$>wh zV4Yz(+$U-`rS--dd(-APOt(V3=hDB2?cQ=ym%gaPQLr+X7{G_pq>1;(w7^v#GQle$42TuqXihs zPWhNa(pH)MV74yxcYW&qRgM>NVTq`H2PHtX1H62*CCV;?=+%rxJ>T2i70c#fjCqyp za&CJR|7`HoPLHM7u&TK4?*II#(Pd$4nlA6<$1lotjhlM>aq0=++yitp@DZ!=Cv=t1 zKyb6kCVMiNXHa1lfhZi-}|+Y zM$#zJFeZwNZ+i^IK{_A&FujHA=4*NJx*VIQ1->C7nD9#%=nr0snWLQ7HU(;(jC)Xe zzb5f!t0_qSDBD0whRwemd_zn@EJ_=A`B42c$rH!WoUFXt?SMPmxNi5XlZ?u&B${s7 zHzKy9uL>skguW`0cnmSk0V&vpqm(tGkQ;DMy05HRLhnhK#09-VlG-1A5@+pvwz-r~ zYF$lXW#Gz~5PjNml6iKKc3h7(QCeR zw)crD-BqwJZ42iYdT}zfU{Pi3`X?-=lt}t$U29OH1X;8aB$^D9&}2vtwY3Ii_hvkV zAT5*KjVeBu;Om5r_s2EXhpJ^Vl(F3s?J7WZJrd=yMF$1D{80*vxp4>RfpwrN%ERUG zbqYknbO3ZR;ant_cG31%!aN}BaOYXv#w)Zm#PWM%>bpjn9Ui01St`9vVtmLUV;xV{ z95OiJDdM{X-u~=eJ`qp7bOgNKs}5FMWd(g1iqXt!3}FV$XK-00EBD7LsE&?kDu2=+ zBmP<#B8x+n5qg-a+k;9s>VXNFtRfsqW$(N^A zdci58h%_l5ue~Ap@i!HP%$np|!Yg!RuWyhjZfDF#sjUBt6W}5ekEDO-Zr#sXJ*-t|+2W4gui^t6aS(vbvi}-Frlo89 zTXV=%?!p0N_8!lJa$8scOgt{L!3_1s1gQ0JmiA9Qpe@ah)?}cLVZ6y!s~L8O@K}$z zItB_UK_3z21n4}KKT1s9X5&j-h_uujtfy7}8Y4!mEZ>ai=k7eBo2xVx6WKB&J{_1tnim49h5I_?Zp==F}}u^bQx>d2TFnrQwJfut7!!21R!@2y|dQt(cBL#7!kN z?}*NM0BiTG;vXT_1I2B!Z%urE0?24jXu&6rvC{VCryqa${}Hy%asQFBLZA0urr#nv z{n_U_=)M!bc08?3i|SwhVzxG+VaE-V7yP7S3NTTX}5eremGqZAlrA%@`` znt(NT2`lR9gW4`|W;B(IXph!gZiWK-mMhKEo0}PSpgef?;mTwXHpWdpQQKZFl0$-H zSS{{}Y!C=bUC{uC%TDN}u1pW2w>5^}Dk)SNG3b^SODXgmA*{pki{e>W{n2 zbuHQTb zd^_;n-@+Pr|1DZ3@E3@99O6~YB|@uaGuVygU98lye3K_D-czuQbXLe|6ccFVA3q3T z$_i@_Mubd!9Fz8u4f#aeoCu#HUrNn+2N5&B8=-uyezG8+6Qxm}5zYGW^wuubW7QS> z+z=GqXoKIR*TLlE8;F^_@`x7X3gn6IlnN<`KcP-)PtZ4^3wktyof}Ll!A0;= zx`SnKg-EcyLQU2xG!P!mb5gstB&4F?;(z`Ldm9|MmO9SYSDwqRfPLm;LJ5OT>6n)4nsyR`Ju0X0m=QaySv99~PBV*;vuDobBI71c)|Ya_nCOpp zt-$4wQdgt<8{Rct3nIFtN06ifpW61Qr2A4AKZo*%@5`lMN9`Kl3bd*uLM0qY(zr|O zHTPgT*=^^~-zhYhU8nW{pB`!GAWM`VU89YO+rY?8M*s@~!;bUoZ8Q9sOm#_=shk)|_k zzQm~Xlc;5WdcD-Ww1`v))o#75%qkQYiwK1Y#fcVW^fqA?q6A3pl5O zL-jHEEuNqN44Z~b&=HQ?5lGKknFFh9|QgC=(bZ7Z_#Ex~r0*GQHVxW%bymqR5I~-sq~2eUl^R_ELNV z7RfVF;hPe&t4f7wV=b6UY!7^HygsQXl+&Dby!XAXfitG<;`>nOmIOOxY&=Q7;6pEe zP3LXR$2QW>*blcGu8TPt9f!42qEZlA+liLtgU3uMTnPu4xyH* z@W;I8w|ZYiDQpnbu}f<zpG)qXxlO*k<^ksw%8+y8#~TUT!3Yk{3F5|94r9Zg1RtBfXu;^JjyJ&G+1(j4 zc;5#c*8BQS8xB*_XE>WifP(%3OPw2JO<8VxT3!cD(LMZm>o73kLKDPOPe@7g7UHof zK74IFhq@%Y!-CFB1GfsU3(UzP);zubc{ibb21Oo&ZWUT$eCdPi13;4o!C_fB)xJNM zrWgh)52T7x*XdM5{R5is++FdFcl&8Qn)&P--JYt*?A=xD23wJRDWNzP0oL%JZq0>@ zayj=u_HY>$J`OWh*H4HLq@yziQ!)a6HGfvA!`PVlV<7;3^K@82FY4-c3o`~n@|N;e z%2Ux_wX=ClD6qM>l9t?#X~hDgGJ=c$ayZ}4M6o*b-Afcw<(irnn)Y0HePjR2TgwTi zWR{_|k^hs-sAt4%>vZ6h0EVZTuGan)f zpjqwz{UEh@B*uvgeHc_va_shxv1dXbVEuF(THi0*;`DB*;Y9ghv4X3r(Jgs;{nv@P zCy*fJS5GtNe$MGL$#qX;@S67_ndIBF_3t#cdDk0ckqMg&xbxqB2Rzv3X2BR9!SUpN z)OMK^Cx>iurRj0q+IC>Nn{?3YE%yt-oN6^I_n-=3+5$!tItaD=UCoLmRC~(DwW(tR zqvi+)Kt~L}lX}4YUs%a)yxFeTZ}Dg3>~NHuh%X%e{A>9R*tDJ23ekm$T)G zTTB*6Fl>M=?c3?L43meM)}KArUzDvo`?vgdd=q)6l9J+ZaBblRmscmE;|B$B56~t) zn=pLe=gCY#JEE~8`{Qt_{kuPpdtl2Xw-h5BUwFOxv?4$Fkm@Q!MspHFtNhRBMJZPN znBR9*V%fdyu<19t-m}QCUzE!#3e<~dB3J7YG%}KW%T6@~Sc7u}3}wt?B$-yEvCIMW2?>&wYz_3CSndj)#|Xbt@r++d!ib;>=Rkm~S; zk)G?l2KAy&kDq*M#y{N1)Hi>b%EWZ|BPuaw)qJ+b92jLT8=EynQYyqG1 zy&~J}s=DqkPh`OYixMeH^0q$I9H{RVfJ9Qky(x@4lYTN3=hE8cT4(ltj9PU}JQ_>2 zoFdlk-jPbhs^>X_lvDFoXJ?g$s_h2PJHoUlx&@@xs`362k+w~=EYi#9dNiirG*@^* zQBX6HbhG1I$ei^g^{Efu_c5}Pg)+Gx{cDX`pKK2kx7VycTV0vEYQEiCPKv)gI~0Ct zN>G+PNG3m>e)5;6z%o-?mD3<@L4t`sX=y@2QR|Seam}>QFO&dm zY+678Q`EcIw|G)J*5ssgnHwFmFh(7lLfP9_3Fz!Wa99Uw`&|s1fdzf z3VC`!XKXRep;N)Y0%aA6w8BZn^u~7RB-AI<2*S>sNimW-Ot(F=yz~sFIiwnpg0$52H7S@KM@YIK1VIH;G6sY4NMAV($I4bNTa#Qh1H z{xD2ly7fFL{RI3fLPyTd@fDlz0cJCbJsMul<+`ORA|(lw?Fs zxDgO@QN_)J+9L9UXhFukPou0+WG>QN!?>O^l!{o%T9BUGkq)BQJqqmMl)3EVBOu|n zrc=@n9K89wkKXp0Iu?b(^sklZqoY^(aG>9xh>KN1w>B=p zA;DdP!{9KudlCq)!QF!s2rxi!1}C_M;1-S6jeia4SVmt zd#_&Wx~HI7n)5^=AI5_Z!nq#0Nl?%bTt_!R{-=+Hu+FUB;oo|cN`9T#XyeBpyU zs>35ap9P(>7#dt~yEX=hi)Y^TEk3#(c%yQb1wq&o@xC zRO&AzLESS=xQmHeJ;DjD&H2rkXg4G?!5*(Gz2x>k`seOfS>aeTy1~hk7d~nglz3*< zG*qrlF9QR5bu3@<;`(~;9KPCtC4wZI0{|;aZydsV>oN#0>3m6X7U}(k9IsCSz4^+` z21!6F!BiFIy-7R@b2~VRVlYklCu@Uj)95`jCk5M)8HrL>ZpXmrYMjk`I^yqVGX!1A zT%2;AlyNJRC3I>oKuDyrHz8--d(2JB7%Pzt>3(sponI`)$!iEBw6KZmfw^DiT1x#c zHB44z%42w+7~&2xzY1Ij6icI#bsCpl1^0K$aXunHE|xkW|xiH{{Wu_Z;~s3O`6>9FT2Fa0I!Z?&*hT+u5J2!V-^d&!kz z9}2mXqz&2t!!)Oyc6T!>@W6K}%V4SG8E${e(eH0EiOUM6cg6%aqpY>#GZX`oBfkUj)jLglb9IDWGq0llWo`>E!!^=np|q zN$Xbe2VFMsu*KVc42c8;T5-Vr@TuCBl3I5owL9+?$eg?u)G_wbX`|M(Q6cg|I0=G0 zgcu75rc@Tkw#s@$d*QL?)r?ixgx7^C=u>Q3SdP(29PYo`X()?6L~na@;-16!GB_8} z6<@qXdZEyocFow2!|F{b84bIRJVwY zO2yBSu@e2ghHSA_Ud;AOgSS#Ctm_UWm{L2rFGBg$$@fM0F^kDIOvKF>nLeihK2sXx z&g!-1JHTCU)&TKOJ5c1oK4^AyA9^FKj0m=EbpKxOk` z4rcd=iaNb>$qe9{5TgE=B`#7B86RZxy7`cI;nk9dBs zN5PChoxxrsI*aJe_}{hh_F6Dbj5*pcZW)IlMK=l&?A)Z^Ah|CErEuMD4?_6WDCvn; zc#gMS7M(>LJ*kt&@xstkMNDeLwCyaElYIEq{#hdNN74xZA4GzcPPCCkSdb>emt5rr zN2N0qD_|Y)KFjEQf|;6!J{Gff@*KBt@}1!{+K8u(N(^#=sZoT0*;uhiJcsI7;cO9A z^EB1Y)fpw3P{e(X4|hsG;#glfd75Xj7tLSMOh~jqu)==MdUvdqda^5v_9tfSXDs-c zCU~7Kde7)tHN|RxC}GK)IzWlFCB+~2|X12K)gfYvzJ?~ zp2@2vO?zI;MjGFdI(k1DEf7bUE>{Lm-#Jo2ndJGmU|dxXE2Mv*dqWW|_<&*hZJ0xz zoH@s&G?L)Y;2v5<#kL|g-;1P_n3S0msKC!Hbb?!u=u(`>r$0jHwryXf2>n~5D#ccB zel;M&pZU1U843yOXElR-{>6%M;WKRxYFHJ}6#zP=$c#(ZFT2{DXLrgBR@ z5rvmAxOQ-lj6`h%75gj5%X%|c9(#Nt?7hxLF~|J-MW19l{Dmcl_d6cjp8B5&tdQv6 zG)j6LB5#F$CuT95d>dq|V=|^L3wH-3Od}$E`gV}Du>SJF>-sz}5PyzKk!Cp`y(fXB z)#75dZ1wIf$rEFa8cca5{n+R&&IgkZhsCU5nTJPdohn#uo7dftaylgi*&wyD<9J~H z#T0>R?pb-M0}pHg-N0|MfmtpUY!;((x!HOE;FZE{yIB5=0{|H3`3P={&M)xAz{P6`!E!o`9_?rW1h!KU}buvkn@c*y?4&rDlX0qyM)ho5LpZdJ{ zdW^0me6H0Ke3A?{^fG^c6TIf+*)Y)ao`o!wN=G#Q8s-0cbpTe~nu{gLWL=kQeWtl40_F#ebD%Rmlu5M-f zF9Mf=V0nLM0uT${^#Ln`OZiKobR}s(?9v~s3U`Cg`D# zx8h^htIT<2ispX48WSy%KP!~JM|gLQeK(1v*oQtIKGa7M(Tc3uOK@7Nyl8*j{D#>D zZcVc8Ja4C{ytm@xIYoZp%;d!!CQ4O`c|{z0q*C5bqVn6Q+lPxjpM{A>VL`5GJ{FW9 zy#`E2o~iApzNe2rM6%n@UbEOh3_N7RDh&E7KH{`%X9m5+d77_lJwVJ<(3dx+QO+pK zk5!oN{Ul7`mV~M`FX~M(LCS&f^O6Jpr<{gpxS(ZfeLs0AbziUbAs5Gqc5JaWQ_rT( zrj*){nQ@q-OWW9+>jMLW%69x|vnv)ZRuM&9^nr#km#YI~^s57MZQkU>x!!?#Ve-B5 zUk|oz!sCSd1@$xN|0uuaSru70x12QF4OnOn>F+A}Tz^bckmj^Gj1xqQm!+u`ZpDy- z%DuP;9O|!T+^9g6cPGd=!AT@VeGeT8#I3IL-tFXutpeA z?TrR1DQ%BRQRho93)>DHZVrAhqCvo!W|^_=k)oXqYT{Q1()rxW50|d()DMjCw7L$` z#r!{1oXa$r+aBO7%Tz7IoP~irvhU30>BraxZDZL3L$CGF%>zM&)0WG{x+h|(@-^p@ zrt^BNUOR%FD3%HClwEc=N3Zf6=lfpn){Ph6-Y%*PGA&{?Vvr_XtSNkh0eF9aV6~J2 zqEvrjP9`nkvbDWmH0X1wSwAT&>>3uj_>PXUN$O+}TEQRqR^7-`jj5Zuvz=6DQ+UeUs3)@s=74~JlE5xR_g)*`XomX_2n@+>G=FP0 zlyCP!!Ch8Z*+(X=bUs)J<=q*wzX-M=0^Zvyjh4o1pv5EI2oxHq*S2DDl)AsCu7^KR zx*~7$UlkUYpm{51co4=5i+giUdpeGKzQqCU_5b21tBmUCKC4b}H|eJwAduht^yf{o z7jrgmxBFqy;AX^?s{P&sClR6h?MiVN&w=1}p`TzX!5{3TNb>Eyl%(_1{pUIci4HDO z_#dQbxV2w*w4_oeZP08?HWt2HEpgmcln(ID2LSS>2DU4WeB9W56?L|w5lO7d{=@0E z_s+u1sHn}}Zu8|5%D#la`3J3?%*VuB1KpcMr&BS6(k$bVWpA`#zwLcW%pNz6Mt;nG zULP0xsR0eYZAGxgtjxs{(OfdfknDA{kI>1Se!67Mhw(DceS2^JcSg*^My-QL=WB3u zzNxhFJ^aH8S_eW3971W96VIk|1Fs?b8Quw^ZyU2IhNwT$2@KD&&r$16uP@g5zFI3$)ZYbWc2GOc)7 z7~=|cn-^voKDw}1dS32PPTNT$cpruLvpej>-@9+CYVN4iQr~-S<0$P0I61OUgR@$d zU*CEMm3V$Znyak{>)lre9wc=;oU<$>OPk>g)5E62@7k>sN7tm%Wf7z!QxFZ-(}Yl% zPFpHQRKlzH6;isN%a+iQ+(^SU3QIMOvhJN|;h-;K2I&L3?LL~yp-=|{#nZk{`}@>} zw3tS|Od#?xI~r@*##jDdHVI~v?S=b90CTefwsIi-RJ)Qs3zK#~NdSs5OhkrRQh~n$ z;wQRJs)sPsEH}(S%N;l`1M{%vM*u@imNgW?vQSmTxWs9v92O#1jufz*G_`KhhE z5jsP3&fFr-rEZp~;ti^JYM$Tj$88o?m0NL-=6NrK9~SUTL{C9-Kr{VAd+wsu`137z z`l00@>NNe~=wD#y<8t%C5T0kvy`|XlRm^q<&GmT9jL`kFjiJ?M#Wc-yA-V6IAC24@ zQ{ppdqmTDF?FI==Wi|5>tL0@aOX<=bXjMl|*)pDSy|+byzR{W!K#VbxQYT3gO+L)!)PhDQ0my<*( zVv4WHshvN3v&?mgWYRriik3=m;rUZ351<^~bF)7VvZ2%l7}_tU*Ig^Om_hov z%0y^Y@prfkr{9)Gd=k|^%uz{%u4(u}*II6ikdGBj zW#m&aO2iRD9c7962S4>#lw!BiRT=i;;W-cQ98N+lEWnk1)>K43`AkSDe^%X{k@45U`#zkHdHU<FFoDdGZ@v$de^(c>wYn6z7DznPbvI>?e+cBM&71KBO>*zd2?@w87e~grM2%MAwf>KBx}c)xYm)crM;-5Afoi4X(;jL*^v>Qv$(1G}6qA@V)UM#%#W*0n2Hv87&QBV3({zE!S*oA0OKm7uloZ z#q6Qtzs(eV`G@uL^&DR(Db`SyoyOag$0>cm5`7e(cttgah8393se?#&os_cKOsij} zkuXP4+=C?-Vb-VUZ`Vyctqr~}6x;ZQ+Q1epxTVbG*q3IXsgNOzxd{DB#Rf4q#KGVz z!LZm@7h$7VDj?W09AqV={*a|&CQ9l7%JLIzy(;89p0S`cPCVCaOesQxgqj1I5s`(C$4aRXoY2Km8{yrz@p&p&i55 z%}CbcdR$ZJx+i6x%`-`lJ{}gW9VsyzH)f)li>9Jn%gc{%&iNJy2ja9{J@~9Of72<`w%?O*>VALen&Hr_d(}hO_sg+A zCs&4VWpAe3`zf(GwaLRc$>|;LTr=j?kPvG>0!}b$&JsUmbk?e6xP5BB+je=8wv^|? z1vNX4t*)|;RzkFp(!~iM7KPeX`08XT+o=hQ%48WaoLjRV7-d~l6Acgy zgvGNv^mu$OkE!)ni~?GSU~ciM&-;}SfpCs~;K{J(hl zrKvlY&_7ACK%_Qw&HtVaIKO$%rG;Uo4{hLJCqYTyrdO9P;F*#*0m2W@#1Vt~xH#*_ z4XXj%o@OW3EyuqwK4^aijogQ)^hBEgHuKmd3eP2OQg%_SrbH^so!GS>)d%Kfe99Fl zMcos7xNSZYspZ;b=T@y42Vin3+14Ut-Wt!=O$xrT-NVmU9m4M&W%RU)EVc z|9TN@uxKjJw|~`@K6$YpE56`z;x4fE-v_A>1QLEyQx}s4Q`?rIpRdBFJlwXst=hwy{c;X#)^gdVIJ4_I zWp*Nuf5I_Q=ZkiGa%mZgOG>ULUlB2aHh#2eF^$BAjRI|Sow*KnHK}{0k93>u!21d% z#%lK*FA}!N|3vd-26y&3greUbUk7Wh3N8kz9ESjc2ce&|2EX4X(&oRf+L1q`+zcP%k*0>eoFE#?@~5kIxKs`9>ZXGXkgMK zz8S?sn{6PU9&@>`z3t(Wt=3Ps4sSVbEqD%d>-Y$Z8kL9dWnO_1)OTPx-um3=YZ;%n zS<%HVC(4`5xklq>(^Da>ZA$6uW0!um+p@96yPJIbAHBm$t@K6Q%|$b+cNeWTl+LplKT~C*N0-9Of2&Y2xFwt@k3HxvxMSDUn6J7?NlF zbp5BAfCP^m$p@l27WgoGb@8y72%68C+OG_~NYAvbwp3nwah+*sKT}S5*`O9esak|j z8aKOwFHAZ$WgS}2d9@7x)JJt^gqb!_7L=P4WohmlwhKRYpo+aa(3^4b254*ON10CV zvQ4Z=T0V17=nDZ?c7vJiZ@HVt<+c?(olS3PWP8fOHF{ONDoVeH8m}B?E5AeTn0j9~ z29DM|qk62s_+#mz4r&0nPpM#i(2f;=QZa2vM!XLSQ=xoqLq;jn`R?zzX1g%{d#9nl zy$siBYLD@>66)-u{v}5oRZ+{9So*Qgd;u=FSW{*{Smd46=>#zSCxR(oceB}bzRGg7 znI|>c33`p$OIRQoTJ<0;->ui#5=083D@5F!FA_7AmVvYwmE*R$ns|NH+@r2|$JAjq zzc+*ICSNr{+#)E`^FT-SKYg+=rg7payR2WHCV=Z zLy;+YM$3>LBDSN1d|OzuB7y7ChCgSZjSXsZg~xF#?>>-u-cO7R2E8550m&6zGg;7W z9|-kphC%d2Q@M{oj-KL1!uOr3-tqkS5^Gb9R*s&}!bj74>kC*{NxzGWV1e*?>JLF! zX#lg!K2dSmT*#29rXpxe1WW{3a2Yg`2?v zQt>owa!(v8a=R{)-8jvBf5XTrv+pmyRf4_Uzb+9|WcCYiF`KyP; zQ+FUK25V0Ss+zf|Zz|<{{AQMPFz*+x81QB$GXuB3i82Yi{$tUN<|}VmA{0UukMh*0 zUU`zWevUbE&u!gTir1Ls8u2O4=bc+Dr6c*5r*pjQhCV2bHkbOIAurZ4AU`nTY0f?3 z5_w+|lJJ_%JYLF~$cRVk`f_5S+u|Bk$*CCqD$16?7KOHwwELOncTzoungvg|oeV4` z<`|GBh6!E_sjdj)UFMK!s>^>zTroJ@a_}sNj*#7#Y;tJDE3U?Z|J2sJl0yqd5c+!8 zM3t;YF1!n-`~Xp1q`-`4uPL_rME3P`z^v_hHd5oVN!UT>8>)8A9|CYl-S!_^xMs1ceml~2 ziv;ZD&`I;wmI@p)|Kh#cM*+3eH1Ef`3S|0TsF90qy~l3u4kJIMJji)CmTI?uC3)O- zyRt5MVDLwr#2mT~{~IKvsYXo{QEDI<N+)pu#|q2g56%>WKNu+D$Q6G&U+t287`!KlxPFt=I~k= zBN52qJG7&uTI~1}+j_gLP8*s#DGWsN{OhB0!J)A!yZ>`baXrWugt zS{iDO#yq)G>N(926E1N-6Hf&3wp17>RT?s;!W~KBxc)?R z@kf`MNQSvht+P}S?5;t&P*SBq14Qy>jt6Iw?d^vRSnb>5J4$g7nuE7Y*OoN)0l$0x zpDzvo96y|($`_p%|)a`SdZKJ5Vg`EYC-%o~BTN#)Q zm)%H=L7-uA&3ER<#{PFN=b~xHmJ>pC7dsp>^~yu=`+^eaZ5x)r5?4$qp6rvY3{8H5 zR3)i)E3tBn>kMR~6ltck?X!U=`yuG^GNc+?UwTK0b>$wZmVeD_2s1Ekish|muP~7z$Za`~%YrjCc|@~x=k|^Ft(ccq6*GN! zqDd=C&3gBfP@!G;Grs|f*^GVk!NJESCf4aGno4LP>h}74%NQ%yDQ&x=mGms&#nqA* zCsUU)s40Ll84kLPUt^|GaTbu;d0Exd$g7WuXnqFOJ~7UCn=v+cyMn=#Z^u*FT()iK z`s2Q3f#tmq?*~BwmZzi!Di?pf!Z#STu3pP8ogdH-XX#knqa3fZP%gFTm@k>u^eM|@ zr#TD!(NLo-aqapHZi#a$@*HWoz52-YTMqJ0q%@9`O1MiQKzD9KkkG47*UFpSap`<| zRGs1{>-@CtvW;{aHY`_LQ|&QLYIx5aTWou^rdabxav|2V16AF8n*xebB1T6*Dtd*~ z=%7PPC{OyP(q(>XVn8w2nT?Vp>iq!9-)I5>Veu2JW_3cd{og6OC%1>&U^3gj+6E6S z&RQz1l~#45WTDN^!zbw=u}zY{v-dyedbnnqF02+bUJ8XZ&={+aD(M{YZh(hurk=!gDGnwi8Cuk_xnNHsHgf;B9uZe#e6yY#MB(E>Nf%r ziVg_m&MH*7Ew&j=#I(7{`O`7Yc<5-{Gxf=IPDAZrb{U#^aZDnnJ}!^gdN9d%5hb9I zW#=t^J$@OLJ=fxLX>`K$jVBFMR2Fd)Noz+d$^`Ws3e*tSA}BPTcuY%i-`wU)^V*n) z#Mgp9jCpxS2rPFEw4&4s24-Om6meqJI(S4RJDXQfm~j=!Vg|Ap5rmG~fzBE8AI-N4 z9H(u>L6mFm2o8$Vy-WBP8P;lcimaZj>e43W;0~>i8etOti=GX>Z#A^j8JlRhya85# z8f7U1|BjcNh_ZdIekUoyo1l0vyyh9r{}=|TuV9}*{;6sS{K|z7^Yup9+A8q_(ya!J z`&}YYKWGn=co6`Jm+rl)>L5(wWdR5Sf^UBCr@^FP1(@DT|FeX70Z@rmkO7sr7-5F7 z7G?%U2L_Lk;p1a~smUcU$yhUI(Hu579c=LUA4NsxuzBAA^L~G&nK1$zoE|nf{>-05 z*t|usc{PG;p|HWDkYEyYUV3^0Y+g;+ye#h=K(N8%VS_7ZYG~8|^ZwtL`oAmnzj*td z{4}qeYdP#~XN5*grvsJJ$q z?#qws)>k)qYz|BOuQQ>@kPnt%BBH z*;!~KjR0(n@iRkF@riP@)&lXrhq>R$01KF&l;RmBQkjl|gvh{IvS}yXF0Zo^_+jyUJr{d;g3iozd9c$$ z-M`#O&p1U@HPa^IV3$_5`*@qEX7mLtSfnJ` zRkrav`>r8U&8y;X%LHr<6I2U*fxWT1u6+ie;C&uG9iOB5X3>`Mv+t39L2V*CGMDG; zK2|eB%z0}*YUwhN=Jpk>SJsXRPo8N5yaDbw-anWyGW*x9g1L9gbYWI|2Hmp*Jl3rn z2EftpHV`6Y&2Vb>_69yexf?#$7RTe3Wwiy4sQM>p(aaIPD~Qe+%abX1gbm52Jrs@04jZ50Ia{8l$$_P8Rxyb~V08a{Madv=D696WnrRq_rc)W3sPw^YHHs!@_ ztgVlNv@4ekbbWLxaSC0ICb5_>dj1h-)Kkq3MI;g z3t8aeEsg^<0t{R3y_IZJN!#W2bb{q+t+Ko=<0$hsOU`X^yAP5SyxxXuAj+!5`YvtK zwz>7hha_;twE_REzO!4vv#cno6dqe#7<5?|w?RjBKi~?WOOh|g#l;m6*TwESaX9qt zt7X0HPiVv*sPTOiSgFZPhuIsV*1&=2y3XB9F z&zU)(u8UXwtYQbNpN9u&#zI)EWGRpe7dnz|9u0pqO@(GB;uEjJXCP=^Cg9&3HnctTHqufnZ)=(W1EBVQ$bN%vWqN6%Ef_(+ z-=n#>-SBxpT2Lxk{FH8VA!#1hCqX?0saJZXRh0g%sDW1#q;BAQOd9|8XN!q=RF&25 zuW;4FzS5hr5^K?2I4(9$1{A?yLd6ai+H zF0g|3<*0DD2i9a0fHZBYxmdb@GOrMT7LQgF^7 zVp&itFL*hg4Hqw`p*C$@I(m?v3H zBfP}i6JP-sm7~4D--7ngR;*D9c~k6fi_Yab^J+$Zf_sr?^X#uD>9`tPkL;8>m* zf1~lcW#8v>JUI0*0gDq3>7wJ<(}1DV*uz$`->h`8JgT0Ys<$s(BvaZURumtkBe3pMvVc#IF%kU2kjmx zd=sp7!hjJZ!t^P*%vJT@R4QY}`-Y{}Xi~Zw@~-m(MiFbHyLTPh8L zS-hUZT)N;QeW9WjF$e53$BJBDTa;rRv$;EHT%U%#!8z|4eIBx6q;*6A|e z7gS}A3x(%qA9_Vtdj)0~%cK=_@lCsx)`*8BxhNxG-eu_8%6(;9dSuI6wJ&=SYpReH z17&6Z@&Sk33cD5RxXjTpDVQEjq8kd!FojmAKH~Ux|~o+NZw38qGA2 z2i&b+CfWRZzU6fC>L%OhwNUqI>4DNS9K-rZ?5_Z5&>j)j)_%vOdsx!ud}3bXm$|z4 zkOl%l2>VzLwekIF?YP)ElLHCB_t^ci;s5)^b?bS*U7I7b1LpGMbei^TyPjjU%JkN1 z{UUgK^S}~Q0wpBGK!9dg>$2&xFH7O3nvRlKeaGt?-Ml|QH;xwHl`?vk$y--8Q^v>N zh4s|9ziIew81OKi9pnEaN8EvEU**tAC;O(ZI66L?D5LEy8+ETCK<_$|-3geYp;EN^ zFB<=D|Cb+A=rVh%aIv_imSZ1PU&-QTh8{42}Q}k+t`zoe{wok2OvT zl)~sp#DI2yUDZD^SNrY%AomZ;5)jqz5$26fG7{OCQ=NR5 z#OiWIHjlFMCNFvh?%t|WsPJ36gN$8&10Ihz$3}E{hRFbP^#u&&W&pH_NkQw!)jT^_ zlk6UZ;1l)TPsaJ-QcL?W7m1yFh?41!A%BA!Te_(HgVEEl^E<_Mg~lT`-#@%Z2|-pj z4*iuJHWnyjU$Mr@V5Fi8T$RZ@f9AbYXa{KYNe4C!gPdrT#|7@ZrEBkhM4G1 z_Z!8c<)^>re_-#vw$4~zHyG|V24LW}YJ(M_-OTfA0;B;9^4D=>m6PPToNT@fG84`t zGc+aim6H39mC^FaTkd47jr=_(XfLx3?R-7wFMj9r#;g0|X2MylsGPGYb};A|tm92j zcYc5&UaGLqWTeq+kLiCh6enAEIX{{1VBwA5;exyCr@$2nn&u(_-@yP@mkTnl9{(M+ zp*C9df85m<@WehS7;DhCWf(3uSME~cPqxtK`ISw_pL!~^9%gD{LJToQ;qi;@lqToG z8M(E`>1>5Z48E5G{R-KpR<22sX8rX6)niO(x&5~NTEBiy%tJlfP2<$<@yJbk+4rWx zu-^9L%+H_yjNaVp0}IL7rTD)~VGN^6N8<9;$oN1+6K>bC!BEJx=a*a0^-2JpH1i*p z07h0Srn>9QB@Bm`3&gBVC%<+?@g$u=6+45^?2srWDTf~!;lh&+=4Z!`gQFgCW_#^u zO#`D8&5*3M0Ekw;?~{Cwnc$pictMplE~KD!9X2CsOC6qYgD=9f7`$JVqIH+ZZQ`rq30$$*-nWj6U{=uFxxF* zRD6_xf>5*mC0-*0>_DtI?l+WJF`Q}Dma!FBhDEE7ZL1od`fI`lf8Z#oEg)8Rvk0pB zCGFD6M3KE?mUjWj(SQ`c7NK>i{_jd%xCr?jsOhT+YWT~n({nP48A9l(A>3=?r%^cG z0#*;6-)`PaqJi^HFFQ^wcPh$wwz1+q%(j*ZYM%im zA?jkS>SIS7(RkRGqi)mVH+CNWyFg#A{Ql@_x!2NqLXi`yoAmEW2BRa*KDh9Y2J0HI zfDK7VyN#b`jQ7tE?}|J4zdPsf1;U$G#rDDlMrm++eHzE?EGt~zp$~MeE)=Bu!dt= z;=I%DM_Lrm9~zMi5ZQDJ;1En?>8d%{Fv4J*ub*<G8NtG>n z_8&U#GKWQS%nS{oLOBS;2#$dQHKrF|t3~?Ys+|(inRv}FzAnM31tv_FEmVKyf2xl4 zSLt3vLg8$JVO2;8Nf5uXF+Tv^C@PHG=_qcbBqJdLhoH1=CJH$I8re-Vd2FCNEc3nv z$|`W#)<{i)YWS+)>4|Y_LdUGN*sSG-Njc-91=8T)qcL-&hSxO`i9bV$?{Z11XX7eJ zqF4LagzibiN#A1K!ZsB^N3<2Z_OoK+2}d3R40rCd0@JAI#&k&nnZ7`1dD0fH_L24a z?@N*2`4Y)ve^&f1M}yeiG2cH`ez^-fgH>(GS3>2!wiE)}{m)DR8%$RWosnIHKM|{L z5`y}M=8XcQq-m-8p5SzN)fmAFh#q~I+aZJxQ1N@{!5_?;y1M#}+DvpR zx=lpATL3uUCnE2KsVeuusg4)Z=2UAa8;vP@F4hZFyW`A&)QCUIf2wc`IfQ>^VWwo+ zxVeIDA3kK_NZ}vLLO>WJsxvL?)Hvo#+v;!aT1mho-#JfV7RD@ST5M0UOQ&|Yaq;yY zAlk>PgQ}4taM-xxEzF{9(g>JbE;o=8fntA}t&FGkt&su_gT;~sl+&ey3z0(*%#q~Q zSD;&W7@vQgL~a%x-uI1ceLt%(S_&Pbv4a3B*paYyvV_KHsw0+xG!@1*T12bnaf{mF zEtD6lYPYa!Jk0R4Ng=Arp_zW}o+!_M6fipD@z!a0mlos9P2Er>=Qyq+Ro$3j0Vb9R zcL<64UHF)hwrzprfVitW3D!1(2LP2GF0{D}KKHOwO8wQw*IGe`AH=z979E!;tcqM(kugL?m%?q`b z!(qvCtIG|3v{aa+1x+Q=nHan?aMo*)R2{)u{r3DFy@KS+zJ#ER+`l+D5TrYQKq0~g z?yxUE(m5^SKEG!larUhH#G~T(2NbxffHJzIy2-Exr;`(9;~s@!3Ks!mkb5*uzbh}j z>p;ZWavyo>MCDpDstd9jn&ZW8zw7J4g5;Mtww}u&yOYxH^GXXWc8~{3=9{ZvIDB)F z>7Z!9O`^o$Kgvu&=;LLm-5y;v?oZe zM`Kpc7Soqgk4I%kB@_|r2wIP(x-fl8M8|_0>Ci)DBI+_x5a2|^aB^H)hyamSB^VpO zd@Ue#B8S6B({qYMIVVi&8)Sf*2YaK|^$=o>wFRsYD6~gP9$19~=CK z4aR7cpJ%2~$+F86n`31H5~zDFVVpUkec?sJop@1rprD{+Un_`3p4;ho z&-2drZavHcvql(vRS>TT1;Q)J!-0-<8GVXtOEH=P9L5A=Y2U{FW?A538s*Pa?+HG; zq=O>!h2ma2ODY$bf*iv|)`_DkDamX#E!jqSK^b=@BJ+6eTaXsYc2V$QYR zS;;;>@r(G_AB2N(a2GVHXA5t6Is$2GN9Voo;im?M;okUM#Bi_uLH*4ugHQoa_*RSb z*;&3xV{p>aKBzQvzn=rKSsM;R+zu0&v7C{WlyZ@*qXUFH0we8FoHbMkI@$u;9C+_Yg6pux%K9>CD++t+zG7Zu9K#X`f1ba^ik#g`bE0MBwh>P7(rr< z9=!feyJN8rmwlPP=PU)(KFEQUoUcQvl2Pv{=J~me_>Su`a-mu@=5I~TcW%9ag5E8- zA2oZVx_O~B!-#8iltXFNy}+jb-FCM7XI9v}`$?wqR5&k|uMHqmW_v3X0@je%6@*e!%yfmp>L9_EP^MkxP97^F)} zED$-z^m|+ccJhtMp0IvHc4(Wm!ImAHH#K{RgP2K zI1-49h(tmKGby3GKaJUj9EQ1ftb+?(+fkt8%UOP8EPUexz0ftvJF}WF+08)WZAra} z`2{hn{moEh&g5BY0wV-WDi~FGiiqUz#+`lOF{&KYd;zNzVec1D9~!&iC+q@Q5n0O- z&?SNt1QnYSO`}+4hWDY+1>YHtP3PAQV`V?#mv*!;ZY` z$`ot~R4nxJNUS^JOE4XjP3xyKwVg*S2Fx zRGnRKs4Xjs2V$(ju>?-Y?Nj12eHL2_u}mW6m7CQ?Fe2l(f5*uy#Vc#XSU|BRH%+%Z zqB$*U5rIAIXJ4W|1YJk#z==a#i^tkWcsI!gZ;2ga(SWx0DqM?9g79op7GXZ^GdflC zJsdl=Y8IS)GS;~=)*_SZcA>PGj+$(m*;^igUZsxTue8g+VcV9Z)QC&GNIWAsdGOp> zGKH1=ntr4NiwujBw#3j+H70C1h~jnP&7Y`%CYbeqA&gQDQC?FJOBWuu!TC4KV|oy7 znGP;2{m6zRMtVMPmv)13`5BK(F$U{f(X;nb4zH_W5I57|TdJ}mEzR6bzC6+oQpN%fU9hSh}O zOf5m{HiwV4lN%^)d~&=W1F@wy>A{BT)^ZqKq>X*OUT|t~h#g@WgQ!h-sEfG!B&w|; zyP=YL@Gf2?@4AB<&!}REz+78NRo3A*ePi!QZm9Zr1Ne&xl8Ly7Y)!rq9sT^{k&ts(Gh=jOwJjKutbv z3sKHNJvPDbHW6H^Vn_%?MeaAVYUxM>2ur>E`xb^DIi4ZwX_G8`8 zR6Oxop3yAb8`Da9SC?`;H}MsKeL<>{8UCV%GhDjP z+)k#0%N5}w$*Pd!yw&!@ah$iX;SfSb8jC!SN(j>~xQvoh=xrN*{Ximz)2}lboc(_Q z^*{>0&;|`C#4$ewyMfc9;q`?B$4}{m$G)Sd!nQ-FRFm6vd>|ZdpAx1WmSeDX?+mL} ztx{eFXz3Cji(@1)j+SmDJ}Ed^dMu2^!5x4^gSAgrLTj2MpvVk3KeL-3ya=E2O5?P+ z{N5T8Z~$zLa@1Vt=$bTMR6G6vyyziga;F6hj-CuhkDm~ieh)D zPxkx@{qaFj2?2`1_AqB^d+6?&8TM~lFJ0cDdwUHWnn85+(qiCf;AM2S=F)%>O_3j9 z$l5!*1M;|I2x~v%*9>|0G@QKz901Q=hUb(+Y}f#o98Dz$7|^3d!yD}H3x|&!7r;9a zb{;wrwu^SR=fptRcr*h$g-8K83D*&WhnaGhrY`vz49ELUhbhx%g?+nr=;_W~0tf~o z=QP7(jJ!I{wSdt;k?n5y1AJ(PEVkwcFxt2x(c2IJyd4n7SRhSC?f}?i1u~lCXrmsY zw2qumh5Gn~k1( ztH?%*f6^ESz>*YorGZ)3RvPN*sO23HO>fiQW8t;KePNSmcywitCx8c_%@V+4Z$S=r zVgc-;$t~)ydl1C)@IXg6c)U-}!rLCs%Z_Za5UqGe#%2IBy1@o;Oajqu2K3Md0Ya7s z0g5)UVziaAGH!lvRtY!&Hfza9y0k&2nw~V!0qNQvI(#hbJ9IQ`+$+F$q(5vrCLa<~ zy-xPEih4(vHU&HYO~FqaIQn1g=vvlsmS}Q7#Fw>uC)>KiyoHOyK3Ncr#xvO(w#q*f z62J#2;>H9EYb04B1V|bf0*DTVR;$W!cK~d{ax&m+7toO=C*ygtH098-u=n7R@ampp z3VNH5OE)#J)-85xr>gE2wY&=8RWfIgXLt1x;6vvD5(g4+#E~@gw|9oc%X{T?<6V;u z{3?>G*bER;?T{rooJ+{hz>sy528M)Y=zy@^MXt!QS!@n~O;QpDdNh&_(KZ;GD6qh)+u9og8|S3!1!?py<%9FpCLe(_!;0?W47=y7*CNO z*JFMC;iN2wdG(3=!aHvNSD~yEAu(^oUQK?KmjN3u%U^sf@sGPVw zcU(tr6)du*W=B^U!^|?>WRA;cX$^a-`C*5~wZi5oMhC!iR1Q%KU`toj_KwPI>+b!B z!unlD!*d4)!oGfKBw6=%n!r;06VQuTrrI8EW-|QJM{`wwdk~-8npuW~ul5w`lQIrC zYu3DQc=Il8$n)mK52ah2ey=Y9G(4L`v6FQ;;MBB2?xq#C((HPDi8QB=1KpUIMD!3wa8L)u;0FES~G5Uim+SL{KIC1=F*tBbZcw+m} z@X8Tpb7haI_yc^^v$%#w3W+(8$&+~qKefsw+G+rz@Q(C(pgi>zJ~&l)#izX?Ja*d_~Pou@bN@uT7dTPRPFG6bOmY=!%Vfa&vP4EU5hTZ7vfV z?7}!Hz=y{7@D|bd4vU6o<9h-rX98aYD+4HluC%h_mr=#LK4c(9`h~#4S$2$Hd=~$N zAh(Jow<}?V5AJ%Bv+Q)}oVQ$k4;?z3?|*d-FiN(_tChKp6Q)4ON8jlhV|>=QIH@}T zo~0}m_~`1&a+bc6$HSK0`@%EZkA$ZVgdjUdLyxR-=@RrA3VaFBWC)~y101E#32Lcx z?j4B|Z_P#Jd8mJU$}*}vaG|T6_+-|^MKul%QfQwtQv+|6@7a3yHYW4O*%yKX;5cO%fiE7NG|(r9iSFDN)@?l)o|MUrgR+!`J-Jf^U}Pdy!7qYS z1#)TokV$ufK9jZ5y9`eV=iBwh;_-R-#&cO!Dc z#z=A+eaxPqH^$k$5?=gduWQHb`Ren^%P*=1NP~1UaT2h4Vq=8N8UuuMiJt3Oy0U#{ny{n+TiL2Y`^Fh#fn2C=kw{KVLswMH;+YJhqZ>033z9sCYDX z-n2T-w`*^BV6*JiJsJ-tnAss9Az%^L@WC)@UJ5jFiT8>&# zUe7Ka#s>jHc9?j#c=ToC062oI0Gal7Id*EWU$mdy;qguT!{ai}cUZ>xrZV0pBYdYb z)SzM-fDkUXXEuFS_lz#5!KZ3jixLYD7>UUqqdj#K5A##5x)%<&%!8W(p-p;7qVcsr z8S``tU37}!2W5<@O}1)v&s(B#@7TU0Pm?T)f8_~LN@ ztRtWJmSuKVPFI#=sb1W=Cp^6UMAqGHixV6Y77Ynwcml9w@RoxNei3kn0#8bthpG`? z`D+A`GvOkPW$~(CX3xNlb;^-{Oq>C!QbC{j!y6O*hk~%Vw{^;1)oF8-ZqsX<^(%6= ze^nj*a?T}S6D8U$mf@L&3l{3Z3$6_gUo;MYHRJX5r7{a{S zc;J_!W6C$iCB9kMEN-Fi?ul#Ao_unhZrfV4Xpt|8QOP#P#a?jQEk1TUY~H+CCrReX z&K=xb8?0SU4uFYVs6=tBuU)jh!{OP@yTkXk$%!p8yE}zr-ef|6?ydog!2{0y)i~v*+o@lAe70Q9T-K@#4kG!!OMx0qTx*iBIHp0dSbBd1{9El_D*^|bjfizt7(`!bD-;nU?V077CBQlN< zSeVQnUE%}UVwOG}2#V&=(bcV=)WqS{S6>a+UVE*BU?#C z>L!Fq4S-rfM7xoXABNpB!~5ulec_=4Z31|;wZ05ThJX`pLjXt|^qFBc&?5IAN@u)s zD#GQo7Sh6GR2hx(%r44@kTv|WP*9%Xuj71G;fyfylpt8-M`P)pHZ!y@UK+x-t>NXD z{b;NxtMXiJ$qZwI3*bH#!izXS|4eB!4x>JP|d!Nd}IMM4X%Px265jqjP@Wd1PGnO(WYuo-`S%ED#D z7AD5U6RN7*^=7^nJ|c$89k_2ng~S z&&k>)j<1B072tT28v#mobVy_0Bj38cbKUmv^=&d1B5%f?Y(X;+VBiNX=&#yMfd$V9 z6c&bb#V`?w)IE2Lw0wUz=Zjr=W#KHIAvAEsKjW!!nqBU>JNAq&T9RjTx4RNn{Dr?x z@$3|`w9rC2rSTRIw*1+R)<_l0{l|A*x6*>$z{bdfh zyZT2y=BD)WkOhsvWKZI#d~&8nH#9B+<>8GsOG71HMiF^hfJ#ULR{M#Apks$DhMvA) znNA2nL!+7O<44G$tVY`dtL4S)+_^KHIB`O?!O6B}a8hW10F6%npFA2Kd-1jK)fbP2 z&3&CR-p3wZHnT~i7aD*7h^Sujf}8q9OJ)}r0^uh&^~&xQZ3>#qU+>DL5}$a&L$$(; zPYj!cGyX=KKgTphjS{}q@$ek^%PsmtBfne=l_wTdtG}ktG{MNvcw73~1q6>sc+B(9 zKd<9Rw&pCl`n8M_0QC5N@g~{l&E8_#iq-8h=4UKvZg~xm2G3!ohYlVH552N8Jg`^Z zdZGz-v#448X#5zOd<2T5d^8l01yzR4c_ef z5d9)e3S!ZdYXq<8mjhWIHVqTwAQBA+Q;Y=4$g^~)qY|a=F|=ebq0cCXxLF! zx4iN-=FuApwW%g4vm`yU=IZmbS?7hPo_b0FkjCPs{1Tvy(dGd?PX6wb@jg8{9e&s=&+r}E)z!G*k;O^8=4N3vyt+p^OLy#&#yB)CXtMAz&X}IaFUFn6uW`aJ z@-!M{AUtyF%)gQc8AI)!qGusa?T!bc@?Bf_xM>{;FcAU}GA?N4+scz8EeC)!NSo|< z=9MksZ=XMsO?I%4*MNb01pu_s14P+x=(9pg4o*Dfz@$8kC!sPP*&PRb^D#G`^_PI5 z(vlV^xyLYAB1qv%IP)_e(3yLr)$u%WC4DiC29jBrEL|E07vihtAr8?$0dS!q4~zj$ zUn)yqPQ;Nwc7#mkHDn@|mNj&VIf8%7mMuEO0Vq-jTg|i-08&7l-PeEWczFE9E#V(G zoRC3#`96nef}G%D4Ldgatoe)M5I_SIgdl=eEO4GNF}%4M9q!StcMT7)WPd__hQIR4 zKv2SJ{6?3>W7?j@Nvx3%aaF=b_e$EJ7lKNhS$?9s_~D(ndjfN4cg)tD)G|9!l%0N>62`T{yYv67Eq_bkr7{f)}qaXJeUrJ|ui4VK-C%9U1 zV?S_Dm?DdzPY}PDmtJ})@U^nG7S#@7E+_Am`a+ws$q{ysv>FJu1OU=VDVQU25ahkj zZwYtpkb=`OKxw#Af2|PE^+5c1~?6lm-aRSPTqz$Zkhsj{o6l|! z_w14Hbjb7vI#~`9z(Ll)X}lG%(WmH_xl@gyrIj04XjpidpL#-)@m2RKyZI@fj9(T$ z^2-5ES9@y0Y5wcMd)697D;vtErq57E8C6j^q($@8vJO~Xi5nj$P-`^ z8^7B1S@A&W3>YF!q{}rSVWr$OeB^^ePOJ9pIj70Ay(Au`7h2Qea&0valXhK+$Ks7i zlxvLB;*)37BCYGKVe)V>t(A0I*EjOEE^*rRCA`#g)ueHcBo*9BMD*Mx^=pH z04>nX}QQ7d1Yy!%O)YpBRd3)CQrCKh*%IObgxfmxaC)$7Nk$cX;y2Cw0A; zYk(reNoEWL83rk9`Iia+X^0i@L-T77)8w1CH8sBs7--zFu~(L&DClI3n&z(!T<9Vg zWer}RD|YI(0YSVIE(>dSqtSbXuYrwqQ6spCe-^j-M}D}*xa5}85NCxh+H=5Es?6Wg zlI2gs;Fj^!xYZs3F7=Q07`Fjx43~tLuv6#E*QG^#e-^_gdic7Td=dcoSP4+p?r>=U zkoJ|2`O)n~^HcDPl}^D!tk5a2m_2Kl74WDuRHajT!dWAap_LDAkVBLENB-)T#UZyC zr}83<@gf|)Y53?Dc@hrK)L)4s5BMlg{2|QfaL1lK8?Z(`0)%QY+DMm!rScq_K6vMV zCl5I&X0$dwi3ZpvTHn;{BkAojD~w@gkUS69{l#xAKV|HfQb@ow!7_qiDaHV4pn%`O z1N+0*1^ix+F~8}6UsgSa0FE?%==GQR)3_rhU@^Z)7oW2*nV-7BN1x-}!bi6VD!H3D zM$X2Yfc!_k%5OND7@-DIK1ORiGJo|`DlS>Nq7{mmhRj{#t~f?NXpD)`t6Sn|?uiq; zcvA}gg&x@tJag{6utT0tGeaVVodRs0XXijV7DTz2N$ut~+&u+Tv)i3;W*;lx;o@|^ z@k_u!kUO)(W!WOx^Z-Z&XU)-JInL^zpW79lJ0>R+OKY^PZ8UqD8Es7)z233o#uXE3 z)P}#fNB@eSK4)|qs)|nC;FP%M{4xtP`pe=~+SD&&qUp?NH2^eXa{AmJ17z&-{A6sD zK86#Qcqj~y3747zt3ed~bw1$7z)T1e+QFsl+s*BS#L0yPn$_o<1Vrmn?OWYOYO{wg9a*ZYgVh z&ir_YO{F#sRiipQ0djuW)q$>MB-VH`rqQ0okweN}yyKmpxj%`keEr zslWc|_QQ$p|T?l5=O)Ns-HGefrk+roKs!hO^BhtK~v*$pyds#bKy zegL59)2HWa0#m>-J9o2ZNjT$XplBZUO!u1Klqqo?BJS`qjga^a4B5NNk7v^!p-+D! zrNiR)`}iaP2rgf~T)!OH%$i_R0w9$W@Ehnm5gvPKd$>=QoY5dF;75~>js48~P*4$8 zP-^3^&{ok5;g$F$?nEd)L-;7?#9f~?j7FN!R-Pk`2EwX_{6Z1aN<2JN;){KF_^E`WEz+^J!;fZfu$(*@9` zh8a_Pv@93}gl~6GPnbS)mU07h(9kh2yzoM}@x~j~Zt?3w)x`j<%6Y^`hAFG0G-$2ddapG8+&yXWU_g9KK`V2~=ztxpkv7srxhG+g zI3bSom2jGh%su)iel%9X!&EOyt#)-+e?cR>#X%cl(jak*evyyb17;>@+ zb^sB2z|c)`5HSKUvn2r#jo1EqDd%C7AW2bCoq(RSGy1z zNBlJ!Xv|&jS(>6}j9=|BoyJqsow;Wr6!h2{cuWB7#Z&!Zses;9GLG<57tairFPjrq z20)_^Nbddo<&b;G}W{7dkP{nXo7i3TG0Il1)!<4}} zs~dH4(}Vyx5H`wZE5ETp4&CHPs~r3?V3PI*XwdBRmo>obrUD*fht9%845}1@xpRk^ z7}mgH@-RxHE<@rpdZ@Dy5LMEYhfCb>mw*~31`@mcsXgA+muJ$N@xx;7(G3Rxlcz`* zY4{2XhZclzQri7Sxv*Apt;`&Ke9esT`sH&&@1ofe^kfYmpxZB6(`nWT4aUZ=+LL04 zUX;IGtO7F*w`kEKbvA&x=bn4CqF;F7g?Sg#!kx>z<|j))H6YSuCNC`8Ffin}C%VgM zF9w8`?{k@tGRAEn$P0$O!;2R$Zn|tV9RLo>8~e}+8M~22IUsFN*Pqco^)EJd1*h2d zRiN5_^;xJg_Y`O}Y?ZsPi#)lfb~si&!%LmdaF4_>yprSq7oXrAVJfFl9??C9j`5#i zkBUpowS`e4;}_Eu!^!ErVriE*>_J(Xvbk>{tmzsIKe22|c-xw}VfEs<;k-GsL<8y) zO`7qU!O+J#BAz5n#Je*A58ky5d7@i`;Vr*x*)kpPdHLm+!$lWeR4Yi+xYYtg+-wYy z-7RP>9P|np(oIG)B%cn1<10q$i%m$`nDO{H6(6eU0I*FolhJYctDlCYP>7$A}_8>mk;L$pE8JOm6=t*|Wl zJJ;z%W~>QB`$MC)c5<%MW$|14vFCGtmx@S(y=cYa@Zp}W@b&fk!i&e+!gLvzM`=-T zkh_9YmRf`=|6*|E8o?w!RqT-@(pG4qKcR9MQi@a#ogh$m9xSXs}_bu^JdGZk44*) zaJpMVy0vLRHtL6%c%SA2K$QUp9E7m+{Dt8|Q@X?5&+P~g z?jIBolrcd81v}LQ(lfwM!hs|5pWovX4i&dZBXE+r8BHZ@=BJTF-yvbtJ;D+0P{eym zD|Yqc9xYt4>Qi=)UMa8WpVHw%7+HI)o||PRmkEmxFX;*IxMW_qbmjaoO9uFZ%;4&{ zUN)ewjXENq1T4+~44BjXr*+H>`vVU=pgTfX|7Bx?xR=ow7}}B*5$p+ z5Lt#PDoq26c&~sFL;!~YWwb{)u`ux|@>4qK?FSKdX}Gz ziYX*q_MFA3p5l*Y$}$#wx5%pHQ!+91V~cyjJ1?6bE?c=!maj|~dC0N@0Yo{pFVptU zPScC|s(q!BFI>1#J*nI*e_mc^Qb*=28w<%L8RdUI9DmBs0lq zy8t0~%wz{bWW@`E9s=OUOR|~4k1}go03>m=c?3Fj`i$_Sm#+wOrfdyg+i)z%;uryh z%Gcfi5Csx0*!8Zq+#NTgIRlUgrT!H@%G3CyVKs)xTN&nIBM*5z1IY4tvjAs2XZ-OV z60bY~_ETgF+7?;FcT{BYVd?7Le%XTXI_c_87r6|uZB1SjEY{P;sz6C98e@Hf@@M0poyITyaHAOJkC7&bS&FnpTJmXyj;w`}XbAr8Lk0gvewv8S+hCm^yW8 zSh{qnjt!ffnpqA_4S)y^!6L}^uI}*0i&umhQ?`fywf>;&QRN_1PJ|f>cqZ)1kx&_^ zh(}G3Q+JRjPOe0nNDHq#Oa@X0o`9A3CjNv^(joyNA-vM%_Mtr0*JybV6NAWDo4f!{ z2(~>bv*I6L)D_-!`9cLgUB@;k8lM86t*~#L#url+uapNeprT`F_&wb{T1GrG4tVRW zx3(kzl0OVGz*qw}AY_b?#o=^~0l~=xgn%D%V6uamUXzUqs);X64}i!{8y(#{8Q*%{ zs-Sc6TK|(#TlHcgd8&@F#DW8*X{sk}!{t z(8$`zAsU~geWDHB8oInU-E>p9@4ov&XIE!FF|dC9dae94f+2FA=tNFHeAPh6Y$qBa z6D0s4OFx=z*+(P9LVaL-lnD=H!n4Vy5%CqtvlIYGhND2^H#9-7&P)sK6&YxJjN-`2@O`d zd3>5Z8qhou_y@099^SpAD;$!AzbyHPdYpk0_XuvFQU$;i+EmEqAN`<-e)(Of)Gq_G z2yQYM9&szfsoJW#MIffTE*r>5W_UzSD0t_*_V72iE)DCXEYE3RGAYVN~6!2qw&oF6TbL~iE(7lnLB>a=Kewrpihwuy)50` z1u~}j`KxDzA6>gV%$F`E>mJFcHX1VBB!)LVdwwsy^ioX`9Gz9DZ+4xs0H2ATK zojg;{$O+l7EQr~0J{|-RBAc=r13wmv(*t15r)j=r%u^`=5J6i(bawTG8!lTJW=-85 z{=aAUhrP0MWQIla>l40>;JH5eV-If_Jda~4wqlBSh~C2vQ>?7l;-SCkY@mpw1?j9n9bIiLyd-o0CQmf&YEi2|aUFcttf!yim`PzTCh&gFd-Ns&{D zblgF@h*!w=xu3aaVOTSDFzoA#N4Z7guw1#Q|y{%pqA0dQ*7KuD*>p} z@;}sF>0*pS;>+n`yo4p5DWcGAlI?59WRKq;i`Mt=-hOeoLT0%K+N@H+t9i7(n6t{2 zJenrMIzY;TOA;AaDU=PhXFvuDqWPspoWx{d zu_>(u;JJ#gd1ZH_k9;cONiF9aK7PDEd~`u)_|Vnohbt~zB41nU34H>FnjO6me{&jp z@i69xVXrI=nj@t!_sfnD+|YPf-6)ggndqf=rJ9O%;%XJ{D#yQ1w$c^%1`ab_7z2>~576 zw+h(h0b@7`tlJu4>BPO&OzFn}YZV9uHK2zAbcSm#lDC(P3;xv;JHxYw zrQ0Ss?gO2~B&Q^HOGLBNjhXUI(rg^xY{ zVde$hGd0|H)#~u8Z=5gN<^}|)SeF+yIp_d5jB11mY^wJ~fKzZB3VsTRLa+OIh0g(5 zkk~GK|DU%k2{)|0K-TwlXXBBr1AZzXxgb*mJLJVPcWXeKHf_>zK-}GoUIJEE*l)@FSBKU2RMR!fS&>-q+)bin@I5~S?2Q2 z1s&n{-_aYcl$mFCrl1$LD)^Bv8Vm#W9E!lqrOgEMDM`#T&pe}_m4sI1r>=e(tpt!8 zFBx7SjLiX7MS&oEIn9Uivv{~qHZ$n}Fcxs!9m2P9mo8cue&&|d;s5NN5;n`s1wII6 zP}I9z^An5Nu|yCA4CDEIfZr$1?~r9KE5dTAsLcLaJZ5XfJD^6li5WwTZRygz!E%g0 zho!RJ%Qe99mwx*4K+Y^r87~N?yZ}B9Ftr!cWCTA-Ws(A5tdP9$m>iisdrtW1jTeUh z@cNlyk9=EKCr89jD@TTWLo`2m(Ai#L@PufNA6wKJe)^VPIT&)WfS-(ojlaH^E+krD z^-M4g^!!EVYhG9o?WQ;hj28p}ILeCIdd3yeCeZ>XyP4DgNa0(>U}wg=-nb_G*X!i; zWjR9OkPH=ei55c@QH2i8Pb~cOC@VoZmeYJfzz@xDp)_~^bFzS+X%h_8uU@@c+YxpQ z4a+o&&6_t5c~%0yj9UWKv9W?6Wx-2{9UXQ+D`4nml52og0jMB4IU>i--|+g?;lI9l zS?HC?jBPSG(vxX|fFM8B{N%n*jHF4PBuehWGM{m{xH@B#%?=8 zUU}seod_{N#LvyyNdUQXGRtVk1OY#mx1jk^UVxvMM=XO$uK`+Bq(U%b%jC$~3zmn^ z-nu&6I~jO%2bUkT<5d1B860lJE0=?xrQ->NRqJsbIil1V0lSjmpLVRessa0u7Lc z$I)2K5IX>x#EQEkZ-9*#P^#78&dY`$AZg{3zMzUrMY%aS0M;l!+Hjxj6gf|}uYKyx z7l+?mJ4^Nu$8kY+c>KW)3&R^PVW|tyH~G50CNdfnGrRzu85$pk2FVOD1^{$ZyadqZ zkUt>E_^W{+cV0Mjd6_ka&P{CzH~`j`i+1IhA)Y#IdU*evE)Ku{riJoGJstkrwR6Ld zTrP{8+d1WgiZz+_zu4_%yB3CSuPu2299a&7;bZA&gyyG?emQFi@Uj8iSbxbnLGH+$ z@?f&VG{duwsD&A{c8V&etLG-$H>vR^9B^Usso8ly3brjHJVuY{qaYq9*jj*`bT91=!fFqP? zY~(C?ZVwl)l6{%eX81sIA~Q4)j>NKqQSDS1NYa^L?8wpqFcDrsR(lbl@u3OYcq{I1 zhL?Z?;PCQMU#my`%y>-VF~4e28K41rHqc%TfM_Q7-g|G@wr!g>%xWI~T$}`Wx!A8b zuC2|<0dNfE>+jPug++q{^h^V^@jxh9f5v`O3=5(e19S~g#o?DGk$?kWlN3Z*lfgs~ zgYUK*Bn7|}>^L0N$E3Z$z5EH9%56-CB2Z6oz$U5_SpA1;-~*X~A}hBv$UrFZkQ zd+Ill_A$)@Gq`F4t0cVE`XXxxWCDNa%n+7et#Hs7f5JdVV=`lY_FON1=u-Y8#cBLT zy3>72`Hn>+u;ao$+bZeM|tz6g#tdWQv8CGiS~mk}ll$?AenGgv!pc2m}Oxusnjp zGTE0{ZSaRb;cf3C$MqQSFo3GKEbBtU&f z-iHny%GpsCEJ$Z)0=Z*&DcOsOFwoFe8Ok6mhud<{ZFT!5EVP8BogP1aT-!GjVBi7m zoAzffL1<~~@UghzfnvikX|zq^ACO^`X;Y`^@m%<)^~3CT$6t+Pg|!)kKN~ZuE-;ah z=;xn*UNg?h{#3{$4n)Uo{rdF^WPIKa0a*g^XPp?wBOw?w78ZeUfF^VR+mPGVaufh-%K$cbnQ%xWi*5}R@dI$#kZ&~b$DO+wb4#^X;>8`eeu?wdS6>}c zh!)oGQ3AZ^Ff^W2wv>hWF%e?r5JUO3NC{A90U_EFKfs8g2Na96ozNz>Z{M!|Teofv zPe1*%hTFGqpSB;`743*|Tf$)|H|&R{jYCh{2Hc>fEdpjJE-$_GlD0X@9Y1Kng*1NB z2o}(ep*!7oTJNOa+MUH~Z8NP?O4AwJCib&2qtXD0gbah^%=TF#(=IA*RDSjz_V)H_ zns9>#5HZB(ZDari5gFyJ1u$NI`Q@s;5pLna1pt6Rdt?#rs$^z}2GN4`qWIWTm;(5b{4XUBjwl{9v zsD77Ra)|;N;n`+~ffoL+h$28(7QW+#KZ+5cO5A9I_`#1jAAa~@1z>ssX&R_6(9yPV zCtdIWXNZR%@t{aq+q51b8YbWj4U4{sm+<2;6;-TGXhVL$jf4PHbZ1b30hKgjGC;zf zefC*>^MLTE)r19PR;^k!gx+{FHiSSB5@5(1>-g~#Dj-9Cg!I~Luc>B8L&C7c0{77x z!U1dm9~vEvlys41go_=`lS%_EZ!SQQw$rE6U#%W#d@knt*0E8(S zV@zP>%9RRY2+F|3Kmi&6j7ET_2B48p+2!0Z1dt1I zrZU<%puMz=+5nKsopy)J-|xjqfU=-|)5W!MJbUR_d!Wo{KfLVe@z5@KrX51d9a`E~ z8pim*AA=G^JEdG{H@HJ%?bN!s@ToS|o~aM~2!|nU7him_Dk)EQ+65*}047*KJO;vG0su*!B0kz9#=6SXIpQMyJ#mj zu=dSjcmvp^nQk>ejT`wRe!`8_41HDC2n}Nrie?1BF}{ZzYAOigIUtXDt_K9+gngb!~dW{nXn zjS)Hw!UF^;NcdBjghh>KCJSEVfjH1M86c(*p(lT&3wk$0C4gLzS=t4*GJz6*zOsj* z5mGKLM-@jyF36j@PTN7&27o9Pv^}fGHVMcxH0mr{T?xy9v((X#DWQps|r201z5} zJd-vGhV&UN^l83`AO75-1puq#A&i?S0m_B)VrKq^8*b1FN-qKVnW3?v4gBoS{%rW% z=RT+MCtO+vM(g);BLT{SdQLB>UK=N6v?JODbhHfvNlW!;+NseFcelDhJj7v`W9^uD zXvfyRhvQYxZ$u5y0vZ5Vgj8-zpwU=`HX7WkX^gh|Zka%!7<*3X$ha93vOU|~(n*8F zq;%L3B)@9@mS)R?<oR+2Z*6t-OH)X|+D_UQ zY9)+v1&q+{XfM`QjCM5b)M$shTY9VwT3fbuOjvUpj?Zv@6+{`1D)F;K4F_ySlLQ;J zm9S?M-Xf~UXE=8Y%iZ!N9HUb>1SMbOqkEkYC?cb_$DPz7y zs`IoBXbgO;tu!jHwbFxIE%&jeVaxzH)(D(_a!G(0UJP1xYS0oGm%=c9Q$*!W`McdE zFdhjw0FFm$9_9=Q0BDT2+DxzwWf-Ap3p_J`UfpdnI={OFCQqH zk`;KPvWqsyL>mUJ8RdhfrWRQmqz9s;6IE0uv+w2fzsu^kj&JE-rhfZ@TFw z&2B9K1oSX0g<(4t!0F?FDiXh(0|__)o&%w`Vw47Ctp5W9F|`1YE-+o=?|%2Yx@o?; zo7{@B@jNxJ1RMaHw`@w8GJtSZb`D+jVrVi10NPA3J3^p$;}SSm5^w-KSCVhRco_o( z^f>4eQ++NVZfSRy6MxekBKW&;2~4B}8~`U$+LItIG`d>Amu8)#$1t2P$)pI~;1n2B zTDQ9d8Yuw>z(z`UlJd3_zipDES_~YFi@E>)`}IU&7DT&o37iWFH~^jtskd;PXmhq7 zm|5XklN`1q-+#lJFu4Zf`s$Qkg}C_ zYoyl!urhRQ z1(0L1OnYo`5qb8SOacyoO;#YSkeqZPq}FZ_@`wh=zG1#3XP;5DF~nAof#;zd5^w-4 zM>&-ym9`j~?Tv$-5-3Un4uC~T()r{PKm$DQyz|1W zS+l~SLx<`DAll*V*|Wn_Pdyd(@89p^fVl+SGEow60GudEPqKKJ)Uac*tnGbeRFqK{ z?hM^63|&%6gMf5*35s;5NOunn!T{1J4H6R4jSMYa(p^f&AYJ$6`_{Vu?(h5Oo8M>c z_slwb?{juNkBA`$60_<7#yyNu@MeH}8VT_?0ziVOT4%`iC(H%cQ1-<2?(OY;XF~xc z&_MAN;U`qwgm2s*qq}h$`^Fl2<_EaPiB@1LrVLLeN~o0`<^r;8ppN5_a*mekv0>6&{`<$k5oh&Xbott zumM-<)yhZv75&b^j36cGsiGl(jf0;eWwfV*>O{&OKG^Nke?N0{zGe2n9^QEb($&y9 zGJZ1RnB=0fK_(z=O=$@{P51gBYtFgWBGN)6o&1u>y_uy3hDfMSLQI2&TUo)#@aeMm zW!=uLQglL|2kD~}0FbB&{{BqG6ebBeoK>YmKpjvvSW<->Ddt>WakpI%#wQoaMV=4= zA)x9BF~toFFqQrk*h9uGHF%;i?B&cYGa5% zp!tnH^Bn`nW;trL?lP8w(hkJRY!F8XGRVVuOeaUmEJURw% zo|(b&&L2FR;T$KuQ*{uCC0t2X>h0#~auW)(G_XHn`fVi$`WmqEc8C)n$FYDXtad7I zs`AvfOBhf&cEA9rV(KzIRf(#oX>x9U7xOQ5g=0tJj)h@bMEEnsWtjeCI{*ol|5`d@ z2R`kciu7-dQ3ZMqO<%u2-W+>A0O0nM0%0jBfW+j+K_DT>87%)~3xrx8*)q@JsY1hw z3z-2bR{_UcuGtA#(+veOEgMl4d=-V(-V2I>LY=ui7B2!+@PD{ zAd0|C02DNqm6SuDKuFh;lOslox=3IYQ7~n}x)OgMI0W zN%8_PV(H%9VR=UI{!0G#yezus?2SC5STUOxl1s48XR53;6;l+ESF#ZylL41s0gF~7-MPz;f*o{~~}%7at8fB+IsU|E;k9?sKlYM#!XooRdbNdOj* z7BgLE@Q8TYjUM3KbW;-%?oR^3pUmukf9HRv^FL+#|86_(czAfEqyIH*&R|}}+}g6T zGMwFi{7;7ZBJCf87uo zraK-EPBMK~wmjf&{^M5s$yNU!o*=i@Id0Th7ISW4sG*@DVL<_B2jyD|TsLh|dD<4! z;@qz-BM-(u2_Ok+wO~4xVUXA=C`3No+}ud}`T6Y}9N^sF-v^)0C39jP%_J&=)(UXF zJYzYK?|J#1%=$@dUYC^i|8@wpu~?I7wIv}?X9a!f2mko}|~0csn>@AR~qo zv6t-0-KpUIkEKIEh>bDodv6f=EAC{DH3hMUhs%zfj$ivJKJB7}hsB0e zBngB{_DqEVndL;Yz=PM%v#fRCKE=it`10T8kjFRXrMROkXQIn_L5Xh4?po$wdp z&nVO`uTD2#NsYsu_I{U|P2|h@P*+88XAcH&c0=D6qYnJMlk~glhtZcC5p?mfpv-aN zu1}ubc1KS+eBb>n53eb9<1SyEB+d3N;xH6{71rTb&%vIxOcVIPv8`WZy?xa~tYLe9 zcz8HX_WHVqE0u*nLNs67Nf=epD@GcH>naylKOn?}(7Fqh(4)UWDE&d>_UezZ?4MC4 z{GrXG<<@6gT+LgF+`y0sw?$tpx7A>>^BNp{h^Ad)E9V|$;(sdl?X~}vbJN+V$h((; zo0O|1rkXmRt(+mk_dM2R6f6jaE7+eR$ zbYJ-(>WZFzR*Uy!Ie6>vO4)Gj$Lop%8XT5z&(2tanPVsHfc$$8mG_VY_M|+~ z_mzg^shmdN9kObuVmvhhijRg9Jf+4;-<;>JgB0a8qnk|v&Zn_J7=QnKb((Rck?xFx z0`Iz_Wyu4b>*llxO;ezZ^~3XaOyUs$C$O8dm5c==VLV~ozI$1i3s!*Q&z}@v`vcSt zFRAIG*b3Molak0Q)fSN<4@=E%`=l%jv|JHR0s96o;(KGr_MMfML23tP!lNX1W|62p zahN3|q;y{yI+&;lN6J4?HmxhqddGwQy5t=vfB#W0ktpcmXwL!@fD6$rn;rafXMLQQ zv8W0*%a#9mM~MbaRf5N#a<%wbhN(_mO&~$=yK_-1OgfBP`$eb3iYCUsym~q2&loP5 zDMvo36u5K5<9+)%-v2q5JHO~}AB0Bl+Tm54SDTC#c!xu;Mz(bj1a_5}#%)&j3VTYIF7WX*alO9H68N z)4?g{I-AW|Zjh+QUUCSTspM=VmYU!gMT4Ela~eSq=wvPMV2)>+1T6IxqpI@vyrm~Y zS7Kn_%`aNm<<3L_))CNnffaiSzT>wA!K%lA>L+~;j=2uRfe-{8QxjY+)aQGK21}r= zc@aaOQ}+JH%wU}8c%XuXw+lCY7@Ds2iA?vRuQ~VK(Rt|ly%QCN$wQ#RRej_)uTV6h zane7k(UU^Xsz-;RW>p;=cMao#2YnAGUid)&?X`dFRuDgty*kBUT$@()q zCHV6c<_sj%_hd0C82Ne|mpu)d06=}^Z>WhHegDSYCqS$!@JwG*-YR9)3`C7ZNbEb% zxF-IfV~gzVqSx~}N_@$t)hU-y$(322%$(`cQ#ONWs7Qjf5tVCY>z{j5i!9*XoNEC%^A7kZySPt178< z?^C=VNB7sw5Nu9Oa2J_428mxS1=c4dnNZ{^R(E4G_kapuG7{{?&mfsKcnWZ6X{2=# z92p(^zP|z}#dE_)Aq=@vX>-;ilzQY8^zRWdR0%2oL4(;)e9gC|UGUtOU-E@^`QFMi z-PdCDcQ;86>$UM7VY5R$eO}^|w48<{{g*p57Q&>s5%xN`5e74L;U;aZV*U?9yw)pZ zU4Fi`1Mz<<5MLgA$rfIEq><5iKu;x%KY$i(hjmZP`R_hVkYGVc!5KyPT(-sJ@&p#I z!tz>6{GW4QSPP(ibPt-COaE;;`8Umfu1k=@vFzT%S!r0&TQ?k69T*+@VYL(+K(id?`ZXv^xOrv9r*GuZiGooAf5leIL|zL!|oi`=1DvpvZy4oTemT>Vy=I_>5|mB zV!5*1ZmL)E8Pec{u!3qH9j^&FGP|zQtJp|b!@j(Ap4`3eDQuW>8ztWPWl5UR3)rAi7tk z)SM622*!3Cf4*8Zn)wICm5BrZ*tjMbP2c*_A-^X=Qfr}Rj!9)b>YvAIojbScXL8)W zyE@OI?K0k>+nl2mVS2UA%OH2|yYyiq3t2O)DXXZ1J=9RMDSCTctAW#TcdfqUS6q^V zsq2|<)EwUk%6b=x;ce?5Xy*Y<@}7(XaT=vT2E>ZN*hlxSO2x6JU|2!(sUPbVk;{1N%lGqShV!Lv|olXdZ>o zrwY7YH{>Sr*{#TSVIiY)i=)rXs4=QUk}tDJoq z?=028T+D~#_X}N*^otvWPg64T$RbJ5`H5JO<}Qsu0C8ep7BURoq^QWb)jjy zs#HJGcYUrQU$eeVV^$DS;0$Wu^1gAJJ^QeA{%&j^oe(s*^0`Hzd)`_MWm~miL3LZf z;b(LNc0z5!^=Ac|2@xkrM7J3_J9@5)eUb>2IFdc zU`l(@s-+K#8eXp}G@l{1;#756#SPP~%dzdgv=p|`h|+%w7II9ia45FAr(IanFyetc zEMHoDy=u(AKUY*q-m7q5TQSz-9Z*lGpVN(}y&GV#-Y+^Cyo9=T?3q3`C5Fwgwv?rc-=S6d|T`53N4qtIuhq zXR#cwm#bZDaw!;$YC{TRPmM^8#vR&8}XS}b-@fys41>MOg7A$7~9^JJa$i;A&dH=0BtA~^$7lKVNF($KGLtu(n=^< z$XcAp<$CNydJ!@m2#GPAGVZVJ^#ptZ0pglD2J3Didts$Ss0pSo)8gQc8x`3@(wcgX zXqQc)@ti!@5i}zN*%J?NoPW(&y%ch8)bT;129Y%h6crCk6 z1xq|R@04F7XwBYlvCEH(8povRhuGbq12XTZAfz&-J}9*2{IIb6T1F%PR^*#Kw% zq;X>S_Pqy}&i{R)<353k53x!7k~N$`2`7k8>_}{knWq z(gBtHeX~Yv5_|$Q2H48W(4@CpF@#3b@rz((xo`HzfJaC{g_Jn3U=i0n;9)L9RKo3^ zGlA9Y<}Cf9!+O}Sf*)+&MzS-R=wzumwiek2IV-Fl*97(Qeg*F$E>x*;a_$}du7>b4 z@n&;A;&=Gk_<4_6A?Lm47p?2$)X$5u`U2gEFmhO*Jx-yPuC*jmYv@av)=d5F$1JOd zCm&$V#qIFbcf4CxH*0u8$9n?MRyoC1r>9GWf{~+`CpT$t|LY_Ca)0C$b*m{$fpOT3utL(D{C}HfL)4uO6SUPEwgANq@2_P ztURM!c&+`xI4H>ofYzZS!FbYbcn9%=2%3?s}CZal-UY3Qs11IPVAMdb`sO zeh{<%8Z2mqQ2er}(|LQa)4BTKZmq2Y-PjgC{-Z5+j-O&n|155p#t?nUBi)6Fv4b|v z0{D9|=PT`^q&i&@N%ATWXq{iGZ{AXDpXL!O7L5Hd0%Yp(#}+x0WYHLt)iC8ei{|#a|%&LL14Ddm$5QEwnJ0 z*tg2=iRkA>ySBjy8^~Ob;3;8Ab?SqSCs68LQ?jv~D1YJ}PTgjwvK4k4G)-sP49=Qb z?D`?b)J^aDV%U6_A}5sxzKoQ3fVG=0LhxrKwoVG_(h!T@CDWrNY;l;D$IdJ@JkC5k zw)A1S6dN)a#Q(3}JGRe38k7*0fXQnik$w37u&)-=lt05(o`OO+eC#7v|Kr{L>SMbn z>Kt{5=Vg&#yAn7~Z~dtbx^Vw(KOPv}BZfiruac)VBW&Te)oq}Oj}u|LMDNmo$}ELs zd^Lk5*hmleFs-`%(fv%)`*L=%E6BT$FEdfwcwq|#GVsBcxZ|+q9QUwNt;R>W56ddr z{wn@5^2FZNxyx=BDQFX!_w94gFK$+|K}(P@gAqx6~1I}HpMo;9VmuUHE>uvIY z0I;8ps!>1A^&ummtXqKtpAr>40^ZgYtdVNd*qP<9XPXF!7!^yME%@!&v?K0 z5Rh5_5o|_45+a`tWG{&D334Y+y4Az`>9{FG$p6f~z%}7xA$tM3?mdyW(2H@v-;jf= z1k*YS?7v#54B_SIL?w^C;1DNWupVo%G7X=df?RC&j@=0)3LR4c2_nn;@i_O#Hcn>l z`}^M6C__C(W{R*eQkBj`_-0du#2iHkz-=?PvRjcF#Ar=+CT&3#I@>m z+CZGG?!oY>j!{j4#g~Jdon&fyw2*gdc8W9n2bvRjr#ZjS2h&}@{XDgJjb)V?vLRbk zyweoHppScGNdm5tObc(rKoJasS0CP0Eh2Dr3%fcU$E+i>UrDpaR*)7=6e%e!k5>J4 znjhSM^-bwI6Goj)eMs$Veu@ut5c=aX?%LqHiM^)dvh0@LnJ9Yst<0()7GC7ZucPcH z;6ug6emah!n|UL4JxE1wPOrl>DsH1digYNQn0O#kObAs}m)S8VE~VLA1Jj)y4ur@&ut_GA@@|eB#_}UaY~ORJ$VRgVzjxm zycq`18VXB7FuUx4vJo2wCyEzC)41LhGRe}8xP2qq8!G4Z(6uhTSSibK6dVjkY0Uz9 zPrsjgnd=Mgm+px^m~1;gFK0G?`^=Uu8oe9*=(@I<(ami>hbm3ftb0!9TTP;BX*VW9 zNoUG0M5^(!F(sMWLI?O|aWw&x-6fPScV@2{1+<(~QHl$LRBR4JKQ}GYSr~BwBMD`% zIeUqI-b<0K5K#GViHs7{ko37q*cifz#k@;6!?ngFwkya;#iC0-K0c>CuAy0R5txzP zNIS1-j(#DoXa7+fwRHf_^~}Zyg9e1+5GT5JweB=h8@1AL;c%0?guZO~!H4pCV+w(A zou>bnk31?6nycc8n@8!LBHANS_l@&&?W;+&t)=HWD0uj;9n&7g$iLbu$~||wHj~<^ zP4uhp9IU@<2R^#x`(FpNic%V^nY0)V4nJu9jJ7>Kz~`xoK=*&BcFf4aD;Au1A!4z> z{!ir0qm}Ashe5V~6D3QZ%SB`OjGADP%GF5rb6%izOPMUC)`^9p#t7L>#9A465SPCc z+5zh&Hp-@24pt*jk?5-i5^;7Td4=U@uPA+!JBfl!8P{DFr<5M-btzsV{Z2=Gy2^A~ zPqGo)f$}mqJ33bKO23v#c2eH5q9u>5Ga8c&TbtNkLzt3~>cHBr#yVH5ubE+^&Mo=Cc4sH(gx@eKYf;Oa_Nx~WH zhGAy{HS^CDTCvxEkK-xGm9|I-O5sXKNs6^(-?F+zEFLvI5pDO|L$vlD16J} zMyaQ&arrOxe$pP#&C|01PxB6~)$1GA+1c5<$Q?p-<%iK=9{3sh7W?DYK$3?I{mFB2 z>$kU5$$aMJFf@PIGqANt0Y9>(Z93gTUX!pzIm0XUAAj9j>a*Wuth?bbkni6-Ck!Th z-YC`u8jTCxqI!*20E^0{6}U>K-h|OW#;%=N2e~0QeOZGVZJhHbZq|8MoT;Tn}Bu}Or7MQ%MRcsYEsX>Q@ue7+mY)=Z*so46=f zEm>qdQ3#fC6pE1bKX@9in|UVlmvI=GDFkKr8H+V2m!+9L0=aN&Tj$za^6_IW)9RWs zjq_YoRFIMPi}aXZuop*IF^evYU5o9t?^c8+Igb0qgZpV;Y&SDzc^{Ltn)k;uaRse# z`W1|j{czu-R}Sip_&y3ig38WpDKrjb%B;s4;{L(oWYl)Gj(1Nj*K*?1DlYyA%@leY zr)DG${aF=6nGe}QRn8Z!d1q}wa1E5E%8(gXLA2N13uPjs?9Lz26?Z4;$Z0qD*galR zqz~?rxN=AY$!)9w*rn#&Z}ZDDgoqe1&|@&kx<2#lymcMkhIG!5L2mjr2l#BdY~f6x zoO91W5=rwCTd5xm80p;@oAO2TXIWO z2_=KSp^W4G@+<-Hn5n^s2^5K@&a7ZfY30Gw&sm=0Ta#Rr?rbV6*2`PrHYfE3ltpjc z1nr;qsw4XD7M1o8)Kf+zY1w(Kq7W z>%L+VSM3(dH7tRzADpX=R>Y}~JBA}0>DC1mp4Tuk)}$yDT?@0EY3qy^o>{V$<{}2x`O9bS$kBAg4z@M7>{(ixzx@j#FJp61w>nqOa2u4(AjIMMR2 zmdeJkhji9&a0CWpihqF!+b}1Jc^w&gi0>p2;cJUJu);oLEfa+kb-8(GMtONBOSYGm zmI}Y(r~aotr5NpX75&E(hy6yr5o74>(ptfa{(9iyodAHRdZJ|GC?WHPGc)$;gy4J% zRbFyet_@M21n*S1OJ-#g{#_K0Up+)i z-W}8QmrMlmWCo$$b2uTZLWyhKXN1g`JaYzQLi&@NH7Ja2?*`iZGM^#LR0u63YcvjF zLBfb)phxk=F46UH#vJ~_#bO1DKHD=SmU+^v&=DPZsav$Zu!h|7T9|)GFrEiMFEoU;oAS~W8jZeJR%STwJC#|k)HHzX9gQ@;-c7I;Ml<;75l5Q3Z5(gK zdo6qEcgo+_c6lslDpMb(UQ~5{m<-aW%X6cue2@0nqr%JGpn$c&P$xvHy=3nKxtX3@ za(^)j_Hk+Odf-yHfVZz;rt*rBAJ^(AH=h`^wz=0C(7*yfy=qD8AQrDQ*XJvg0EXvp z+9gVX#^@ec&8=*x;VwXLosnA3wKF z@e#=x9=mDnKc-jqi38%4EsoKU6Yyn{2-Jd^2HC<=(xT~=lX(~EWWSad$2BBg90hPI zW_aFwYd({%D`|0=1 zv~mr535CfX3nwqcT&9ve1_i7VeD^aBZqBrw>a^uqY8?N(@?btAIvS~S+E@ybXh05w zCWkdS{n>8!S85*~61ZL}o47sVqHHwk+HqRV$r;=CP@||ZasKM#lXGv?KI|lp-{RC| z-=$mD-h#=s=t=`C^;K-B+I@whmf@wn!o-%f<2z>dN8mh=G6O z(I*wxjPf2~pJ&UvyM7O}(bccmJm`$4wDn#-{7(K>Q~ve5W<=;ZbPsP3*-!JKq^-wh z+~Xs 0) { + if (numberOfAccessoriesConnected > 0) { // There are accessories connected return true; } else { @@ -73,11 +73,11 @@ + (NSInteger)numberAttachedAccessories { // Get the number of attached accessories @try { // Set up the accessory manger - EAAccessoryManager *AccessoryManager = [EAAccessoryManager sharedAccessoryManager]; + EAAccessoryManager *accessoryManager = [EAAccessoryManager sharedAccessoryManager]; // Get the number of accessories connected - int NumberOfAccessoriesConnected = (int)[AccessoryManager.connectedAccessories count]; + int numberOfAccessoriesConnected = (int)[accessoryManager.connectedAccessories count]; // Return how many accessories are attached - return NumberOfAccessoriesConnected; + return numberOfAccessoriesConnected; } @catch (NSException *exception) { // Error, return false @@ -90,44 +90,44 @@ + (NSString *)nameAttachedAccessories { // Get the name of the attached accessories @try { // Set up the accessory manger - EAAccessoryManager *AccessoryManager = [EAAccessoryManager sharedAccessoryManager]; + EAAccessoryManager *accessoryManager = [EAAccessoryManager sharedAccessoryManager]; // Set up an accessory (for later use) - EAAccessory *Accessory; + EAAccessory *accessory; // Get the number of accessories connected - int NumberOfAccessoriesConnected = (int)[AccessoryManager.connectedAccessories count]; + int numberOfAccessoriesConnected = (int)[accessoryManager.connectedAccessories count]; // Check to make sure there are accessories connected - if (NumberOfAccessoriesConnected > 0) { + if (numberOfAccessoriesConnected > 0) { // Set up a string for all the accessory names - NSString *AllAccessoryNames = @""; + NSString *allAccessoryNames = @""; // Set up a string for the accessory names - NSString *AccessoryName; + NSString *accessoryName; // Get the accessories - NSArray *AccessoryArray = AccessoryManager.connectedAccessories; + NSArray *accessoryArray = accessoryManager.connectedAccessories; // Run through all the accessories - for (int x = 0; x < NumberOfAccessoriesConnected; x++) { + for (int x = 0; x < numberOfAccessoriesConnected; x++) { // Get the accessory at that index - Accessory = [AccessoryArray objectAtIndex:x]; + accessory = [accessoryArray objectAtIndex:x]; // Get the name of it - AccessoryName = [Accessory name]; + accessoryName = [accessory name]; // Make sure there is a name - if (AccessoryName == nil || AccessoryName.length == 0) { + if (accessoryName == nil || accessoryName.length == 0) { // If there isn't, try and get the manufacturer name - AccessoryName = [Accessory manufacturer]; + accessoryName = [accessory manufacturer]; } // Make sure there is a manufacturer name - if (AccessoryName == nil || AccessoryName.length == 0) { + if (accessoryName == nil || accessoryName.length == 0) { // If there isn't a manufacturer name still - AccessoryName = @"Unknown"; + accessoryName = @"Unknown"; } // Format that name - AllAccessoryNames = [AllAccessoryNames stringByAppendingFormat:@"%@", AccessoryName]; - if (x < NumberOfAccessoriesConnected - 1) { - AllAccessoryNames = [AllAccessoryNames stringByAppendingFormat:@", "]; + allAccessoryNames = [allAccessoryNames stringByAppendingFormat:@"%@", accessoryName]; + if (x < numberOfAccessoriesConnected - 1) { + allAccessoryNames = [allAccessoryNames stringByAppendingFormat:@", "]; } } // Return the name/s of the connected accessories - return AllAccessoryNames; + return allAccessoryNames; } else { // No accessories connected return nil; diff --git a/System Services/Utilities/SSApplicationInfo.m b/System Services/Utilities/SSApplicationInfo.m index 0be903a..4699790 100755 --- a/System Services/Utilities/SSApplicationInfo.m +++ b/System Services/Utilities/SSApplicationInfo.m @@ -24,15 +24,15 @@ + (NSString *)applicationVersion { @try { // Query the plist for the version - NSString *Version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]; + NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]; // Validate the Version - if (Version == nil || Version.length <= 0) { + if (version == nil || version.length <= 0) { // Invalid Version number return nil; } // Successful - return Version; + return version; } @catch (NSException *exception) { // Error @@ -45,16 +45,16 @@ + (NSString *)clipboardContent { // Get the string content of the clipboard (copy, paste) @try { // Get the Pasteboard - UIPasteboard *PasteBoard = [UIPasteboard generalPasteboard]; + UIPasteboard *pasteBoard = [UIPasteboard generalPasteboard]; // Get the string value of the pasteboard - NSString *ClipboardContent = [PasteBoard string]; + NSString *clipboardContent = [pasteBoard string]; // Check for validity - if (ClipboardContent == nil || ClipboardContent.length <= 0) { + if (clipboardContent == nil || clipboardContent.length <= 0) { // Error, invalid pasteboard return nil; } // Successful - return ClipboardContent; + return clipboardContent; } @catch (NSException *exception) { // Error diff --git a/System Services/Utilities/SSBatteryInfo.m b/System Services/Utilities/SSBatteryInfo.m index 91e3b9c..da73c51 100755 --- a/System Services/Utilities/SSBatteryInfo.m +++ b/System Services/Utilities/SSBatteryInfo.m @@ -20,26 +20,26 @@ + (float)batteryLevel { // Find the battery level @try { // Get the device - UIDevice *Device = [UIDevice currentDevice]; + UIDevice *device = [UIDevice currentDevice]; // Set battery monitoring on - Device.batteryMonitoringEnabled = YES; + device.batteryMonitoringEnabled = YES; // Set up the battery level float - float BatteryLevel = 0.0; + float batteryLevel = 0.0; // Get the battery level - float BatteryCharge = [Device batteryLevel]; + float batteryCharge = [device batteryLevel]; // Check to make sure the battery level is more than zero - if (BatteryCharge > 0.0f) { + if (batteryCharge > 0.0f) { // Make the battery level float equal to the charge * 100 - BatteryLevel = BatteryCharge * 100; + batteryLevel = batteryCharge * 100; } else { // Unable to find the battery level return -1; } // Output the battery level - return BatteryLevel; + return batteryLevel; } @catch (NSException *exception) { // Error out @@ -52,12 +52,12 @@ + (BOOL)charging { // Is the battery charging? @try { // Get the device - UIDevice *Device = [UIDevice currentDevice]; + UIDevice *device = [UIDevice currentDevice]; // Set battery monitoring on - Device.batteryMonitoringEnabled = YES; + device.batteryMonitoringEnabled = YES; // Check the battery state - if ([Device batteryState] == UIDeviceBatteryStateCharging || [Device batteryState] == UIDeviceBatteryStateFull) { + if ([device batteryState] == UIDeviceBatteryStateCharging || [device batteryState] == UIDeviceBatteryStateFull) { // Device is charging return true; } else { @@ -76,12 +76,12 @@ + (BOOL)fullyCharged { // Is the battery fully charged? @try { // Get the device - UIDevice *Device = [UIDevice currentDevice]; + UIDevice *device = [UIDevice currentDevice]; // Set battery monitoring on - Device.batteryMonitoringEnabled = YES; + device.batteryMonitoringEnabled = YES; // Check the battery state - if ([Device batteryState] == UIDeviceBatteryStateFull) { + if ([device batteryState] == UIDeviceBatteryStateFull) { // Device is fully charged return true; } else { diff --git a/System Services/Utilities/SSCarrierInfo.m b/System Services/Utilities/SSCarrierInfo.m index eb10e7f..32be00b 100755 --- a/System Services/Utilities/SSCarrierInfo.m +++ b/System Services/Utilities/SSCarrierInfo.m @@ -21,20 +21,20 @@ + (NSString *)carrierName { // Get the carrier name @try { // Get the Telephony Network Info - CTTelephonyNetworkInfo *TelephonyInfo = [[CTTelephonyNetworkInfo alloc] init]; + CTTelephonyNetworkInfo *telephonyInfo = [[CTTelephonyNetworkInfo alloc] init]; // Get the carrier - CTCarrier *Carrier = [TelephonyInfo subscriberCellularProvider]; + CTCarrier *carrier = [telephonyInfo subscriberCellularProvider]; // Get the carrier name - NSString *CarrierName = [Carrier carrierName]; + NSString *carrierName = [carrier carrierName]; // Check to make sure it's valid - if (CarrierName == nil || CarrierName.length <= 0) { + if (carrierName == nil || carrierName.length <= 0) { // Return unknown return nil; } // Return the name - return CarrierName; + return carrierName; } @catch (NSException *exception) { // Error finding the name @@ -47,16 +47,16 @@ + (NSString *)carrierCountry { // Get the country that the carrier is located in @try { // Get the locale - NSLocale *CurrentCountry = [NSLocale currentLocale]; + NSLocale *currentCountry = [NSLocale currentLocale]; // Get the country Code - NSString *Country = [CurrentCountry objectForKey:NSLocaleCountryCode]; + NSString *country = [currentCountry objectForKey:NSLocaleCountryCode]; // Check if it returned anything - if (Country == nil || Country.length <= 0) { + if (country == nil || country.length <= 0) { // No country found return nil; } // Return the country - return Country; + return country; } @catch (NSException *exception) { // Failed, return nil @@ -69,20 +69,20 @@ + (NSString *)carrierMobileCountryCode { // Get the carrier mobile country code @try { // Get the Telephony Network Info - CTTelephonyNetworkInfo *TelephonyInfo = [[CTTelephonyNetworkInfo alloc] init]; + CTTelephonyNetworkInfo *telephonyInfo = [[CTTelephonyNetworkInfo alloc] init]; // Get the carrier - CTCarrier *Carrier = [TelephonyInfo subscriberCellularProvider]; + CTCarrier *carrier = [telephonyInfo subscriberCellularProvider]; // Get the carrier mobile country code - NSString *CarrierCode = [Carrier mobileCountryCode]; + NSString *carrierCode = [carrier mobileCountryCode]; // Check to make sure it's valid - if (CarrierCode == nil || CarrierCode.length <= 0) { + if (carrierCode == nil || carrierCode.length <= 0) { // Return unknown return nil; } // Return the name - return CarrierCode; + return carrierCode; } @catch (NSException *exception) { // Error finding the name @@ -95,20 +95,20 @@ + (NSString *)carrierISOCountryCode { // Get the carrier ISO country code @try { // Get the Telephony Network Info - CTTelephonyNetworkInfo *TelephonyInfo = [[CTTelephonyNetworkInfo alloc] init]; + CTTelephonyNetworkInfo *telephonyInfo = [[CTTelephonyNetworkInfo alloc] init]; // Get the carrier - CTCarrier *Carrier = [TelephonyInfo subscriberCellularProvider]; + CTCarrier *carrier = [telephonyInfo subscriberCellularProvider]; // Get the carrier ISO country code - NSString *CarrierCode = [Carrier isoCountryCode]; + NSString *carrierCode = [carrier isoCountryCode]; // Check to make sure it's valid - if (CarrierCode == nil || CarrierCode.length <= 0) { + if (carrierCode == nil || carrierCode.length <= 0) { // Return unknown return nil; } // Return the name - return CarrierCode; + return carrierCode; } @catch (NSException *exception) { // Error finding the name @@ -121,20 +121,20 @@ + (NSString *)carrierMobileNetworkCode { // Get the carrier mobile network code @try { // Get the Telephony Network Info - CTTelephonyNetworkInfo *TelephonyInfo = [[CTTelephonyNetworkInfo alloc] init]; + CTTelephonyNetworkInfo *telephonyInfo = [[CTTelephonyNetworkInfo alloc] init]; // Get the carrier - CTCarrier *Carrier = [TelephonyInfo subscriberCellularProvider]; + CTCarrier *carrier = [telephonyInfo subscriberCellularProvider]; // Get the carrier mobile network code - NSString *CarrierCode = [Carrier mobileNetworkCode]; + NSString *carrierCode = [carrier mobileNetworkCode]; // Check to make sure it's valid - if (CarrierCode == nil || CarrierCode.length <= 0) { + if (carrierCode == nil || carrierCode.length <= 0) { // Return unknown return nil; } // Return the name - return CarrierCode; + return carrierCode; } @catch (NSException *exception) { // Error finding the name @@ -147,14 +147,14 @@ + (BOOL)carrierAllowsVOIP { // Check if the carrier allows VOIP @try { // Get the Telephony Network Info - CTTelephonyNetworkInfo *TelephonyInfo = [[CTTelephonyNetworkInfo alloc] init]; + CTTelephonyNetworkInfo *telephonyInfo = [[CTTelephonyNetworkInfo alloc] init]; // Get the carrier - CTCarrier *Carrier = [TelephonyInfo subscriberCellularProvider]; + CTCarrier *carrier = [telephonyInfo subscriberCellularProvider]; // Get the carrier VOIP Status - BOOL CarrierVOIP = [Carrier allowsVOIP]; + BOOL carrierVOIP = [carrier allowsVOIP]; // Return the VOIP Status - return CarrierVOIP; + return carrierVOIP; } @catch (NSException *exception) { // Error finding the VOIP Status diff --git a/System Services/Utilities/SSDiskInfo.m b/System Services/Utilities/SSDiskInfo.m index eb4560f..1ac8f3e 100755 --- a/System Services/Utilities/SSDiskInfo.m +++ b/System Services/Utilities/SSDiskInfo.m @@ -21,25 +21,25 @@ + (NSString *)diskSpace { // Get the total disk space @try { // Get the long total disk space - long long Space = [self longDiskSpace]; + long long space = [self longDiskSpace]; // Check to make sure it's valid - if (Space <= 0) { + if (space <= 0) { // Error, no disk space found return nil; } // Turn that long long into a string - NSString *DiskSpace = [self formatMemory:Space]; + NSString *diskSpace = [self formatMemory:space]; // Check to make sure it's valid - if (DiskSpace == nil || DiskSpace.length <= 0) { + if (diskSpace == nil || diskSpace.length <= 0) { // Error, diskspace not given return nil; } // Return successful - return DiskSpace; + return diskSpace; } @catch (NSException * ex) { // Error @@ -61,7 +61,7 @@ + (NSString *)freeDiskSpace:(BOOL)inPercent { } // Set up the string output variable - NSString *DiskSpace; + NSString *diskSpace; // If the user wants the output in percentage if (inPercent) { @@ -75,20 +75,20 @@ + (NSString *)freeDiskSpace:(BOOL)inPercent { return nil; } // Convert that float to a string - DiskSpace = [NSString stringWithFormat:@"%.f%%", PercentDiskSpace]; + diskSpace = [NSString stringWithFormat:@"%.f%%", PercentDiskSpace]; } else { // Turn that long long into a string - DiskSpace = [self formatMemory:Space]; + diskSpace = [self formatMemory:Space]; } // Check to make sure it's valid - if (DiskSpace == nil || DiskSpace.length <= 0) { + if (diskSpace == nil || diskSpace.length <= 0) { // Error, diskspace not given return nil; } // Return successful - return DiskSpace; + return diskSpace; } @catch (NSException * ex) { // Error @@ -101,54 +101,54 @@ + (NSString *)usedDiskSpace:(BOOL)inPercent { // Get the total used disk space @try { // Make a variable to hold the Used Disk Space - long long UDS; + long long uds; // Get the long total disk space - long long TDS = [self longDiskSpace]; + long long tds = [self longDiskSpace]; // Get the long free disk space - long long FDS = [self longFreeDiskSpace]; + long long fds = [self longFreeDiskSpace]; // Make sure they're valid - if (TDS <= 0 || FDS <= 0) { + if (tds <= 0 || fds <= 0) { // Error, invalid values return nil; } // Now subtract the free space from the total space - UDS = TDS - FDS; + uds = tds - fds; // Make sure it's valid - if (UDS <= 0) { + if (uds <= 0) { // Error, invalid value return nil; } // Set up the string output variable - NSString *UsedDiskSpace; + NSString *usedDiskSpace; // If the user wants the output in percentage if (inPercent) { // Make a float to get the percent of those values - float PercentUsedDiskSpace = (UDS * 100) / TDS; + float percentUsedDiskSpace = (uds * 100) / tds; // Check it to make sure it's okay - if (PercentUsedDiskSpace <= 0) { + if (percentUsedDiskSpace <= 0) { // Error, invalid percent return nil; } // Convert that float to a string - UsedDiskSpace = [NSString stringWithFormat:@"%.f%%", PercentUsedDiskSpace]; + usedDiskSpace = [NSString stringWithFormat:@"%.f%%", percentUsedDiskSpace]; } else { // Turn that long long into a string - UsedDiskSpace = [self formatMemory:UDS]; + usedDiskSpace = [self formatMemory:uds]; } // Check to make sure it's valid - if (UsedDiskSpace == nil || UsedDiskSpace.length <= 0) { + if (usedDiskSpace == nil || usedDiskSpace.length <= 0) { // Error, diskspace not given return nil; } // Return successful - return UsedDiskSpace; + return usedDiskSpace; // Now convert that to a string } @@ -165,27 +165,27 @@ + (long long)longDiskSpace { // Get the long long disk space @try { // Set up variables - long long DiskSpace = 0L; - NSError *Error = nil; - NSDictionary *FileAttributes = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:&Error]; + long long diskSpace = 0L; + NSError *error = nil; + NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:&error]; // Get the file attributes of the home directory assuming no errors - if (Error == nil) { + if (error == nil) { // Get the size of the filesystem - DiskSpace = [[FileAttributes objectForKey:NSFileSystemSize] longLongValue]; + diskSpace = [[fileAttributes objectForKey:NSFileSystemSize] longLongValue]; } else { // Error, return nil return -1; } // Check to make sure it's a valid size - if (DiskSpace <= 0) { + if (diskSpace <= 0) { // Invalid size return -1; } // Successful - return DiskSpace; + return diskSpace; } @catch (NSException *exception) { // Error @@ -199,12 +199,12 @@ + (long long)longFreeDiskSpace { @try { // Set up the variables long long FreeDiskSpace = 0L; - NSError *Error = nil; - NSDictionary *FileAttributes = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:&Error]; + NSError *error = nil; + NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:&error]; // Get the file attributes of the home directory assuming no errors - if (Error == nil) { - FreeDiskSpace = [[FileAttributes objectForKey:NSFileSystemFreeSize] longLongValue]; + if (error == nil) { + FreeDiskSpace = [[fileAttributes objectForKey:NSFileSystemFreeSize] longLongValue]; } else { // There was an error return -1; @@ -232,31 +232,31 @@ + (NSString *)formatMemory:(long long)Space { // Format the long long disk space @try { // Set up the string - NSString *FormattedBytes = nil; + NSString *formattedBytes = nil; // Get the bytes, megabytes, and gigabytes - double NumberBytes = 1.0 * Space; - double TotalGB = NumberBytes / GB; - double TotalMB = NumberBytes / MB; + double numberBytes = 1.0 * Space; + double totalGB = numberBytes / GB; + double totalMB = numberBytes / MB; // Display them appropriately - if (TotalGB >= 1.0) { - FormattedBytes = [NSString stringWithFormat:@"%.2f GB", TotalGB]; - } else if (TotalMB >= 1) - FormattedBytes = [NSString stringWithFormat:@"%.2f MB", TotalMB]; + if (totalGB >= 1.0) { + formattedBytes = [NSString stringWithFormat:@"%.2f GB", totalGB]; + } else if (totalMB >= 1) + formattedBytes = [NSString stringWithFormat:@"%.2f MB", totalMB]; else { - FormattedBytes = [self formattedMemory:Space]; - FormattedBytes = [FormattedBytes stringByAppendingString:@" bytes"]; + formattedBytes = [self formattedMemory:Space]; + formattedBytes = [formattedBytes stringByAppendingString:@" bytes"]; } // Check for errors - if (FormattedBytes == nil || FormattedBytes.length <= 0) { + if (formattedBytes == nil || formattedBytes.length <= 0) { // Error, invalid string return nil; } // Completed Successfully - return FormattedBytes; + return formattedBytes; } @catch (NSException *exception) { // Error @@ -269,28 +269,28 @@ + (NSString *)formattedMemory:(unsigned long long)Space { // Format for bytes @try { // Set up the string variable - NSString *FormattedBytes = nil; + NSString *formattedBytes = nil; // Set up the format variable - NSNumberFormatter *Formatter = [[NSNumberFormatter alloc] init]; + NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; // Format the bytes - [Formatter setPositiveFormat:@"###,###,###,###"]; + [formatter setPositiveFormat:@"###,###,###,###"]; // Get the bytes - NSNumber * theNumber = [NSNumber numberWithLongLong:Space]; + NSNumber *theNumber = [NSNumber numberWithLongLong:Space]; // Format the bytes appropriately - FormattedBytes = [Formatter stringFromNumber:theNumber]; + formattedBytes = [formatter stringFromNumber:theNumber]; // Check for errors - if (FormattedBytes == nil || FormattedBytes.length <= 0) { + if (formattedBytes == nil || formattedBytes.length <= 0) { // Error, invalid value return nil; } // Completed Successfully - return FormattedBytes; + return formattedBytes; } @catch (NSException *exception) { // Error diff --git a/System Services/Utilities/SSHardwareInfo.m b/System Services/Utilities/SSHardwareInfo.m index a589f33..bc373d0 100755 --- a/System Services/Utilities/SSHardwareInfo.m +++ b/System Services/Utilities/SSHardwareInfo.m @@ -23,39 +23,39 @@ @implementation SSHardwareInfo // System Uptime (dd hh mm) + (NSString *)systemUptime { // Set up the days/hours/minutes - NSNumber *Days, *Hours, *Minutes; + NSNumber *days, *hours, *minutes; // Get the info about a process - NSProcessInfo * processInfo = [NSProcessInfo processInfo]; - // Get the uptime of the system - NSTimeInterval UptimeInterval = [processInfo systemUptime]; - // Get the calendar - NSCalendar *Calendar = [NSCalendar currentCalendar]; - // Create the Dates - NSDate *Date = [[NSDate alloc] initWithTimeIntervalSinceNow:(0-UptimeInterval)]; + NSProcessInfo *processInfo = [NSProcessInfo processInfo]; + // Get the uptime of the system + NSTimeInterval uptimeInterval = [processInfo systemUptime]; + // Get the calendar + NSCalendar *calendar = [NSCalendar currentCalendar]; + // Create the Dates + NSDate *date = [[NSDate alloc] initWithTimeIntervalSinceNow:(0-uptimeInterval)]; unsigned int unitFlags = NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute; - NSDateComponents *Components = [Calendar components:unitFlags fromDate:Date toDate:[NSDate date] options:0]; - + NSDateComponents *components = [calendar components:unitFlags fromDate:date toDate:[NSDate date] options:0]; + // Get the day, hour and minutes - Days = [NSNumber numberWithLong:[Components day]]; - Hours = [NSNumber numberWithLong:[Components hour]]; - Minutes = [NSNumber numberWithLong:[Components minute]]; - + days = [NSNumber numberWithLong:[components day]]; + hours = [NSNumber numberWithLong:[components hour]]; + minutes = [NSNumber numberWithLong:[components minute]]; + // Format the dates - NSString *Uptime = [NSString stringWithFormat:@"%@ %@ %@", - [Days stringValue], - [Hours stringValue], - [Minutes stringValue]]; + NSString *uptime = [NSString stringWithFormat:@"%@ %@ %@", + [days stringValue], + [hours stringValue], + [minutes stringValue]]; // Error checking - if (!Uptime) { + if (!uptime) { // No uptime found // Return nil return nil; } // Return the uptime - return Uptime; + return uptime; } // Model of Device @@ -117,128 +117,136 @@ + (NSString *)systemVersion { // System Device Type (iPhone1,0) (Formatted = iPhone 1) + (NSString *)systemDeviceTypeFormatted:(BOOL)formatted { // Set up a Device Type String - NSString *DeviceType; + NSString *deviceType; // Check if it should be formatted if (formatted) { // Formatted @try { // Set up a new Device Type String - NSString *NewDeviceType; + NSString *newDeviceType; // Set up a struct struct utsname DT; // Get the system information uname(&DT); // Set the device type to the machine type - DeviceType = [NSString stringWithFormat:@"%s", DT.machine]; + deviceType = [NSString stringWithFormat:@"%s", DT.machine]; - if ([DeviceType isEqualToString:@"i386"]) - NewDeviceType = @"iPhone Simulator"; - else if ([DeviceType isEqualToString:@"x86_64"]) - NewDeviceType = @"iPhone Simulator"; - else if ([DeviceType isEqualToString:@"iPhone1,1"]) - NewDeviceType = @"iPhone"; - else if ([DeviceType isEqualToString:@"iPhone1,2"]) - NewDeviceType = @"iPhone 3G"; - else if ([DeviceType isEqualToString:@"iPhone2,1"]) - NewDeviceType = @"iPhone 3GS"; - else if ([DeviceType isEqualToString:@"iPhone3,1"]) - NewDeviceType = @"iPhone 4"; - else if ([DeviceType isEqualToString:@"iPhone4,1"]) - NewDeviceType = @"iPhone 4S"; - else if ([DeviceType isEqualToString:@"iPhone5,1"]) - NewDeviceType = @"iPhone 5(GSM)"; - else if ([DeviceType isEqualToString:@"iPhone5,2"]) - NewDeviceType = @"iPhone 5(GSM+CDMA)"; - else if ([DeviceType isEqualToString:@"iPhone5,3"]) - NewDeviceType = @"iPhone 5c(GSM)"; - else if ([DeviceType isEqualToString:@"iPhone5,4"]) - NewDeviceType = @"iPhone 5c(GSM+CDMA)"; - else if ([DeviceType isEqualToString:@"iPhone6,1"]) - NewDeviceType = @"iPhone 5s(GSM)"; - else if ([DeviceType isEqualToString:@"iPhone6,2"]) - NewDeviceType = @"iPhone 5s(GSM+CDMA)"; - else if ([DeviceType isEqualToString:@"iPhone7,1"]) - NewDeviceType = @"iPhone 6 Plus"; - else if ([DeviceType isEqualToString:@"iPhone7,2"]) - NewDeviceType = @"iPhone 6"; - else if ([DeviceType isEqualToString:@"iPhone8,1"]) - NewDeviceType = @"iPhone 6s"; - else if ([DeviceType isEqualToString:@"iPhone8,2"]) - NewDeviceType = @"iPhone 6s Plus"; - else if ([DeviceType isEqualToString:@"iPhone8,4"]) - NewDeviceType = @"iPhone SE"; - else if ([DeviceType isEqualToString:@"iPod1,1"]) - NewDeviceType = @"iPod Touch 1G"; - else if ([DeviceType isEqualToString:@"iPod2,1"]) - NewDeviceType = @"iPod Touch 2G"; - else if ([DeviceType isEqualToString:@"iPod3,1"]) - NewDeviceType = @"iPod Touch 3G"; - else if ([DeviceType isEqualToString:@"iPod4,1"]) - NewDeviceType = @"iPod Touch 4G"; - else if ([DeviceType isEqualToString:@"iPod5,1"]) - NewDeviceType = @"iPod Touch 5G"; - else if ([DeviceType isEqualToString:@"iPod7,1"]) - NewDeviceType = @"iPod Touch 6G"; - else if ([DeviceType isEqualToString:@"iPad1,1"]) - NewDeviceType = @"iPad"; - else if ([DeviceType isEqualToString:@"iPad2,1"]) - NewDeviceType = @"iPad 2(WiFi)"; - else if ([DeviceType isEqualToString:@"iPad2,2"]) - NewDeviceType = @"iPad 2(GSM)"; - else if ([DeviceType isEqualToString:@"iPad2,3"]) - NewDeviceType = @"iPad 2(CDMA)"; - else if ([DeviceType isEqualToString:@"iPad2,4"]) - NewDeviceType = @"iPad 2(WiFi + New Chip)"; - else if ([DeviceType isEqualToString:@"iPad2,5"]) - NewDeviceType = @"iPad mini(WiFi)"; - else if ([DeviceType isEqualToString:@"iPad2,6"]) - NewDeviceType = @"iPad mini(GSM)"; - else if ([DeviceType isEqualToString:@"iPad2,7"]) - NewDeviceType = @"iPad mini(GSM+CDMA)"; - else if ([DeviceType isEqualToString:@"iPad3,1"]) - NewDeviceType = @"iPad 3(WiFi)"; - else if ([DeviceType isEqualToString:@"iPad3,2"]) - NewDeviceType = @"iPad 3(GSM+CDMA)"; - else if ([DeviceType isEqualToString:@"iPad3,3"]) - NewDeviceType = @"iPad 3(GSM)"; - else if ([DeviceType isEqualToString:@"iPad3,4"]) - NewDeviceType = @"iPad 4(WiFi)"; - else if ([DeviceType isEqualToString:@"iPad3,5"]) - NewDeviceType = @"iPad 4(GSM)"; - else if ([DeviceType isEqualToString:@"iPad3,6"]) - NewDeviceType = @"iPad 4(GSM+CDMA)"; - else if ([DeviceType isEqualToString:@"iPad3,3"]) - NewDeviceType = @"New iPad"; - else if ([DeviceType isEqualToString:@"iPad4,1"]) - NewDeviceType = @"iPad Air(WiFi)"; - else if ([DeviceType isEqualToString:@"iPad4,2"]) - NewDeviceType = @"iPad Air(Cellular)"; - else if ([DeviceType isEqualToString:@"iPad4,4"]) - NewDeviceType = @"iPad mini 2(WiFi)"; - else if ([DeviceType isEqualToString:@"iPad4,5"]) - NewDeviceType = @"iPad mini 2(Cellular)"; - else if ([DeviceType isEqualToString:@"iPad5,1"]) - NewDeviceType = @"iPad mini 4(WiFi)"; - else if ([DeviceType isEqualToString:@"iPad5,2"]) - NewDeviceType = @"iPad mini 4(Cellular)"; - else if ([DeviceType isEqualToString:@"iPad5,4"]) - NewDeviceType = @"iPad Air 2(WiFi)"; - else if ([DeviceType isEqualToString:@"iPad5,5"]) - NewDeviceType = @"iPad Air 2(Cellular)"; - else if ([DeviceType isEqualToString:@"iPad6,3"]) - NewDeviceType = @"9.7-inch iPad Pro(WiFi)"; - else if ([DeviceType isEqualToString:@"iPad6,4"]) - NewDeviceType = @"9.7-inch iPad Pro(Cellular)"; - else if ([DeviceType isEqualToString:@"iPad6,7"]) - NewDeviceType = @"12.9-inch iPad Pro(WiFi)"; - else if ([DeviceType isEqualToString:@"iPad6,8"]) - NewDeviceType = @"12.9-inch iPad Pro(Cellular)"; - else if ([DeviceType hasPrefix:@"iPad"]) - NewDeviceType = @"iPad"; + if ([deviceType isEqualToString:@"i386"]) + newDeviceType = @"iPhone Simulator"; + else if ([deviceType isEqualToString:@"x86_64"]) + newDeviceType = @"iPhone Simulator"; + else if ([deviceType isEqualToString:@"iPhone1,1"]) + newDeviceType = @"iPhone"; + else if ([deviceType isEqualToString:@"iPhone1,2"]) + newDeviceType = @"iPhone 3G"; + else if ([deviceType isEqualToString:@"iPhone2,1"]) + newDeviceType = @"iPhone 3GS"; + else if ([deviceType isEqualToString:@"iPhone3,1"]) + newDeviceType = @"iPhone 4"; + else if ([deviceType isEqualToString:@"iPhone4,1"]) + newDeviceType = @"iPhone 4S"; + else if ([deviceType isEqualToString:@"iPhone5,1"]) + newDeviceType = @"iPhone 5(GSM)"; + else if ([deviceType isEqualToString:@"iPhone5,2"]) + newDeviceType = @"iPhone 5(GSM+CDMA)"; + else if ([deviceType isEqualToString:@"iPhone5,3"]) + newDeviceType = @"iPhone 5c(GSM)"; + else if ([deviceType isEqualToString:@"iPhone5,4"]) + newDeviceType = @"iPhone 5c(GSM+CDMA)"; + else if ([deviceType isEqualToString:@"iPhone6,1"]) + newDeviceType = @"iPhone 5s(GSM)"; + else if ([deviceType isEqualToString:@"iPhone6,2"]) + newDeviceType = @"iPhone 5s(GSM+CDMA)"; + else if ([deviceType isEqualToString:@"iPhone7,1"]) + newDeviceType = @"iPhone 6 Plus"; + else if ([deviceType isEqualToString:@"iPhone7,2"]) + newDeviceType = @"iPhone 6"; + else if ([deviceType isEqualToString:@"iPhone8,1"]) + newDeviceType = @"iPhone 6s"; + else if ([deviceType isEqualToString:@"iPhone8,2"]) + newDeviceType = @"iPhone 6s Plus"; + else if ([deviceType isEqualToString:@"iPhone8,4"]) + newDeviceType = @"iPhone SE"; + else if ([deviceType isEqualToString:@"iPhone9,1"]) + newDeviceType = @"iPhone 7"; + else if ([deviceType isEqualToString:@"iPhone9,3"]) + newDeviceType = @"iPhone 7"; + else if ([deviceType isEqualToString:@"iPhone9,2"]) + newDeviceType = @"iPhone 7 Plus"; + else if ([deviceType isEqualToString:@"iPhone9,4"]) + newDeviceType = @"iPhone 7 Plus"; + else if ([deviceType isEqualToString:@"iPod1,1"]) + newDeviceType = @"iPod Touch 1G"; + else if ([deviceType isEqualToString:@"iPod2,1"]) + newDeviceType = @"iPod Touch 2G"; + else if ([deviceType isEqualToString:@"iPod3,1"]) + newDeviceType = @"iPod Touch 3G"; + else if ([deviceType isEqualToString:@"iPod4,1"]) + newDeviceType = @"iPod Touch 4G"; + else if ([deviceType isEqualToString:@"iPod5,1"]) + newDeviceType = @"iPod Touch 5G"; + else if ([deviceType isEqualToString:@"iPod7,1"]) + newDeviceType = @"iPod Touch 6G"; + else if ([deviceType isEqualToString:@"iPad1,1"]) + newDeviceType = @"iPad"; + else if ([deviceType isEqualToString:@"iPad2,1"]) + newDeviceType = @"iPad 2(WiFi)"; + else if ([deviceType isEqualToString:@"iPad2,2"]) + newDeviceType = @"iPad 2(GSM)"; + else if ([deviceType isEqualToString:@"iPad2,3"]) + newDeviceType = @"iPad 2(CDMA)"; + else if ([deviceType isEqualToString:@"iPad2,4"]) + newDeviceType = @"iPad 2(WiFi + New Chip)"; + else if ([deviceType isEqualToString:@"iPad2,5"]) + newDeviceType = @"iPad mini(WiFi)"; + else if ([deviceType isEqualToString:@"iPad2,6"]) + newDeviceType = @"iPad mini(GSM)"; + else if ([deviceType isEqualToString:@"iPad2,7"]) + newDeviceType = @"iPad mini(GSM+CDMA)"; + else if ([deviceType isEqualToString:@"iPad3,1"]) + newDeviceType = @"iPad 3(WiFi)"; + else if ([deviceType isEqualToString:@"iPad3,2"]) + newDeviceType = @"iPad 3(GSM+CDMA)"; + else if ([deviceType isEqualToString:@"iPad3,3"]) + newDeviceType = @"iPad 3(GSM)"; + else if ([deviceType isEqualToString:@"iPad3,4"]) + newDeviceType = @"iPad 4(WiFi)"; + else if ([deviceType isEqualToString:@"iPad3,5"]) + newDeviceType = @"iPad 4(GSM)"; + else if ([deviceType isEqualToString:@"iPad3,6"]) + newDeviceType = @"iPad 4(GSM+CDMA)"; + else if ([deviceType isEqualToString:@"iPad3,3"]) + newDeviceType = @"New iPad"; + else if ([deviceType isEqualToString:@"iPad4,1"]) + newDeviceType = @"iPad Air(WiFi)"; + else if ([deviceType isEqualToString:@"iPad4,2"]) + newDeviceType = @"iPad Air(Cellular)"; + else if ([deviceType isEqualToString:@"iPad4,4"]) + newDeviceType = @"iPad mini 2(WiFi)"; + else if ([deviceType isEqualToString:@"iPad4,5"]) + newDeviceType = @"iPad mini 2(Cellular)"; + else if ([deviceType isEqualToString:@"iPad5,1"]) + newDeviceType = @"iPad mini 4(WiFi)"; + else if ([deviceType isEqualToString:@"iPad5,2"]) + newDeviceType = @"iPad mini 4(Cellular)"; + else if ([deviceType isEqualToString:@"iPad5,4"]) + newDeviceType = @"iPad Air 2(WiFi)"; + else if ([deviceType isEqualToString:@"iPad5,5"]) + newDeviceType = @"iPad Air 2(Cellular)"; + else if ([deviceType isEqualToString:@"iPad6,3"]) + newDeviceType = @"9.7-inch iPad Pro(WiFi)"; + else if ([deviceType isEqualToString:@"iPad6,4"]) + newDeviceType = @"9.7-inch iPad Pro(Cellular)"; + else if ([deviceType isEqualToString:@"iPad6,7"]) + newDeviceType = @"12.9-inch iPad Pro(WiFi)"; + else if ([deviceType isEqualToString:@"iPad6,8"]) + newDeviceType = @"12.9-inch iPad Pro(Cellular)"; + else if ([deviceType hasPrefix:@"iPad"]) + newDeviceType = @"iPad"; // Return the new device type - return NewDeviceType; + return newDeviceType; } @catch (NSException *exception) { // Error @@ -252,10 +260,10 @@ + (NSString *)systemDeviceTypeFormatted:(BOOL)formatted { // Get the system information uname(&DT); // Set the device type to the machine type - DeviceType = [NSString stringWithFormat:@"%s", DT.machine]; + deviceType = [NSString stringWithFormat:@"%s", DT.machine]; // Return the device type - return DeviceType; + return deviceType; } @catch (NSException *exception) { // Error @@ -388,24 +396,28 @@ + (BOOL)debuggerAttached { // Is the debugger attached? @try { // Set up the variables - size_t size = sizeof(struct kinfo_proc); struct kinfo_proc info; - int ret = 0, name[4]; - memset(&info, 0, sizeof(struct kinfo_proc)); + int ret; + int mib[4]; + struct kinfo_proc info; + size_t size; + info.kp_proc.p_flag = 0; + mib[0] = CTL_KERN; + mib[1] = KERN_PROC; + mib[2] = KERN_PROC_PID; + mib[3] = getpid(); + size = sizeof(info); + ret = sysctl(mib, sizeof(mib) / sizeof(*mib), &info, &size, NULL, 0); - // Get the process information - name[0] = CTL_KERN; - name[1] = KERN_PROC; - name[2] = KERN_PROC_PID; name[3] = getpid(); - - // Check to make sure the variables are correct - if (ret == (sysctl(name, 4, &info, &size, NULL, 0))) { + // Verify ret + if (ret) { // Sysctl() failed // Return the output of sysctl return ret; } - // Return whether or not we're being debugged - return (info.kp_proc.p_flag & P_TRACED) ? 1 : 0; + // Return whether the process is being traced or not + return ( (info.kp_proc.p_flag & P_TRACED) != 0 ); + } @catch (NSException *exception) { // Error diff --git a/System Services/Utilities/SSJailbreakCheck.h b/System Services/Utilities/SSJailbreakCheck.h index cc5614c..6bc4123 100755 --- a/System Services/Utilities/SSJailbreakCheck.h +++ b/System Services/Utilities/SSJailbreakCheck.h @@ -20,9 +20,6 @@ #define PLISTPATH [[NSBundle mainBundle] infoDictionary] // Jailbreak Check Definitions -#define CYDIA @"MobileCydia" -#define OTHERCYDIA @"Cydia" -#define OOCYDIA @"afpd" #define CYDIAPACKAGE @"cydia://package/com.fake.package" #define CYDIALOC @"/Applications/Cydia.app" #define HIDDENFILES [NSArray arrayWithObjects:@"/Applications/RockApp.app",@"/Applications/Icy.app",@"/usr/sbin/sshd",@"/usr/bin/sshd",@"/usr/libexec/sftp-server",@"/Applications/WinterBoard.app",@"/Applications/SBSettings.app",@"/Applications/MxTube.app",@"/Applications/IntelliScreen.app",@"/Library/MobileSubstrate/DynamicLibraries/Veency.plist",@"/Library/MobileSubstrate/DynamicLibraries/LiveClock.plist",@"/private/var/lib/apt",@"/private/var/stash",@"/System/Library/LaunchDaemons/com.ikey.bbot.plist",@"/System/Library/LaunchDaemons/com.saurik.Cydia.Startup.plist",@"/private/var/tmp/cydia.log",@"/private/var/lib/cydia", @"/etc/clutch.conf", @"/var/cache/clutch.plist", @"/etc/clutch_cracked.plist", @"/var/cache/clutch_cracked.plist", @"/var/lib/clutch/overdrive.dylib", @"/var/root/Documents/Cracked/", nil] diff --git a/System Services/Utilities/SSJailbreakCheck.m b/System Services/Utilities/SSJailbreakCheck.m index dc75809..f132662 100755 --- a/System Services/Utilities/SSJailbreakCheck.m +++ b/System Services/Utilities/SSJailbreakCheck.m @@ -34,16 +34,6 @@ KFIFC = 47293, // Failed the plist check KFPlist = 9412, - // Failed the Processes Check with Cydia - KFProcessesCydia = 10012, - // Failed the Processes Check with other Cydia - KFProcessesOtherCydia = 42932, - // Failed the Processes Check with other other Cydia - KFProcessesOtherOCydia = 10013, - // Failed the FSTab Check - KFFSTab = 9620, - // Failed the System() Check - KFSystem = 47475, // Failed the Symbolic Link Check KFSymbolic = 34859, // Failed the File Exists Check @@ -86,27 +76,6 @@ + (int)jailbroken { motzart += 2; } - // Check if iOS 8 or lower - if (SYSTEM_VERSION_LESS_THAN(@"9.0")) { - // Processes Check - if ([self processesCheck] != NOTJAIL) { - // Jailbroken - motzart += 2; - } - - // FSTab Check - if ([self fstabCheck] != NOTJAIL) { - // Jailbroken - motzart += 1; - } - - // Shell Check - if ([self systemCheck] != NOTJAIL) { - // Jailbroken - motzart += 2; - } - } - // Symbolic Link Check if ([self symbolicLinkCheck] != NOTJAIL) { // Jailbroken @@ -136,14 +105,15 @@ + (int)urlCheck { @try { #if !(defined(__has_feature) && __has_feature(attribute_availability_app_extension)) // Create a fake url for cydia - NSURL *FakeURL = [NSURL URLWithString:CYDIAPACKAGE]; + NSURL *fakeURL = [NSURL URLWithString:CYDIAPACKAGE]; // Return whether or not cydia's openurl item exists - if ([[UIApplication sharedApplication] canOpenURL:FakeURL]) + if ([[UIApplication sharedApplication] canOpenURL:fakeURL]) return KFOpenURL; #endif } @catch (NSException *exception) { // Error, return false + return NOTJAIL; } return NOTJAIL; } @@ -193,10 +163,10 @@ + (int)inaccessibleFilesCheck { + (int)plistCheck { @try { // Define the Executable name - NSString *ExeName = EXEPATH; + NSString *exeName = EXEPATH; NSDictionary *ipl = PLISTPATH; // Check if the plist exists - if ([FILECHECK ExeName] == FALSE || ipl == nil || ipl.count <= 0) { + if ([FILECHECK exeName] == FALSE || ipl == nil || ipl.count <= 0) { // Executable file can't be found and the plist can't be found...hmmm return KFPlist; } else { @@ -210,74 +180,6 @@ + (int)plistCheck { } } -// Running Processes Check -+ (int)processesCheck { - @try { - // Make a processes array - NSArray *processes = [self runningProcesses]; - - // Check for Cydia in the running processes - for (NSDictionary * dict in processes) { - // Define the process name - NSString *process = [dict objectForKey:@"ProcessName"]; - // If the process is this executable - if ([process isEqualToString:CYDIA]) { - // Return Jailbroken - return KFProcessesCydia; - } else if ([process isEqualToString:OTHERCYDIA]) { - // Return Jailbroken - return KFProcessesOtherCydia; - } else if ([process isEqualToString:OOCYDIA]) { - // Return Jailbroken - return KFProcessesOtherOCydia; - } - } - - // Not Jailbroken - return NOTJAIL; - } - @catch (NSException *exception) { - // Error - return NOTJAIL; - } -} - -// FSTab Size -+ (int)fstabCheck { - @try { - struct stat sb; - stat("/etc/fstab", &sb); - long long size = sb.st_size; - if (size == 80) { - // Not jailbroken - return NOTJAIL; - } else - // Jailbroken - return KFFSTab; - } - @catch (NSException *exception) { - // Not jailbroken - return NOTJAIL; - } -} - -// System() available -+ (int)systemCheck { - @try { - // See if the system call can be used - if (system(0)) { - // Jailbroken - return KFSystem; - } else - // Not Jailbroken - return NOTJAIL; - } - @catch (NSException *exception) { - // Not Jailbroken - return NOTJAIL; - } -} - // Symbolic Link available + (int)symbolicLinkCheck { @try { diff --git a/System Services/Utilities/SSLocalizationInfo.m b/System Services/Utilities/SSLocalizationInfo.m index 743eaca..fa1160a 100755 --- a/System Services/Utilities/SSLocalizationInfo.m +++ b/System Services/Utilities/SSLocalizationInfo.m @@ -17,16 +17,16 @@ + (NSString *)country { // Get the user's country @try { // Get the locale - NSLocale *Locale = [NSLocale currentLocale]; + NSLocale *locale = [NSLocale currentLocale]; // Get the country from the locale - NSString *Country = [Locale localeIdentifier]; + NSString *country = [locale localeIdentifier]; // Check for validity - if (Country == nil || Country.length <= 0) { + if (country == nil || country.length <= 0) { // Error, invalid country return nil; } // Completed Successfully - return Country; + return country; } @catch (NSException *exception) { // Error @@ -39,16 +39,16 @@ + (NSString *)language { // Get the user's language @try { // Get the list of languages - NSArray *LanguageArray = [NSLocale preferredLanguages]; + NSArray *languageArray = [NSLocale preferredLanguages]; // Get the user's language - NSString *Language = [LanguageArray objectAtIndex:0]; + NSString *language = [languageArray objectAtIndex:0]; // Check for validity - if (Language == nil || Language.length <= 0) { + if (language == nil || language.length <= 0) { // Error, invalid language return nil; } // Completed Successfully - return Language; + return language; } @catch (NSException *exception) { // Error @@ -61,16 +61,16 @@ + (NSString *)timeZone { // Get the user's timezone @try { // Get the system timezone - NSTimeZone *LocalTime = [NSTimeZone systemTimeZone]; + NSTimeZone *localTime = [NSTimeZone systemTimeZone]; // Convert the time zone to a string - NSString *TimeZone = [LocalTime name]; + NSString *timeZone = [localTime name]; // Check for validity - if (TimeZone == nil || TimeZone.length <= 0) { + if (timeZone == nil || timeZone.length <= 0) { // Error, invalid TimeZone return nil; } // Completed Successfully - return TimeZone; + return timeZone; } @catch (NSException *exception) { // Error @@ -83,14 +83,14 @@ + (NSString *)currency { // Get the user's currency @try { // Get the system currency - NSString *Currency = [[NSLocale currentLocale] objectForKey:NSLocaleCurrencySymbol]; + NSString *currency = [[NSLocale currentLocale] objectForKey:NSLocaleCurrencySymbol]; // Check for validity - if (Currency == nil || Currency.length <= 0) { + if (currency == nil || currency.length <= 0) { // Error, invalid Currency return nil; } // Completed Successfully - return Currency; + return currency; } @catch (NSException *exception) { // Error diff --git a/System Services/Utilities/SSMemoryInfo.m b/System Services/Utilities/SSMemoryInfo.m index 4b669ae..73bf65e 100755 --- a/System Services/Utilities/SSMemoryInfo.m +++ b/System Services/Utilities/SSMemoryInfo.m @@ -21,32 +21,32 @@ + (double)totalMemory { // Find the total amount of memory @try { // Set up the variables - double TotalMemory = 0.00; - double AllMemory = [[NSProcessInfo processInfo] physicalMemory]; + double totalMemory = 0.00; + double allMemory = [[NSProcessInfo processInfo] physicalMemory]; // Total Memory (formatted) - TotalMemory = (AllMemory / 1024.0) / 1024.0; + totalMemory = (allMemory / 1024.0) / 1024.0; // Round to the nearest multiple of 256mb - Almost all RAM is a multiple of 256mb (I do believe) int toNearest = 256; - int remainder = (int)TotalMemory % toNearest; + int remainder = (int)totalMemory % toNearest; if (remainder >= toNearest / 2) { // Round the final number up - TotalMemory = ((int)TotalMemory - remainder) + 256; + totalMemory = ((int)totalMemory - remainder) + 256; } else { // Round the final number down - TotalMemory = (int)TotalMemory - remainder; + totalMemory = (int)totalMemory - remainder; } // Check to make sure it's valid - if (TotalMemory <= 0) { + if (totalMemory <= 0) { // Error, invalid memory value return -1; } // Completed Successfully - return TotalMemory; + return totalMemory; } @catch (NSException *exception) { // Error @@ -59,7 +59,7 @@ + (double)freeMemory:(BOOL)inPercent { // Find the total amount of free memory @try { // Set up the variables - double TotalMemory = 0.00; + double totalMemory = 0.00; vm_statistics_data_t vmStats; mach_msg_type_number_t infoCount = HOST_VM_INFO_COUNT; kern_return_t kernReturn = host_statistics(mach_host_self(), HOST_VM_INFO, (host_info_t)&vmStats, &infoCount); @@ -72,24 +72,24 @@ + (double)freeMemory:(BOOL)inPercent { if (inPercent) { // Percent // Convert to doubles - double FM = [self totalMemory]; - double AM = ((vm_page_size * vmStats.free_count) / 1024.0) / 1024.0; + double fm = [self totalMemory]; + double am = ((vm_page_size * vmStats.free_count) / 1024.0) / 1024.0; // Get the percent - TotalMemory = (AM * 100) / FM; + totalMemory = (am * 100) / fm; } else { // Not in percent // Total Memory (formatted) - TotalMemory = ((vm_page_size * vmStats.free_count) / 1024.0) / 1024.0; + totalMemory = ((vm_page_size * vmStats.free_count) / 1024.0) / 1024.0; } // Check to make sure it's valid - if (TotalMemory <= 0) { + if (totalMemory <= 0) { // Error, invalid memory value return -1; } // Completed Successfully - return TotalMemory; + return totalMemory; } @catch (NSException *exception) { // Error @@ -102,7 +102,7 @@ + (double)usedMemory:(BOOL)inPercent { // Find the total amount of used memory @try { // Set up the variables - double TotalUsedMemory = 0.00; + double totalUsedMemory = 0.00; mach_port_t host_port; mach_msg_type_number_t host_size; vm_size_t pagesize; @@ -121,33 +121,33 @@ + (double)usedMemory:(BOOL)inPercent { } // Memory statistics in bytes - natural_t UsedMemory = (natural_t)((vm_stat.active_count + + natural_t usedMemory = (natural_t)((vm_stat.active_count + vm_stat.inactive_count + vm_stat.wire_count) * pagesize); - natural_t AllMemory = [self totalMemory]; + natural_t allMemory = [self totalMemory]; // Check if the user wants it in percent if (inPercent) { // Percent // Convert to doubles - double UM = (UsedMemory /1024) / 1024; - double AM = AllMemory; + double um = (usedMemory /1024) / 1024; + double am = allMemory; // Get the percent - TotalUsedMemory = (UM * 100) / AM; + totalUsedMemory = (um * 100) / am; } else { // Not in percent // Total Used Memory (formatted) - TotalUsedMemory = (UsedMemory / 1024.0) / 1024.0; + totalUsedMemory = (usedMemory / 1024.0) / 1024.0; } // Check to make sure it's valid - if (TotalUsedMemory <= 0) { + if (totalUsedMemory <= 0) { // Error, invalid memory value return -1; } // Completed Successfully - return TotalUsedMemory; + return totalUsedMemory; } @catch (NSException *exception) { // Error @@ -160,7 +160,7 @@ + (double)activeMemory:(BOOL)inPercent { // Find the Active memory @try { // Set up the variables - double TotalMemory = 0.00; + double totalMemory = 0.00; mach_port_t host_port; mach_msg_type_number_t host_size; vm_size_t pagesize; @@ -185,21 +185,21 @@ + (double)activeMemory:(BOOL)inPercent { double FM = [self totalMemory]; double AM = ((vm_stat.active_count * pagesize) / 1024.0) / 1024.0; // Get the percent - TotalMemory = (AM * 100) / FM; + totalMemory = (AM * 100) / FM; } else { // Not in percent // Total Memory (formatted) - TotalMemory = ((vm_stat.active_count * pagesize) / 1024.0) / 1024.0; + totalMemory = ((vm_stat.active_count * pagesize) / 1024.0) / 1024.0; } // Check to make sure it's valid - if (TotalMemory <= 0) { + if (totalMemory <= 0) { // Error, invalid memory value return -1; } // Completed Successfully - return TotalMemory; + return totalMemory; } @catch (NSException *exception) { // Error @@ -212,7 +212,7 @@ + (double)inactiveMemory:(BOOL)inPercent { // Find the Inactive memory @try { // Set up the variables - double TotalMemory = 0.00; + double totalMemory = 0.00; mach_port_t host_port; mach_msg_type_number_t host_size; vm_size_t pagesize; @@ -237,21 +237,21 @@ + (double)inactiveMemory:(BOOL)inPercent { double FM = [self totalMemory]; double AM = ((vm_stat.inactive_count * pagesize) / 1024.0) / 1024.0; // Get the percent - TotalMemory = (AM * 100) / FM; + totalMemory = (AM * 100) / FM; } else { // Not in percent // Total Memory (formatted) - TotalMemory = ((vm_stat.inactive_count * pagesize) / 1024.0) / 1024.0; + totalMemory = ((vm_stat.inactive_count * pagesize) / 1024.0) / 1024.0; } // Check to make sure it's valid - if (TotalMemory <= 0) { + if (totalMemory <= 0) { // Error, invalid memory value return -1; } // Completed Successfully - return TotalMemory; + return totalMemory; } @catch (NSException *exception) { // Error @@ -264,7 +264,7 @@ + (double)wiredMemory:(BOOL)inPercent { // Find the Wired memory @try { // Set up the variables - double TotalMemory = 0.00; + double totalMemory = 0.00; mach_port_t host_port; mach_msg_type_number_t host_size; vm_size_t pagesize; @@ -289,21 +289,21 @@ + (double)wiredMemory:(BOOL)inPercent { double FM = [self totalMemory]; double AM = ((vm_stat.wire_count * pagesize) / 1024.0) / 1024.0; // Get the percent - TotalMemory = (AM * 100) / FM; + totalMemory = (AM * 100) / FM; } else { // Not in percent // Total Memory (formatted) - TotalMemory = ((vm_stat.wire_count * pagesize) / 1024.0) / 1024.0; + totalMemory = ((vm_stat.wire_count * pagesize) / 1024.0) / 1024.0; } // Check to make sure it's valid - if (TotalMemory <= 0) { + if (totalMemory <= 0) { // Error, invalid memory value return -1; } // Completed Successfully - return TotalMemory; + return totalMemory; } @catch (NSException *exception) { // Error @@ -316,7 +316,7 @@ + (double)purgableMemory:(BOOL)inPercent { // Find the Purgable memory @try { // Set up the variables - double TotalMemory = 0.00; + double totalMemory = 0.00; mach_port_t host_port; mach_msg_type_number_t host_size; vm_size_t pagesize; @@ -338,24 +338,24 @@ + (double)purgableMemory:(BOOL)inPercent { if (inPercent) { // Percent // Convert to doubles - double FM = [self totalMemory]; - double AM = ((vm_stat.purgeable_count * pagesize) / 1024.0) / 1024.0; + double fm = [self totalMemory]; + double am = ((vm_stat.purgeable_count * pagesize) / 1024.0) / 1024.0; // Get the percent - TotalMemory = (AM * 100) / FM; + totalMemory = (am * 100) / fm; } else { // Not in percent // Total Memory (formatted) - TotalMemory = ((vm_stat.purgeable_count * pagesize) / 1024.0) / 1024.0; + totalMemory = ((vm_stat.purgeable_count * pagesize) / 1024.0) / 1024.0; } // Check to make sure it's valid - if (TotalMemory <= 0) { + if (totalMemory <= 0) { // Error, invalid memory value return -1; } // Completed Successfully - return TotalMemory; + return totalMemory; } @catch (NSException *exception) { // Error diff --git a/System Services/Utilities/SSNetworkInfo.h b/System Services/Utilities/SSNetworkInfo.h index 9d50c64..b768060 100755 --- a/System Services/Utilities/SSNetworkInfo.h +++ b/System Services/Utilities/SSNetworkInfo.h @@ -15,9 +15,6 @@ // Get Current IP Address + (nullable NSString *)currentIPAddress; -// Get Current MAC Address -+ (nullable NSString *)currentMACAddress; - // Get the External IP Address + (nullable NSString *)externalIPAddress; @@ -27,9 +24,6 @@ // Get Cell IPv6 Address + (nullable NSString *)cellIPv6Address; -// Get Cell MAC Address -+ (nullable NSString *)cellMACAddress; - // Get Cell Netmask Address + (nullable NSString *)cellNetmaskAddress; @@ -42,9 +36,6 @@ // Get WiFi IPv6 Address + (nullable NSString *)wiFiIPv6Address; -// Get WiFi MAC Address -+ (nullable NSString *)wiFiMACAddress; - // Get WiFi Netmask Address + (nullable NSString *)wiFiNetmaskAddress; diff --git a/System Services/Utilities/SSNetworkInfo.m b/System Services/Utilities/SSNetworkInfo.m index 8b36051..de8c6ab 100755 --- a/System Services/Utilities/SSNetworkInfo.m +++ b/System Services/Utilities/SSNetworkInfo.m @@ -15,7 +15,7 @@ #import // route -#if TARGET_IPHONE_SIMULATOR +#if !TARGET_IPHONE_SIMULATOR #include #else #include "route.h" @@ -247,69 +247,30 @@ + (nullable NSString *)currentIPAddress { // WiFi is in use // Get the WiFi IP Address - NSString *WiFiAddress = [self wiFiIPAddress]; + NSString *wiFiAddress = [self wiFiIPAddress]; // Check that you get something back - if (WiFiAddress == nil || WiFiAddress.length <= 0) { + if (wiFiAddress == nil || wiFiAddress.length <= 0) { // Error, no address found return nil; } // Return Wifi address - return WiFiAddress; + return wiFiAddress; } else if ([self connectedToCellNetwork]) { // Cell Network is in use // Get the Cell IP Address - NSString *CellAddress = [self cellIPAddress]; + NSString *cellAddress = [self cellIPAddress]; // Check that you get something back - if (CellAddress == nil || CellAddress.length <= 0) { + if (cellAddress == nil || cellAddress.length <= 0) { // Error, no address found return nil; } // Return Cell address - return CellAddress; - } else { - // No interface in use - return nil; - } -} - -// Get Current MAC Address -+ (nullable NSString *)currentMACAddress { - // Get the current interface MAC Address - - // Check which interface is currently in use - if ([self connectedToWiFi]) { - // WiFi is in use - - // Get the WiFi MAC Address - NSString *WiFiAddress = [self wiFiMACAddress]; - - // Check that you get something back - if (WiFiAddress == nil || WiFiAddress.length <= 0) { - // Error, no address found - return nil; - } - - // Return Wifi address - return WiFiAddress; - } else if ([self connectedToCellNetwork]) { - // Cell Network is in use - - // Get the Cell MAC Address - NSString *CellAddress = [self cellMACAddress]; - - // Check that you get something back - if (CellAddress == nil || CellAddress.length <= 0) { - // Error, no address found - return nil; - } - - // Return Cell address - return CellAddress; + return cellAddress; } else { // No interface in use return nil; @@ -325,38 +286,16 @@ + (nullable NSString *)externalIPAddress { return nil; } - // Get the external IP Address based on dynsns.org + // Get the external IP Address based on icanhazip.com NSError *error = nil; - NSString *theIpHtml = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.dyndns.org/cgi-bin/check_ip.cgi"] - encoding:NSUTF8StringEncoding - error:&error]; + + // Using https://icanhazip.com + NSString *externalIP = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"https://icanhazip.com/"] encoding:NSUTF8StringEncoding error:&error]; + if (!error) { - NSUInteger an_Integer; - NSArray * ipItemsArray; - NSString *externalIP; - NSScanner *theScanner; - NSString *text = nil; - theScanner = [NSScanner scannerWithString:theIpHtml]; - - while ([theScanner isAtEnd] == NO) { - - // find start of tag - [theScanner scanUpToString:@"<" intoString:NULL] ; - - // find end of tag - [theScanner scanUpToString:@">" intoString:&text] ; - - // replace the found tag with a space - //(you can filter multi-spaces out later if you wish) - theIpHtml = [theIpHtml stringByReplacingOccurrencesOfString: - [ NSString stringWithFormat:@"%@>", text] - withString:@" "] ; - ipItemsArray = [theIpHtml componentsSeparatedByString:@" "]; - an_Integer = [ipItemsArray indexOfObject:@"Address:"]; - - externalIP =[ipItemsArray objectAtIndex:++an_Integer]; - } + // Format the IP Address + externalIP = [externalIP stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]]; // Check that you get something back if (externalIP == nil || externalIP.length <= 0) { @@ -382,56 +321,56 @@ + (nullable NSString *)cellIPAddress { // Get the Cell IP Address @try { // Set a string for the address - NSString *IPAddress; + NSString *ipAddress; // Set up structs to hold the interfaces and the temporary address - struct ifaddrs *Interfaces; - struct ifaddrs *Temp; + struct ifaddrs *interfaces; + struct ifaddrs *temp; struct sockaddr_in *s4; char buf[64]; // If it's 0, then it's good - if (!getifaddrs(&Interfaces)) + if (!getifaddrs(&interfaces)) { // Loop through the list of interfaces - Temp = Interfaces; + temp = interfaces; // Run through it while it's still available - while(Temp != NULL) + while(temp != NULL) { // If the temp interface is a valid interface - if(Temp->ifa_addr->sa_family == AF_INET) + if(temp->ifa_addr->sa_family == AF_INET) { // Check if the interface is Cell - if([[NSString stringWithUTF8String:Temp->ifa_name] isEqualToString:@"pdp_ip0"]) + if([[NSString stringWithUTF8String:temp->ifa_name] isEqualToString:@"pdp_ip0"]) { - s4 = (struct sockaddr_in *)Temp->ifa_addr; + s4 = (struct sockaddr_in *)temp->ifa_addr; - if (inet_ntop(Temp->ifa_addr->sa_family, (void *)&(s4->sin_addr), buf, sizeof(buf)) == NULL) { + if (inet_ntop(temp->ifa_addr->sa_family, (void *)&(s4->sin_addr), buf, sizeof(buf)) == NULL) { // Failed to find it - IPAddress = nil; + ipAddress = nil; } else { // Got the Cell IP Address - IPAddress = [NSString stringWithUTF8String:buf]; + ipAddress = [NSString stringWithUTF8String:buf]; } } } // Set the temp value to the next interface - Temp = Temp->ifa_next; + temp = temp->ifa_next; } } // Free the memory of the interfaces - freeifaddrs(Interfaces); + freeifaddrs(interfaces); // Check to make sure it's not empty - if (IPAddress == nil || IPAddress.length <= 0) { + if (ipAddress == nil || ipAddress.length <= 0) { // Empty, return not found return nil; } // Return the IP Address of the WiFi - return IPAddress; + return ipAddress; } @catch (NSException *exception) { // Error, IP Not found @@ -444,56 +383,56 @@ + (nullable NSString *)cellIPv6Address { // Get the Cell IP Address @try { // Set a string for the address - NSString *IPAddress; + NSString *ipAddress; // Set up structs to hold the interfaces and the temporary address - struct ifaddrs *Interfaces; - struct ifaddrs *Temp; + struct ifaddrs *interfaces; + struct ifaddrs *temp; struct sockaddr_in6 *s6; char buf[INET6_ADDRSTRLEN]; // If it's 0, then it's good - if (!getifaddrs(&Interfaces)) + if (!getifaddrs(&interfaces)) { // Loop through the list of interfaces - Temp = Interfaces; + temp = interfaces; // Run through it while it's still available - while(Temp != NULL) + while(temp != NULL) { // If the temp interface is a valid interface - if(Temp->ifa_addr->sa_family == AF_INET6) + if(temp->ifa_addr->sa_family == AF_INET6) { // Check if the interface is Cell - if([[NSString stringWithUTF8String:Temp->ifa_name] isEqualToString:@"pdp_ip0"]) + if([[NSString stringWithUTF8String:temp->ifa_name] isEqualToString:@"pdp_ip0"]) { - s6 = (struct sockaddr_in6 *)Temp->ifa_addr; + s6 = (struct sockaddr_in6 *)temp->ifa_addr; if (inet_ntop(AF_INET6, (void *)&(s6->sin6_addr), buf, sizeof(buf)) == NULL) { // Failed to find it - IPAddress = nil; + ipAddress = nil; } else { // Got the Cell IP Address - IPAddress = [NSString stringWithUTF8String:buf]; + ipAddress = [NSString stringWithUTF8String:buf]; } } } // Set the temp value to the next interface - Temp = Temp->ifa_next; + temp = temp->ifa_next; } } // Free the memory of the interfaces - freeifaddrs(Interfaces); + freeifaddrs(interfaces); // Check to make sure it's not empty - if (IPAddress == nil || IPAddress.length <= 0) { + if (ipAddress == nil || ipAddress.length <= 0) { // Empty, return not found return nil; } // Return the IP Address of the WiFi - return IPAddress; + return ipAddress; } @catch (NSException *exception) { // Error, IP Not found @@ -501,86 +440,6 @@ + (nullable NSString *)cellIPv6Address { } } -// Get Cell MAC Address -+ (nullable NSString *)cellMACAddress { - // Get the Cell MAC Address - @try { - // Start by setting the variables to get the Cell Mac Address - int mgmtInfoBase[6]; - char *msgBuffer = NULL; - size_t length; - unsigned char macAddress[6]; - struct if_msghdr *interfaceMsgStruct; - struct sockaddr_dl *socketStruct; - - // Setup the management Information Base (mib) - mgmtInfoBase[0] = CTL_NET; // Request network subsystem - mgmtInfoBase[1] = AF_ROUTE; // Routing table info - mgmtInfoBase[2] = 0; - mgmtInfoBase[3] = AF_LINK; // Request link layer information - mgmtInfoBase[4] = NET_RT_IFLIST; // Request all configured interfaces - - // With all configured interfaces requested, get handle index - if ((mgmtInfoBase[5] = if_nametoindex([@"pdp_ip0" UTF8String])) == 0) - // Error, Name to index failure - return nil; - else - { - // Get the size of the data available (store in len) - if (sysctl(mgmtInfoBase, 6, NULL, &length, NULL, 0) < 0) - // Error, Sysctl MgmtInfoBase Failure - return nil; - else - { - // Alloc memory based on above call - if ((msgBuffer = malloc(length)) == NULL) - // Error, Buffer allocation failure - return nil; - else - { - // Get system information, store in buffer - if (sysctl(mgmtInfoBase, 6, msgBuffer, &length, NULL, 0) < 0) - // Error, Sysctl MsgBuffer Failure - return nil; - } - } - } - - // Map msgbuffer to interface message structure - interfaceMsgStruct = (struct if_msghdr *) msgBuffer; - - // Map to link-level socket structure - socketStruct = (struct sockaddr_dl *) (interfaceMsgStruct + 1); - - // Copy link layer address data in socket structure to an array - memcpy(&macAddress, socketStruct->sdl_data + socketStruct->sdl_nlen, 6); - - // Read from char array into a string object, into traditional Mac address format - NSString *macAddressString = [NSString stringWithFormat:@"%02X:%02X:%02X:%02X:%02X:%02X", - macAddress[0], macAddress[1], macAddress[2], - macAddress[3], macAddress[4], macAddress[5]]; - - // Release the buffer memory - free(msgBuffer); - - // Make a new string from the macAddressString - NSString *deviceID = macAddressString; - - // If the device ID comes back empty - if (deviceID == (id)[NSNull null] || deviceID.length <= 0) { - // Return that the MAC address was not found - return nil; - } - - // Return Successful - return deviceID; - } - @catch (NSException *exception) { - // Error, return nil - return nil; - } -} - // Get Cell Netmask Address + (nullable NSString *)cellNetmaskAddress { // Get the Cell Netmask Address @@ -636,55 +495,55 @@ + (nullable NSString *)cellBroadcastAddress { // Get the Cell Broadcast Address @try { // Set up strings for the IP and Netmask - NSString *IPAddress = [self cellIPAddress]; - NSString *NMAddress = [self cellNetmaskAddress]; + NSString *ipAddress = [self cellIPAddress]; + NSString *nmAddress = [self cellNetmaskAddress]; // Check to make sure they aren't nil - if (IPAddress == nil || IPAddress.length <= 0) { + if (ipAddress == nil || ipAddress.length <= 0) { // Error, IP Address can't be nil return nil; } - if (NMAddress == nil || NMAddress.length <= 0) { + if (nmAddress == nil || nmAddress.length <= 0) { // Error, NM Address can't be nil return nil; } // Check the formatting of the IP and NM Addresses - NSArray *IPCheck = [IPAddress componentsSeparatedByString:@"."]; - NSArray *NMCheck = [NMAddress componentsSeparatedByString:@"."]; + NSArray *ipCheck = [ipAddress componentsSeparatedByString:@"."]; + NSArray *nmCheck = [nmAddress componentsSeparatedByString:@"."]; // Make sure the IP and NM Addresses are correct - if (IPCheck.count != 4 || NMCheck.count != 4) { + if (ipCheck.count != 4 || nmCheck.count != 4) { // Incorrect IP Addresses return nil; } // Set up the variables - NSUInteger IP = 0; - NSUInteger NM = 0; - NSUInteger CS = 24; + NSUInteger ip = 0; + NSUInteger nm = 0; + NSUInteger cs = 24; // Make the address based on the other addresses - for (NSUInteger i = 0; i < 4; i++, CS -= 8) { - IP |= [[IPCheck objectAtIndex:i] intValue] << CS; - NM |= [[NMCheck objectAtIndex:i] intValue] << CS; + for (NSUInteger i = 0; i < 4; i++, cs -= 8) { + ip |= [[ipCheck objectAtIndex:i] intValue] << cs; + nm |= [[nmCheck objectAtIndex:i] intValue] << cs; } // Set it equal to the formatted raw addresses - NSUInteger BA = ~NM | IP; + NSUInteger ba = ~nm | ip; // Make a string for the address - NSString *BroadcastAddress = [NSString stringWithFormat:@"%ld.%ld.%ld.%ld", (BA & 0xFF000000) >> 24, - (BA & 0x00FF0000) >> 16, (BA & 0x0000FF00) >> 8, BA & 0x000000FF]; + NSString *broadcastAddress = [NSString stringWithFormat:@"%ld.%ld.%ld.%ld", (long)(ba & 0xFF000000) >> 24, + (long)(ba & 0x00FF0000) >> 16, (long)(ba & 0x0000FF00) >> 8, (long)(ba & 0x000000FF)]; // Check to make sure the string is valid - if (BroadcastAddress == nil || BroadcastAddress.length <= 0) { + if (broadcastAddress == nil || broadcastAddress.length <= 0) { // Error, no address return nil; } // Return Successful - return BroadcastAddress; + return broadcastAddress; } @catch (NSException *exception) { // Error @@ -697,52 +556,52 @@ + (nullable NSString *)wiFiIPAddress { // Get the WiFi IP Address @try { // Set a string for the address - NSString *IPAddress; + NSString *ipAddress; // Set up structs to hold the interfaces and the temporary address - struct ifaddrs *Interfaces; - struct ifaddrs *Temp; + struct ifaddrs *interfaces; + struct ifaddrs *temp; // Set up int for success or fail int Status = 0; // Get all the network interfaces - Status = getifaddrs(&Interfaces); + Status = getifaddrs(&interfaces); // If it's 0, then it's good if (Status == 0) { // Loop through the list of interfaces - Temp = Interfaces; + temp = interfaces; // Run through it while it's still available - while(Temp != NULL) + while(temp != NULL) { // If the temp interface is a valid interface - if(Temp->ifa_addr->sa_family == AF_INET) + if(temp->ifa_addr->sa_family == AF_INET) { // Check if the interface is WiFi - if([[NSString stringWithUTF8String:Temp->ifa_name] isEqualToString:@"en0"]) + if([[NSString stringWithUTF8String:temp->ifa_name] isEqualToString:@"en0"]) { // Get the WiFi IP Address - IPAddress = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)Temp->ifa_addr)->sin_addr)]; + ipAddress = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp->ifa_addr)->sin_addr)]; } } // Set the temp value to the next interface - Temp = Temp->ifa_next; + temp = temp->ifa_next; } } // Free the memory of the interfaces - freeifaddrs(Interfaces); + freeifaddrs(interfaces); // Check to make sure it's not empty - if (IPAddress == nil || IPAddress.length <= 0) { + if (ipAddress == nil || ipAddress.length <= 0) { // Empty, return not found return nil; } // Return the IP Address of the WiFi - return IPAddress; + return ipAddress; } @catch (NSException *exception) { // Error, IP Not found @@ -755,60 +614,60 @@ + (nullable NSString *)wiFiIPv6Address { // Get the WiFi IP Address @try { // Set a string for the address - NSString *IPAddress; + NSString *ipAddress; // Set up structs to hold the interfaces and the temporary address - struct ifaddrs *Interfaces; - struct ifaddrs *Temp; + struct ifaddrs *interfaces; + struct ifaddrs *temp; // Set up int for success or fail - int Status = 0; + int status = 0; // Get all the network interfaces - Status = getifaddrs(&Interfaces); + status = getifaddrs(&interfaces); // If it's 0, then it's good - if (Status == 0) + if (status == 0) { // Loop through the list of interfaces - Temp = Interfaces; + temp = interfaces; // Run through it while it's still available - while(Temp != NULL) + while(temp != NULL) { // If the temp interface is a valid interface - if(Temp->ifa_addr->sa_family == AF_INET6) + if(temp->ifa_addr->sa_family == AF_INET6) { // Check if the interface is WiFi - if([[NSString stringWithUTF8String:Temp->ifa_name] isEqualToString:@"en0"]) + if([[NSString stringWithUTF8String:temp->ifa_name] isEqualToString:@"en0"]) { // Get the WiFi IP Address - struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)Temp->ifa_addr; + struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)temp->ifa_addr; char buf[INET6_ADDRSTRLEN]; if (inet_ntop(AF_INET6, (void *)&(addr6->sin6_addr), buf, sizeof(buf)) == NULL) { // Failed to find it - IPAddress = nil; + ipAddress = nil; } else { // Got the Cell IP Address - IPAddress = [NSString stringWithUTF8String:buf]; + ipAddress = [NSString stringWithUTF8String:buf]; } } } // Set the temp value to the next interface - Temp = Temp->ifa_next; + temp = temp->ifa_next; } } // Free the memory of the interfaces - freeifaddrs(Interfaces); + freeifaddrs(interfaces); // Check to make sure it's not empty - if (IPAddress == nil || IPAddress.length <= 0) { + if (ipAddress == nil || ipAddress.length <= 0) { // Empty, return not found return nil; } // Return the IP Address of the WiFi - return IPAddress; + return ipAddress; } @catch (NSException *exception) { // Error, IP Not found @@ -816,86 +675,6 @@ + (nullable NSString *)wiFiIPv6Address { } } -// Get WiFi MAC Address -+ (nullable NSString *)wiFiMACAddress { - // Get the WiFi MAC Address - @try { - // Start by setting the variables to get the WiFi Mac Address - int mgmtInfoBase[6]; - char *msgBuffer = NULL; - size_t length; - unsigned char macAddress[6]; - struct if_msghdr *interfaceMsgStruct; - struct sockaddr_dl *socketStruct; - - // Setup the management Information Base (mib) - mgmtInfoBase[0] = CTL_NET; // Request network subsystem - mgmtInfoBase[1] = AF_ROUTE; // Routing table info - mgmtInfoBase[2] = 0; - mgmtInfoBase[3] = AF_LINK; // Request link layer information - mgmtInfoBase[4] = NET_RT_IFLIST; // Request all configured interfaces - - // With all configured interfaces requested, get handle index - if ((mgmtInfoBase[5] = if_nametoindex([@"en0" UTF8String])) == 0) - // Error, Name to index failure - return nil; - else - { - // Get the size of the data available (store in len) - if (sysctl(mgmtInfoBase, 6, NULL, &length, NULL, 0) < 0) - // Error, Sysctl MgmtInfoBase Failure - return nil; - else - { - // Alloc memory based on above call - if ((msgBuffer = malloc(length)) == NULL) - // Error, Buffer allocation failure - return nil; - else - { - // Get system information, store in buffer - if (sysctl(mgmtInfoBase, 6, msgBuffer, &length, NULL, 0) < 0) - // Error, Sysctl MsgBuffer Failure - return nil; - } - } - } - - // Map msgbuffer to interface message structure - interfaceMsgStruct = (struct if_msghdr *) msgBuffer; - - // Map to link-level socket structure - socketStruct = (struct sockaddr_dl *) (interfaceMsgStruct + 1); - - // Copy link layer address data in socket structure to an array - memcpy(&macAddress, socketStruct->sdl_data + socketStruct->sdl_nlen, 6); - - // Read from char array into a string object, into traditional Mac address format - NSString *macAddressString = [NSString stringWithFormat:@"%02X:%02X:%02X:%02X:%02X:%02X", - macAddress[0], macAddress[1], macAddress[2], - macAddress[3], macAddress[4], macAddress[5]]; - - // Release the buffer memory - free(msgBuffer); - - // Make a new string from the macAddressString - NSString *deviceID = macAddressString; - - // If the device ID comes back empty - if (deviceID == (id)[NSNull null] || deviceID.length <= 0) { - // Return that the MAC address was not found - return nil; - } - - // Return Successful - return deviceID; - } - @catch (NSException *exception) { - // Error, return nil - return nil; - } -} - // Get WiFi Netmask Address + (nullable NSString *)wiFiNetmaskAddress { // Get the WiFi Netmask Address @@ -929,16 +708,16 @@ + (nullable NSString *)wiFiNetmaskAddress { char *netstring = inet_ntoa(((struct sockaddr_in *)&afr.ifr_addr)->sin_addr); // Create a string for the netmask - NSString *Netmask = [NSString stringWithUTF8String:netstring]; + NSString *netmask = [NSString stringWithUTF8String:netstring]; // Check to make sure it's not nil - if (Netmask == nil || Netmask.length <= 0) { + if (netmask == nil || netmask.length <= 0) { // Error, netmask not found return nil; } // Return successful - return Netmask; + return netmask; } @catch (NSException *exception) { // Error @@ -951,55 +730,55 @@ + (nullable NSString *)wiFiBroadcastAddress { // Get the WiFi Broadcast Address @try { // Set up strings for the IP and Netmask - NSString *IPAddress = [self wiFiIPAddress]; - NSString *NMAddress = [self wiFiNetmaskAddress]; + NSString *ipAddress = [self wiFiIPAddress]; + NSString *nmAddress = [self wiFiNetmaskAddress]; // Check to make sure they aren't nil - if (IPAddress == nil || IPAddress.length <= 0) { + if (ipAddress == nil || ipAddress.length <= 0) { // Error, IP Address can't be nil return nil; } - if (NMAddress == nil || NMAddress.length <= 0) { + if (nmAddress == nil || nmAddress.length <= 0) { // Error, NM Address can't be nil return nil; } // Check the formatting of the IP and NM Addresses - NSArray *IPCheck = [IPAddress componentsSeparatedByString:@"."]; - NSArray *NMCheck = [NMAddress componentsSeparatedByString:@"."]; + NSArray *ipCheck = [ipAddress componentsSeparatedByString:@"."]; + NSArray *nmCheck = [nmAddress componentsSeparatedByString:@"."]; // Make sure the IP and NM Addresses are correct - if (IPCheck.count != 4 || NMCheck.count != 4) { + if (ipCheck.count != 4 || nmCheck.count != 4) { // Incorrect IP Addresses return nil; } // Set up the variables - NSUInteger IP = 0; - NSUInteger NM = 0; - NSUInteger CS = 24; + NSUInteger ip = 0; + NSUInteger nm = 0; + NSUInteger cs = 24; // Make the address based on the other addresses - for (NSUInteger i = 0; i < 4; i++, CS -= 8) { - IP |= [[IPCheck objectAtIndex:i] intValue] << CS; - NM |= [[NMCheck objectAtIndex:i] intValue] << CS; + for (NSUInteger i = 0; i < 4; i++, cs -= 8) { + ip |= [[ipCheck objectAtIndex:i] intValue] << cs; + nm |= [[nmCheck objectAtIndex:i] intValue] << cs; } // Set it equal to the formatted raw addresses - NSUInteger BA = ~NM | IP; + NSUInteger ba = ~nm | ip; // Make a string for the address - NSString *BroadcastAddress = [NSString stringWithFormat:@"%lu.%lu.%lu.%lu", (BA & 0xFF000000) >> 24, - (BA & 0x00FF0000) >> 16, (BA & 0x0000FF00) >> 8, BA & 0x000000FF]; + NSString *broadcastAddress = [NSString stringWithFormat:@"%lu.%lu.%lu.%lu", (long)(ba & 0xFF000000) >> 24, + (long)(ba & 0x00FF0000) >> 16, (long)(ba & 0x0000FF00) >> 8, (long)(ba & 0x000000FF)]; // Check to make sure the string is valid - if (BroadcastAddress == nil || BroadcastAddress.length <= 0) { + if (broadcastAddress == nil || broadcastAddress.length <= 0) { // Error, no address return nil; } // Return Successful - return BroadcastAddress; + return broadcastAddress; } @catch (NSException *exception) { // Error @@ -1010,9 +789,9 @@ + (nullable NSString *)wiFiBroadcastAddress { // Connected to WiFi? + (BOOL)connectedToWiFi { // Check if we're connected to WiFi - NSString *WiFiAddress = [self wiFiIPAddress]; + NSString *wiFiAddress = [self wiFiIPAddress]; // Check if the string is populated - if (WiFiAddress == nil || WiFiAddress.length <= 0) { + if (wiFiAddress == nil || wiFiAddress.length <= 0) { // Nothing found return false; } else { @@ -1024,9 +803,9 @@ + (BOOL)connectedToWiFi { // Connected to Cellular Network? + (BOOL)connectedToCellNetwork { // Check if we're connected to cell network - NSString *CellAddress = [self cellIPAddress]; + NSString *cellAddress = [self cellIPAddress]; // Check if the string is populated - if (CellAddress == nil || CellAddress.length <= 0) { + if (cellAddress == nil || cellAddress.length <= 0) { // Nothing found return false; } else { diff --git a/System Services/Utilities/SSProcessInfo.h b/System Services/Utilities/SSProcessInfo.h index 1db5878..8dc696d 100755 --- a/System Services/Utilities/SSProcessInfo.h +++ b/System Services/Utilities/SSProcessInfo.h @@ -8,7 +8,6 @@ #import -NS_CLASS_DEPRECATED_IOS(2_0, 9_0, "SSProcessInfo is deprecated. Process information is no longer allowed in iOS 9") @interface SSProcessInfo : NSObject // Process Information @@ -16,19 +15,4 @@ NS_CLASS_DEPRECATED_IOS(2_0, 9_0, "SSProcessInfo is deprecated. Process informat // Process ID + (int)processID; -// Process Name -+ (nullable NSString *)processName; - -// Process Status -+ (int)processStatus; - -// Parent Process ID -+ (int)parentPID; - -// Parent ID for a certain PID -+ (int)parentPIDForProcess:(int)pid; - -// List of process information including PID's, Names, PPID's, and Status' -+ (nullable NSMutableArray *)processesInformation; - @end diff --git a/System Services/Utilities/SSProcessInfo.m b/System Services/Utilities/SSProcessInfo.m index d3b8a92..cde82de 100755 --- a/System Services/Utilities/SSProcessInfo.m +++ b/System Services/Utilities/SSProcessInfo.m @@ -20,14 +20,14 @@ + (int)processID { // Get the Process ID @try { // Get the PID - int PID = getpid(); + int pid = getpid(); // Make sure it's correct - if (PID <= 0) { + if (pid <= 0) { // Incorrect PID return -1; } // Successful - return PID; + return pid; } @catch (NSException *exception) { // Error @@ -35,248 +35,4 @@ + (int)processID { } } -// Process Name -+ (NSString *)processName { - // Get the process name - @try { - // Set up the variables - struct kinfo_proc info; - size_t length = sizeof(struct kinfo_proc); - int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, [self processID] }; - - if (sysctl(mib, 4, &info, &length, NULL, 0) < 0) - // Unknown value - return nil; - - if (length == 0) - // Unknown value - return nil; - - // Make string for the PID Name - NSString *processName = [[NSString alloc] initWithFormat:@"%s", info.kp_proc.p_comm]; - - // Check to make sure it's valid - if (processName == nil || processName.length <= 0) { - // No PID Name found - return nil; - } - - // Successful - return processName; - } - @catch (NSException *exception) { - // Error - return nil; - } -} - -// Process Status -+ (int)processStatus { - // Get the process status - @try { - // Set up the variables - struct kinfo_proc info; - size_t length = sizeof(struct kinfo_proc); - int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, [self processID] }; - - if (sysctl(mib, 4, &info, &length, NULL, 0) < 0) - // Unknown value - return -1; - - if (length == 0) - // Unknown value - return -1; - - // Make string for the process status - int processStatus = info.kp_proc.p_stat; - - // Check to make sure it's valid - if (processStatus <= 0) { - // No PID Status found - return -1; - } - - // Successful - return processStatus; - } - @catch (NSException *exception) { - // Error - return -1; - } -} - -// Parent Process ID -+ (int)parentPID { - // Get the parent process ID - @try { - // Get the Parent PID - int ParentPID = [self parentPIDForProcess:[self processID]]; - - // Check to make sure it's valid - if (ParentPID <= 0) { - // No PPID found - return -1; - } - - // Successful - return ParentPID; - } - @catch (NSException *exception) { - // Error - return -1; - } -} - -// Parent ID for a certain PID -+ (int)parentPIDForProcess:(int)pid { - // Get the parent ID for a certain process - @try { - // Set up the variables - struct kinfo_proc info; - size_t length = sizeof(struct kinfo_proc); - int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, pid }; - - if (sysctl(mib, 4, &info, &length, NULL, 0) < 0) - // Unknown value - return -1; - - if (length == 0) - // Unknown value - return -1; - - // Make an int for the PPID - int PPID = info.kp_eproc.e_ppid; - - // Check to make sure it's valid - if (PPID <= 0) { - // No PPID found - return -1; - } - - // Successful - return PPID; - } - @catch (NSException *exception) { - // Error - return -1; - } -} - -// List of process information including PID's, Names, PPID's, and Status' -+ (NSMutableArray *)processesInformation { - // Get the list of processes and all information about them - @try { - // Make a new integer array holding all the kernel processes - int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_ALL, 0}; - - // Make a new size of 4 - size_t miblen = 4; - - size_t size = 0; - int st = sysctl(mib, (int)miblen, NULL, &size, NULL, 0); - - // Set up the processes and new process struct - struct kinfo_proc *process = NULL; - struct kinfo_proc *newprocess = NULL; - - // do, while loop rnning through all the processes - do { - size += size / 10; - newprocess = realloc(process, size); - - if (!newprocess) { - if (process) free(process); - // Error - return nil; - } - - process = newprocess; - st = sysctl(mib, (int)miblen, process, &size, NULL, 0); - - } while (st == -1 && errno == ENOMEM); - - if (st == 0) { - if (size % sizeof(struct kinfo_proc) == 0) { - int nprocess = (int)(size / sizeof(struct kinfo_proc)); - - if (nprocess) { - NSMutableArray *array = [[NSMutableArray alloc] init]; - - for (int i = nprocess - 1; i >= 0; i--) { - - NSString *processID = [[NSString alloc] initWithFormat:@"%d", process[i].kp_proc.p_pid]; - NSString *processName = [[NSString alloc] initWithFormat:@"%s", process[i].kp_proc.p_comm]; - NSString *processPriority = [[NSString alloc] initWithFormat:@"%d", process[i].kp_proc.p_priority]; - NSDate *processStartDate = [NSDate dateWithTimeIntervalSince1970:process[i].kp_proc.p_un.__p_starttime.tv_sec]; - NSString *processParentID = [[NSString alloc] initWithFormat:@"%d", [self parentPIDForProcess:(int)process[i].kp_proc.p_pid]]; - NSString *processStatus = [[NSString alloc] initWithFormat:@"%d", (int)process[i].kp_proc.p_stat]; - NSString *processFlags = [[NSString alloc] initWithFormat:@"%d", (int)process[i].kp_proc.p_flag]; - - // Check to make sure all values are valid (if not, make them) - if (processID == nil || processID.length <= 0) { - // Invalid value - processID = @"Unkown"; - } - if (processName == nil || processName.length <= 0) { - // Invalid value - processName = @"Unkown"; - } - if (processPriority == nil || processPriority.length <= 0) { - // Invalid value - processPriority = @"Unkown"; - } - if (processStartDate == nil) { - // Invalid value - processStartDate = [NSDate date]; - } - if (processParentID == nil || processParentID.length <= 0) { - // Invalid value - processParentID = @"Unkown"; - } - if (processStatus == nil || processStatus.length <= 0) { - // Invalid value - processStatus = @"Unkown"; - } - if (processFlags == nil || processFlags.length <= 0) { - // Invalid value - processFlags = @"Unkown"; - } - - // Create an array of the objects - NSArray *ItemArray = [NSArray arrayWithObjects:processID, processName, processPriority, processStartDate, processParentID, processStatus, processFlags, nil]; - - // Create an array of keys - NSArray *KeyArray = [NSArray arrayWithObjects:@"PID", @"Name", @"Priority", @"StartDate", @"ParentID", @"Status", @"Flags", nil]; - - // Create the dictionary - NSDictionary *dict = [[NSDictionary alloc] initWithObjects:ItemArray forKeys:KeyArray]; - - // Add the objects to the array - [array addObject:dict]; - } - - // Make sure the array is usable - if (array.count <= 0) { - // Error, nothing in array - return nil; - } - - // Free the process - free(process); - - // Successful - return array; - } - } - } - - // Something failed - return nil; - } - @catch (NSException * ex) { - // Error - return nil; - } -} - @end diff --git a/System Services/Utilities/SSProcessorInfo.h b/System Services/Utilities/SSProcessorInfo.h index 78e5aa9..80ad9d4 100755 --- a/System Services/Utilities/SSProcessorInfo.h +++ b/System Services/Utilities/SSProcessorInfo.h @@ -8,7 +8,6 @@ #import -NS_CLASS_DEPRECATED_IOS(2_0, 9_0, "SSProcessorInfo is deprecated. Process information is no longer allowed in iOS 9") @interface SSProcessorInfo : NSObject // Processor Information @@ -19,10 +18,7 @@ NS_CLASS_DEPRECATED_IOS(2_0, 9_0, "SSProcessorInfo is deprecated. Process inform // Number of Active Processors + (NSInteger)numberActiveProcessors; -// Processor Speed in MHz -+ (NSInteger)processorSpeed; - -// Processor Bus Speed in MHz -+ (NSInteger)processorBusSpeed; +// Get Processor Usage Information (i.e. ["0.2216801", "0.1009614"]) ++ (NSArray *)processorsUsage; @end diff --git a/System Services/Utilities/SSProcessorInfo.m b/System Services/Utilities/SSProcessorInfo.m index d4aaa6d..518c581 100755 --- a/System Services/Utilities/SSProcessorInfo.m +++ b/System Services/Utilities/SSProcessorInfo.m @@ -1,4 +1,4 @@ -// + // // SSProcessorInfo.m // SystemServicesDemo // @@ -11,6 +11,9 @@ // Sysctl #import +// Mach +#include + @implementation SSProcessorInfo // Processor Information @@ -43,64 +46,67 @@ + (NSInteger)numberActiveProcessors { } } -// Processor Speed in MHz -+ (NSInteger)processorSpeed { - // Try to get the processor speed - @try { - // Set the variables - int hertz; - size_t size = sizeof(int); - int mib[2] = {CTL_HW, HW_CPU_FREQ}; - - // Find the speed - sysctl(mib, 2, &hertz, &size, NULL, 0); +// Get Processor Usage Information (i.e. ["0.2216801", "0.1009614"]) ++ (NSArray *)processorsUsage { + + // Try to get Processor Usage Info + @try { + // Variables + processor_info_array_t _cpuInfo, _prevCPUInfo = nil; + mach_msg_type_number_t _numCPUInfo, _numPrevCPUInfo = 0; + unsigned _numCPUs; + NSLock *_cpuUsageLock; - // Make sure it's not less than 0 - if (hertz < 1) { - // Invalid value - return -1; - } + // Get the number of processors from sysctl + int _mib[2U] = { CTL_HW, HW_NCPU }; + size_t _sizeOfNumCPUs = sizeof(_numCPUs); + int _status = sysctl(_mib, 2U, &_numCPUs, &_sizeOfNumCPUs, NULL, 0U); + if (_status) + _numCPUs = 1; - // Divide the final speed by 1 million to get the speed in mhz - hertz /= 1000000; + // Allocate the lock + _cpuUsageLock = [[NSLock alloc] init]; - // Return the result - return hertz; - } - @catch (NSException * ex) { - // Unable to get the speed (return -1) - return -1; - } -} - -// Processor Bus Speed in MHz -+ (NSInteger)processorBusSpeed { - // Try to get the processor bus speed - @try { - // Set the variables - size_t size; - int speed[2]; - int final; - - // Find the speeds - speed[0] = CTL_HW; - speed[1] = HW_BUS_FREQ; - size = sizeof(final); - - // Get the actual speed - sysctl(speed, 2, &final, &size, NULL, 0); - if (final > 0) - final /= 1000000; - else - return -1; - - // Return the result - return final; - } - @catch (NSException * ex) { - // Unable to get the speed (return -1) - return -1; - } + // Get the processor info + natural_t _numCPUsU = 0U; + kern_return_t err = host_processor_info(mach_host_self(), PROCESSOR_CPU_LOAD_INFO, &_numCPUsU, &_cpuInfo, &_numCPUInfo); + if (err == KERN_SUCCESS) { + [_cpuUsageLock lock]; + + // Go through info for each processor + NSMutableArray *processorInfo = [NSMutableArray new]; + for (unsigned i = 0U; i < _numCPUs; ++i) { + Float32 _inUse, _total; + if (_prevCPUInfo) { + _inUse = ( + (_cpuInfo[(CPU_STATE_MAX * i) + CPU_STATE_USER] - _prevCPUInfo[(CPU_STATE_MAX * i) + CPU_STATE_USER]) + + (_cpuInfo[(CPU_STATE_MAX * i) + CPU_STATE_SYSTEM] - _prevCPUInfo[(CPU_STATE_MAX * i) + CPU_STATE_SYSTEM]) + + (_cpuInfo[(CPU_STATE_MAX * i) + CPU_STATE_NICE] - _prevCPUInfo[(CPU_STATE_MAX * i) + CPU_STATE_NICE]) + ); + _total = _inUse + (_cpuInfo[(CPU_STATE_MAX * i) + CPU_STATE_IDLE] - _prevCPUInfo[(CPU_STATE_MAX * i) + CPU_STATE_IDLE]); + } else { + _inUse = _cpuInfo[(CPU_STATE_MAX * i) + CPU_STATE_USER] + _cpuInfo[(CPU_STATE_MAX * i) + CPU_STATE_SYSTEM] + _cpuInfo[(CPU_STATE_MAX * i) + CPU_STATE_NICE]; + _total = _inUse + _cpuInfo[(CPU_STATE_MAX * i) + CPU_STATE_IDLE]; + } + // Add to the processor usage info + [processorInfo addObject:@(_inUse / _total)]; + } + + [_cpuUsageLock unlock]; + if (_prevCPUInfo) { + size_t prevCpuInfoSize = sizeof(integer_t) * _numPrevCPUInfo; + vm_deallocate(mach_task_self(), (vm_address_t)_prevCPUInfo, prevCpuInfoSize); + } + // Retrieved processor information + return processorInfo; + } else { + // Unable to get processor information + return nil; + } + } @catch (NSException *exception) { + // Getting processor information failed + return nil; + } } @end diff --git a/System Services/Utilities/SSUUID.h b/System Services/Utilities/SSUUID.h index e2564c2..bd12216 100755 --- a/System Services/Utilities/SSUUID.h +++ b/System Services/Utilities/SSUUID.h @@ -10,14 +10,6 @@ @interface SSUUID : NSObject -// Universal Unique Identifiers - -// Unique ID - Unique Identifier based on unchanging information about the device -+ (nullable NSString *)uniqueID NS_DEPRECATED_IOS(2_0, 8_0); - -// Device Signature - Device Signature based on assorted information about the device including: SystemVersion, ScreenHeight, ScreenWidth, PluggedIn, Jailbroken, HeadphonesAttached, BatteryLevel, FullyCharged, ConnectedtoWiFi, DeviceOrientation, Country, TimeZone, NumberProcessors, ProcessorSpeed, TotalDiskSpace, TotalMemory, and a Salt -+ (nullable NSString *)deviceSignature NS_DEPRECATED_IOS(2_0, 8_0); - // CFUUID - Random Unique Identifier that changes every time + (nullable NSString *)cfuuid; diff --git a/System Services/Utilities/SSUUID.m b/System Services/Utilities/SSUUID.m index 2483ce5..4d6e1f4 100755 --- a/System Services/Utilities/SSUUID.m +++ b/System Services/Utilities/SSUUID.m @@ -20,273 +20,6 @@ @implementation SSUUID -// UDID Replacement Based on SystemServices Device Signature - -// Unique ID -+ (NSString *)uniqueID { - // Get a Unique ID from the Device - - // Create a string - NSString *UniqueIdentifier; - - // Get the Device Model - NSString *DeviceModel = [[SSHardwareInfo deviceModel] capitalizedString]; - DeviceModel = [[DeviceModel substringWithRange:NSMakeRange([DeviceModel length] - 1, 1)] capitalizedString]; - - // Get the System Name - NSString *SystemName = [[[SSHardwareInfo systemName] substringWithRange:NSMakeRange(2, 1)] capitalizedString]; - - // Get the Device Type - NSString *DeviceType = [[SSHardwareInfo systemDeviceTypeFormatted:NO] capitalizedString]; - DeviceType = [DeviceType substringWithRange:NSMakeRange([DeviceType length] - 1, 1)]; - - // Get the Screen Width - NSString *ScreenWidth = [[[NSString stringWithFormat:@"%ld", (long)[SSHardwareInfo screenWidth]] substringToIndex:1] capitalizedString]; - - // Get the Screen Height - NSString *ScreenHeight = [[[NSString stringWithFormat:@"%ld", (long)[SSHardwareInfo screenHeight]] substringToIndex:1] capitalizedString]; - - // Check if Multitasking is Enabled - NSString *MultitaskingEnabled = [[[NSString stringWithFormat:@"%d", [SSHardwareInfo multitaskingEnabled]] substringToIndex:1] capitalizedString]; - - // Check if the proximity sensor exists - NSString *ProximitySensorEnabled = [[[NSString stringWithFormat:@"%d", [SSHardwareInfo proximitySensorEnabled]] substringToIndex:1] capitalizedString]; - - // Get the number of processors - NSString *NumberProcessors = [[[NSString stringWithFormat:@"%ld", (long)[SSProcessorInfo numberProcessors]] substringToIndex:1] capitalizedString]; - - // Get the processor Speed - NSString *ProcessorSpeed = [[[NSString stringWithFormat:@"%ld", (long)[SSProcessorInfo processorSpeed]] substringToIndex:1] capitalizedString]; - - // Get the Cell MAC Address - NSString *CellMACAddress = [[[SSNetworkInfo cellMACAddress] substringToIndex:1] capitalizedString]; - - // Get the WiFi MAC Address - NSString *WiFiMACAddress = [[[SSNetworkInfo wiFiMACAddress] substringToIndex:1] capitalizedString]; - - // Get the WiFi MAC Address different sector (5) - NSString *WiFiMACAddress2 = [[[SSNetworkInfo wiFiMACAddress] substringWithRange:NSMakeRange(4, 1)] capitalizedString]; - - // Get the WiFi MAC Address different sector (10) - NSString *WiFiMACAddress3 = [[[SSNetworkInfo wiFiMACAddress] substringWithRange:NSMakeRange(9, 1)] capitalizedString]; - - // Get the total disk space - NSString *TotalDiskSpace = [[[SSDiskInfo diskSpace] substringToIndex:1] capitalizedString]; - - // Create a salt - NSString *Salt = @"6"; - - // Create an additional salt - NSString *Salty = @"S"; - - // Error check - if (DeviceModel == nil || DeviceModel.length <= 0 || DeviceModel.length > 1 || [DeviceModel isEqualToString:@"-"]) { - // Invalid String - DeviceModel = @"1"; - } - if (SystemName == nil || SystemName.length <= 0 || SystemName.length > 1 || [SystemName isEqualToString:@"-"]) { - // Invalid String - SystemName = @"1"; - } - if (DeviceType == nil || DeviceType.length <= 0 || DeviceType.length > 1 || [DeviceType isEqualToString:@"-"]) { - // Invalid String - DeviceType = @"1"; - } - if (ScreenWidth == nil || ScreenWidth.length <= 0 || ScreenWidth.length > 1 || [ScreenWidth isEqualToString:@"-"]) { - // Invalid String - ScreenWidth = @"1"; - } - if (ScreenHeight == nil || ScreenHeight.length <= 0 || ScreenHeight.length > 1 || [ScreenHeight isEqualToString:@"-"]) { - // Invalid String - ScreenHeight = @"1"; - } - if (MultitaskingEnabled == nil || MultitaskingEnabled.length <= 0 || MultitaskingEnabled.length > 1 || [MultitaskingEnabled isEqualToString:@"-"]) { - // Invalid String - MultitaskingEnabled = @"1"; - } - if (ProximitySensorEnabled == nil || ProximitySensorEnabled.length <= 0 || ProximitySensorEnabled.length > 1 || [ProximitySensorEnabled isEqualToString:@"-"]) { - // Invalid String - ProximitySensorEnabled = @"1"; - } - if (NumberProcessors == nil || NumberProcessors.length <= 0 || NumberProcessors.length > 1 || [NumberProcessors isEqualToString:@"-"]) { - // Invalid String - NumberProcessors = @"1"; - } - if (ProcessorSpeed == nil || ProcessorSpeed.length <= 0 || ProcessorSpeed.length > 1 || [ProcessorSpeed isEqualToString:@"-"]) { - // Invalid String - ProcessorSpeed = @"1"; - } - if (CellMACAddress == nil || CellMACAddress.length <= 0 || CellMACAddress.length > 1 || [CellMACAddress isEqualToString:@"-"]) { - // Invalid String - CellMACAddress = @"1"; - } - if (WiFiMACAddress == nil || WiFiMACAddress.length <= 0 || WiFiMACAddress.length > 1 || [WiFiMACAddress isEqualToString:@"-"]) { - // Invalid String - WiFiMACAddress = @"1"; - } - if (WiFiMACAddress2 == nil || WiFiMACAddress2.length <= 0 || WiFiMACAddress2.length > 1 || [WiFiMACAddress2 isEqualToString:@"-"]) { - // Invalid String - WiFiMACAddress2 = @"1"; - } - if (WiFiMACAddress3 == nil || WiFiMACAddress3.length <= 0 || WiFiMACAddress3.length > 1 || [WiFiMACAddress3 isEqualToString:@"-"]) { - // Invalid String - WiFiMACAddress3 = @"1"; - } - if (TotalDiskSpace == nil || TotalDiskSpace.length <= 0 || TotalDiskSpace.length > 1 || [TotalDiskSpace isEqualToString:@"-"]) { - // Invalid String - TotalDiskSpace = @"1"; - } - - // Create the Unique ID Based on these Unchanging System Variables - UniqueIdentifier = [NSString stringWithFormat:@"%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@", Salt, DeviceModel, SystemName, DeviceType, ScreenWidth, ScreenHeight, MultitaskingEnabled, ProximitySensorEnabled, NumberProcessors, ProcessorSpeed, CellMACAddress, WiFiMACAddress, WiFiMACAddress2, WiFiMACAddress3, TotalDiskSpace, Salty]; - - // Check for errors - if (UniqueIdentifier == nil || UniqueIdentifier.length <= 0 || UniqueIdentifier.length > 16) { - // Error, invalid UUID - return nil; - } - - // Completed Successfully - return UniqueIdentifier; -} - -// Device Signature -+ (NSString *)deviceSignature { - // Get a comprehensive device signature - - // Create a string - NSString *DeviceSignature; - - // Get the System Version - NSString *SystemVersion = [NSString stringWithFormat:@"%d", [[SSHardwareInfo systemVersion] intValue]]; - - // Get the Screen Height - NSString *ScreenHeight = [NSString stringWithFormat:@"%ld", (long)[SSHardwareInfo screenHeight]]; - - // Get the Screen Width - NSString *ScreenWidth = [NSString stringWithFormat:@"%ld", (long)[SSHardwareInfo screenWidth]]; - - // Plugged In - NSString *PluggedIn = [NSString stringWithFormat:@"%d", [SSHardwareInfo pluggedIn]]; - - // Jailbroken - NSString *Jailbroken = [NSString stringWithFormat:@"%d", [SSJailbreakCheck jailbroken]]; - - // Headphones Attached - NSString *HeadphonesAttached = [NSString stringWithFormat:@"%d", [SSAccessoryInfo headphonesAttached]]; - - // Battery Level - NSString *BatteryLevel = [NSString stringWithFormat:@"%d", (int)[SSBatteryInfo batteryLevel]]; - - // Fully Charged - NSString *FullyCharged = [NSString stringWithFormat:@"%d", [SSBatteryInfo fullyCharged]]; - - // Connected to WiFi - NSString *ConnectedtoWiFi = [NSString stringWithFormat:@"%d", [SSNetworkInfo connectedToWiFi]]; - - // Device Orientation - NSString *DeviceOrientation = [NSString stringWithFormat:@"%ld", [SSAccelerometerInfo deviceOrientation]]; - - // Country - NSString *Country = [[[SSLocalizationInfo country] substringToIndex:2] uppercaseString]; - - // TimeZone - NSString *TimeZone = [[[SSLocalizationInfo timeZone] substringToIndex:2] uppercaseString]; - - // Number Processors - NSString *NumberProcessors = [NSString stringWithFormat:@"%ld", (long)[SSProcessorInfo numberProcessors]]; - - // Processor Speed - NSString *ProcessorSpeed = [NSString stringWithFormat:@"%ld", (long)[SSProcessorInfo processorSpeed]]; - - // Total Disk Space - NSString *TotalDiskSpace = [NSString stringWithFormat:@"%d", [[SSDiskInfo diskSpace] intValue] ]; - - // Total Memory - NSString *TotalMemory = [NSString stringWithFormat:@"%d", (int)[SSMemoryInfo totalMemory]]; - - // Salt - NSString *Salt = @"SS"; - - // Check for errors - if (SystemVersion == nil || SystemVersion.length <= 0 || SystemVersion.length > 3) { - // Invalid String - SystemVersion = @"00"; - } - if (ScreenHeight == nil || ScreenHeight.length <= 0 || ScreenHeight.length > 4) { - // Invalid String - ScreenHeight = @"0000"; - } - if (ScreenWidth == nil || ScreenWidth.length <= 0 || ScreenWidth.length > 4) { - // Invalid String - ScreenWidth = @"0000"; - } - if (PluggedIn == nil || PluggedIn.length <= 0 || PluggedIn.length > 1) { - // Invalid String - PluggedIn = @"0"; - } - if (Jailbroken == nil || Jailbroken.length <= 0 || Jailbroken.length > 1) { - // Invalid String - Jailbroken = @"0"; - } - if (HeadphonesAttached == nil || HeadphonesAttached.length <= 0 || HeadphonesAttached.length > 1) { - // Invalid String - HeadphonesAttached = @"0"; - } - if (BatteryLevel == nil || BatteryLevel.length <= 0 || [BatteryLevel rangeOfString:@"-"].location != NSNotFound) { - // Invalid String - BatteryLevel = @"00"; - } - if (FullyCharged == nil || FullyCharged.length <= 0 || FullyCharged.length > 1) { - // Invalid String - FullyCharged = @"0"; - } - if (ConnectedtoWiFi == nil || ConnectedtoWiFi.length <= 0 || ConnectedtoWiFi.length > 1) { - // Invalid String - ConnectedtoWiFi = @"0"; - } - if (DeviceOrientation == nil || DeviceOrientation.length <= 0 || DeviceOrientation.length > 1) { - // Invalid String - DeviceOrientation = @"0"; - } - if (Country == nil || Country.length <= 0 || Country.length > 2) { - // Invalid String - Country = @"00"; - } - if (TimeZone == nil || TimeZone.length <= 0 || TimeZone.length > 2) { - // Invalid String - TimeZone = @"00"; - } - if (NumberProcessors == nil || NumberProcessors.length <= 0 || NumberProcessors.length > 2 || [NumberProcessors rangeOfString:@"-"].location != NSNotFound) { - // Invalid String - NumberProcessors = @"0"; - } - if (ProcessorSpeed == nil || ProcessorSpeed.length <= 0 || ProcessorSpeed.length > 3 || [ProcessorSpeed rangeOfString:@"-"].location != NSNotFound) { - // Invalid String - ProcessorSpeed = @"000"; - } - if (TotalDiskSpace == nil || TotalDiskSpace.length <= 0 || TotalDiskSpace.length > 3 || [TotalDiskSpace rangeOfString:@"-"].location != NSNotFound) { - // Invalid String - TotalDiskSpace = @"000"; - } - if (TotalMemory == nil || TotalMemory.length <= 0 || TotalMemory.length > 3 || [TotalMemory rangeOfString:@"-"].location != NSNotFound) { - // Invalid String - TotalMemory = @"000"; - } - - // Create the Device Signature based on the values - DeviceSignature = [NSString stringWithFormat:@"%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@%@", SystemVersion, ScreenHeight, ScreenWidth, PluggedIn, Jailbroken, HeadphonesAttached, BatteryLevel, FullyCharged, ConnectedtoWiFi, DeviceOrientation, Country, TimeZone, NumberProcessors, ProcessorSpeed, TotalDiskSpace, TotalMemory, Salt]; - - // Check for errors - if (DeviceSignature == nil || DeviceSignature.length <= 0) { - // Error, invalid Device Signature - return nil; - } - - // Completed Successfully - return DeviceSignature; -} - // CFUUID + (NSString *)cfuuid { // Create a new CFUUID (Unique, random ID number) (Always different) @@ -298,10 +31,10 @@ + (NSString *)cfuuid { if (theUUID) { // Make the new UUID String - NSString *TempUniqueID = (__bridge NSString *)CFUUIDCreateString(kCFAllocatorDefault, theUUID); + NSString *tempUniqueID = (__bridge NSString *)CFUUIDCreateString(kCFAllocatorDefault, theUUID); // Check to make sure it created it - if (TempUniqueID == nil || TempUniqueID.length <= 0) { + if (tempUniqueID == nil || tempUniqueID.length <= 0) { // Error, Unable to create // Release the UUID Reference CFRelease(theUUID); @@ -313,7 +46,7 @@ + (NSString *)cfuuid { CFRelease(theUUID); // Successful - return TempUniqueID; + return tempUniqueID; } else { // Error // Release the UUID Reference diff --git a/System Services/Utilities/route.h b/System Services/Utilities/route.h index 8dfa582..eff8b1d 100644 --- a/System Services/Utilities/route.h +++ b/System Services/Utilities/route.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2015 Apple Inc. All rights reserved. + * Copyright (c) 2000-2016 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -61,7 +61,6 @@ * $FreeBSD: src/sys/net/route.h,v 1.36.2.1 2000/08/16 06:14:23 jayanth Exp $ */ -#if !(TARGET_IPHONE_SIMULATOR) #ifndef _NET_ROUTE_H_ #define _NET_ROUTE_H_ #include @@ -74,17 +73,17 @@ * retransmission behavior and are included in the routing structure. */ struct rt_metrics { - u_int32_t rmx_locks; /* Kernel leaves these values alone */ - u_int32_t rmx_mtu; /* MTU for this path */ - u_int32_t rmx_hopcount; /* max hops expected */ - int32_t rmx_expire; /* lifetime for route, e.g. redirect */ - u_int32_t rmx_recvpipe; /* inbound delay-bandwidth product */ - u_int32_t rmx_sendpipe; /* outbound delay-bandwidth product */ - u_int32_t rmx_ssthresh; /* outbound gateway buffer limit */ - u_int32_t rmx_rtt; /* estimated round trip time */ - u_int32_t rmx_rttvar; /* estimated rtt variance */ - u_int32_t rmx_pksent; /* packets sent using this route */ - u_int32_t rmx_filler[4]; /* will be used for T/TCP later */ + u_int32_t rmx_locks; /* Kernel leaves these values alone */ + u_int32_t rmx_mtu; /* MTU for this path */ + u_int32_t rmx_hopcount; /* max hops expected */ + int32_t rmx_expire; /* lifetime for route, e.g. redirect */ + u_int32_t rmx_recvpipe; /* inbound delay-bandwidth product */ + u_int32_t rmx_sendpipe; /* outbound delay-bandwidth product */ + u_int32_t rmx_ssthresh; /* outbound gateway buffer limit */ + u_int32_t rmx_rtt; /* estimated round trip time */ + u_int32_t rmx_rttvar; /* estimated rtt variance */ + u_int32_t rmx_pksent; /* packets sent using this route */ + u_int32_t rmx_filler[4]; /* will be used for T/TCP later */ }; /* @@ -114,7 +113,7 @@ struct rt_metrics { #define RTF_PRCLONING 0x10000 /* protocol requires cloning */ #define RTF_WASCLONED 0x20000 /* route generated through cloning */ #define RTF_PROTO3 0x40000 /* protocol specific routing flag */ -/* 0x80000 unused */ + /* 0x80000 unused */ #define RTF_PINNED 0x100000 /* future use */ #define RTF_LOCAL 0x200000 /* route represents a local address */ #define RTF_BROADCAST 0x400000 /* route represents a bcast address */ @@ -124,57 +123,57 @@ struct rt_metrics { #define RTF_IFREF 0x4000000 /* route holds a ref to interface */ #define RTF_PROXY 0x8000000 /* proxying, no interface scope */ #define RTF_ROUTER 0x10000000 /* host is a router */ -/* 0x20000000 and up unassigned */ + /* 0x20000000 and up unassigned */ #define RTF_BITS \ -"\020\1UP\2GATEWAY\3HOST\4REJECT\5DYNAMIC\6MODIFIED\7DONE" \ -"\10DELCLONE\11CLONING\12XRESOLVE\13LLINFO\14STATIC\15BLACKHOLE" \ -"\16NOIFREF\17PROTO2\20PROTO1\21PRCLONING\22WASCLONED\23PROTO3" \ -"\25PINNED\26LOCAL\27BROADCAST\30MULTICAST\31IFSCOPE\32CONDEMNED" \ -"\33IFREF\34PROXY\35ROUTER" + "\020\1UP\2GATEWAY\3HOST\4REJECT\5DYNAMIC\6MODIFIED\7DONE" \ + "\10DELCLONE\11CLONING\12XRESOLVE\13LLINFO\14STATIC\15BLACKHOLE" \ + "\16NOIFREF\17PROTO2\20PROTO1\21PRCLONING\22WASCLONED\23PROTO3" \ + "\25PINNED\26LOCAL\27BROADCAST\30MULTICAST\31IFSCOPE\32CONDEMNED" \ + "\33IFREF\34PROXY\35ROUTER" /* * Routing statistics. */ struct rtstat { - short rts_badredirect; /* bogus redirect calls */ - short rts_dynamic; /* routes created by redirects */ - short rts_newgateway; /* routes modified by redirects */ - short rts_unreach; /* lookups which failed */ - short rts_wildcard; /* lookups satisfied by a wildcard */ + short rts_badredirect; /* bogus redirect calls */ + short rts_dynamic; /* routes created by redirects */ + short rts_newgateway; /* routes modified by redirects */ + short rts_unreach; /* lookups which failed */ + short rts_wildcard; /* lookups satisfied by a wildcard */ }; /* * Structures for routing messages. */ struct rt_msghdr { - u_short rtm_msglen; /* to skip over non-understood messages */ - u_char rtm_version; /* future binary compatibility */ - u_char rtm_type; /* message type */ - u_short rtm_index; /* index for associated ifp */ - int rtm_flags; /* flags, incl. kern & message, e.g. DONE */ - int rtm_addrs; /* bitmask identifying sockaddrs in msg */ - pid_t rtm_pid; /* identify sender */ - int rtm_seq; /* for sender to identify action */ - int rtm_errno; /* why failed */ - int rtm_use; /* from rtentry */ - u_int32_t rtm_inits; /* which metrics we are initializing */ - struct rt_metrics rtm_rmx; /* metrics themselves */ + u_short rtm_msglen; /* to skip over non-understood messages */ + u_char rtm_version; /* future binary compatibility */ + u_char rtm_type; /* message type */ + u_short rtm_index; /* index for associated ifp */ + int rtm_flags; /* flags, incl. kern & message, e.g. DONE */ + int rtm_addrs; /* bitmask identifying sockaddrs in msg */ + pid_t rtm_pid; /* identify sender */ + int rtm_seq; /* for sender to identify action */ + int rtm_errno; /* why failed */ + int rtm_use; /* from rtentry */ + u_int32_t rtm_inits; /* which metrics we are initializing */ + struct rt_metrics rtm_rmx; /* metrics themselves */ }; struct rt_msghdr2 { - u_short rtm_msglen; /* to skip over non-understood messages */ - u_char rtm_version; /* future binary compatibility */ - u_char rtm_type; /* message type */ - u_short rtm_index; /* index for associated ifp */ - int rtm_flags; /* flags, incl. kern & message, e.g. DONE */ - int rtm_addrs; /* bitmask identifying sockaddrs in msg */ - int32_t rtm_refcnt; /* reference count */ - int rtm_parentflags; /* flags of the parent route */ - int rtm_reserved; /* reserved field set to 0 */ - int rtm_use; /* from rtentry */ - u_int32_t rtm_inits; /* which metrics we are initializing */ - struct rt_metrics rtm_rmx; /* metrics themselves */ + u_short rtm_msglen; /* to skip over non-understood messages */ + u_char rtm_version; /* future binary compatibility */ + u_char rtm_type; /* message type */ + u_short rtm_index; /* index for associated ifp */ + int rtm_flags; /* flags, incl. kern & message, e.g. DONE */ + int rtm_addrs; /* bitmask identifying sockaddrs in msg */ + int32_t rtm_refcnt; /* reference count */ + int rtm_parentflags; /* flags of the parent route */ + int rtm_reserved; /* reserved field set to 0 */ + int rtm_use; /* from rtentry */ + u_int32_t rtm_inits; /* which metrics we are initializing */ + struct rt_metrics rtm_rmx; /* metrics themselves */ }; @@ -188,7 +187,7 @@ struct rt_msghdr2 { #define RTM_CHANGE 0x3 /* Change Metrics or flags */ #define RTM_GET 0x4 /* Report Metrics */ #define RTM_LOSING 0x5 /* RTM_LOSING is no longer generated by xnu -and is deprecated */ + and is deprecated */ #define RTM_REDIRECT 0x6 /* Told to use different route */ #define RTM_MISS 0x7 /* Lookup failed on this address */ #define RTM_LOCK 0x8 /* fix specified metrics */ @@ -242,10 +241,9 @@ and is deprecated */ #define RTAX_MAX 8 /* size of array to allocate */ struct rt_addrinfo { - int rti_addrs; - struct sockaddr *rti_info[RTAX_MAX]; + int rti_addrs; + struct sockaddr *rti_info[RTAX_MAX]; }; #endif /* _NET_ROUTE_H_ */ -#endif /* TARGET_IPHONE_SIMULATOR */ diff --git a/SystemServices.podspec b/SystemServices.podspec index 2e1640f..2b04468 100644 --- a/SystemServices.podspec +++ b/SystemServices.podspec @@ -9,31 +9,30 @@ Pod::Spec.new do |s| s.name = "SystemServices" - s.version = "1.1.1" + s.version = "2.0.0" s.summary = "iOS System Services is a class to gather all available information about a device." s.description = <<-DESC - This is a singleton class to gather all available information about a device. It gives you over 75 methods to determine everything about a device, including: + This is a singleton class to gather all available information about a device. It gives you over 60 methods to determine everything about a device, including: - Hardware & Network Information + Hardware Information + Network Information Battery Usage Accelerometer Data Disk Usage - Running Processes Memory Usage - And a complete UDID replacement based on unchanging device information. DESC s.homepage = "https://github.com/Shmoopi/iOS-System-Services" s.screenshots = [ "https://raw.githubusercontent.com/Shmoopi/iOS-System-Services/master/Sample%20Images/Screenshot1.png", "https://raw.githubusercontent.com/Shmoopi/iOS-System-Services/master/Sample%20Images/Screenshot2.png" ] - s.license = "MIT" + s.license = { :type => 'MIT' } s.author = { "Shmoopi" => "shmoopillc@gmail.com" } s.social_media_url = "http://twitter.com/shmoopillc" s.platform = :ios - s.platform = :ios, "6.0" - s.source = { :git => "https://github.com/Shmoopi/iOS-System-Services.git", :tag => "1.1.1" } + s.platform = :ios, "9.0" + s.source = { :git => "https://github.com/Shmoopi/iOS-System-Services.git", :tag => "2.0.0" } s.source_files = "SystemServices", "System Services/**/*.{h,m}" s.frameworks = "AVFoundation", "CoreTelephony", "Security", "CoreMotion", "ExternalAccessory" s.requires_arc = true diff --git a/SystemServicesDemo/SystemServicesDemo.xcodeproj/project.pbxproj b/SystemServicesDemo/SystemServicesDemo.xcodeproj/project.pbxproj index eb2703c..70afd44 100755 --- a/SystemServicesDemo/SystemServicesDemo.xcodeproj/project.pbxproj +++ b/SystemServicesDemo/SystemServicesDemo.xcodeproj/project.pbxproj @@ -40,7 +40,6 @@ 4C44C5D517FC5491001E84DF /* SSProcessorInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C44C5C317FC5491001E84DF /* SSProcessorInfo.m */; }; 4C44C5D617FC5491001E84DF /* SSUUID.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C44C5C517FC5491001E84DF /* SSUUID.m */; }; 4C640E0A1607BF9D00955DE4 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C640E091607BF9D00955DE4 /* CoreTelephony.framework */; }; - 4C67F74817FB0BD300089C23 /* DetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C67F74717FB0BD300089C23 /* DetailViewController.m */; }; 4C7D7D0F1C2B3CE200388E49 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C3C92571729B83200D88C01 /* QuartzCore.framework */; }; 4C9C34FF17FA04D7004113FC /* Disk.png in Resources */ = {isa = PBXBuildFile; fileRef = 4C9C34F517FA04D7004113FC /* Disk.png */; }; 4C9C350017FA04D7004113FC /* Disk@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 4C9C34F617FA04D7004113FC /* Disk@2x.png */; }; @@ -50,8 +49,6 @@ 4C9C350417FA04D7004113FC /* Memory@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 4C9C34FA17FA04D7004113FC /* Memory@2x.png */; }; 4C9C350517FA04D7004113FC /* Network.png in Resources */ = {isa = PBXBuildFile; fileRef = 4C9C34FB17FA04D7004113FC /* Network.png */; }; 4C9C350617FA04D7004113FC /* Network@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 4C9C34FC17FA04D7004113FC /* Network@2x.png */; }; - 4C9C350717FA04D7004113FC /* Processes.png in Resources */ = {isa = PBXBuildFile; fileRef = 4C9C34FD17FA04D7004113FC /* Processes.png */; }; - 4C9C350817FA04D7004113FC /* Processes@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 4C9C34FE17FA04D7004113FC /* Processes@2x.png */; }; 4CB898F3178B1003005FE9CF /* MSAnnotatedGauge.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CB898E6178B1003005FE9CF /* MSAnnotatedGauge.m */; }; 4CB898F4178B1003005FE9CF /* MSArcLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CB898E8178B1003005FE9CF /* MSArcLayer.m */; }; 4CB898F5178B1003005FE9CF /* MSGradientArcLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CB898EB178B1003005FE9CF /* MSGradientArcLayer.m */; }; @@ -61,7 +58,6 @@ 4CCC7651170E09A40057A8A3 /* SystemServicesDemoNetworkViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CCC7650170E09A40057A8A3 /* SystemServicesDemoNetworkViewController.m */; }; 4CCC7654170E09C20057A8A3 /* SystemServicesDemoMemoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CCC7653170E09C20057A8A3 /* SystemServicesDemoMemoryViewController.m */; }; 4CCC7657170E09CB0057A8A3 /* SystemServicesDemoDiskViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CCC7656170E09CB0057A8A3 /* SystemServicesDemoDiskViewController.m */; }; - 4CCC765A170E09E10057A8A3 /* SystemServicesDemoProcessesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CCC7659170E09E10057A8A3 /* SystemServicesDemoProcessesViewController.m */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -121,8 +117,7 @@ 4C640E021607AAFA00955DE4 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; 4C640E041607BB4C00955DE4 /* ExternalAccessory.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ExternalAccessory.framework; path = System/Library/Frameworks/ExternalAccessory.framework; sourceTree = SDKROOT; }; 4C640E091607BF9D00955DE4 /* CoreTelephony.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreTelephony.framework; path = System/Library/Frameworks/CoreTelephony.framework; sourceTree = SDKROOT; }; - 4C67F74617FB0BD300089C23 /* DetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetailViewController.h; sourceTree = ""; }; - 4C67F74717FB0BD300089C23 /* DetailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DetailViewController.m; sourceTree = ""; }; + 4C8ABAD91F6387A7009EBFCD /* route.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = route.h; sourceTree = ""; }; 4C9C34F517FA04D7004113FC /* Disk.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Disk.png; sourceTree = ""; }; 4C9C34F617FA04D7004113FC /* Disk@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Disk@2x.png"; sourceTree = ""; }; 4C9C34F717FA04D7004113FC /* Hardware.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Hardware.png; sourceTree = ""; }; @@ -131,8 +126,6 @@ 4C9C34FA17FA04D7004113FC /* Memory@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Memory@2x.png"; sourceTree = ""; }; 4C9C34FB17FA04D7004113FC /* Network.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Network.png; sourceTree = ""; }; 4C9C34FC17FA04D7004113FC /* Network@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Network@2x.png"; sourceTree = ""; }; - 4C9C34FD17FA04D7004113FC /* Processes.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Processes.png; sourceTree = ""; }; - 4C9C34FE17FA04D7004113FC /* Processes@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Processes@2x.png"; sourceTree = ""; }; 4CB898E5178B1003005FE9CF /* MSAnnotatedGauge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MSAnnotatedGauge.h; sourceTree = ""; }; 4CB898E6178B1003005FE9CF /* MSAnnotatedGauge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MSAnnotatedGauge.m; sourceTree = ""; }; 4CB898E7178B1003005FE9CF /* MSArcLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MSArcLayer.h; sourceTree = ""; }; @@ -153,9 +146,6 @@ 4CCC7653170E09C20057A8A3 /* SystemServicesDemoMemoryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SystemServicesDemoMemoryViewController.m; sourceTree = ""; }; 4CCC7655170E09CB0057A8A3 /* SystemServicesDemoDiskViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SystemServicesDemoDiskViewController.h; sourceTree = ""; }; 4CCC7656170E09CB0057A8A3 /* SystemServicesDemoDiskViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SystemServicesDemoDiskViewController.m; sourceTree = ""; }; - 4CCC7658170E09E10057A8A3 /* SystemServicesDemoProcessesViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SystemServicesDemoProcessesViewController.h; sourceTree = ""; }; - 4CCC7659170E09E10057A8A3 /* SystemServicesDemoProcessesViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SystemServicesDemoProcessesViewController.m; sourceTree = ""; }; - 4CE795B71CAB41710032FBD9 /* route.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = route.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -229,10 +219,6 @@ 4CCC7653170E09C20057A8A3 /* SystemServicesDemoMemoryViewController.m */, 4CCC7655170E09CB0057A8A3 /* SystemServicesDemoDiskViewController.h */, 4CCC7656170E09CB0057A8A3 /* SystemServicesDemoDiskViewController.m */, - 4CCC7658170E09E10057A8A3 /* SystemServicesDemoProcessesViewController.h */, - 4CCC7659170E09E10057A8A3 /* SystemServicesDemoProcessesViewController.m */, - 4C67F74617FB0BD300089C23 /* DetailViewController.h */, - 4C67F74717FB0BD300089C23 /* DetailViewController.m */, 01ADF9FE16051BFE008B0A6B /* Supporting Files */, ); path = SystemServicesDemo; @@ -278,6 +264,7 @@ 4C44C5A717FC5491001E84DF /* Utilities */ = { isa = PBXGroup; children = ( + 4C8ABAD91F6387A7009EBFCD /* route.h */, 4C44C5AA17FC5491001E84DF /* SSAccelerometerInfo.h */, 4C44C5AB17FC5491001E84DF /* SSAccelerometerInfo.m */, 4C44C5AC17FC5491001E84DF /* SSAccessoryInfo.h */, @@ -306,7 +293,6 @@ 4C44C5C317FC5491001E84DF /* SSProcessorInfo.m */, 4C44C5C417FC5491001E84DF /* SSUUID.h */, 4C44C5C517FC5491001E84DF /* SSUUID.m */, - 4CE795B71CAB41710032FBD9 /* route.h */, ); path = Utilities; sourceTree = ""; @@ -322,8 +308,6 @@ 4C9C34FA17FA04D7004113FC /* Memory@2x.png */, 4C9C34FB17FA04D7004113FC /* Network.png */, 4C9C34FC17FA04D7004113FC /* Network@2x.png */, - 4C9C34FD17FA04D7004113FC /* Processes.png */, - 4C9C34FE17FA04D7004113FC /* Processes@2x.png */, ); path = Images; sourceTree = ""; @@ -376,8 +360,13 @@ isa = PBXProject; attributes = { CLASSPREFIX = SystemServicesDemo; - LastUpgradeCheck = 0710; + LastUpgradeCheck = 0900; ORGANIZATIONNAME = "Shmoopi LLC"; + TargetAttributes = { + 01ADF9F216051BFE008B0A6B = { + DevelopmentTeam = Q2636DAEP4; + }; + }; }; buildConfigurationList = 01ADF9ED16051BFE008B0A6B /* Build configuration list for PBXProject "SystemServicesDemo" */; compatibilityVersion = "Xcode 3.2"; @@ -408,8 +397,6 @@ 01ADFA0B16051BFE008B0A6B /* MainStoryboard.storyboard in Resources */, 4C9C350517FA04D7004113FC /* Network.png in Resources */, 013A5141160F4E3C00FC11BE /* Default-568h@2x.png in Resources */, - 4C9C350717FA04D7004113FC /* Processes.png in Resources */, - 4C9C350817FA04D7004113FC /* Processes@2x.png in Resources */, 4C9C350317FA04D7004113FC /* Memory.png in Resources */, 4C9C350017FA04D7004113FC /* Disk@2x.png in Resources */, 4C9C350117FA04D7004113FC /* Hardware.png in Resources */, @@ -434,12 +421,10 @@ 4C44C5C717FC5491001E84DF /* SystemServices.m in Sources */, 4C44C5CE17FC5491001E84DF /* SSDiskInfo.m in Sources */, 4C44C5CF17FC5491001E84DF /* SSHardwareInfo.m in Sources */, - 4C67F74817FB0BD300089C23 /* DetailViewController.m in Sources */, 4CCC7651170E09A40057A8A3 /* SystemServicesDemoNetworkViewController.m in Sources */, 4C44C5CA17FC5491001E84DF /* SSAccessoryInfo.m in Sources */, 4CCC7654170E09C20057A8A3 /* SystemServicesDemoMemoryViewController.m in Sources */, 4CCC7657170E09CB0057A8A3 /* SystemServicesDemoDiskViewController.m in Sources */, - 4CCC765A170E09E10057A8A3 /* SystemServicesDemoProcessesViewController.m in Sources */, 4C44C5D217FC5491001E84DF /* SSMemoryInfo.m in Sources */, 4C3C924D1729AF0A00D88C01 /* PCPieChart.m in Sources */, 4C44C5D117FC5491001E84DF /* SSLocalizationInfo.m in Sources */, @@ -487,11 +472,19 @@ ALWAYS_SEARCH_USER_PATHS = NO; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -514,7 +507,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; }; @@ -526,11 +519,19 @@ ALWAYS_SEARCH_USER_PATHS = NO; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -545,7 +546,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 5.1; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; @@ -555,6 +556,7 @@ 01ADFA1216051BFE008B0A6B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + DEVELOPMENT_TEAM = Q2636DAEP4; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "SystemServicesDemo/SystemServicesDemo-Prefix.pch"; INFOPLIST_FILE = "SystemServicesDemo/SystemServicesDemo-Info.plist"; @@ -572,6 +574,7 @@ 01ADFA1316051BFE008B0A6B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + DEVELOPMENT_TEAM = Q2636DAEP4; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "SystemServicesDemo/SystemServicesDemo-Prefix.pch"; INFOPLIST_FILE = "SystemServicesDemo/SystemServicesDemo-Info.plist"; diff --git a/SystemServicesDemo/SystemServicesDemo.xcodeproj/project.xcworkspace/xcshareddata/SystemServicesDemo.xccheckout b/SystemServicesDemo/SystemServicesDemo.xcodeproj/project.xcworkspace/xcshareddata/SystemServicesDemo.xccheckout deleted file mode 100644 index 27f6e7d..0000000 --- a/SystemServicesDemo/SystemServicesDemo.xcodeproj/project.xcworkspace/xcshareddata/SystemServicesDemo.xccheckout +++ /dev/null @@ -1,41 +0,0 @@ - - - - - IDESourceControlProjectFavoriteDictionaryKey - - IDESourceControlProjectIdentifier - FC63221A-3753-4EDF-B683-5CE4C81A36F9 - IDESourceControlProjectName - SystemServicesDemo - IDESourceControlProjectOriginsDictionary - - 61970E288A198DF838C0CF33FD39CD74C0B09B92 - https://github.com/dimohamdy/iOS-System-Services.git - - IDESourceControlProjectPath - SystemServicesDemo/SystemServicesDemo.xcodeproj - IDESourceControlProjectRelativeInstallPathDictionary - - 61970E288A198DF838C0CF33FD39CD74C0B09B92 - ../../.. - - IDESourceControlProjectURL - https://github.com/dimohamdy/iOS-System-Services.git - IDESourceControlProjectVersion - 111 - IDESourceControlProjectWCCIdentifier - 61970E288A198DF838C0CF33FD39CD74C0B09B92 - IDESourceControlProjectWCConfigurations - - - IDESourceControlRepositoryExtensionIdentifierKey - public.vcs.git - IDESourceControlWCCIdentifierKey - 61970E288A198DF838C0CF33FD39CD74C0B09B92 - IDESourceControlWCCName - iOS-System-Services - - - - diff --git a/SystemServicesDemo/SystemServicesDemo.xcodeproj/project.xcworkspace/xcuserdata/kramer.xcuserdatad/UserInterfaceState.xcuserstate b/SystemServicesDemo/SystemServicesDemo.xcodeproj/project.xcworkspace/xcuserdata/kramer.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100755 index 1ef9a6b4263c2b7af33a36329041a5f5688cca8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135655 zcmdR12YeL8_uszP_Oe%!Yq=8XLP&3-LP!Cm6M8#Ca)d}4xr8dPPp~2g*g<+z={8UV ztf&+VU<0u$)m{E#e*GUE%}c zL*fhKOX4fyYvKg)7jcgGn>bJWL;On;BuP@FNE%2ZX(G*JI2l1kl1}m(@>;Sz*@28E zJCbo^8hIVriM)|aC%cl_WG}KeIfxug4k3q5oq43v>-O|_xgQthZ~srFO{Dw^s@-AHw&x=`s< zS1NB`*1^kjN51DQe0C}uR{Wo~A2nQ6?e%yec3Gn0`RU~Xe( zF|(Q5nLC(=n1`81m`9mK%wpy-<~imCW(TvId5L+Ad7XKS*~`4myu%z~4l^GyA2Y|8 zPnj>7ubAV^3FZv*9rFwGEAtm~j`^46SuGpJnpr#RVBKshwk_L{jb~HY8`;im2HS(} z#SUPHvcuR>Y#uw7En>^qiR>hHDl4(G*?ZWz?EUP+>=JeryN=z+ZsFhN5Auij5BZPy zPxxc}7yOs}xBPMbG=GNwk^hPRjsKnhi$BNzt0Gj4idCsq8kJrZrZTC_Dyzz-a;jXa zYg8>%ZB%Vl9aPb(I90qVS(T#dq`F?!MU}3~Qe~@dQuS2zRrOO1R1H!MQw>**R(Vx< zs(jTrRiUa_RiY|a`BjrtlU28>rmH}8o9YhLovJyidsXvQ3seuP9#Sn*Emkd4Emy5p ztx-LpdQ!DXwORGF>KWB`)$^*Is$HsARIjSuP`#Q~ios@?SDm9Cs2-{wrXHmptsbM!Qx~Ym zsf*Ob>Iv#{^+fd~^)&UZYDo?1+tqid?@`ZD->06hen9=8`cd^F^-}dR^(ysh_2cR% z)Em{C)K96OR&P^pSHGyL1j*tHAR{- z%>+%QW};@QW}0TEM$*jI+^)G>bB|`8=045+ng=wGXdcxp(Ja-h)U491(>$)(pxLO| zs(DKDoMxM5hvr4iOPZH8uWR;b_G4HX+PE;(|)S`Qu~$mxb}qhjP^V2Puicg zzia={p40xVBXp#W)p0tFPOA&ki8`|`TxZkSbuOJ-*Fx7)*H+g~7p?24i`OOSQgo@h z>vcEi(sf;R*}87Jp1NMTe!Bj;LAt@Z;kpqzukL1DzRssB)ZL;h(Ut1_x(eN7-4xw) z-3;Arx>>qAb$99R)y>r{&@I$Gq(N!@zgX5ALuGrDJW&+A^$ z?b7Ymy{dan_onVG-2vU(x`Vnyx({_9=|0gN(|w`)QunRyxbC#>jP6I>PrBc9zw7?e zozwj*5CS8xf?CiBdLc}32$6zQa0za~BSZ<;2pxqOAy$YJZV+x1ItyKdbfK$|A!G{u zg#N++Ax9V}3=#$lV}v{*U+@VNgmS?zR0x&AL}8LJS(q){F5Ds9DcmL8E!-nKBs?rU zB0MTA5*7=O2}^`0geQgd!UkcZuu0e~Y!O}*b_%lr<(=k&Z@rB~}U`Ut&6Z`IrMt@N$+ zZS-yRiTWgcvOYzhs!!8jr|+cirthxrp}$GrQ{PM9Ti-`NTt7lTQa?&RTJP20tk2aK z>r3>d`ZE2k`sw-^`kDGU`g`?r_4D+L^o#Y6>6hr2>X+%4>sRPE>Nn{(>v!m1)bG^q z((l#p)9=?G(7&yJNB^$=J^eBLr~1$Ir}by_-|5fl|I(k+{~e|ZQ-^87v|*MoYnUy} z9@aXnO<3Eoc40|j$zdsBsbQI6Sz*~>-NJIh28Im^8yq$!EH5lS%ojE`tRQS$SVdT6 z*u=2g!e)id4x1mgAZ%gS{b9?(mWQnfTN$<~Y;)L_uouI2hV2U58@4ZOf7nN1ABP_phfuv1~bhy4-uXV_Vh6*-X?Riar87bC=L#1>*pv6UDn#)}DJXR(WzF7_7t zh<(L=;z)6nI9l|I?<`Gy6C zC5EMjWrpR34Tg<|O@_^eErzXzrwmUUb{k$Yyli;I@T%c8!|R4UhJ%JfhQo&U4Idaj zG<;jk$qtRt_8$HG-W3;iOF~%5cyxw?&@kV23 zV^3o*V{c<0<8b2$<4EHuW1;aD<9K6{vDjE*EHzFu-fEm~oMXJ#c%N~;ae;B6aj9{c zak+7YaiejQakFuU@kQfK<1XV~<38hl;{oHx#v{g~#^c5l#*@ZV#@~&982>b$HL)hn z#G6zmvnkvZVX~O4CY#A_a+unf+M3##l1#~_6jQ1x)0Ab(Hgz*~H}x>xWa?=eVj5~1 zW*Tl9Ybr2}GgX)>O%qMGnP!=0n{GEPFfBCQZ+gJA+_b{9(zMC6*|f#9)wI*J%e33{ zl4-x`faz`15z|rAC#DmolcrOq)21_~?@ZsDelVRg{cSpL`p2v>Yt1^dV78gc)AoF1J5c5#;F!ONpSaX4SoVn0kX`X1FWS(W7 zZNA;Sz`W3Wzxe_4a`OuFO7kl7X7d*FR`XNlUFO~9m(2Uk2h4Aq-!UIGe_}pn{?vTR zeA;}*{GIuG^AF}9%|DsXoBuKY8?Fu4g$v>OaC^8TJTlxF-Y)#w@b=*y!c)W3!mkU@ z4(}G;J-kQwpzy)rL&ArK=ZE{k$A%Y#`@<{3E5j#--xfYAe0KQ!@CD%u!ZUj@$eJjC&N#L{~rEF_@5C>1RKFc z@DZj6b3}MVM8q`_Eh1V*w2Fv}h>u8!=p4}{B0ZvOM4yPh5&a@YMvRIW9pQ}_A5j!h z98nT6HDX%Ctr2%c+#PXG#6uAeM?4boXvCU`wGrzg9*=k?;@ODjB3_AjHR831*CXDG zI2ds#;&8<05nn`n8Sz!b4-r2`{1owX#6J=LS_lhi3A2b6gT-tKw?tX4v9z$nSYj=4 zmK!WLS~^?0SbAA{Tl!drTSiz$TE%d3`mEbm(0vmCR0YWd9ax#f)IJInW$A1voAe_PI5 z)mDvFYqeOdR-4ssZEbC1ZEJ03z1G^^+QAxaO|xES?PR^)+TGg2dXu%Mb%=GSb(qy> z9cwMHjZ-&SFhY+$?1HqUmSZNBX>+Y;MS+mp8S zwhgw8woSIpwk@`;ww<!|f4vi`{B(X>Vn3ZI8Dn*c0tZ_H=t!dxkyJ-p}6OKER%1_u6l^=i0~EOYEig zGW!Jkbo&hZOuJ;i*FM)i&%VgM*#4OPar+bYC++L)+w9xz&)Z+H@3FsOf75>0{=WSK z`-k?g>|fizv43m-)&86Pcl%lUUk=W}J5&y}Bis?;usB*cS~^-eT07z$364ZZk|W*G z)sf-o>*(j`?-=D6?eIEob`&{^9VL!Z$27;Sj_Hm$j(Lvz9P=Fu97`Na9m^cc9UB}Q z9h)34ICeN*bnJAz<=E@k=lIa^k>g{>5y!WVFmh02ZseHAyvWkXvd9UM(<5g@ z&Ww~I?~R-rIWKZi?0o18tJInII3vCabLIA@{r7Uy_pk+ax2!8y@6$vN41t5b5$cHZTj>zwDj&-tix zk#n*0G3OHJQs+wNTIV|Fv(D$7+nn2-&pTgm?r^^Be8u^O^Bw2A&i9-jJC8WeIKOj# z@BG2}qw^={&(2?*e>l%M|8@~B#-(!UTn3lXWpX)PE|=ToakX@{b+vOPxsqKeu2ff= z>pE8#SGp_P)yLJ>)z8)6HNZ98HNxd}<-2^Yv91zVsjJL2!By#+<(lof-F3HXp6fo> z!>&hMD_v_{>s;$y8(dplTV17MAGi)!i%>9-7xciLzJNNhQU)_JY&%6I||Lb8rYLCVf;jwtE9-GJR zad@IU*LYfZVmz^)I8VGM!IS98@MLEVlXM(5PQ#?~W(>%9&?(p2{xyy66XMtz2=P}O`&r;7a&vMTS z&w9@W&qmKC&vwuAo)3QP!x)C}&hu)HPA9quNBZkLnN=8x~R<3RS1hIqx6 zS?TH7Daom6(W$9PvC)ay8S&9wvy&5})6^6~z%+&o`q zX;c5GI3 zT3TvSbYg03d~|AjQgU=ca#mJ$Y+^!EVj>cfO(qZ+#=z3jqA|JUJ^X_U{e@$S(1@%x z*K)^nRa~-7o0gao-@y|fpD?|HXIflpYC;E3T1x!%=?4RfjV0n&5Dp|Q{Xrs;NFtJn zl;K#XB}iC9@sB<~Qhj=PdG3^z=!VpxeRBE+TB1Q6T}NaQt)C=15!Vwp5H}K?i7rGs z(Ur&`G9^(mNJhydnWb^dx!_t%yEEU&)TN)n0l?dJM?x zfXtL;0@)47?$XFnXmDBig%zdc>E*s$uPCD5bHXSRMupk$G>=h%@{eINN%`K_G zH~M?!PARRd@QTs0V1kyVkousC!lJ^8DKg0%)B>&;T=c%uAd%_w7Z#K# zD2$ZJWctQb78J;45rm4F75e-tSxN-rh-K8fG~egVK{CtFEzg%_EXx#MLLNC7_rCG(IhA9I(cQyC z9u!UJiA>+v+{&Vgz<9B+48gI7$kbDHTR)kkzXCbU0AE?T&yRk{tw8;CYH4FuUN~<3yX8h zr_{P6#Y=?LN=o{Gm_^J+3~ndxAnrs=W)SxfbBKG1xkFKpzbL=lS2DOP7yVr^B2T7U zQZaB!8RF>4uZmCUfwh2Ks6W;5Xb16xFVZK;Ev+l!jhVge~Y*rXBE9u>ag%u<Ql*4{`OuzEdz%ouuVc(o+3_3c9I;Qp@>iDSRWLcnPh)xV1;#T4* zuV~5~JTRz;pb}RSPs<~#>k@wQS>idb*!Duz)JRHcQ!9yWGP#SsUuoOVBkR5gEho(+ z=1K|3Boie9t9qBLY6&?*RqTI-c-1SmL7=K_LlN(k&bN|yO~!Pwx8q^&A>QzcEiQt? zO5#nK`o-KDOhS8!{Y2{(#6Bry1#v)1l}38SR@nQivO#?TC`jNv;*d<>pp>?PI4oT! zjU3n;IZE*AN5m(DaTW0~afCQ3b&{@^ZdgSeL!R-ObR%+va=F}Tr(lO-YlSZdC8?5v zz>k@Qs6Z$!$wlD-g}iX(y}lx}!syGt@bhlI(qdml`4p_LZ)AOaD|MD#6PINtiJ#=+ z=oE39I756#d{6v9{3vyi(xt9ahLkB~N!ja&pNU_HUy0w)|9=pFO5LRH(m1IE{a-4T zNh3$fsVFnIB3F)XBQT}_T2xfjXN_Lbpa>{^0#%hQ=mT|Ja|EwtO-7MaUR14#CL@B^ zkSn8ro>yAjF}JL&$cLS+qwH-+G*ts8X;MuX*N_a!k{rpCDyfHblhjk{CG}oIYDg`q zBLz|~^^y8YqomPNfvlD2Kp0G@a(_I;e&xQ2g{75##fKSkC5ybQj{7_MODoIse7#Wq z>gbotg^7W3p+g$*LsO7lS}1S1Fn(y|WfUi?{)lCh@HB-@Z}r9skQX~-x^!@NIQxtRQ$V zc{9;^`EqGwNGU_+k@<2dLl#KIQemL-D8hm&lm&H*bW3#|K^Dt(gfzb1vZ3x&A57|X z)EQneB{1raim~TZmX(#3S9HV@4N5|J&mnRO(%V#GCV4BdL7vu*$@Tk2pnuDKMW_m! z=tF68f`qd?Ig^wI^~piuX(c&RwjVSfCU28RH%szMdK9v!O^fZ|i49DzlH=v+RYKzQ z>FS`^?jq+BtyhzGllPEw$a|%U(j;lJG-Wk8kGzkZPcD$AN+8`M&5=e9?d2O=H4h0# zDYDvIs_X0FIFZSf`>+9p1>*uY2iZJAE|J+hN-iQ7laEQ$q+6xw(u~z;cGaC+PP9Zb zf%cMw<_5_59fMI4lKleBAbpeM+S@-Mchcb8qDnb4*_BtT;!{puX`uX7Tns#pWQ}G* zdF6#=XfB4Hk5Jqape`pD6&BnRMEvsV{6%gcH_4G{qjcK}aK9GRXWpOt1y zch*Fv?c@$cJb01ZDcvsJAq}Y(W{WQO2EqbL?tz?1zCymPcw`UxhIE&7w=|?irY*YM zfn!PVnf>J3GR_0iy(@_BNRV;_Mbiy`X^{^l&@+)b+v;d(&CV)-2MVEWTzz~8APLQV+&zvE@lkS%ukds{) zdMb1x)uPKV<>-GVf5A>1B=$S`XSE8>N)HFo{w7?36=VA}y7cNz0`b z(n@KSwEA(%Nx3LD<)NaeYp51fOKFYts&rC1CH)Je8pw7)Cdg{>;D~_4(6g|jWA$9V zWA!Yj{#&}{R^*M#MlBYk++bR+CJ+pr@^nf`xrg5$@SAJu;oKF?XUCV77M4^X=ZLK5 zrhv|nXV!DMS7`xyxW20c(e$TEom32!OtfB0#ZqxpJe5EtQc2QUX`S@A^n~=Jw0