From 754d5f1c5b14e2c1646988c6c06d2cf7aaef90c0 Mon Sep 17 00:00:00 2001 From: filmenczer Date: Tue, 24 Feb 2015 03:35:52 -0800 Subject: [PATCH 01/12] working on puuling API data --- DailyGood.xcodeproj/project.pbxproj | 82 +++++++ DailyGood/Base.lproj/Main.storyboard | 230 +++++++++--------- DailyGood/DailyGood-Bridging-Header.h | 5 + DailyGood/FeedViewController.swift | 214 ++++++++++++---- .../titlebackground.imageset/Contents.json | 21 ++ .../titlebackground.png | Bin 0 -> 4849 bytes DailyGood/Info.plist | 4 + DailyGood/VolCell.swift | 35 +++ DailyGood/dummy.m | 9 + 9 files changed, 444 insertions(+), 156 deletions(-) create mode 100644 DailyGood/DailyGood-Bridging-Header.h create mode 100644 DailyGood/Images.xcassets/titlebackground.imageset/Contents.json create mode 100644 DailyGood/Images.xcassets/titlebackground.imageset/titlebackground.png create mode 100644 DailyGood/VolCell.swift create mode 100644 DailyGood/dummy.m diff --git a/DailyGood.xcodeproj/project.pbxproj b/DailyGood.xcodeproj/project.pbxproj index 07d0a64..feecfa3 100644 --- a/DailyGood.xcodeproj/project.pbxproj +++ b/DailyGood.xcodeproj/project.pbxproj @@ -7,6 +7,10 @@ objects = { /* Begin PBXBuildFile section */ + 283825561A9BD2D7001EE5A2 /* VolCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 283825551A9BD2D7001EE5A2 /* VolCell.swift */; }; + 283825581A9C25EE001EE5A2 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 283825571A9C25EE001EE5A2 /* CoreLocation.framework */; }; + 2838255B1A9C859E001EE5A2 /* dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2838255A1A9C859E001EE5A2 /* dummy.m */; }; + 3E88E6229FBF0B8903BBE456 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C11E9154F5D331D4F6F5DF11 /* libPods.a */; }; B8C5B86B1A916D3C00A1909F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8C5B86A1A916D3C00A1909F /* AppDelegate.swift */; }; B8C5B86D1A916D3C00A1909F /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8C5B86C1A916D3C00A1909F /* ViewController.swift */; }; B8C5B8701A916D3C00A1909F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B8C5B86E1A916D3C00A1909F /* Main.storyboard */; }; @@ -31,6 +35,12 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 283825551A9BD2D7001EE5A2 /* VolCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VolCell.swift; sourceTree = ""; }; + 283825571A9C25EE001EE5A2 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; }; + 283825591A9C859E001EE5A2 /* DailyGood-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "DailyGood-Bridging-Header.h"; sourceTree = ""; }; + 2838255A1A9C859E001EE5A2 /* dummy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = dummy.m; sourceTree = ""; }; + 28B5FE79BB94E817DA54B43F /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.release.xcconfig; path = "Pods/Target Support Files/Pods/Pods.release.xcconfig"; sourceTree = ""; }; + 6E00CAA1119961FAE6D8ED6D /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = ""; }; B8C5B8651A916D3C00A1909F /* DailyGood.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DailyGood.app; sourceTree = BUILT_PRODUCTS_DIR; }; B8C5B8691A916D3C00A1909F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; B8C5B86A1A916D3C00A1909F /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -46,6 +56,7 @@ B8C5B88E1A9178DA00A1909F /* FeedDetail1ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedDetail1ViewController.swift; sourceTree = ""; }; B8DB0C3F1A92B67F007EFD14 /* ProfileViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProfileViewController.swift; sourceTree = ""; }; B8DB0C411A930484007EFD14 /* MoreViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MoreViewController.swift; sourceTree = ""; }; + C11E9154F5D331D4F6F5DF11 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -53,6 +64,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 283825581A9C25EE001EE5A2 /* CoreLocation.framework in Frameworks */, + 3E88E6229FBF0B8903BBE456 /* libPods.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -66,12 +79,32 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 06CC2096E4982442834A2A94 /* Frameworks */ = { + isa = PBXGroup; + children = ( + C11E9154F5D331D4F6F5DF11 /* libPods.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + 1CFC53D878C88ADE11854595 /* Pods */ = { + isa = PBXGroup; + children = ( + 6E00CAA1119961FAE6D8ED6D /* Pods.debug.xcconfig */, + 28B5FE79BB94E817DA54B43F /* Pods.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; B8C5B85C1A916D3C00A1909F = { isa = PBXGroup; children = ( + 283825571A9C25EE001EE5A2 /* CoreLocation.framework */, B8C5B8671A916D3C00A1909F /* DailyGood */, B8C5B87D1A916D3D00A1909F /* DailyGoodTests */, B8C5B8661A916D3C00A1909F /* Products */, + 1CFC53D878C88ADE11854595 /* Pods */, + 06CC2096E4982442834A2A94 /* Frameworks */, ); sourceTree = ""; }; @@ -98,6 +131,9 @@ B8C5B8711A916D3C00A1909F /* Images.xcassets */, B8C5B8731A916D3C00A1909F /* LaunchScreen.xib */, B8C5B8681A916D3C00A1909F /* Supporting Files */, + 283825551A9BD2D7001EE5A2 /* VolCell.swift */, + 2838255A1A9C859E001EE5A2 /* dummy.m */, + 283825591A9C859E001EE5A2 /* DailyGood-Bridging-Header.h */, ); path = DailyGood; sourceTree = ""; @@ -134,9 +170,11 @@ isa = PBXNativeTarget; buildConfigurationList = B8C5B8841A916D3D00A1909F /* Build configuration list for PBXNativeTarget "DailyGood" */; buildPhases = ( + 4279B2D0654C7F0B180AF2A1 /* Check Pods Manifest.lock */, B8C5B8611A916D3C00A1909F /* Sources */, B8C5B8621A916D3C00A1909F /* Frameworks */, B8C5B8631A916D3C00A1909F /* Resources */, + EB021932A7672E40A1BB30AF /* Copy Pods Resources */, ); buildRules = ( ); @@ -222,16 +260,51 @@ }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 4279B2D0654C7F0B180AF2A1 /* Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; + EB021932A7672E40A1BB30AF /* Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods/Pods-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ B8C5B8611A916D3C00A1909F /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( B8DB0C421A930484007EFD14 /* MoreViewController.swift in Sources */, + 283825561A9BD2D7001EE5A2 /* VolCell.swift in Sources */, B8DB0C401A92B67F007EFD14 /* ProfileViewController.swift in Sources */, B8C5B88D1A91738100A1909F /* Common.swift in Sources */, B8C5B86D1A916D3C00A1909F /* ViewController.swift in Sources */, B8C5B88F1A9178DA00A1909F /* FeedDetail1ViewController.swift in Sources */, + 2838255B1A9C859E001EE5A2 /* dummy.m in Sources */, B8C5B88B1A916DC500A1909F /* FeedViewController.swift in Sources */, B8C5B86B1A916D3C00A1909F /* AppDelegate.swift in Sources */, ); @@ -354,21 +427,30 @@ }; B8C5B8851A916D3D00A1909F /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 6E00CAA1119961FAE6D8ED6D /* Pods.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; INFOPLIST_FILE = DailyGood/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "DailyGood/DailyGood-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; }; name = Debug; }; B8C5B8861A916D3D00A1909F /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 28B5FE79BB94E817DA54B43F /* Pods.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; INFOPLIST_FILE = DailyGood/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "DailyGood/DailyGood-Bridging-Header.h"; }; name = Release; }; diff --git a/DailyGood/Base.lproj/Main.storyboard b/DailyGood/Base.lproj/Main.storyboard index 082f415..4fe10d4 100644 --- a/DailyGood/Base.lproj/Main.storyboard +++ b/DailyGood/Base.lproj/Main.storyboard @@ -1,6 +1,7 @@ - + + @@ -169,115 +170,122 @@ - + - + - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - + + + - + - + - - - - + - + @@ -392,7 +408,7 @@ - + @@ -410,7 +426,7 @@ - + @@ -466,7 +482,7 @@ - + @@ -477,20 +493,16 @@ - - + - - - diff --git a/DailyGood/DailyGood-Bridging-Header.h b/DailyGood/DailyGood-Bridging-Header.h new file mode 100644 index 0000000..7783373 --- /dev/null +++ b/DailyGood/DailyGood-Bridging-Header.h @@ -0,0 +1,5 @@ +// +// Use this file to import your target's public headers that you would like to expose to Swift. +// + +#import "UIImageView+AFNetworking.h" \ No newline at end of file diff --git a/DailyGood/FeedViewController.swift b/DailyGood/FeedViewController.swift index df5b579..1671936 100644 --- a/DailyGood/FeedViewController.swift +++ b/DailyGood/FeedViewController.swift @@ -7,40 +7,42 @@ // import UIKit +import CoreLocation -class FeedViewController: UIViewController { +class FeedViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, CLLocationManagerDelegate { + @IBOutlet weak var tableView: UITableView! + + var locationManager = CLLocationManager() + var myLocation: String! = "" + var opportunities: [NSDictionary]! = [] - @IBOutlet weak var scrollView: UIScrollView! - @IBOutlet weak var scrollView2: UIScrollView! @IBOutlet weak var btn_nearby: UIButton! @IBOutlet weak var btn_recent: UIButton! var isNearby: Bool = true var refreshControl: UIRefreshControl! - var refreshControl2: UIRefreshControl! override func viewDidLoad() { super.viewDidLoad() - - btn_nearby.alpha = 1 - btn_recent.alpha = 0.5 - scrollView.alpha = 1 - scrollView2.alpha = 0 - // Do any additional setup after loading the view. - refreshControl = UIRefreshControl() - refreshControl.addTarget(self, action: "onRefresh", forControlEvents: UIControlEvents.ValueChanged) - refreshControl2 = UIRefreshControl() - refreshControl2.addTarget(self, action: "onRefresh", forControlEvents: UIControlEvents.ValueChanged) + // needed for table view + tableView.delegate = self + tableView.dataSource = self + tableView.rowHeight = 400 + + // location stuff + // NB: the call to the API is made from setLocationInfo() when location is updated + locationManager.delegate = self + locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters + triggerLocationServices() - scrollView.insertSubview(refreshControl, atIndex: 0) - scrollView2.insertSubview(refreshControl2, atIndex: 0) + // NB: should make sure data is loaded from API again when refreshing.... + refreshControl = UIRefreshControl() + refreshControl.addTarget(self, action: "onRefresh", forControlEvents: UIControlEvents.ValueChanged) - scrollView.contentSize = CGSize(width: 320, height: 1284) - scrollView2.contentSize = CGSize(width: 320, height: 1325) } override func didReceiveMemoryWarning() { @@ -48,45 +50,163 @@ class FeedViewController: UIViewController { // Dispose of any resources that can be recreated. } - @IBAction func onTapNearbyBtn(sender: AnyObject) { - viewSwitchToNearby() + // for location stuff -- we only need access to location when app is in use + // note we also needed to add the NSLocationWhenInUseUsageDescription key-value in info.plist + func triggerLocationServices() { + if CLLocationManager.locationServicesEnabled() { + if self.locationManager.respondsToSelector("requestWhenInUseAuthorization") { + locationManager.requestWhenInUseAuthorization() + } else { + locationManager.startUpdatingLocation() + } + } else { + var alert = UIAlertView(title: "Location Error", message: "Location services desabled", delegate: self, cancelButtonTitle: "OK") + alert.show() + } } - - @IBAction func onTapRecentBtn(sender: AnyObject) { - viewSwitchToRecent() + func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) { + if status == .AuthorizedWhenInUse || status == .Authorized { + locationManager.startUpdatingLocation() + } + } + func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) { + var alert = UIAlertView(title: "Location Error", message: error.localizedDescription, delegate: self, cancelButtonTitle: "OK") + alert.show() + } + func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) { + CLGeocoder().reverseGeocodeLocation(manager.location, completionHandler: {(placemarks, error)->Void in + if (error != nil) { + var alert = UIAlertView(title: "Location Error", message: error.localizedDescription, delegate: self, cancelButtonTitle: "OK") + alert.show() + } else if placemarks.count > 0 { + let pm = placemarks[0] as CLPlacemark + self.useLocationInfo(pm) + } else { + var alert = UIAlertView(title: "Location Error", message: "No data received from geocoder", delegate: self, cancelButtonTitle: "OK") + alert.show() + } + }) + } + func useLocationInfo(placemark: CLPlacemark!) { + if placemark != nil { + //stop updating location to save battery life + locationManager.stopUpdatingLocation() + myLocation = placemark.subThoroughfare + " " + placemark.thoroughfare + ", " + placemark.locality + ", " + placemark.administrativeArea + // get data from API + getVolOpps(myLocation) + } } - - func delay(delay:Double, closure:()->()) { - dispatch_after( - dispatch_time( - DISPATCH_TIME_NOW, - Int64(delay * Double(NSEC_PER_SEC)) - ), - dispatch_get_main_queue(), closure) + // for table view + func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return opportunities.count + } + func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { + var cell = tableView.dequeueReusableCellWithIdentifier("VolCell") as VolCell + cell.volOppCharity.text = opportunities[indexPath.row]["sponsoringOrganizationName"] as? String + cell.volOppLocation.text = opportunities[indexPath.row]["location_name"] as? String + var tag = opportunities[indexPath.row]["categoryTags"] as [String] + if tag.count > 0 { + // cell.volOppTag.hidden = false + cell.volOppTag.text = tag[0] as String + } else { + cell.volOppTag.hidden = true + } + cell.volOppTitle.text = opportunities[indexPath.row]["title"] as? String + cell.volOppDescription.text = opportunities[indexPath.row]["description"] as? String + let startDate = opportunities[indexPath.row]["startDate"] as String + let when = startDate.componentsSeparatedByString(" ") + cell.volOppTime.text = when[0] + " at " + when[1] + + // for image we use flickr API... + var query: String + if tag.count > 0 { + let tags = tag[0].componentsSeparatedByString(" ") + query = "&tags=" + "%2C".join(tags) + } else if let charity = cell.volOppCharity.text { + let words = charity.componentsSeparatedByString(" ") + query = "&text=" + "%20".join(words) + } else { + return cell + } + var flickrUrl = "https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=fc0877fa484b0b38e2d299a5c491c764&tag_mode=any&license=7&safe_search=1&content_type=1&media=photos&format=json&nojsoncallback=1&sort=relevance&per_page=1" + flickrUrl += query + let request = NSURLRequest(URL: NSURL(string: flickrUrl)!) + NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) { (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in + if error == nil && data != nil { + var dictionary = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: nil) as NSDictionary + var results = dictionary["photos"] as NSDictionary + var picList = results["photo"] as [NSDictionary] + if picList.count > 0 { + var pic = picList[0] as NSDictionary + var picUrl: String = "https://farm" + (pic["farm"] as String) + picUrl += ".staticflickr.com/" + (pic["server"] as String) + picUrl += "/" + (pic["id"] as String) + picUrl += "_" + (pic["secret"] as String) + picUrl += "_n.jpg" + cell.volOppImage.setImageWithURL(NSURL(string: picUrl)) + } + } + } + + // would be nice to get/set these too... + // cell.volOppLogo = ..... + // cell.volOppSponsor = ..... + // cell.volOppWhoJoined = ..... + return cell } - func onRefresh() { - delay(0.5, closure: { + // for getting data from API + func getVolOpps(city: String) { + var urlNear = "http://api2.allforgood.org/api/volopps?key=YahooGood&output=json-hoc&merge=3&sort=geo_distance%20asc" + var urlSoon = "http://api2.allforgood.org/api/volopps?key=YahooGood&output=json-hoc&merge=3&sort=eventrangestart%20asc" + var url: String + if isNearby { + url = urlNear + } else { + url = urlSoon + } + if city.isEmpty == false { + // add location to query but escape spaces + url += "&vol_loc=" + city.stringByReplacingOccurrencesOfString(" ", withString: "+") + println(url) + } + let request = NSURLRequest(URL: NSURL(string: url)!) + NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) { (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in + + if error != nil || data == nil { + var alert = UIAlertView(title: "Error", message: error.localizedDescription, delegate: self, cancelButtonTitle: "OK") + alert.show() + } else { + var dictionary = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: nil) as NSDictionary + self.opportunities = dictionary["items"] as [NSDictionary] + } + + // be sure to load the table self.refreshControl.endRefreshing() - self.refreshControl2.endRefreshing() - }) + self.tableView.reloadData() + } } - func viewSwitchToNearby(){ - scrollView.alpha = 1 - scrollView2.alpha = 0 - btn_nearby.alpha = 1 - btn_recent.alpha = 0.5 - isNearby = false + @IBAction func onTapNearbyBtn(sender: AnyObject) { + isNearby = true + btn_nearby.enabled = false + btn_recent.enabled = true + triggerLocationServices() } - func viewSwitchToRecent(){ - scrollView.alpha = 0 - scrollView2.alpha = 1 - btn_nearby.alpha = 0.5 - btn_recent.alpha = 1 - isNearby = true + @IBAction func onTapRecentBtn(sender: AnyObject) { + isNearby = false + btn_nearby.enabled = true + btn_recent.enabled = false + triggerLocationServices() + } + + func onRefresh() { + triggerLocationServices() + // delay(0.5) { + // self.refreshControl.endRefreshing() + //} } diff --git a/DailyGood/Images.xcassets/titlebackground.imageset/Contents.json b/DailyGood/Images.xcassets/titlebackground.imageset/Contents.json new file mode 100644 index 0000000..0867e95 --- /dev/null +++ b/DailyGood/Images.xcassets/titlebackground.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "titlebackground.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/DailyGood/Images.xcassets/titlebackground.imageset/titlebackground.png b/DailyGood/Images.xcassets/titlebackground.imageset/titlebackground.png new file mode 100644 index 0000000000000000000000000000000000000000..44b48aa76e7e746215882c155a9cd213bbc76218 GIT binary patch literal 4849 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 literal 0 HcmV?d00001 diff --git a/DailyGood/Info.plist b/DailyGood/Info.plist index c3d53a5..5c19870 100644 --- a/DailyGood/Info.plist +++ b/DailyGood/Info.plist @@ -26,6 +26,10 @@ LaunchScreen UIMainStoryboardFile Main + NSLocationUsageDescription + Use location to find nearby volunteer opportunities + NSLocationWhenInUseUsageDescription + Use location to find nearby volunteer opportunities UIRequiredDeviceCapabilities armv7 diff --git a/DailyGood/VolCell.swift b/DailyGood/VolCell.swift new file mode 100644 index 0000000..56ec887 --- /dev/null +++ b/DailyGood/VolCell.swift @@ -0,0 +1,35 @@ +// +// VolCell.swift +// DailyGood +// +// Created by Filippo Menczer on 2/23/15. +// Copyright (c) 2015 kelly. All rights reserved. +// + +import UIKit + +class VolCell: UITableViewCell { + + @IBOutlet weak var volOppImage: UIImageView! + @IBOutlet weak var volOppLogo: UIImageView! + @IBOutlet weak var volOppCharity: UILabel! + @IBOutlet weak var volOppLocation: UILabel! + @IBOutlet weak var volOppTag: UILabel! + @IBOutlet weak var volOppTitle: UILabel! + @IBOutlet weak var volOppDescription: UILabel! + @IBOutlet weak var volOppSponsor: UILabel! + @IBOutlet weak var volOppTime: UILabel! + @IBOutlet weak var volOppWhoJoined: UILabel! + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + + override func setSelected(selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } + +} diff --git a/DailyGood/dummy.m b/DailyGood/dummy.m new file mode 100644 index 0000000..b44e0b5 --- /dev/null +++ b/DailyGood/dummy.m @@ -0,0 +1,9 @@ +// +// dummy.m +// DailyGood +// +// Created by Filippo Menczer on 2/24/15. +// Copyright (c) 2015 kelly. All rights reserved. +// + +#import From 40a34e3806dbca89cc551678eed1f655cdcf4e35 Mon Sep 17 00:00:00 2001 From: filmenczer Date: Tue, 24 Feb 2015 03:40:24 -0800 Subject: [PATCH 02/12] files for data feed --- .../UserInterfaceState.xcuserstate | Bin 0 -> 19098 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 5 + .../xcschemes/DailyGood.xcscheme | 110 + .../xcschemes/xcschememanagement.plist | 27 + .../contents.xcworkspacedata | 10 + .../UserInterfaceState.xcuserstate | Bin 0 -> 17573 bytes Podfile | 1 + .../AFNetworking/AFHTTPRequestOperation.h | 67 + .../AFNetworking/AFHTTPRequestOperation.m | 206 ++ .../AFHTTPRequestOperationManager.h | 316 +++ .../AFHTTPRequestOperationManager.m | 285 +++ .../AFNetworking/AFHTTPSessionManager.h | 248 +++ .../AFNetworking/AFHTTPSessionManager.m | 321 +++ .../AFNetworkReachabilityManager.h | 201 ++ .../AFNetworkReachabilityManager.m | 259 +++ Pods/AFNetworking/AFNetworking/AFNetworking.h | 44 + .../AFNetworking/AFSecurityPolicy.h | 143 ++ .../AFNetworking/AFSecurityPolicy.m | 317 +++ .../AFNetworking/AFURLConnectionOperation.h | 336 +++ .../AFNetworking/AFURLConnectionOperation.m | 789 +++++++ .../AFNetworking/AFURLRequestSerialization.h | 468 ++++ .../AFNetworking/AFURLRequestSerialization.m | 1344 ++++++++++++ .../AFNetworking/AFURLResponseSerialization.h | 310 +++ .../AFNetworking/AFURLResponseSerialization.m | 793 +++++++ .../AFNetworking/AFURLSessionManager.h | 539 +++++ .../AFNetworking/AFURLSessionManager.m | 1094 +++++++++ Pods/AFNetworking/LICENSE | 19 + Pods/AFNetworking/README.md | 387 ++++ .../AFNetworkActivityIndicatorManager.h | 76 + .../AFNetworkActivityIndicatorManager.m | 171 ++ .../UIActivityIndicatorView+AFNetworking.h | 64 + .../UIActivityIndicatorView+AFNetworking.m | 97 + .../UIAlertView+AFNetworking.h | 96 + .../UIAlertView+AFNetworking.m | 129 ++ .../UIButton+AFNetworking.h | 181 ++ .../UIButton+AFNetworking.m | 294 +++ .../UIImageView+AFNetworking.h | 143 ++ .../UIImageView+AFNetworking.m | 216 ++ .../UIKit+AFNetworking/UIKit+AFNetworking.h | 38 + .../UIProgressView+AFNetworking.h | 88 + .../UIProgressView+AFNetworking.m | 183 ++ .../UIRefreshControl+AFNetworking.h | 64 + .../UIRefreshControl+AFNetworking.m | 93 + .../UIWebView+AFNetworking.h | 83 + .../UIWebView+AFNetworking.m | 151 ++ .../AFNetworking/AFHTTPRequestOperation.h | 1 + .../AFHTTPRequestOperationManager.h | 1 + .../Build/AFNetworking/AFHTTPSessionManager.h | 1 + .../AFNetworkActivityIndicatorManager.h | 1 + .../AFNetworkReachabilityManager.h | 1 + .../Headers/Build/AFNetworking/AFNetworking.h | 1 + .../Build/AFNetworking/AFSecurityPolicy.h | 1 + .../AFNetworking/AFURLConnectionOperation.h | 1 + .../AFNetworking/AFURLRequestSerialization.h | 1 + .../AFNetworking/AFURLResponseSerialization.h | 1 + .../Build/AFNetworking/AFURLSessionManager.h | 1 + .../UIActivityIndicatorView+AFNetworking.h | 1 + .../AFNetworking/UIAlertView+AFNetworking.h | 1 + .../AFNetworking/UIButton+AFNetworking.h | 1 + .../AFNetworking/UIImageView+AFNetworking.h | 1 + .../Build/AFNetworking/UIKit+AFNetworking.h | 1 + .../UIProgressView+AFNetworking.h | 1 + .../UIRefreshControl+AFNetworking.h | 1 + .../AFNetworking/UIWebView+AFNetworking.h | 1 + .../AFNetworking/AFHTTPRequestOperation.h | 1 + .../AFHTTPRequestOperationManager.h | 1 + .../AFNetworking/AFHTTPSessionManager.h | 1 + .../AFNetworkActivityIndicatorManager.h | 1 + .../AFNetworkReachabilityManager.h | 1 + .../Public/AFNetworking/AFNetworking.h | 1 + .../Public/AFNetworking/AFSecurityPolicy.h | 1 + .../AFNetworking/AFURLConnectionOperation.h | 1 + .../AFNetworking/AFURLRequestSerialization.h | 1 + .../AFNetworking/AFURLResponseSerialization.h | 1 + .../Public/AFNetworking/AFURLSessionManager.h | 1 + .../UIActivityIndicatorView+AFNetworking.h | 1 + .../AFNetworking/UIAlertView+AFNetworking.h | 1 + .../AFNetworking/UIButton+AFNetworking.h | 1 + .../AFNetworking/UIImageView+AFNetworking.h | 1 + .../Public/AFNetworking/UIKit+AFNetworking.h | 1 + .../UIProgressView+AFNetworking.h | 1 + .../UIRefreshControl+AFNetworking.h | 1 + .../AFNetworking/UIWebView+AFNetworking.h | 1 + Pods/Manifest.lock | 30 + Pods/Pods.xcodeproj/project.pbxproj | 1950 +++++++++++++++++ .../xcschemes/Pods-AFNetworking.xcscheme | 59 + .../fil.xcuserdatad/xcschemes/Pods.xcscheme | 59 + .../xcschemes/xcschememanagement.plist | 32 + .../Pods-AFNetworking-Private.xcconfig | 5 + .../Pods-AFNetworking-dummy.m | 5 + .../Pods-AFNetworking-prefix.pch | 5 + .../Pods-AFNetworking.xcconfig | 1 + .../Pods/Pods-acknowledgements.markdown | 26 + .../Pods/Pods-acknowledgements.plist | 56 + Pods/Target Support Files/Pods/Pods-dummy.m | 5 + .../Pods/Pods-environment.h | 50 + .../Pods/Pods-resources.sh | 74 + .../Pods/Pods.debug.xcconfig | 6 + .../Pods/Pods.release.xcconfig | 6 + images/titlebackground.graffle | 287 +++ images/titlebackground.png | Bin 0 -> 4849 bytes 101 files changed, 13500 insertions(+) create mode 100644 DailyGood.xcodeproj/project.xcworkspace/xcuserdata/fil.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 DailyGood.xcodeproj/xcuserdata/fil.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 DailyGood.xcodeproj/xcuserdata/fil.xcuserdatad/xcschemes/DailyGood.xcscheme create mode 100644 DailyGood.xcodeproj/xcuserdata/fil.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 DailyGood.xcworkspace/contents.xcworkspacedata create mode 100644 DailyGood.xcworkspace/xcuserdata/fil.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 Podfile create mode 100644 Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h create mode 100644 Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m create mode 100644 Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.h create mode 100644 Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.m create mode 100644 Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h create mode 100644 Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m create mode 100644 Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.h create mode 100644 Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m create mode 100644 Pods/AFNetworking/AFNetworking/AFNetworking.h create mode 100644 Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h create mode 100644 Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m create mode 100644 Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h create mode 100644 Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m create mode 100644 Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h create mode 100644 Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m create mode 100644 Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h create mode 100644 Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m create mode 100644 Pods/AFNetworking/AFNetworking/AFURLSessionManager.h create mode 100644 Pods/AFNetworking/AFNetworking/AFURLSessionManager.m create mode 100644 Pods/AFNetworking/LICENSE create mode 100644 Pods/AFNetworking/README.md create mode 100644 Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h create mode 100644 Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m create mode 100644 Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h create mode 100644 Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m create mode 100644 Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.h create mode 100644 Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.m create mode 100644 Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h create mode 100644 Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m create mode 100644 Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h create mode 100644 Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m create mode 100644 Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h create mode 100644 Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h create mode 100644 Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.m create mode 100644 Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h create mode 100644 Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.m create mode 100644 Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h create mode 100644 Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m create mode 120000 Pods/Headers/Build/AFNetworking/AFHTTPRequestOperation.h create mode 120000 Pods/Headers/Build/AFNetworking/AFHTTPRequestOperationManager.h create mode 120000 Pods/Headers/Build/AFNetworking/AFHTTPSessionManager.h create mode 120000 Pods/Headers/Build/AFNetworking/AFNetworkActivityIndicatorManager.h create mode 120000 Pods/Headers/Build/AFNetworking/AFNetworkReachabilityManager.h create mode 120000 Pods/Headers/Build/AFNetworking/AFNetworking.h create mode 120000 Pods/Headers/Build/AFNetworking/AFSecurityPolicy.h create mode 120000 Pods/Headers/Build/AFNetworking/AFURLConnectionOperation.h create mode 120000 Pods/Headers/Build/AFNetworking/AFURLRequestSerialization.h create mode 120000 Pods/Headers/Build/AFNetworking/AFURLResponseSerialization.h create mode 120000 Pods/Headers/Build/AFNetworking/AFURLSessionManager.h create mode 120000 Pods/Headers/Build/AFNetworking/UIActivityIndicatorView+AFNetworking.h create mode 120000 Pods/Headers/Build/AFNetworking/UIAlertView+AFNetworking.h create mode 120000 Pods/Headers/Build/AFNetworking/UIButton+AFNetworking.h create mode 120000 Pods/Headers/Build/AFNetworking/UIImageView+AFNetworking.h create mode 120000 Pods/Headers/Build/AFNetworking/UIKit+AFNetworking.h create mode 120000 Pods/Headers/Build/AFNetworking/UIProgressView+AFNetworking.h create mode 120000 Pods/Headers/Build/AFNetworking/UIRefreshControl+AFNetworking.h create mode 120000 Pods/Headers/Build/AFNetworking/UIWebView+AFNetworking.h create mode 120000 Pods/Headers/Public/AFNetworking/AFHTTPRequestOperation.h create mode 120000 Pods/Headers/Public/AFNetworking/AFHTTPRequestOperationManager.h create mode 120000 Pods/Headers/Public/AFNetworking/AFHTTPSessionManager.h create mode 120000 Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h create mode 120000 Pods/Headers/Public/AFNetworking/AFNetworkReachabilityManager.h create mode 120000 Pods/Headers/Public/AFNetworking/AFNetworking.h create mode 120000 Pods/Headers/Public/AFNetworking/AFSecurityPolicy.h create mode 120000 Pods/Headers/Public/AFNetworking/AFURLConnectionOperation.h create mode 120000 Pods/Headers/Public/AFNetworking/AFURLRequestSerialization.h create mode 120000 Pods/Headers/Public/AFNetworking/AFURLResponseSerialization.h create mode 120000 Pods/Headers/Public/AFNetworking/AFURLSessionManager.h create mode 120000 Pods/Headers/Public/AFNetworking/UIActivityIndicatorView+AFNetworking.h create mode 120000 Pods/Headers/Public/AFNetworking/UIAlertView+AFNetworking.h create mode 120000 Pods/Headers/Public/AFNetworking/UIButton+AFNetworking.h create mode 120000 Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h create mode 120000 Pods/Headers/Public/AFNetworking/UIKit+AFNetworking.h create mode 120000 Pods/Headers/Public/AFNetworking/UIProgressView+AFNetworking.h create mode 120000 Pods/Headers/Public/AFNetworking/UIRefreshControl+AFNetworking.h create mode 120000 Pods/Headers/Public/AFNetworking/UIWebView+AFNetworking.h create mode 100644 Pods/Manifest.lock create mode 100644 Pods/Pods.xcodeproj/project.pbxproj create mode 100644 Pods/Pods.xcodeproj/xcuserdata/fil.xcuserdatad/xcschemes/Pods-AFNetworking.xcscheme create mode 100644 Pods/Pods.xcodeproj/xcuserdata/fil.xcuserdatad/xcschemes/Pods.xcscheme create mode 100644 Pods/Pods.xcodeproj/xcuserdata/fil.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 Pods/Target Support Files/Pods-AFNetworking/Pods-AFNetworking-Private.xcconfig create mode 100644 Pods/Target Support Files/Pods-AFNetworking/Pods-AFNetworking-dummy.m create mode 100644 Pods/Target Support Files/Pods-AFNetworking/Pods-AFNetworking-prefix.pch create mode 100644 Pods/Target Support Files/Pods-AFNetworking/Pods-AFNetworking.xcconfig create mode 100644 Pods/Target Support Files/Pods/Pods-acknowledgements.markdown create mode 100644 Pods/Target Support Files/Pods/Pods-acknowledgements.plist create mode 100644 Pods/Target Support Files/Pods/Pods-dummy.m create mode 100644 Pods/Target Support Files/Pods/Pods-environment.h create mode 100755 Pods/Target Support Files/Pods/Pods-resources.sh create mode 100644 Pods/Target Support Files/Pods/Pods.debug.xcconfig create mode 100644 Pods/Target Support Files/Pods/Pods.release.xcconfig create mode 100644 images/titlebackground.graffle create mode 100644 images/titlebackground.png diff --git a/DailyGood.xcodeproj/project.xcworkspace/xcuserdata/fil.xcuserdatad/UserInterfaceState.xcuserstate b/DailyGood.xcodeproj/project.xcworkspace/xcuserdata/fil.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..db044cf2341107d23ebc970d4646062d46d3e74e GIT binary patch literal 19098 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 + + diff --git a/DailyGood.xcodeproj/xcuserdata/fil.xcuserdatad/xcschemes/DailyGood.xcscheme b/DailyGood.xcodeproj/xcuserdata/fil.xcuserdatad/xcschemes/DailyGood.xcscheme new file mode 100644 index 0000000..d2595fc --- /dev/null +++ b/DailyGood.xcodeproj/xcuserdata/fil.xcuserdatad/xcschemes/DailyGood.xcscheme @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DailyGood.xcodeproj/xcuserdata/fil.xcuserdatad/xcschemes/xcschememanagement.plist b/DailyGood.xcodeproj/xcuserdata/fil.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..f03759a --- /dev/null +++ b/DailyGood.xcodeproj/xcuserdata/fil.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,27 @@ + + + + + SchemeUserState + + DailyGood.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + B8C5B8641A916D3C00A1909F + + primary + + + B8C5B8791A916D3D00A1909F + + primary + + + + + diff --git a/DailyGood.xcworkspace/contents.xcworkspacedata b/DailyGood.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..298452d --- /dev/null +++ b/DailyGood.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/DailyGood.xcworkspace/xcuserdata/fil.xcuserdatad/UserInterfaceState.xcuserstate b/DailyGood.xcworkspace/xcuserdata/fil.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..b9cb28bdf4ab4c75d53e946764facfe2aec49325 GIT binary patch literal 17573 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 literal 0 HcmV?d00001 diff --git a/Podfile b/Podfile new file mode 100644 index 0000000..f367fa6 --- /dev/null +++ b/Podfile @@ -0,0 +1 @@ +pod "AFNetworking" \ No newline at end of file diff --git a/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h b/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h new file mode 100644 index 0000000..c1e37f6 --- /dev/null +++ b/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h @@ -0,0 +1,67 @@ +// AFHTTPRequestOperation.h +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import +#import "AFURLConnectionOperation.h" + +/** + `AFHTTPRequestOperation` is a subclass of `AFURLConnectionOperation` for requests using the HTTP or HTTPS protocols. It encapsulates the concept of acceptable status codes and content types, which determine the success or failure of a request. + */ +@interface AFHTTPRequestOperation : AFURLConnectionOperation + +///------------------------------------------------ +/// @name Getting HTTP URL Connection Information +///------------------------------------------------ + +/** + The last HTTP response received by the operation's connection. + */ +@property (readonly, nonatomic, strong) NSHTTPURLResponse *response; + +/** + Responses sent from the server in data tasks created with `dataTaskWithRequest:success:failure:` and run using the `GET` / `POST` / et al. convenience methods are automatically validated and serialized by the response serializer. By default, this property is set to an AFHTTPResponse serializer, which uses the raw data as its response object. The serializer validates the status code to be in the `2XX` range, denoting success. If the response serializer generates an error in `-responseObjectForResponse:data:error:`, the `failure` callback of the session task or request operation will be executed; otherwise, the `success` callback will be executed. + + @warning `responseSerializer` must not be `nil`. Setting a response serializer will clear out any cached value + */ +@property (nonatomic, strong) AFHTTPResponseSerializer * responseSerializer; + +/** + An object constructed by the `responseSerializer` from the response and response data. Returns `nil` unless the operation `isFinished`, has a `response`, and has `responseData` with non-zero content length. If an error occurs during serialization, `nil` will be returned, and the `error` property will be populated with the serialization error. + */ +@property (readonly, nonatomic, strong) id responseObject; + +///----------------------------------------------------------- +/// @name Setting Completion Block Success / Failure Callbacks +///----------------------------------------------------------- + +/** + Sets the `completionBlock` property with a block that executes either the specified success or failure block, depending on the state of the request on completion. If `error` returns a value, which can be caused by an unacceptable status code or content type, then `failure` is executed. Otherwise, `success` is executed. + + This method should be overridden in subclasses in order to specify the response object passed into the success block. + + @param success The block to be executed on the completion of a successful request. This block has no return value and takes two arguments: the receiver operation and the object constructed from the response data of the request. + @param failure The block to be executed on the completion of an unsuccessful request. This block has no return value and takes two arguments: the receiver operation and the error that occurred during the request. + */ +- (void)setCompletionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +@end diff --git a/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m b/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m new file mode 100644 index 0000000..e536f5d --- /dev/null +++ b/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m @@ -0,0 +1,206 @@ +// AFHTTPRequestOperation.m +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import "AFHTTPRequestOperation.h" + +static dispatch_queue_t http_request_operation_processing_queue() { + static dispatch_queue_t af_http_request_operation_processing_queue; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + af_http_request_operation_processing_queue = dispatch_queue_create("com.alamofire.networking.http-request.processing", DISPATCH_QUEUE_CONCURRENT); + }); + + return af_http_request_operation_processing_queue; +} + +static dispatch_group_t http_request_operation_completion_group() { + static dispatch_group_t af_http_request_operation_completion_group; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + af_http_request_operation_completion_group = dispatch_group_create(); + }); + + return af_http_request_operation_completion_group; +} + +#pragma mark - + +@interface AFURLConnectionOperation () +@property (readwrite, nonatomic, strong) NSURLRequest *request; +@property (readwrite, nonatomic, strong) NSURLResponse *response; +@end + +@interface AFHTTPRequestOperation () +@property (readwrite, nonatomic, strong) NSHTTPURLResponse *response; +@property (readwrite, nonatomic, strong) id responseObject; +@property (readwrite, nonatomic, strong) NSError *responseSerializationError; +@property (readwrite, nonatomic, strong) NSRecursiveLock *lock; +@end + +@implementation AFHTTPRequestOperation +@dynamic lock; + +- (instancetype)initWithRequest:(NSURLRequest *)urlRequest { + self = [super initWithRequest:urlRequest]; + if (!self) { + return nil; + } + + self.responseSerializer = [AFHTTPResponseSerializer serializer]; + + return self; +} + +- (void)setResponseSerializer:(AFHTTPResponseSerializer *)responseSerializer { + NSParameterAssert(responseSerializer); + + [self.lock lock]; + _responseSerializer = responseSerializer; + self.responseObject = nil; + self.responseSerializationError = nil; + [self.lock unlock]; +} + +- (id)responseObject { + [self.lock lock]; + if (!_responseObject && [self isFinished] && !self.error) { + NSError *error = nil; + self.responseObject = [self.responseSerializer responseObjectForResponse:self.response data:self.responseData error:&error]; + if (error) { + self.responseSerializationError = error; + } + } + [self.lock unlock]; + + return _responseObject; +} + +- (NSError *)error { + if (_responseSerializationError) { + return _responseSerializationError; + } else { + return [super error]; + } +} + +#pragma mark - AFHTTPRequestOperation + +- (void)setCompletionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + // completionBlock is manually nilled out in AFURLConnectionOperation to break the retain cycle. +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warc-retain-cycles" +#pragma clang diagnostic ignored "-Wgnu" + self.completionBlock = ^{ + if (self.completionGroup) { + dispatch_group_enter(self.completionGroup); + } + + dispatch_async(http_request_operation_processing_queue(), ^{ + if (self.error) { + if (failure) { + dispatch_group_async(self.completionGroup ?: http_request_operation_completion_group(), self.completionQueue ?: dispatch_get_main_queue(), ^{ + failure(self, self.error); + }); + } + } else { + id responseObject = self.responseObject; + if (self.error) { + if (failure) { + dispatch_group_async(self.completionGroup ?: http_request_operation_completion_group(), self.completionQueue ?: dispatch_get_main_queue(), ^{ + failure(self, self.error); + }); + } + } else { + if (success) { + dispatch_group_async(self.completionGroup ?: http_request_operation_completion_group(), self.completionQueue ?: dispatch_get_main_queue(), ^{ + success(self, responseObject); + }); + } + } + } + + if (self.completionGroup) { + dispatch_group_leave(self.completionGroup); + } + }); + }; +#pragma clang diagnostic pop +} + +#pragma mark - AFURLRequestOperation + +- (void)pause { + [super pause]; + + u_int64_t offset = 0; + if ([self.outputStream propertyForKey:NSStreamFileCurrentOffsetKey]) { + offset = [(NSNumber *)[self.outputStream propertyForKey:NSStreamFileCurrentOffsetKey] unsignedLongLongValue]; + } else { + offset = [(NSData *)[self.outputStream propertyForKey:NSStreamDataWrittenToMemoryStreamKey] length]; + } + + NSMutableURLRequest *mutableURLRequest = [self.request mutableCopy]; + if ([self.response respondsToSelector:@selector(allHeaderFields)] && [[self.response allHeaderFields] valueForKey:@"ETag"]) { + [mutableURLRequest setValue:[[self.response allHeaderFields] valueForKey:@"ETag"] forHTTPHeaderField:@"If-Range"]; + } + [mutableURLRequest setValue:[NSString stringWithFormat:@"bytes=%llu-", offset] forHTTPHeaderField:@"Range"]; + self.request = mutableURLRequest; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (!self) { + return nil; + } + + self.responseSerializer = [decoder decodeObjectOfClass:[AFHTTPResponseSerializer class] forKey:NSStringFromSelector(@selector(responseSerializer))]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [super encodeWithCoder:coder]; + + [coder encodeObject:self.responseSerializer forKey:NSStringFromSelector(@selector(responseSerializer))]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFHTTPRequestOperation *operation = [super copyWithZone:zone]; + + operation.responseSerializer = [self.responseSerializer copyWithZone:zone]; + operation.completionQueue = self.completionQueue; + operation.completionGroup = self.completionGroup; + + return operation; +} + +@end diff --git a/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.h b/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.h new file mode 100644 index 0000000..a92c6e5 --- /dev/null +++ b/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.h @@ -0,0 +1,316 @@ +// AFHTTPRequestOperationManager.h +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import +#import +#import + +#if __IPHONE_OS_VERSION_MIN_REQUIRED +#import +#else +#import +#endif + +#import "AFHTTPRequestOperation.h" +#import "AFURLResponseSerialization.h" +#import "AFURLRequestSerialization.h" +#import "AFSecurityPolicy.h" +#import "AFNetworkReachabilityManager.h" + +#ifndef NS_DESIGNATED_INITIALIZER +#if __has_attribute(objc_designated_initializer) +#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +#else +#define NS_DESIGNATED_INITIALIZER +#endif +#endif + +/** + `AFHTTPRequestOperationManager` encapsulates the common patterns of communicating with a web application over HTTP, including request creation, response serialization, network reachability monitoring, and security, as well as request operation management. + + ## Subclassing Notes + + Developers targeting iOS 7 or Mac OS X 10.9 or later that deal extensively with a web service are encouraged to subclass `AFHTTPSessionManager`, providing a class method that returns a shared singleton object on which authentication and other configuration can be shared across the application. + + For developers targeting iOS 6 or Mac OS X 10.8 or earlier, `AFHTTPRequestOperationManager` may be used to similar effect. + + ## Methods to Override + + To change the behavior of all request operation construction for an `AFHTTPRequestOperationManager` subclass, override `HTTPRequestOperationWithRequest:success:failure`. + + ## Serialization + + Requests created by an HTTP client will contain default headers and encode parameters according to the `requestSerializer` property, which is an object conforming to ``. + + Responses received from the server are automatically validated and serialized by the `responseSerializers` property, which is an object conforming to `` + + ## URL Construction Using Relative Paths + + For HTTP convenience methods, the request serializer constructs URLs from the path relative to the `-baseURL`, using `NSURL +URLWithString:relativeToURL:`, when provided. If `baseURL` is `nil`, `path` needs to resolve to a valid `NSURL` object using `NSURL +URLWithString:`. + + Below are a few examples of how `baseURL` and relative paths interact: + + NSURL *baseURL = [NSURL URLWithString:@"http://example.com/v1/"]; + [NSURL URLWithString:@"foo" relativeToURL:baseURL]; // http://example.com/v1/foo + [NSURL URLWithString:@"foo?bar=baz" relativeToURL:baseURL]; // http://example.com/v1/foo?bar=baz + [NSURL URLWithString:@"/foo" relativeToURL:baseURL]; // http://example.com/foo + [NSURL URLWithString:@"foo/" relativeToURL:baseURL]; // http://example.com/v1/foo + [NSURL URLWithString:@"/foo/" relativeToURL:baseURL]; // http://example.com/foo/ + [NSURL URLWithString:@"http://example2.com/" relativeToURL:baseURL]; // http://example2.com/ + + Also important to note is that a trailing slash will be added to any `baseURL` without one. This would otherwise cause unexpected behavior when constructing URLs using paths without a leading slash. + + ## Network Reachability Monitoring + + Network reachability status and change monitoring is available through the `reachabilityManager` property. Applications may choose to monitor network reachability conditions in order to prevent or suspend any outbound requests. See `AFNetworkReachabilityManager` for more details. + + ## NSSecureCoding & NSCopying Caveats + + `AFHTTPRequestOperationManager` conforms to the `NSSecureCoding` and `NSCopying` protocols, allowing operations to be archived to disk, and copied in memory, respectively. There are a few minor caveats to keep in mind, however: + + - Archives and copies of HTTP clients will be initialized with an empty operation queue. + - NSSecureCoding cannot serialize / deserialize block properties, so an archive of an HTTP client will not include any reachability callback block that may be set. + */ +@interface AFHTTPRequestOperationManager : NSObject + +/** + The URL used to monitor reachability, and construct requests from relative paths in methods like `requestWithMethod:URLString:parameters:`, and the `GET` / `POST` / et al. convenience methods. + */ +@property (readonly, nonatomic, strong) NSURL *baseURL; + +/** + Requests created with `requestWithMethod:URLString:parameters:` & `multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:` are constructed with a set of default headers using a parameter serialization specified by this property. By default, this is set to an instance of `AFHTTPRequestSerializer`, which serializes query string parameters for `GET`, `HEAD`, and `DELETE` requests, or otherwise URL-form-encodes HTTP message bodies. + + @warning `requestSerializer` must not be `nil`. + */ +@property (nonatomic, strong) AFHTTPRequestSerializer * requestSerializer; + +/** + Responses sent from the server in data tasks created with `dataTaskWithRequest:success:failure:` and run using the `GET` / `POST` / et al. convenience methods are automatically validated and serialized by the response serializer. By default, this property is set to a JSON serializer, which serializes data from responses with a `application/json` MIME type, and falls back to the raw data object. The serializer validates the status code to be in the `2XX` range, denoting success. If the response serializer generates an error in `-responseObjectForResponse:data:error:`, the `failure` callback of the session task or request operation will be executed; otherwise, the `success` callback will be executed. + + @warning `responseSerializer` must not be `nil`. + */ +@property (nonatomic, strong) AFHTTPResponseSerializer * responseSerializer; + +/** + The operation queue on which request operations are scheduled and run. + */ +@property (nonatomic, strong) NSOperationQueue *operationQueue; + +///------------------------------- +/// @name Managing URL Credentials +///------------------------------- + +/** + Whether request operations should consult the credential storage for authenticating the connection. `YES` by default. + + @see AFURLConnectionOperation -shouldUseCredentialStorage + */ +@property (nonatomic, assign) BOOL shouldUseCredentialStorage; + +/** + The credential used by request operations for authentication challenges. + + @see AFURLConnectionOperation -credential + */ +@property (nonatomic, strong) NSURLCredential *credential; + +///------------------------------- +/// @name Managing Security Policy +///------------------------------- + +/** + The security policy used by created request operations to evaluate server trust for secure connections. `AFHTTPRequestOperationManager` uses the `defaultPolicy` unless otherwise specified. + */ +@property (nonatomic, strong) AFSecurityPolicy *securityPolicy; + +///------------------------------------ +/// @name Managing Network Reachability +///------------------------------------ + +/** + The network reachability manager. `AFHTTPRequestOperationManager` uses the `sharedManager` by default. + */ +@property (readwrite, nonatomic, strong) AFNetworkReachabilityManager *reachabilityManager; + +///------------------------------- +/// @name Managing Callback Queues +///------------------------------- + +/** + The dispatch queue for the `completionBlock` of request operations. If `NULL` (default), the main queue is used. + */ +@property (nonatomic, strong) dispatch_queue_t completionQueue; + +/** + The dispatch group for the `completionBlock` of request operations. If `NULL` (default), a private dispatch group is used. + */ +@property (nonatomic, strong) dispatch_group_t completionGroup; + +///--------------------------------------------- +/// @name Creating and Initializing HTTP Clients +///--------------------------------------------- + +/** + Creates and returns an `AFHTTPRequestOperationManager` object. + */ ++ (instancetype)manager; + +/** + Initializes an `AFHTTPRequestOperationManager` object with the specified base URL. + + This is the designated initializer. + + @param url The base URL for the HTTP client. + + @return The newly-initialized HTTP client + */ +- (instancetype)initWithBaseURL:(NSURL *)url NS_DESIGNATED_INITIALIZER; + +///--------------------------------------- +/// @name Managing HTTP Request Operations +///--------------------------------------- + +/** + Creates an `AFHTTPRequestOperation`, and sets the response serializers to that of the HTTP client. + + @param request The request object to be loaded asynchronously during execution of the operation. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the created request operation and the object created from the response data of request. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes two arguments:, the created request operation and the `NSError` object describing the network or parsing error that occurred. + */ +- (AFHTTPRequestOperation *)HTTPRequestOperationWithRequest:(NSURLRequest *)request + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +///--------------------------- +/// @name Making HTTP Requests +///--------------------------- + +/** + Creates and runs an `AFHTTPRequestOperation` with a `GET` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the request operation, and the response object created by the client response serializer. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (AFHTTPRequestOperation *)GET:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +/** + Creates and runs an `AFHTTPRequestOperation` with a `HEAD` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes a single arguments: the request operation. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (AFHTTPRequestOperation *)HEAD:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +/** + Creates and runs an `AFHTTPRequestOperation` with a `POST` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the request operation, and the response object created by the client response serializer. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (AFHTTPRequestOperation *)POST:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +/** + Creates and runs an `AFHTTPRequestOperation` with a multipart `POST` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param block A block that takes a single argument and appends data to the HTTP body. The block argument is an object adopting the `AFMultipartFormData` protocol. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the request operation, and the response object created by the client response serializer. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (AFHTTPRequestOperation *)POST:(NSString *)URLString + parameters:(id)parameters + constructingBodyWithBlock:(void (^)(id formData))block + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +/** + Creates and runs an `AFHTTPRequestOperation` with a `PUT` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the request operation, and the response object created by the client response serializer. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (AFHTTPRequestOperation *)PUT:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +/** + Creates and runs an `AFHTTPRequestOperation` with a `PATCH` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the request operation, and the response object created by the client response serializer. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (AFHTTPRequestOperation *)PATCH:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +/** + Creates and runs an `AFHTTPRequestOperation` with a `DELETE` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the request operation, and the response object created by the client response serializer. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (AFHTTPRequestOperation *)DELETE:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +@end + diff --git a/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.m b/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.m new file mode 100644 index 0000000..665111f --- /dev/null +++ b/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.m @@ -0,0 +1,285 @@ +// AFHTTPRequestOperationManager.m +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import + +#import "AFHTTPRequestOperationManager.h" +#import "AFHTTPRequestOperation.h" + +#import +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +#import +#endif + +@interface AFHTTPRequestOperationManager () +@property (readwrite, nonatomic, strong) NSURL *baseURL; +@end + +@implementation AFHTTPRequestOperationManager + ++ (instancetype)manager { + return [[self alloc] initWithBaseURL:nil]; +} + +- (instancetype)init { + return [self initWithBaseURL:nil]; +} + +- (instancetype)initWithBaseURL:(NSURL *)url { + self = [super init]; + if (!self) { + return nil; + } + + // Ensure terminal slash for baseURL path, so that NSURL +URLWithString:relativeToURL: works as expected + if ([[url path] length] > 0 && ![[url absoluteString] hasSuffix:@"/"]) { + url = [url URLByAppendingPathComponent:@""]; + } + + self.baseURL = url; + + self.requestSerializer = [AFHTTPRequestSerializer serializer]; + self.responseSerializer = [AFJSONResponseSerializer serializer]; + + self.securityPolicy = [AFSecurityPolicy defaultPolicy]; + + self.reachabilityManager = [AFNetworkReachabilityManager sharedManager]; + + self.operationQueue = [[NSOperationQueue alloc] init]; + + self.shouldUseCredentialStorage = YES; + + return self; +} + +#pragma mark - + +#ifdef _SYSTEMCONFIGURATION_H +#endif + +- (void)setRequestSerializer:(AFHTTPRequestSerializer *)requestSerializer { + NSParameterAssert(requestSerializer); + + _requestSerializer = requestSerializer; +} + +- (void)setResponseSerializer:(AFHTTPResponseSerializer *)responseSerializer { + NSParameterAssert(responseSerializer); + + _responseSerializer = responseSerializer; +} + +#pragma mark - + +- (AFHTTPRequestOperation *)HTTPRequestOperationWithHTTPMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + NSError *serializationError = nil; + NSMutableURLRequest *request = [self.requestSerializer requestWithMethod:method URLString:[[NSURL URLWithString:URLString relativeToURL:self.baseURL] absoluteString] parameters:parameters error:&serializationError]; + if (serializationError) { + if (failure) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + dispatch_async(self.completionQueue ?: dispatch_get_main_queue(), ^{ + failure(nil, serializationError); + }); +#pragma clang diagnostic pop + } + + return nil; + } + + return [self HTTPRequestOperationWithRequest:request success:success failure:failure]; +} + +- (AFHTTPRequestOperation *)HTTPRequestOperationWithRequest:(NSURLRequest *)request + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; + operation.responseSerializer = self.responseSerializer; + operation.shouldUseCredentialStorage = self.shouldUseCredentialStorage; + operation.credential = self.credential; + operation.securityPolicy = self.securityPolicy; + + [operation setCompletionBlockWithSuccess:success failure:failure]; + operation.completionQueue = self.completionQueue; + operation.completionGroup = self.completionGroup; + + return operation; +} + +#pragma mark - + +- (AFHTTPRequestOperation *)GET:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithHTTPMethod:@"GET" URLString:URLString parameters:parameters success:success failure:failure]; + + [self.operationQueue addOperation:operation]; + + return operation; +} + +- (AFHTTPRequestOperation *)HEAD:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithHTTPMethod:@"HEAD" URLString:URLString parameters:parameters success:^(AFHTTPRequestOperation *requestOperation, __unused id responseObject) { + if (success) { + success(requestOperation); + } + } failure:failure]; + + [self.operationQueue addOperation:operation]; + + return operation; +} + +- (AFHTTPRequestOperation *)POST:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithHTTPMethod:@"POST" URLString:URLString parameters:parameters success:success failure:failure]; + + [self.operationQueue addOperation:operation]; + + return operation; +} + +- (AFHTTPRequestOperation *)POST:(NSString *)URLString + parameters:(id)parameters + constructingBodyWithBlock:(void (^)(id formData))block + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + NSError *serializationError = nil; + NSMutableURLRequest *request = [self.requestSerializer multipartFormRequestWithMethod:@"POST" URLString:[[NSURL URLWithString:URLString relativeToURL:self.baseURL] absoluteString] parameters:parameters constructingBodyWithBlock:block error:&serializationError]; + if (serializationError) { + if (failure) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + dispatch_async(self.completionQueue ?: dispatch_get_main_queue(), ^{ + failure(nil, serializationError); + }); +#pragma clang diagnostic pop + } + + return nil; + } + + AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:success failure:failure]; + + [self.operationQueue addOperation:operation]; + + return operation; +} + +- (AFHTTPRequestOperation *)PUT:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithHTTPMethod:@"PUT" URLString:URLString parameters:parameters success:success failure:failure]; + + [self.operationQueue addOperation:operation]; + + return operation; +} + +- (AFHTTPRequestOperation *)PATCH:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithHTTPMethod:@"PATCH" URLString:URLString parameters:parameters success:success failure:failure]; + + [self.operationQueue addOperation:operation]; + + return operation; +} + +- (AFHTTPRequestOperation *)DELETE:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithHTTPMethod:@"DELETE" URLString:URLString parameters:parameters success:success failure:failure]; + + [self.operationQueue addOperation:operation]; + + return operation; +} + +#pragma mark - NSObject + +- (NSString *)description { + return [NSString stringWithFormat:@"<%@: %p, baseURL: %@, operationQueue: %@>", NSStringFromClass([self class]), self, [self.baseURL absoluteString], self.operationQueue]; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder { + NSURL *baseURL = [decoder decodeObjectForKey:NSStringFromSelector(@selector(baseURL))]; + + self = [self initWithBaseURL:baseURL]; + if (!self) { + return nil; + } + + self.requestSerializer = [decoder decodeObjectOfClass:[AFHTTPRequestSerializer class] forKey:NSStringFromSelector(@selector(requestSerializer))]; + self.responseSerializer = [decoder decodeObjectOfClass:[AFHTTPResponseSerializer class] forKey:NSStringFromSelector(@selector(responseSerializer))]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [coder encodeObject:self.baseURL forKey:NSStringFromSelector(@selector(baseURL))]; + [coder encodeObject:self.requestSerializer forKey:NSStringFromSelector(@selector(requestSerializer))]; + [coder encodeObject:self.responseSerializer forKey:NSStringFromSelector(@selector(responseSerializer))]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFHTTPRequestOperationManager *HTTPClient = [[[self class] allocWithZone:zone] initWithBaseURL:self.baseURL]; + + HTTPClient.requestSerializer = [self.requestSerializer copyWithZone:zone]; + HTTPClient.responseSerializer = [self.responseSerializer copyWithZone:zone]; + + return HTTPClient; +} + +@end diff --git a/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h b/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h new file mode 100644 index 0000000..e77da03 --- /dev/null +++ b/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h @@ -0,0 +1,248 @@ +// AFHTTPSessionManager.h +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import +#import +#import + +#if __IPHONE_OS_VERSION_MIN_REQUIRED +#import +#else +#import +#endif + +#import "AFURLSessionManager.h" + +#ifndef NS_DESIGNATED_INITIALIZER +#if __has_attribute(objc_designated_initializer) +#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +#else +#define NS_DESIGNATED_INITIALIZER +#endif +#endif + +/** + `AFHTTPSessionManager` is a subclass of `AFURLSessionManager` with convenience methods for making HTTP requests. When a `baseURL` is provided, requests made with the `GET` / `POST` / et al. convenience methods can be made with relative paths. + + ## Subclassing Notes + + Developers targeting iOS 7 or Mac OS X 10.9 or later that deal extensively with a web service are encouraged to subclass `AFHTTPSessionManager`, providing a class method that returns a shared singleton object on which authentication and other configuration can be shared across the application. + + For developers targeting iOS 6 or Mac OS X 10.8 or earlier, `AFHTTPRequestOperationManager` may be used to similar effect. + + ## Methods to Override + + To change the behavior of all data task operation construction, which is also used in the `GET` / `POST` / et al. convenience methods, override `dataTaskWithRequest:completionHandler:`. + + ## Serialization + + Requests created by an HTTP client will contain default headers and encode parameters according to the `requestSerializer` property, which is an object conforming to ``. + + Responses received from the server are automatically validated and serialized by the `responseSerializers` property, which is an object conforming to `` + + ## URL Construction Using Relative Paths + + For HTTP convenience methods, the request serializer constructs URLs from the path relative to the `-baseURL`, using `NSURL +URLWithString:relativeToURL:`, when provided. If `baseURL` is `nil`, `path` needs to resolve to a valid `NSURL` object using `NSURL +URLWithString:`. + + Below are a few examples of how `baseURL` and relative paths interact: + + NSURL *baseURL = [NSURL URLWithString:@"http://example.com/v1/"]; + [NSURL URLWithString:@"foo" relativeToURL:baseURL]; // http://example.com/v1/foo + [NSURL URLWithString:@"foo?bar=baz" relativeToURL:baseURL]; // http://example.com/v1/foo?bar=baz + [NSURL URLWithString:@"/foo" relativeToURL:baseURL]; // http://example.com/foo + [NSURL URLWithString:@"foo/" relativeToURL:baseURL]; // http://example.com/v1/foo + [NSURL URLWithString:@"/foo/" relativeToURL:baseURL]; // http://example.com/foo/ + [NSURL URLWithString:@"http://example2.com/" relativeToURL:baseURL]; // http://example2.com/ + + Also important to note is that a trailing slash will be added to any `baseURL` without one. This would otherwise cause unexpected behavior when constructing URLs using paths without a leading slash. + + @warning Managers for background sessions must be owned for the duration of their use. This can be accomplished by creating an application-wide or shared singleton instance. + */ + +#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000) || (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1090) + +@interface AFHTTPSessionManager : AFURLSessionManager + +/** + The URL used to monitor reachability, and construct requests from relative paths in methods like `requestWithMethod:URLString:parameters:`, and the `GET` / `POST` / et al. convenience methods. + */ +@property (readonly, nonatomic, strong) NSURL *baseURL; + +/** + Requests created with `requestWithMethod:URLString:parameters:` & `multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:` are constructed with a set of default headers using a parameter serialization specified by this property. By default, this is set to an instance of `AFHTTPRequestSerializer`, which serializes query string parameters for `GET`, `HEAD`, and `DELETE` requests, or otherwise URL-form-encodes HTTP message bodies. + + @warning `requestSerializer` must not be `nil`. + */ +@property (nonatomic, strong) AFHTTPRequestSerializer * requestSerializer; + +/** + Responses sent from the server in data tasks created with `dataTaskWithRequest:success:failure:` and run using the `GET` / `POST` / et al. convenience methods are automatically validated and serialized by the response serializer. By default, this property is set to an instance of `AFJSONResponseSerializer`. + + @warning `responseSerializer` must not be `nil`. + */ +@property (nonatomic, strong) AFHTTPResponseSerializer * responseSerializer; + +///--------------------- +/// @name Initialization +///--------------------- + +/** + Creates and returns an `AFHTTPSessionManager` object. + */ ++ (instancetype)manager; + +/** + Initializes an `AFHTTPSessionManager` object with the specified base URL. + + @param url The base URL for the HTTP client. + + @return The newly-initialized HTTP client + */ +- (instancetype)initWithBaseURL:(NSURL *)url; + +/** + Initializes an `AFHTTPSessionManager` object with the specified base URL. + + This is the designated initializer. + + @param url The base URL for the HTTP client. + @param configuration The configuration used to create the managed session. + + @return The newly-initialized HTTP client + */ +- (instancetype)initWithBaseURL:(NSURL *)url + sessionConfiguration:(NSURLSessionConfiguration *)configuration NS_DESIGNATED_INITIALIZER; + +///--------------------------- +/// @name Making HTTP Requests +///--------------------------- + +/** + Creates and runs an `NSURLSessionDataTask` with a `GET` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. + @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. + + @see -dataTaskWithRequest:completionHandler: + */ +- (NSURLSessionDataTask *)GET:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure; + +/** + Creates and runs an `NSURLSessionDataTask` with a `HEAD` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the task finishes successfully. This block has no return value and takes a single arguments: the data task. + @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. + + @see -dataTaskWithRequest:completionHandler: + */ +- (NSURLSessionDataTask *)HEAD:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *task))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure; + +/** + Creates and runs an `NSURLSessionDataTask` with a `POST` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. + @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. + + @see -dataTaskWithRequest:completionHandler: + */ +- (NSURLSessionDataTask *)POST:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure; + +/** + Creates and runs an `NSURLSessionDataTask` with a multipart `POST` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param block A block that takes a single argument and appends data to the HTTP body. The block argument is an object adopting the `AFMultipartFormData` protocol. + @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. + @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. + + @see -dataTaskWithRequest:completionHandler: + */ +- (NSURLSessionDataTask *)POST:(NSString *)URLString + parameters:(id)parameters + constructingBodyWithBlock:(void (^)(id formData))block + success:(void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure; + +/** + Creates and runs an `NSURLSessionDataTask` with a `PUT` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. + @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. + + @see -dataTaskWithRequest:completionHandler: + */ +- (NSURLSessionDataTask *)PUT:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure; + +/** + Creates and runs an `NSURLSessionDataTask` with a `PATCH` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. + @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. + + @see -dataTaskWithRequest:completionHandler: + */ +- (NSURLSessionDataTask *)PATCH:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure; + +/** + Creates and runs an `NSURLSessionDataTask` with a `DELETE` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. + @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. + + @see -dataTaskWithRequest:completionHandler: + */ +- (NSURLSessionDataTask *)DELETE:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure; + +@end + +#endif diff --git a/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m b/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m new file mode 100644 index 0000000..3a2323e --- /dev/null +++ b/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m @@ -0,0 +1,321 @@ +// AFHTTPSessionManager.m +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import "AFHTTPSessionManager.h" + +#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000) || (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1090) + +#import "AFURLRequestSerialization.h" +#import "AFURLResponseSerialization.h" + +#import +#import + +#ifdef _SYSTEMCONFIGURATION_H +#import +#import +#import +#import +#import +#endif + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +#import +#endif + +@interface AFHTTPSessionManager () +@property (readwrite, nonatomic, strong) NSURL *baseURL; +@end + +@implementation AFHTTPSessionManager + ++ (instancetype)manager { + return [[[self class] alloc] initWithBaseURL:nil]; +} + +- (instancetype)init { + return [self initWithBaseURL:nil]; +} + +- (instancetype)initWithBaseURL:(NSURL *)url { + return [self initWithBaseURL:url sessionConfiguration:nil]; +} + +- (instancetype)initWithSessionConfiguration:(NSURLSessionConfiguration *)configuration { + return [self initWithBaseURL:nil sessionConfiguration:configuration]; +} + +- (instancetype)initWithBaseURL:(NSURL *)url + sessionConfiguration:(NSURLSessionConfiguration *)configuration +{ + self = [super initWithSessionConfiguration:configuration]; + if (!self) { + return nil; + } + + // Ensure terminal slash for baseURL path, so that NSURL +URLWithString:relativeToURL: works as expected + if ([[url path] length] > 0 && ![[url absoluteString] hasSuffix:@"/"]) { + url = [url URLByAppendingPathComponent:@""]; + } + + self.baseURL = url; + + self.requestSerializer = [AFHTTPRequestSerializer serializer]; + self.responseSerializer = [AFJSONResponseSerializer serializer]; + + return self; +} + +#pragma mark - + +#ifdef _SYSTEMCONFIGURATION_H +#endif + +- (void)setRequestSerializer:(AFHTTPRequestSerializer *)requestSerializer { + NSParameterAssert(requestSerializer); + + _requestSerializer = requestSerializer; +} + +- (void)setResponseSerializer:(AFHTTPResponseSerializer *)responseSerializer { + NSParameterAssert(responseSerializer); + + [super setResponseSerializer:responseSerializer]; +} + +#pragma mark - + +- (NSURLSessionDataTask *)GET:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure +{ + NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"GET" URLString:URLString parameters:parameters success:success failure:failure]; + + [dataTask resume]; + + return dataTask; +} + +- (NSURLSessionDataTask *)HEAD:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *task))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure +{ + NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"HEAD" URLString:URLString parameters:parameters success:^(NSURLSessionDataTask *task, __unused id responseObject) { + if (success) { + success(task); + } + } failure:failure]; + + [dataTask resume]; + + return dataTask; +} + +- (NSURLSessionDataTask *)POST:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure +{ + NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"POST" URLString:URLString parameters:parameters success:success failure:failure]; + + [dataTask resume]; + + return dataTask; +} + +- (NSURLSessionDataTask *)POST:(NSString *)URLString + parameters:(id)parameters + constructingBodyWithBlock:(void (^)(id formData))block + success:(void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure +{ + NSError *serializationError = nil; + NSMutableURLRequest *request = [self.requestSerializer multipartFormRequestWithMethod:@"POST" URLString:[[NSURL URLWithString:URLString relativeToURL:self.baseURL] absoluteString] parameters:parameters constructingBodyWithBlock:block error:&serializationError]; + if (serializationError) { + if (failure) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + dispatch_async(self.completionQueue ?: dispatch_get_main_queue(), ^{ + failure(nil, serializationError); + }); +#pragma clang diagnostic pop + } + + return nil; + } + + __block NSURLSessionDataTask *task = [self uploadTaskWithStreamedRequest:request progress:nil completionHandler:^(NSURLResponse * __unused response, id responseObject, NSError *error) { + if (error) { + if (failure) { + failure(task, error); + } + } else { + if (success) { + success(task, responseObject); + } + } + }]; + + [task resume]; + + return task; +} + +- (NSURLSessionDataTask *)PUT:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure +{ + NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"PUT" URLString:URLString parameters:parameters success:success failure:failure]; + + [dataTask resume]; + + return dataTask; +} + +- (NSURLSessionDataTask *)PATCH:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure +{ + NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"PATCH" URLString:URLString parameters:parameters success:success failure:failure]; + + [dataTask resume]; + + return dataTask; +} + +- (NSURLSessionDataTask *)DELETE:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure +{ + NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"DELETE" URLString:URLString parameters:parameters success:success failure:failure]; + + [dataTask resume]; + + return dataTask; +} + +- (NSURLSessionDataTask *)dataTaskWithHTTPMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *, id))success + failure:(void (^)(NSURLSessionDataTask *, NSError *))failure +{ + NSError *serializationError = nil; + NSMutableURLRequest *request = [self.requestSerializer requestWithMethod:method URLString:[[NSURL URLWithString:URLString relativeToURL:self.baseURL] absoluteString] parameters:parameters error:&serializationError]; + if (serializationError) { + if (failure) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + dispatch_async(self.completionQueue ?: dispatch_get_main_queue(), ^{ + failure(nil, serializationError); + }); +#pragma clang diagnostic pop + } + + return nil; + } + + __block NSURLSessionDataTask *dataTask = nil; + dataTask = [self dataTaskWithRequest:request completionHandler:^(NSURLResponse * __unused response, id responseObject, NSError *error) { + if (error) { + if (failure) { + failure(dataTask, error); + } + } else { + if (success) { + success(dataTask, responseObject); + } + } + }]; + + return dataTask; +} + +#pragma mark - NSObject + +- (NSString *)description { + return [NSString stringWithFormat:@"<%@: %p, baseURL: %@, session: %@, operationQueue: %@>", NSStringFromClass([self class]), self, [self.baseURL absoluteString], self.session, self.operationQueue]; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder { + NSURL *baseURL = [decoder decodeObjectOfClass:[NSURL class] forKey:NSStringFromSelector(@selector(baseURL))]; + NSURLSessionConfiguration *configuration = [decoder decodeObjectOfClass:[NSURLSessionConfiguration class] forKey:@"sessionConfiguration"]; + if (!configuration) { + NSString *configurationIdentifier = [decoder decodeObjectOfClass:[NSString class] forKey:@"identifier"]; + if (configurationIdentifier) { +#if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1100) + configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:configurationIdentifier]; +#else + configuration = [NSURLSessionConfiguration backgroundSessionConfiguration:configurationIdentifier]; +#endif + } + } + + self = [self initWithBaseURL:baseURL sessionConfiguration:configuration]; + if (!self) { + return nil; + } + + self.requestSerializer = [decoder decodeObjectOfClass:[AFHTTPRequestSerializer class] forKey:NSStringFromSelector(@selector(requestSerializer))]; + self.responseSerializer = [decoder decodeObjectOfClass:[AFHTTPResponseSerializer class] forKey:NSStringFromSelector(@selector(responseSerializer))]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [super encodeWithCoder:coder]; + + [coder encodeObject:self.baseURL forKey:NSStringFromSelector(@selector(baseURL))]; + if ([self.session.configuration conformsToProtocol:@protocol(NSCoding)]) { + [coder encodeObject:self.session.configuration forKey:@"sessionConfiguration"]; + } else { + [coder encodeObject:self.session.configuration.identifier forKey:@"identifier"]; + } + [coder encodeObject:self.requestSerializer forKey:NSStringFromSelector(@selector(requestSerializer))]; + [coder encodeObject:self.responseSerializer forKey:NSStringFromSelector(@selector(responseSerializer))]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFHTTPSessionManager *HTTPClient = [[[self class] allocWithZone:zone] initWithBaseURL:self.baseURL sessionConfiguration:self.session.configuration]; + + HTTPClient.requestSerializer = [self.requestSerializer copyWithZone:zone]; + HTTPClient.responseSerializer = [self.responseSerializer copyWithZone:zone]; + + return HTTPClient; +} + +@end + +#endif diff --git a/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.h b/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.h new file mode 100644 index 0000000..a458d10 --- /dev/null +++ b/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.h @@ -0,0 +1,201 @@ +// AFNetworkReachabilityManager.h +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import +#import + +#ifndef NS_DESIGNATED_INITIALIZER +#if __has_attribute(objc_designated_initializer) +#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +#else +#define NS_DESIGNATED_INITIALIZER +#endif +#endif + +typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) { + AFNetworkReachabilityStatusUnknown = -1, + AFNetworkReachabilityStatusNotReachable = 0, + AFNetworkReachabilityStatusReachableViaWWAN = 1, + AFNetworkReachabilityStatusReachableViaWiFi = 2, +}; + +/** + `AFNetworkReachabilityManager` monitors the reachability of domains, and addresses for both WWAN and WiFi network interfaces. + + Reachability can be used to determine background information about why a network operation failed, or to trigger a network operation retrying when a connection is established. It should not be used to prevent a user from initiating a network request, as it's possible that an initial request may be required to establish reachability. + + See Apple's Reachability Sample Code (https://developer.apple.com/library/ios/samplecode/reachability/) + + @warning Instances of `AFNetworkReachabilityManager` must be started with `-startMonitoring` before reachability status can be determined. + */ +@interface AFNetworkReachabilityManager : NSObject + +/** + The current network reachability status. + */ +@property (readonly, nonatomic, assign) AFNetworkReachabilityStatus networkReachabilityStatus; + +/** + Whether or not the network is currently reachable. + */ +@property (readonly, nonatomic, assign, getter = isReachable) BOOL reachable; + +/** + Whether or not the network is currently reachable via WWAN. + */ +@property (readonly, nonatomic, assign, getter = isReachableViaWWAN) BOOL reachableViaWWAN; + +/** + Whether or not the network is currently reachable via WiFi. + */ +@property (readonly, nonatomic, assign, getter = isReachableViaWiFi) BOOL reachableViaWiFi; + +///--------------------- +/// @name Initialization +///--------------------- + +/** + Returns the shared network reachability manager. + */ ++ (instancetype)sharedManager; + +/** + Creates and returns a network reachability manager for the specified domain. + + @param domain The domain used to evaluate network reachability. + + @return An initialized network reachability manager, actively monitoring the specified domain. + */ ++ (instancetype)managerForDomain:(NSString *)domain; + +/** + Creates and returns a network reachability manager for the socket address. + + @param address The socket address (`sockaddr_in`) used to evaluate network reachability. + + @return An initialized network reachability manager, actively monitoring the specified socket address. + */ ++ (instancetype)managerForAddress:(const void *)address; + +/** + Initializes an instance of a network reachability manager from the specified reachability object. + + @param reachability The reachability object to monitor. + + @return An initialized network reachability manager, actively monitoring the specified reachability. + */ +- (instancetype)initWithReachability:(SCNetworkReachabilityRef)reachability NS_DESIGNATED_INITIALIZER; + +///-------------------------------------------------- +/// @name Starting & Stopping Reachability Monitoring +///-------------------------------------------------- + +/** + Starts monitoring for changes in network reachability status. + */ +- (void)startMonitoring; + +/** + Stops monitoring for changes in network reachability status. + */ +- (void)stopMonitoring; + +///------------------------------------------------- +/// @name Getting Localized Reachability Description +///------------------------------------------------- + +/** + Returns a localized string representation of the current network reachability status. + */ +- (NSString *)localizedNetworkReachabilityStatusString; + +///--------------------------------------------------- +/// @name Setting Network Reachability Change Callback +///--------------------------------------------------- + +/** + Sets a callback to be executed when the network availability of the `baseURL` host changes. + + @param block A block object to be executed when the network availability of the `baseURL` host changes.. This block has no return value and takes a single argument which represents the various reachability states from the device to the `baseURL`. + */ +- (void)setReachabilityStatusChangeBlock:(void (^)(AFNetworkReachabilityStatus status))block; + +@end + +///---------------- +/// @name Constants +///---------------- + +/** + ## Network Reachability + + The following constants are provided by `AFNetworkReachabilityManager` as possible network reachability statuses. + + enum { + AFNetworkReachabilityStatusUnknown, + AFNetworkReachabilityStatusNotReachable, + AFNetworkReachabilityStatusReachableViaWWAN, + AFNetworkReachabilityStatusReachableViaWiFi, + } + + `AFNetworkReachabilityStatusUnknown` + The `baseURL` host reachability is not known. + + `AFNetworkReachabilityStatusNotReachable` + The `baseURL` host cannot be reached. + + `AFNetworkReachabilityStatusReachableViaWWAN` + The `baseURL` host can be reached via a cellular connection, such as EDGE or GPRS. + + `AFNetworkReachabilityStatusReachableViaWiFi` + The `baseURL` host can be reached via a Wi-Fi connection. + + ### Keys for Notification UserInfo Dictionary + + Strings that are used as keys in a `userInfo` dictionary in a network reachability status change notification. + + `AFNetworkingReachabilityNotificationStatusItem` + A key in the userInfo dictionary in a `AFNetworkingReachabilityDidChangeNotification` notification. + The corresponding value is an `NSNumber` object representing the `AFNetworkReachabilityStatus` value for the current reachability status. + */ + +///-------------------- +/// @name Notifications +///-------------------- + +/** + Posted when network reachability changes. + This notification assigns no notification object. The `userInfo` dictionary contains an `NSNumber` object under the `AFNetworkingReachabilityNotificationStatusItem` key, representing the `AFNetworkReachabilityStatus` value for the current network reachability. + + @warning In order for network reachability to be monitored, include the `SystemConfiguration` framework in the active target's "Link Binary With Library" build phase, and add `#import ` to the header prefix of the project (`Prefix.pch`). + */ +extern NSString * const AFNetworkingReachabilityDidChangeNotification; +extern NSString * const AFNetworkingReachabilityNotificationStatusItem; + +///-------------------- +/// @name Functions +///-------------------- + +/** + Returns a localized string representation of an `AFNetworkReachabilityStatus` value. + */ +extern NSString * AFStringFromNetworkReachabilityStatus(AFNetworkReachabilityStatus status); diff --git a/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m b/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m new file mode 100644 index 0000000..3415e98 --- /dev/null +++ b/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m @@ -0,0 +1,259 @@ +// AFNetworkReachabilityManager.m +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import "AFNetworkReachabilityManager.h" + +#import +#import +#import +#import +#import + +NSString * const AFNetworkingReachabilityDidChangeNotification = @"com.alamofire.networking.reachability.change"; +NSString * const AFNetworkingReachabilityNotificationStatusItem = @"AFNetworkingReachabilityNotificationStatusItem"; + +typedef void (^AFNetworkReachabilityStatusBlock)(AFNetworkReachabilityStatus status); + +typedef NS_ENUM(NSUInteger, AFNetworkReachabilityAssociation) { + AFNetworkReachabilityForAddress = 1, + AFNetworkReachabilityForAddressPair = 2, + AFNetworkReachabilityForName = 3, +}; + +NSString * AFStringFromNetworkReachabilityStatus(AFNetworkReachabilityStatus status) { + switch (status) { + case AFNetworkReachabilityStatusNotReachable: + return NSLocalizedStringFromTable(@"Not Reachable", @"AFNetworking", nil); + case AFNetworkReachabilityStatusReachableViaWWAN: + return NSLocalizedStringFromTable(@"Reachable via WWAN", @"AFNetworking", nil); + case AFNetworkReachabilityStatusReachableViaWiFi: + return NSLocalizedStringFromTable(@"Reachable via WiFi", @"AFNetworking", nil); + case AFNetworkReachabilityStatusUnknown: + default: + return NSLocalizedStringFromTable(@"Unknown", @"AFNetworking", nil); + } +} + +static AFNetworkReachabilityStatus AFNetworkReachabilityStatusForFlags(SCNetworkReachabilityFlags flags) { + BOOL isReachable = ((flags & kSCNetworkReachabilityFlagsReachable) != 0); + BOOL needsConnection = ((flags & kSCNetworkReachabilityFlagsConnectionRequired) != 0); + BOOL canConnectionAutomatically = (((flags & kSCNetworkReachabilityFlagsConnectionOnDemand ) != 0) || ((flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) != 0)); + BOOL canConnectWithoutUserInteraction = (canConnectionAutomatically && (flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0); + BOOL isNetworkReachable = (isReachable && (!needsConnection || canConnectWithoutUserInteraction)); + + AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusUnknown; + if (isNetworkReachable == NO) { + status = AFNetworkReachabilityStatusNotReachable; + } +#if TARGET_OS_IPHONE + else if ((flags & kSCNetworkReachabilityFlagsIsWWAN) != 0) { + status = AFNetworkReachabilityStatusReachableViaWWAN; + } +#endif + else { + status = AFNetworkReachabilityStatusReachableViaWiFi; + } + + return status; +} + +static void AFNetworkReachabilityCallback(SCNetworkReachabilityRef __unused target, SCNetworkReachabilityFlags flags, void *info) { + AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusForFlags(flags); + AFNetworkReachabilityStatusBlock block = (__bridge AFNetworkReachabilityStatusBlock)info; + if (block) { + block(status); + } + + + dispatch_async(dispatch_get_main_queue(), ^{ + NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; + [notificationCenter postNotificationName:AFNetworkingReachabilityDidChangeNotification object:nil userInfo:@{ AFNetworkingReachabilityNotificationStatusItem: @(status) }]; + }); + +} + +static const void * AFNetworkReachabilityRetainCallback(const void *info) { + return Block_copy(info); +} + +static void AFNetworkReachabilityReleaseCallback(const void *info) { + if (info) { + Block_release(info); + } +} + +@interface AFNetworkReachabilityManager () +@property (readwrite, nonatomic, assign) SCNetworkReachabilityRef networkReachability; +@property (readwrite, nonatomic, assign) AFNetworkReachabilityAssociation networkReachabilityAssociation; +@property (readwrite, nonatomic, assign) AFNetworkReachabilityStatus networkReachabilityStatus; +@property (readwrite, nonatomic, copy) AFNetworkReachabilityStatusBlock networkReachabilityStatusBlock; +@end + +@implementation AFNetworkReachabilityManager + ++ (instancetype)sharedManager { + static AFNetworkReachabilityManager *_sharedManager = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + struct sockaddr_in address; + bzero(&address, sizeof(address)); + address.sin_len = sizeof(address); + address.sin_family = AF_INET; + + _sharedManager = [self managerForAddress:&address]; + }); + + return _sharedManager; +} + ++ (instancetype)managerForDomain:(NSString *)domain { + SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(kCFAllocatorDefault, [domain UTF8String]); + + AFNetworkReachabilityManager *manager = [[self alloc] initWithReachability:reachability]; + manager.networkReachabilityAssociation = AFNetworkReachabilityForName; + + return manager; +} + ++ (instancetype)managerForAddress:(const void *)address { + SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr *)address); + + AFNetworkReachabilityManager *manager = [[self alloc] initWithReachability:reachability]; + manager.networkReachabilityAssociation = AFNetworkReachabilityForAddress; + + return manager; +} + +- (instancetype)initWithReachability:(SCNetworkReachabilityRef)reachability { + self = [super init]; + if (!self) { + return nil; + } + + self.networkReachability = reachability; + self.networkReachabilityStatus = AFNetworkReachabilityStatusUnknown; + + return self; +} + +- (void)dealloc { + [self stopMonitoring]; + + if (_networkReachability) { + CFRelease(_networkReachability); + _networkReachability = NULL; + } +} + +#pragma mark - + +- (BOOL)isReachable { + return [self isReachableViaWWAN] || [self isReachableViaWiFi]; +} + +- (BOOL)isReachableViaWWAN { + return self.networkReachabilityStatus == AFNetworkReachabilityStatusReachableViaWWAN; +} + +- (BOOL)isReachableViaWiFi { + return self.networkReachabilityStatus == AFNetworkReachabilityStatusReachableViaWiFi; +} + +#pragma mark - + +- (void)startMonitoring { + [self stopMonitoring]; + + if (!self.networkReachability) { + return; + } + + __weak __typeof(self)weakSelf = self; + AFNetworkReachabilityStatusBlock callback = ^(AFNetworkReachabilityStatus status) { + __strong __typeof(weakSelf)strongSelf = weakSelf; + + strongSelf.networkReachabilityStatus = status; + if (strongSelf.networkReachabilityStatusBlock) { + strongSelf.networkReachabilityStatusBlock(status); + } + + }; + + SCNetworkReachabilityContext context = {0, (__bridge void *)callback, AFNetworkReachabilityRetainCallback, AFNetworkReachabilityReleaseCallback, NULL}; + SCNetworkReachabilitySetCallback(self.networkReachability, AFNetworkReachabilityCallback, &context); + SCNetworkReachabilityScheduleWithRunLoop(self.networkReachability, CFRunLoopGetMain(), kCFRunLoopCommonModes); + + switch (self.networkReachabilityAssociation) { + case AFNetworkReachabilityForName: + break; + case AFNetworkReachabilityForAddress: + case AFNetworkReachabilityForAddressPair: + default: { + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0),^{ + SCNetworkReachabilityFlags flags; + SCNetworkReachabilityGetFlags(self.networkReachability, &flags); + AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusForFlags(flags); + dispatch_async(dispatch_get_main_queue(), ^{ + callback(status); + + NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; + [notificationCenter postNotificationName:AFNetworkingReachabilityDidChangeNotification object:nil userInfo:@{ AFNetworkingReachabilityNotificationStatusItem: @(status) }]; + + + }); + }); + } + break; + } +} + +- (void)stopMonitoring { + if (!self.networkReachability) { + return; + } + + SCNetworkReachabilityUnscheduleFromRunLoop(self.networkReachability, CFRunLoopGetMain(), kCFRunLoopCommonModes); +} + +#pragma mark - + +- (NSString *)localizedNetworkReachabilityStatusString { + return AFStringFromNetworkReachabilityStatus(self.networkReachabilityStatus); +} + +#pragma mark - + +- (void)setReachabilityStatusChangeBlock:(void (^)(AFNetworkReachabilityStatus status))block { + self.networkReachabilityStatusBlock = block; +} + +#pragma mark - NSKeyValueObserving + ++ (NSSet *)keyPathsForValuesAffectingValueForKey:(NSString *)key { + if ([key isEqualToString:@"reachable"] || [key isEqualToString:@"reachableViaWWAN"] || [key isEqualToString:@"reachableViaWiFi"]) { + return [NSSet setWithObject:@"networkReachabilityStatus"]; + } + + return [super keyPathsForValuesAffectingValueForKey:key]; +} + +@end diff --git a/Pods/AFNetworking/AFNetworking/AFNetworking.h b/Pods/AFNetworking/AFNetworking/AFNetworking.h new file mode 100644 index 0000000..68273da --- /dev/null +++ b/Pods/AFNetworking/AFNetworking/AFNetworking.h @@ -0,0 +1,44 @@ +// AFNetworking.h +// +// Copyright (c) 2013 AFNetworking (http://afnetworking.com/) +// +// 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. + +#import +#import + +#ifndef _AFNETWORKING_ + #define _AFNETWORKING_ + + #import "AFURLRequestSerialization.h" + #import "AFURLResponseSerialization.h" + #import "AFSecurityPolicy.h" + #import "AFNetworkReachabilityManager.h" + + #import "AFURLConnectionOperation.h" + #import "AFHTTPRequestOperation.h" + #import "AFHTTPRequestOperationManager.h" + +#if ( ( defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1090) || \ + ( defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 ) ) + #import "AFURLSessionManager.h" + #import "AFHTTPSessionManager.h" +#endif + +#endif /* _AFNETWORKING_ */ diff --git a/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h b/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h new file mode 100644 index 0000000..4906f3b --- /dev/null +++ b/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h @@ -0,0 +1,143 @@ +// AFSecurityPolicy.h +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import +#import + +typedef NS_ENUM(NSUInteger, AFSSLPinningMode) { + AFSSLPinningModeNone, + AFSSLPinningModePublicKey, + AFSSLPinningModeCertificate, +}; + +/** + `AFSecurityPolicy` evaluates server trust against pinned X.509 certificates and public keys over secure connections. + + Adding pinned SSL certificates to your app helps prevent man-in-the-middle attacks and other vulnerabilities. Applications dealing with sensitive customer data or financial information are strongly encouraged to route all communication over an HTTPS connection with SSL pinning configured and enabled. + */ +@interface AFSecurityPolicy : NSObject + +/** + The criteria by which server trust should be evaluated against the pinned SSL certificates. Defaults to `AFSSLPinningModeNone`. + */ +@property (readonly, nonatomic, assign) AFSSLPinningMode SSLPinningMode; + +/** + Whether to evaluate an entire SSL certificate chain, or just the leaf certificate. Defaults to `YES`. + */ +@property (nonatomic, assign) BOOL validatesCertificateChain; + +/** + The certificates used to evaluate server trust according to the SSL pinning mode. By default, this property is set to any (`.cer`) certificates included in the app bundle. + */ +@property (nonatomic, strong) NSArray *pinnedCertificates; + +/** + Whether or not to trust servers with an invalid or expired SSL certificates. Defaults to `NO`. + */ +@property (nonatomic, assign) BOOL allowInvalidCertificates; + +/** + Whether or not to validate the domain name in the certificate's CN field. Defaults to `YES` for `AFSSLPinningModePublicKey` or `AFSSLPinningModeCertificate`, otherwise `NO`. + */ +@property (nonatomic, assign) BOOL validatesDomainName; + +///----------------------------------------- +/// @name Getting Specific Security Policies +///----------------------------------------- + +/** + Returns the shared default security policy, which does not allow invalid certificates, does not validate domain name, and does not validate against pinned certificates or public keys. + + @return The default security policy. + */ ++ (instancetype)defaultPolicy; + +///--------------------- +/// @name Initialization +///--------------------- + +/** + Creates and returns a security policy with the specified pinning mode. + + @param pinningMode The SSL pinning mode. + + @return A new security policy. + */ ++ (instancetype)policyWithPinningMode:(AFSSLPinningMode)pinningMode; + +///------------------------------ +/// @name Evaluating Server Trust +///------------------------------ + +/** + Whether or not the specified server trust should be accepted, based on the security policy. + + This method should be used when responding to an authentication challenge from a server. + + @param serverTrust The X.509 certificate trust of the server. + + @return Whether or not to trust the server. + + @warning This method has been deprecated in favor of `-evaluateServerTrust:forDomain:`. + */ +- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust DEPRECATED_ATTRIBUTE; + +/** + Whether or not the specified server trust should be accepted, based on the security policy. + + This method should be used when responding to an authentication challenge from a server. + + @param serverTrust The X.509 certificate trust of the server. + @param domain The domain of serverTrust. If `nil`, the domain will not be validated. + + @return Whether or not to trust the server. + */ +- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust + forDomain:(NSString *)domain; + +@end + +///---------------- +/// @name Constants +///---------------- + +/** + ## SSL Pinning Modes + + The following constants are provided by `AFSSLPinningMode` as possible SSL pinning modes. + + enum { + AFSSLPinningModeNone, + AFSSLPinningModePublicKey, + AFSSLPinningModeCertificate, + } + + `AFSSLPinningModeNone` + Do not used pinned certificates to validate servers. + + `AFSSLPinningModePublicKey` + Validate host certificates against public keys of pinned certificates. + + `AFSSLPinningModeCertificate` + Validate host certificates against pinned certificates. +*/ diff --git a/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m b/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m new file mode 100644 index 0000000..41576bb --- /dev/null +++ b/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m @@ -0,0 +1,317 @@ +// AFSecurityPolicy.m +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import "AFSecurityPolicy.h" + +#import + +#if !defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +static NSData * AFSecKeyGetData(SecKeyRef key) { + CFDataRef data = NULL; + + __Require_noErr_Quiet(SecItemExport(key, kSecFormatUnknown, kSecItemPemArmour, NULL, &data), _out); + + return (__bridge_transfer NSData *)data; + +_out: + if (data) { + CFRelease(data); + } + + return nil; +} +#endif + +static BOOL AFSecKeyIsEqualToKey(SecKeyRef key1, SecKeyRef key2) { +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + return [(__bridge id)key1 isEqual:(__bridge id)key2]; +#else + return [AFSecKeyGetData(key1) isEqual:AFSecKeyGetData(key2)]; +#endif +} + +static id AFPublicKeyForCertificate(NSData *certificate) { + id allowedPublicKey = nil; + SecCertificateRef allowedCertificate; + SecCertificateRef allowedCertificates[1]; + CFArrayRef tempCertificates = nil; + SecPolicyRef policy = nil; + SecTrustRef allowedTrust = nil; + SecTrustResultType result; + + allowedCertificate = SecCertificateCreateWithData(NULL, (__bridge CFDataRef)certificate); + __Require_Quiet(allowedCertificate != NULL, _out); + + allowedCertificates[0] = allowedCertificate; + tempCertificates = CFArrayCreate(NULL, (const void **)allowedCertificates, 1, NULL); + + policy = SecPolicyCreateBasicX509(); + __Require_noErr_Quiet(SecTrustCreateWithCertificates(tempCertificates, policy, &allowedTrust), _out); + __Require_noErr_Quiet(SecTrustEvaluate(allowedTrust, &result), _out); + + allowedPublicKey = (__bridge_transfer id)SecTrustCopyPublicKey(allowedTrust); + +_out: + if (allowedTrust) { + CFRelease(allowedTrust); + } + + if (policy) { + CFRelease(policy); + } + + if (tempCertificates) { + CFRelease(tempCertificates); + } + + if (allowedCertificate) { + CFRelease(allowedCertificate); + } + + return allowedPublicKey; +} + +static BOOL AFServerTrustIsValid(SecTrustRef serverTrust) { + BOOL isValid = NO; + SecTrustResultType result; + __Require_noErr_Quiet(SecTrustEvaluate(serverTrust, &result), _out); + + isValid = (result == kSecTrustResultUnspecified || result == kSecTrustResultProceed); + +_out: + return isValid; +} + +static NSArray * AFCertificateTrustChainForServerTrust(SecTrustRef serverTrust) { + CFIndex certificateCount = SecTrustGetCertificateCount(serverTrust); + NSMutableArray *trustChain = [NSMutableArray arrayWithCapacity:(NSUInteger)certificateCount]; + + for (CFIndex i = 0; i < certificateCount; i++) { + SecCertificateRef certificate = SecTrustGetCertificateAtIndex(serverTrust, i); + [trustChain addObject:(__bridge_transfer NSData *)SecCertificateCopyData(certificate)]; + } + + return [NSArray arrayWithArray:trustChain]; +} + +static NSArray * AFPublicKeyTrustChainForServerTrust(SecTrustRef serverTrust) { + SecPolicyRef policy = SecPolicyCreateBasicX509(); + CFIndex certificateCount = SecTrustGetCertificateCount(serverTrust); + NSMutableArray *trustChain = [NSMutableArray arrayWithCapacity:(NSUInteger)certificateCount]; + for (CFIndex i = 0; i < certificateCount; i++) { + SecCertificateRef certificate = SecTrustGetCertificateAtIndex(serverTrust, i); + + SecCertificateRef someCertificates[] = {certificate}; + CFArrayRef certificates = CFArrayCreate(NULL, (const void **)someCertificates, 1, NULL); + + SecTrustRef trust; + __Require_noErr_Quiet(SecTrustCreateWithCertificates(certificates, policy, &trust), _out); + + SecTrustResultType result; + __Require_noErr_Quiet(SecTrustEvaluate(trust, &result), _out); + + [trustChain addObject:(__bridge_transfer id)SecTrustCopyPublicKey(trust)]; + + _out: + if (trust) { + CFRelease(trust); + } + + if (certificates) { + CFRelease(certificates); + } + + continue; + } + CFRelease(policy); + + return [NSArray arrayWithArray:trustChain]; +} + +#pragma mark - + +@interface AFSecurityPolicy() +@property (readwrite, nonatomic, assign) AFSSLPinningMode SSLPinningMode; +@property (readwrite, nonatomic, strong) NSArray *pinnedPublicKeys; +@end + +@implementation AFSecurityPolicy + ++ (NSArray *)defaultPinnedCertificates { + static NSArray *_defaultPinnedCertificates = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + NSBundle *bundle = [NSBundle bundleForClass:[self class]]; + NSArray *paths = [bundle pathsForResourcesOfType:@"cer" inDirectory:@"."]; + + NSMutableArray *certificates = [NSMutableArray arrayWithCapacity:[paths count]]; + for (NSString *path in paths) { + NSData *certificateData = [NSData dataWithContentsOfFile:path]; + [certificates addObject:certificateData]; + } + + _defaultPinnedCertificates = [[NSArray alloc] initWithArray:certificates]; + }); + + return _defaultPinnedCertificates; +} + ++ (instancetype)defaultPolicy { + AFSecurityPolicy *securityPolicy = [[self alloc] init]; + securityPolicy.SSLPinningMode = AFSSLPinningModeNone; + + return securityPolicy; +} + ++ (instancetype)policyWithPinningMode:(AFSSLPinningMode)pinningMode { + AFSecurityPolicy *securityPolicy = [[self alloc] init]; + securityPolicy.SSLPinningMode = pinningMode; + + [securityPolicy setPinnedCertificates:[self defaultPinnedCertificates]]; + + return securityPolicy; +} + +- (id)init { + self = [super init]; + if (!self) { + return nil; + } + + self.validatesCertificateChain = YES; + + return self; +} + +#pragma mark - + +- (void)setSSLPinningMode:(AFSSLPinningMode)SSLPinningMode { + _SSLPinningMode = SSLPinningMode; + + switch (self.SSLPinningMode) { + case AFSSLPinningModePublicKey: + case AFSSLPinningModeCertificate: + self.validatesDomainName = YES; + break; + default: + self.validatesDomainName = NO; + break; + } +} + +- (void)setPinnedCertificates:(NSArray *)pinnedCertificates { + _pinnedCertificates = pinnedCertificates; + + if (self.pinnedCertificates) { + NSMutableArray *mutablePinnedPublicKeys = [NSMutableArray arrayWithCapacity:[self.pinnedCertificates count]]; + for (NSData *certificate in self.pinnedCertificates) { + id publicKey = AFPublicKeyForCertificate(certificate); + if (!publicKey) { + continue; + } + [mutablePinnedPublicKeys addObject:publicKey]; + } + self.pinnedPublicKeys = [NSArray arrayWithArray:mutablePinnedPublicKeys]; + } else { + self.pinnedPublicKeys = nil; + } +} + +#pragma mark - + +- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust { + return [self evaluateServerTrust:serverTrust forDomain:nil]; +} + +- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust + forDomain:(NSString *)domain +{ + NSMutableArray *policies = [NSMutableArray array]; + if (self.validatesDomainName) { + [policies addObject:(__bridge_transfer id)SecPolicyCreateSSL(true, (__bridge CFStringRef)domain)]; + } else { + [policies addObject:(__bridge_transfer id)SecPolicyCreateBasicX509()]; + } + + SecTrustSetPolicies(serverTrust, (__bridge CFArrayRef)policies); + + if (self.SSLPinningMode != AFSSLPinningModeNone && !AFServerTrustIsValid(serverTrust) && !self.allowInvalidCertificates) { + return NO; + } + + NSArray *serverCertificates = AFCertificateTrustChainForServerTrust(serverTrust); + switch (self.SSLPinningMode) { + case AFSSLPinningModeNone: + return YES; + case AFSSLPinningModeCertificate: { + NSMutableArray *pinnedCertificates = [NSMutableArray array]; + for (NSData *certificateData in self.pinnedCertificates) { + [pinnedCertificates addObject:(__bridge_transfer id)SecCertificateCreateWithData(NULL, (__bridge CFDataRef)certificateData)]; + } + SecTrustSetAnchorCertificates(serverTrust, (__bridge CFArrayRef)pinnedCertificates); + + if (!AFServerTrustIsValid(serverTrust)) { + return NO; + } + + if (!self.validatesCertificateChain) { + return YES; + } + + NSUInteger trustedCertificateCount = 0; + for (NSData *trustChainCertificate in serverCertificates) { + if ([self.pinnedCertificates containsObject:trustChainCertificate]) { + trustedCertificateCount++; + } + } + + return trustedCertificateCount == [serverCertificates count]; + } + case AFSSLPinningModePublicKey: { + NSUInteger trustedPublicKeyCount = 0; + NSArray *publicKeys = AFPublicKeyTrustChainForServerTrust(serverTrust); + if (!self.validatesCertificateChain && [publicKeys count] > 0) { + publicKeys = @[[publicKeys firstObject]]; + } + + for (id trustChainPublicKey in publicKeys) { + for (id pinnedPublicKey in self.pinnedPublicKeys) { + if (AFSecKeyIsEqualToKey((__bridge SecKeyRef)trustChainPublicKey, (__bridge SecKeyRef)pinnedPublicKey)) { + trustedPublicKeyCount += 1; + } + } + } + + return trustedPublicKeyCount > 0 && ((self.validatesCertificateChain && trustedPublicKeyCount == [serverCertificates count]) || (!self.validatesCertificateChain && trustedPublicKeyCount >= 1)); + } + } + + return NO; +} + +#pragma mark - NSKeyValueObserving + ++ (NSSet *)keyPathsForValuesAffectingPinnedPublicKeys { + return [NSSet setWithObject:@"pinnedCertificates"]; +} + +@end diff --git a/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h b/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h new file mode 100644 index 0000000..b4041a4 --- /dev/null +++ b/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h @@ -0,0 +1,336 @@ +// AFURLConnectionOperation.h +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import + +#import +#import "AFURLRequestSerialization.h" +#import "AFURLResponseSerialization.h" +#import "AFSecurityPolicy.h" + +#ifndef NS_DESIGNATED_INITIALIZER +#if __has_attribute(objc_designated_initializer) +#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +#else +#define NS_DESIGNATED_INITIALIZER +#endif +#endif + +/** + `AFURLConnectionOperation` is a subclass of `NSOperation` that implements `NSURLConnection` delegate methods. + + ## Subclassing Notes + + This is the base class of all network request operations. You may wish to create your own subclass in order to implement additional `NSURLConnection` delegate methods (see "`NSURLConnection` Delegate Methods" below), or to provide additional properties and/or class constructors. + + If you are creating a subclass that communicates over the HTTP or HTTPS protocols, you may want to consider subclassing `AFHTTPRequestOperation` instead, as it supports specifying acceptable content types or status codes. + + ## NSURLConnection Delegate Methods + + `AFURLConnectionOperation` implements the following `NSURLConnection` delegate methods: + + - `connection:didReceiveResponse:` + - `connection:didReceiveData:` + - `connectionDidFinishLoading:` + - `connection:didFailWithError:` + - `connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:` + - `connection:willCacheResponse:` + - `connectionShouldUseCredentialStorage:` + - `connection:needNewBodyStream:` + - `connection:willSendRequestForAuthenticationChallenge:` + + If any of these methods are overridden in a subclass, they _must_ call the `super` implementation first. + + ## Callbacks and Completion Blocks + + The built-in `completionBlock` provided by `NSOperation` allows for custom behavior to be executed after the request finishes. It is a common pattern for class constructors in subclasses to take callback block parameters, and execute them conditionally in the body of its `completionBlock`. Make sure to handle cancelled operations appropriately when setting a `completionBlock` (i.e. returning early before parsing response data). See the implementation of any of the `AFHTTPRequestOperation` subclasses for an example of this. + + Subclasses are strongly discouraged from overriding `setCompletionBlock:`, as `AFURLConnectionOperation`'s implementation includes a workaround to mitigate retain cycles, and what Apple rather ominously refers to as ["The Deallocation Problem"](http://developer.apple.com/library/ios/#technotes/tn2109/). + + ## SSL Pinning + + Relying on the CA trust model to validate SSL certificates exposes your app to security vulnerabilities, such as man-in-the-middle attacks. For applications that connect to known servers, SSL certificate pinning provides an increased level of security, by checking server certificate validity against those specified in the app bundle. + + SSL with certificate pinning is strongly recommended for any application that transmits sensitive information to an external webservice. + + Connections will be validated on all matching certificates with a `.cer` extension in the bundle root. + + ## App Extensions + + When using AFNetworking in an App Extension, `#define AF_APP_EXTENSIONS` to avoid using unavailable APIs. + + ## NSCoding & NSCopying Conformance + + `AFURLConnectionOperation` conforms to the `NSCoding` and `NSCopying` protocols, allowing operations to be archived to disk, and copied in memory, respectively. However, because of the intrinsic limitations of capturing the exact state of an operation at a particular moment, there are some important caveats to keep in mind: + + ### NSCoding Caveats + + - Encoded operations do not include any block or stream properties. Be sure to set `completionBlock`, `outputStream`, and any callback blocks as necessary when using `-initWithCoder:` or `NSKeyedUnarchiver`. + - Operations are paused on `encodeWithCoder:`. If the operation was encoded while paused or still executing, its archived state will return `YES` for `isReady`. Otherwise, the state of an operation when encoding will remain unchanged. + + ### NSCopying Caveats + + - `-copy` and `-copyWithZone:` return a new operation with the `NSURLRequest` of the original. So rather than an exact copy of the operation at that particular instant, the copying mechanism returns a completely new instance, which can be useful for retrying operations. + - A copy of an operation will not include the `outputStream` of the original. + - Operation copies do not include `completionBlock`, as it often strongly captures a reference to `self`, which would otherwise have the unintuitive side-effect of pointing to the _original_ operation when copied. + */ + +@interface AFURLConnectionOperation : NSOperation + +///------------------------------- +/// @name Accessing Run Loop Modes +///------------------------------- + +/** + The run loop modes in which the operation will run on the network thread. By default, this is a single-member set containing `NSRunLoopCommonModes`. + */ +@property (nonatomic, strong) NSSet *runLoopModes; + +///----------------------------------------- +/// @name Getting URL Connection Information +///----------------------------------------- + +/** + The request used by the operation's connection. + */ +@property (readonly, nonatomic, strong) NSURLRequest *request; + +/** + The last response received by the operation's connection. + */ +@property (readonly, nonatomic, strong) NSURLResponse *response; + +/** + The error, if any, that occurred in the lifecycle of the request. + */ +@property (readonly, nonatomic, strong) NSError *error; + +///---------------------------- +/// @name Getting Response Data +///---------------------------- + +/** + The data received during the request. + */ +@property (readonly, nonatomic, strong) NSData *responseData; + +/** + The string representation of the response data. + */ +@property (readonly, nonatomic, copy) NSString *responseString; + +/** + The string encoding of the response. + + If the response does not specify a valid string encoding, `responseStringEncoding` will return `NSUTF8StringEncoding`. + */ +@property (readonly, nonatomic, assign) NSStringEncoding responseStringEncoding; + +///------------------------------- +/// @name Managing URL Credentials +///------------------------------- + +/** + Whether the URL connection should consult the credential storage for authenticating the connection. `YES` by default. + + This is the value that is returned in the `NSURLConnectionDelegate` method `-connectionShouldUseCredentialStorage:`. + */ +@property (nonatomic, assign) BOOL shouldUseCredentialStorage; + +/** + The credential used for authentication challenges in `-connection:didReceiveAuthenticationChallenge:`. + + This will be overridden by any shared credentials that exist for the username or password of the request URL, if present. + */ +@property (nonatomic, strong) NSURLCredential *credential; + +///------------------------------- +/// @name Managing Security Policy +///------------------------------- + +/** + The security policy used to evaluate server trust for secure connections. + */ +@property (nonatomic, strong) AFSecurityPolicy *securityPolicy; + +///------------------------ +/// @name Accessing Streams +///------------------------ + +/** + The input stream used to read data to be sent during the request. + + This property acts as a proxy to the `HTTPBodyStream` property of `request`. + */ +@property (nonatomic, strong) NSInputStream *inputStream; + +/** + The output stream that is used to write data received until the request is finished. + + By default, data is accumulated into a buffer that is stored into `responseData` upon completion of the request, with the intermediary `outputStream` property set to `nil`. When `outputStream` is set, the data will not be accumulated into an internal buffer, and as a result, the `responseData` property of the completed request will be `nil`. The output stream will be scheduled in the network thread runloop upon being set. + */ +@property (nonatomic, strong) NSOutputStream *outputStream; + +///--------------------------------- +/// @name Managing Callback Queues +///--------------------------------- + +/** + The dispatch queue for `completionBlock`. If `NULL` (default), the main queue is used. + */ +@property (nonatomic, strong) dispatch_queue_t completionQueue; + +/** + The dispatch group for `completionBlock`. If `NULL` (default), a private dispatch group is used. + */ +@property (nonatomic, strong) dispatch_group_t completionGroup; + +///--------------------------------------------- +/// @name Managing Request Operation Information +///--------------------------------------------- + +/** + The user info dictionary for the receiver. + */ +@property (nonatomic, strong) NSDictionary *userInfo; + +///------------------------------------------------------ +/// @name Initializing an AFURLConnectionOperation Object +///------------------------------------------------------ + +/** + Initializes and returns a newly allocated operation object with a url connection configured with the specified url request. + + This is the designated initializer. + + @param urlRequest The request object to be used by the operation connection. + */ +- (instancetype)initWithRequest:(NSURLRequest *)urlRequest NS_DESIGNATED_INITIALIZER; + +///---------------------------------- +/// @name Pausing / Resuming Requests +///---------------------------------- + +/** + Pauses the execution of the request operation. + + A paused operation returns `NO` for `-isReady`, `-isExecuting`, and `-isFinished`. As such, it will remain in an `NSOperationQueue` until it is either cancelled or resumed. Pausing a finished, cancelled, or paused operation has no effect. + */ +- (void)pause; + +/** + Whether the request operation is currently paused. + + @return `YES` if the operation is currently paused, otherwise `NO`. + */ +- (BOOL)isPaused; + +/** + Resumes the execution of the paused request operation. + + Pause/Resume behavior varies depending on the underlying implementation for the operation class. In its base implementation, resuming a paused requests restarts the original request. However, since HTTP defines a specification for how to request a specific content range, `AFHTTPRequestOperation` will resume downloading the request from where it left off, instead of restarting the original request. + */ +- (void)resume; + +///---------------------------------------------- +/// @name Configuring Backgrounding Task Behavior +///---------------------------------------------- + +/** + Specifies that the operation should continue execution after the app has entered the background, and the expiration handler for that background task. + + @param handler A handler to be called shortly before the application’s remaining background time reaches 0. The handler is wrapped in a block that cancels the operation, and cleans up and marks the end of execution, unlike the `handler` parameter in `UIApplication -beginBackgroundTaskWithExpirationHandler:`, which expects this to be done in the handler itself. The handler is called synchronously on the main thread, thus blocking the application’s suspension momentarily while the application is notified. + */ +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && !defined(AF_APP_EXTENSIONS) +- (void)setShouldExecuteAsBackgroundTaskWithExpirationHandler:(void (^)(void))handler; +#endif + +///--------------------------------- +/// @name Setting Progress Callbacks +///--------------------------------- + +/** + Sets a callback to be called when an undetermined number of bytes have been uploaded to the server. + + @param block A block object to be called when an undetermined number of bytes have been uploaded to the server. This block has no return value and takes three arguments: the number of bytes written since the last time the upload progress block was called, the total bytes written, and the total bytes expected to be written during the request, as initially determined by the length of the HTTP body. This block may be called multiple times, and will execute on the main thread. + */ +- (void)setUploadProgressBlock:(void (^)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))block; + +/** + Sets a callback to be called when an undetermined number of bytes have been downloaded from the server. + + @param block A block object to be called when an undetermined number of bytes have been downloaded from the server. This block has no return value and takes three arguments: the number of bytes read since the last time the download progress block was called, the total bytes read, and the total bytes expected to be read during the request, as initially determined by the expected content size of the `NSHTTPURLResponse` object. This block may be called multiple times, and will execute on the main thread. + */ +- (void)setDownloadProgressBlock:(void (^)(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead))block; + +///------------------------------------------------- +/// @name Setting NSURLConnection Delegate Callbacks +///------------------------------------------------- + +/** + Sets a block to be executed when the connection will authenticate a challenge in order to download its request, as handled by the `NSURLConnectionDelegate` method `connection:willSendRequestForAuthenticationChallenge:`. + + @param block A block object to be executed when the connection will authenticate a challenge in order to download its request. The block has no return type and takes two arguments: the URL connection object, and the challenge that must be authenticated. This block must invoke one of the challenge-responder methods (NSURLAuthenticationChallengeSender protocol). + + If `allowsInvalidSSLCertificate` is set to YES, `connection:willSendRequestForAuthenticationChallenge:` will attempt to have the challenge sender use credentials with invalid SSL certificates. + */ +- (void)setWillSendRequestForAuthenticationChallengeBlock:(void (^)(NSURLConnection *connection, NSURLAuthenticationChallenge *challenge))block; + +/** + Sets a block to be executed when the server redirects the request from one URL to another URL, or when the request URL changed by the `NSURLProtocol` subclass handling the request in order to standardize its format, as handled by the `NSURLConnectionDataDelegate` method `connection:willSendRequest:redirectResponse:`. + + @param block A block object to be executed when the request URL was changed. The block returns an `NSURLRequest` object, the URL request to redirect, and takes three arguments: the URL connection object, the the proposed redirected request, and the URL response that caused the redirect. + */ +- (void)setRedirectResponseBlock:(NSURLRequest * (^)(NSURLConnection *connection, NSURLRequest *request, NSURLResponse *redirectResponse))block; + + +/** + Sets a block to be executed to modify the response a connection will cache, if any, as handled by the `NSURLConnectionDelegate` method `connection:willCacheResponse:`. + + @param block A block object to be executed to determine what response a connection will cache, if any. The block returns an `NSCachedURLResponse` object, the cached response to store in memory or `nil` to prevent the response from being cached, and takes two arguments: the URL connection object, and the cached response provided for the request. + */ +- (void)setCacheResponseBlock:(NSCachedURLResponse * (^)(NSURLConnection *connection, NSCachedURLResponse *cachedResponse))block; + +/// + +/** + + */ ++ (NSArray *)batchOfRequestOperations:(NSArray *)operations + progressBlock:(void (^)(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations))progressBlock + completionBlock:(void (^)(NSArray *operations))completionBlock; + +@end + +///-------------------- +/// @name Notifications +///-------------------- + +/** + Posted when an operation begins executing. + */ +extern NSString * const AFNetworkingOperationDidStartNotification; + +/** + Posted when an operation finishes. + */ +extern NSString * const AFNetworkingOperationDidFinishNotification; diff --git a/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m b/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m new file mode 100644 index 0000000..becfb83 --- /dev/null +++ b/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m @@ -0,0 +1,789 @@ +// AFURLConnectionOperation.m +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import "AFURLConnectionOperation.h" + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +#import +#endif + +#if !__has_feature(objc_arc) +#error AFNetworking must be built with ARC. +// You can turn on ARC for only AFNetworking files by adding -fobjc-arc to the build phase for each of its files. +#endif + +typedef NS_ENUM(NSInteger, AFOperationState) { + AFOperationPausedState = -1, + AFOperationReadyState = 1, + AFOperationExecutingState = 2, + AFOperationFinishedState = 3, +}; + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && !defined(AF_APP_EXTENSIONS) +typedef UIBackgroundTaskIdentifier AFBackgroundTaskIdentifier; +#else +typedef id AFBackgroundTaskIdentifier; +#endif + +static dispatch_group_t url_request_operation_completion_group() { + static dispatch_group_t af_url_request_operation_completion_group; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + af_url_request_operation_completion_group = dispatch_group_create(); + }); + + return af_url_request_operation_completion_group; +} + +static dispatch_queue_t url_request_operation_completion_queue() { + static dispatch_queue_t af_url_request_operation_completion_queue; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + af_url_request_operation_completion_queue = dispatch_queue_create("com.alamofire.networking.operation.queue", DISPATCH_QUEUE_CONCURRENT ); + }); + + return af_url_request_operation_completion_queue; +} + +static NSString * const kAFNetworkingLockName = @"com.alamofire.networking.operation.lock"; + +NSString * const AFNetworkingOperationDidStartNotification = @"com.alamofire.networking.operation.start"; +NSString * const AFNetworkingOperationDidFinishNotification = @"com.alamofire.networking.operation.finish"; + +typedef void (^AFURLConnectionOperationProgressBlock)(NSUInteger bytes, long long totalBytes, long long totalBytesExpected); +typedef void (^AFURLConnectionOperationAuthenticationChallengeBlock)(NSURLConnection *connection, NSURLAuthenticationChallenge *challenge); +typedef NSCachedURLResponse * (^AFURLConnectionOperationCacheResponseBlock)(NSURLConnection *connection, NSCachedURLResponse *cachedResponse); +typedef NSURLRequest * (^AFURLConnectionOperationRedirectResponseBlock)(NSURLConnection *connection, NSURLRequest *request, NSURLResponse *redirectResponse); + +static inline NSString * AFKeyPathFromOperationState(AFOperationState state) { + switch (state) { + case AFOperationReadyState: + return @"isReady"; + case AFOperationExecutingState: + return @"isExecuting"; + case AFOperationFinishedState: + return @"isFinished"; + case AFOperationPausedState: + return @"isPaused"; + default: { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunreachable-code" + return @"state"; +#pragma clang diagnostic pop + } + } +} + +static inline BOOL AFStateTransitionIsValid(AFOperationState fromState, AFOperationState toState, BOOL isCancelled) { + switch (fromState) { + case AFOperationReadyState: + switch (toState) { + case AFOperationPausedState: + case AFOperationExecutingState: + return YES; + case AFOperationFinishedState: + return isCancelled; + default: + return NO; + } + case AFOperationExecutingState: + switch (toState) { + case AFOperationPausedState: + case AFOperationFinishedState: + return YES; + default: + return NO; + } + case AFOperationFinishedState: + return NO; + case AFOperationPausedState: + return toState == AFOperationReadyState; + default: { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunreachable-code" + switch (toState) { + case AFOperationPausedState: + case AFOperationReadyState: + case AFOperationExecutingState: + case AFOperationFinishedState: + return YES; + default: + return NO; + } + } +#pragma clang diagnostic pop + } +} + +@interface AFURLConnectionOperation () +@property (readwrite, nonatomic, assign) AFOperationState state; +@property (readwrite, nonatomic, strong) NSRecursiveLock *lock; +@property (readwrite, nonatomic, strong) NSURLConnection *connection; +@property (readwrite, nonatomic, strong) NSURLRequest *request; +@property (readwrite, nonatomic, strong) NSURLResponse *response; +@property (readwrite, nonatomic, strong) NSError *error; +@property (readwrite, nonatomic, strong) NSData *responseData; +@property (readwrite, nonatomic, copy) NSString *responseString; +@property (readwrite, nonatomic, assign) NSStringEncoding responseStringEncoding; +@property (readwrite, nonatomic, assign) long long totalBytesRead; +@property (readwrite, nonatomic, assign) AFBackgroundTaskIdentifier backgroundTaskIdentifier; +@property (readwrite, nonatomic, copy) AFURLConnectionOperationProgressBlock uploadProgress; +@property (readwrite, nonatomic, copy) AFURLConnectionOperationProgressBlock downloadProgress; +@property (readwrite, nonatomic, copy) AFURLConnectionOperationAuthenticationChallengeBlock authenticationChallenge; +@property (readwrite, nonatomic, copy) AFURLConnectionOperationCacheResponseBlock cacheResponse; +@property (readwrite, nonatomic, copy) AFURLConnectionOperationRedirectResponseBlock redirectResponse; + +- (void)operationDidStart; +- (void)finish; +- (void)cancelConnection; +@end + +@implementation AFURLConnectionOperation +@synthesize outputStream = _outputStream; + ++ (void)networkRequestThreadEntryPoint:(id)__unused object { + @autoreleasepool { + [[NSThread currentThread] setName:@"AFNetworking"]; + + NSRunLoop *runLoop = [NSRunLoop currentRunLoop]; + [runLoop addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode]; + [runLoop run]; + } +} + ++ (NSThread *)networkRequestThread { + static NSThread *_networkRequestThread = nil; + static dispatch_once_t oncePredicate; + dispatch_once(&oncePredicate, ^{ + _networkRequestThread = [[NSThread alloc] initWithTarget:self selector:@selector(networkRequestThreadEntryPoint:) object:nil]; + [_networkRequestThread start]; + }); + + return _networkRequestThread; +} + +- (instancetype)initWithRequest:(NSURLRequest *)urlRequest { + NSParameterAssert(urlRequest); + + self = [super init]; + if (!self) { + return nil; + } + + _state = AFOperationReadyState; + + self.lock = [[NSRecursiveLock alloc] init]; + self.lock.name = kAFNetworkingLockName; + + self.runLoopModes = [NSSet setWithObject:NSRunLoopCommonModes]; + + self.request = urlRequest; + + self.shouldUseCredentialStorage = YES; + + self.securityPolicy = [AFSecurityPolicy defaultPolicy]; + + return self; +} + +- (void)dealloc { + if (_outputStream) { + [_outputStream close]; + _outputStream = nil; + } + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && !defined(AF_APP_EXTENSIONS) + if (_backgroundTaskIdentifier) { + [[UIApplication sharedApplication] endBackgroundTask:_backgroundTaskIdentifier]; + _backgroundTaskIdentifier = UIBackgroundTaskInvalid; + } +#endif +} + +#pragma mark - + +- (void)setResponseData:(NSData *)responseData { + [self.lock lock]; + if (!responseData) { + _responseData = nil; + } else { + _responseData = [NSData dataWithBytes:responseData.bytes length:responseData.length]; + } + [self.lock unlock]; +} + +- (NSString *)responseString { + [self.lock lock]; + if (!_responseString && self.response && self.responseData) { + self.responseString = [[NSString alloc] initWithData:self.responseData encoding:self.responseStringEncoding]; + } + [self.lock unlock]; + + return _responseString; +} + +- (NSStringEncoding)responseStringEncoding { + [self.lock lock]; + if (!_responseStringEncoding && self.response) { + NSStringEncoding stringEncoding = NSUTF8StringEncoding; + if (self.response.textEncodingName) { + CFStringEncoding IANAEncoding = CFStringConvertIANACharSetNameToEncoding((__bridge CFStringRef)self.response.textEncodingName); + if (IANAEncoding != kCFStringEncodingInvalidId) { + stringEncoding = CFStringConvertEncodingToNSStringEncoding(IANAEncoding); + } + } + + self.responseStringEncoding = stringEncoding; + } + [self.lock unlock]; + + return _responseStringEncoding; +} + +- (NSInputStream *)inputStream { + return self.request.HTTPBodyStream; +} + +- (void)setInputStream:(NSInputStream *)inputStream { + NSMutableURLRequest *mutableRequest = [self.request mutableCopy]; + mutableRequest.HTTPBodyStream = inputStream; + self.request = mutableRequest; +} + +- (NSOutputStream *)outputStream { + if (!_outputStream) { + self.outputStream = [NSOutputStream outputStreamToMemory]; + } + + return _outputStream; +} + +- (void)setOutputStream:(NSOutputStream *)outputStream { + [self.lock lock]; + if (outputStream != _outputStream) { + if (_outputStream) { + [_outputStream close]; + } + + _outputStream = outputStream; + } + [self.lock unlock]; +} + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && !defined(AF_APP_EXTENSIONS) +- (void)setShouldExecuteAsBackgroundTaskWithExpirationHandler:(void (^)(void))handler { + [self.lock lock]; + if (!self.backgroundTaskIdentifier) { + UIApplication *application = [UIApplication sharedApplication]; + __weak __typeof(self)weakSelf = self; + self.backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^{ + __strong __typeof(weakSelf)strongSelf = weakSelf; + + if (handler) { + handler(); + } + + if (strongSelf) { + [strongSelf cancel]; + + [application endBackgroundTask:strongSelf.backgroundTaskIdentifier]; + strongSelf.backgroundTaskIdentifier = UIBackgroundTaskInvalid; + } + }]; + } + [self.lock unlock]; +} +#endif + +#pragma mark - + +- (void)setState:(AFOperationState)state { + if (!AFStateTransitionIsValid(self.state, state, [self isCancelled])) { + return; + } + + [self.lock lock]; + NSString *oldStateKey = AFKeyPathFromOperationState(self.state); + NSString *newStateKey = AFKeyPathFromOperationState(state); + + [self willChangeValueForKey:newStateKey]; + [self willChangeValueForKey:oldStateKey]; + _state = state; + [self didChangeValueForKey:oldStateKey]; + [self didChangeValueForKey:newStateKey]; + [self.lock unlock]; +} + +- (void)pause { + if ([self isPaused] || [self isFinished] || [self isCancelled]) { + return; + } + + [self.lock lock]; + if ([self isExecuting]) { + [self performSelector:@selector(operationDidPause) onThread:[[self class] networkRequestThread] withObject:nil waitUntilDone:NO modes:[self.runLoopModes allObjects]]; + + dispatch_async(dispatch_get_main_queue(), ^{ + NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; + [notificationCenter postNotificationName:AFNetworkingOperationDidFinishNotification object:self]; + }); + } + + self.state = AFOperationPausedState; + [self.lock unlock]; +} + +- (void)operationDidPause { + [self.lock lock]; + [self.connection cancel]; + [self.lock unlock]; +} + +- (BOOL)isPaused { + return self.state == AFOperationPausedState; +} + +- (void)resume { + if (![self isPaused]) { + return; + } + + [self.lock lock]; + self.state = AFOperationReadyState; + + [self start]; + [self.lock unlock]; +} + +#pragma mark - + +- (void)setUploadProgressBlock:(void (^)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))block { + self.uploadProgress = block; +} + +- (void)setDownloadProgressBlock:(void (^)(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead))block { + self.downloadProgress = block; +} + +- (void)setWillSendRequestForAuthenticationChallengeBlock:(void (^)(NSURLConnection *connection, NSURLAuthenticationChallenge *challenge))block { + self.authenticationChallenge = block; +} + +- (void)setCacheResponseBlock:(NSCachedURLResponse * (^)(NSURLConnection *connection, NSCachedURLResponse *cachedResponse))block { + self.cacheResponse = block; +} + +- (void)setRedirectResponseBlock:(NSURLRequest * (^)(NSURLConnection *connection, NSURLRequest *request, NSURLResponse *redirectResponse))block { + self.redirectResponse = block; +} + +#pragma mark - NSOperation + +- (void)setCompletionBlock:(void (^)(void))block { + [self.lock lock]; + if (!block) { + [super setCompletionBlock:nil]; + } else { + __weak __typeof(self)weakSelf = self; + [super setCompletionBlock:^ { + __strong __typeof(weakSelf)strongSelf = weakSelf; + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + dispatch_group_t group = strongSelf.completionGroup ?: url_request_operation_completion_group(); + dispatch_queue_t queue = strongSelf.completionQueue ?: dispatch_get_main_queue(); +#pragma clang diagnostic pop + + dispatch_group_async(group, queue, ^{ + block(); + }); + + dispatch_group_notify(group, url_request_operation_completion_queue(), ^{ + [strongSelf setCompletionBlock:nil]; + }); + }]; + } + [self.lock unlock]; +} + +- (BOOL)isReady { + return self.state == AFOperationReadyState && [super isReady]; +} + +- (BOOL)isExecuting { + return self.state == AFOperationExecutingState; +} + +- (BOOL)isFinished { + return self.state == AFOperationFinishedState; +} + +- (BOOL)isConcurrent { + return YES; +} + +- (void)start { + [self.lock lock]; + if ([self isCancelled]) { + [self performSelector:@selector(cancelConnection) onThread:[[self class] networkRequestThread] withObject:nil waitUntilDone:NO modes:[self.runLoopModes allObjects]]; + } else if ([self isReady]) { + self.state = AFOperationExecutingState; + + [self performSelector:@selector(operationDidStart) onThread:[[self class] networkRequestThread] withObject:nil waitUntilDone:NO modes:[self.runLoopModes allObjects]]; + } + [self.lock unlock]; +} + +- (void)operationDidStart { + [self.lock lock]; + if (![self isCancelled]) { + self.connection = [[NSURLConnection alloc] initWithRequest:self.request delegate:self startImmediately:NO]; + + NSRunLoop *runLoop = [NSRunLoop currentRunLoop]; + for (NSString *runLoopMode in self.runLoopModes) { + [self.connection scheduleInRunLoop:runLoop forMode:runLoopMode]; + [self.outputStream scheduleInRunLoop:runLoop forMode:runLoopMode]; + } + + [self.outputStream open]; + [self.connection start]; + } + [self.lock unlock]; + + dispatch_async(dispatch_get_main_queue(), ^{ + [[NSNotificationCenter defaultCenter] postNotificationName:AFNetworkingOperationDidStartNotification object:self]; + }); +} + +- (void)finish { + [self.lock lock]; + self.state = AFOperationFinishedState; + [self.lock unlock]; + + dispatch_async(dispatch_get_main_queue(), ^{ + [[NSNotificationCenter defaultCenter] postNotificationName:AFNetworkingOperationDidFinishNotification object:self]; + }); +} + +- (void)cancel { + [self.lock lock]; + if (![self isFinished] && ![self isCancelled]) { + [super cancel]; + + if ([self isExecuting]) { + [self performSelector:@selector(cancelConnection) onThread:[[self class] networkRequestThread] withObject:nil waitUntilDone:NO modes:[self.runLoopModes allObjects]]; + } + } + [self.lock unlock]; +} + +- (void)cancelConnection { + NSDictionary *userInfo = nil; + if ([self.request URL]) { + userInfo = [NSDictionary dictionaryWithObject:[self.request URL] forKey:NSURLErrorFailingURLErrorKey]; + } + NSError *error = [NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorCancelled userInfo:userInfo]; + + if (![self isFinished]) { + if (self.connection) { + [self.connection cancel]; + [self performSelector:@selector(connection:didFailWithError:) withObject:self.connection withObject:error]; + } else { + // Accomodate race condition where `self.connection` has not yet been set before cancellation + self.error = error; + [self finish]; + } + } +} + +#pragma mark - + ++ (NSArray *)batchOfRequestOperations:(NSArray *)operations + progressBlock:(void (^)(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations))progressBlock + completionBlock:(void (^)(NSArray *operations))completionBlock +{ + if (!operations || [operations count] == 0) { + return @[[NSBlockOperation blockOperationWithBlock:^{ + dispatch_async(dispatch_get_main_queue(), ^{ + if (completionBlock) { + completionBlock(@[]); + } + }); + }]]; + } + + __block dispatch_group_t group = dispatch_group_create(); + NSBlockOperation *batchedOperation = [NSBlockOperation blockOperationWithBlock:^{ + dispatch_group_notify(group, dispatch_get_main_queue(), ^{ + if (completionBlock) { + completionBlock(operations); + } + }); + }]; + + for (AFURLConnectionOperation *operation in operations) { + operation.completionGroup = group; + void (^originalCompletionBlock)(void) = [operation.completionBlock copy]; + __weak __typeof(operation)weakOperation = operation; + operation.completionBlock = ^{ + __strong __typeof(weakOperation)strongOperation = weakOperation; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + dispatch_queue_t queue = strongOperation.completionQueue ?: dispatch_get_main_queue(); +#pragma clang diagnostic pop + dispatch_group_async(group, queue, ^{ + if (originalCompletionBlock) { + originalCompletionBlock(); + } + + NSUInteger numberOfFinishedOperations = [[operations indexesOfObjectsPassingTest:^BOOL(id op, NSUInteger __unused idx, BOOL __unused *stop) { + return [op isFinished]; + }] count]; + + if (progressBlock) { + progressBlock(numberOfFinishedOperations, [operations count]); + } + + dispatch_group_leave(group); + }); + }; + + dispatch_group_enter(group); + [batchedOperation addDependency:operation]; + } + + return [operations arrayByAddingObject:batchedOperation]; +} + +#pragma mark - NSObject + +- (NSString *)description { + [self.lock lock]; + NSString *description = [NSString stringWithFormat:@"<%@: %p, state: %@, cancelled: %@ request: %@, response: %@>", NSStringFromClass([self class]), self, AFKeyPathFromOperationState(self.state), ([self isCancelled] ? @"YES" : @"NO"), self.request, self.response]; + [self.lock unlock]; + return description; +} + +#pragma mark - NSURLConnectionDelegate + +- (void)connection:(NSURLConnection *)connection +willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge +{ + if (self.authenticationChallenge) { + self.authenticationChallenge(connection, challenge); + return; + } + + if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) { + if ([self.securityPolicy evaluateServerTrust:challenge.protectionSpace.serverTrust forDomain:challenge.protectionSpace.host]) { + NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; + [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge]; + } else { + [[challenge sender] cancelAuthenticationChallenge:challenge]; + } + } else { + if ([challenge previousFailureCount] == 0) { + if (self.credential) { + [[challenge sender] useCredential:self.credential forAuthenticationChallenge:challenge]; + } else { + [[challenge sender] continueWithoutCredentialForAuthenticationChallenge:challenge]; + } + } else { + [[challenge sender] continueWithoutCredentialForAuthenticationChallenge:challenge]; + } + } +} + +- (BOOL)connectionShouldUseCredentialStorage:(NSURLConnection __unused *)connection { + return self.shouldUseCredentialStorage; +} + +- (NSURLRequest *)connection:(NSURLConnection *)connection + willSendRequest:(NSURLRequest *)request + redirectResponse:(NSURLResponse *)redirectResponse +{ + if (self.redirectResponse) { + return self.redirectResponse(connection, request, redirectResponse); + } else { + return request; + } +} + +- (void)connection:(NSURLConnection __unused *)connection + didSendBodyData:(NSInteger)bytesWritten + totalBytesWritten:(NSInteger)totalBytesWritten +totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite +{ + dispatch_async(dispatch_get_main_queue(), ^{ + if (self.uploadProgress) { + self.uploadProgress((NSUInteger)bytesWritten, totalBytesWritten, totalBytesExpectedToWrite); + } + }); +} + +- (void)connection:(NSURLConnection __unused *)connection +didReceiveResponse:(NSURLResponse *)response +{ + self.response = response; +} + +- (void)connection:(NSURLConnection __unused *)connection + didReceiveData:(NSData *)data +{ + NSUInteger length = [data length]; + while (YES) { + NSInteger totalNumberOfBytesWritten = 0; + if ([self.outputStream hasSpaceAvailable]) { + const uint8_t *dataBuffer = (uint8_t *)[data bytes]; + + NSInteger numberOfBytesWritten = 0; + while (totalNumberOfBytesWritten < (NSInteger)length) { + numberOfBytesWritten = [self.outputStream write:&dataBuffer[(NSUInteger)totalNumberOfBytesWritten] maxLength:(length - (NSUInteger)totalNumberOfBytesWritten)]; + if (numberOfBytesWritten == -1) { + break; + } + + totalNumberOfBytesWritten += numberOfBytesWritten; + } + + break; + } + + if (self.outputStream.streamError) { + [self.connection cancel]; + [self performSelector:@selector(connection:didFailWithError:) withObject:self.connection withObject:self.outputStream.streamError]; + return; + } + } + + dispatch_async(dispatch_get_main_queue(), ^{ + self.totalBytesRead += (long long)length; + + if (self.downloadProgress) { + self.downloadProgress(length, self.totalBytesRead, self.response.expectedContentLength); + } + }); +} + +- (void)connectionDidFinishLoading:(NSURLConnection __unused *)connection { + self.responseData = [self.outputStream propertyForKey:NSStreamDataWrittenToMemoryStreamKey]; + + [self.outputStream close]; + if (self.responseData) { + self.outputStream = nil; + } + + self.connection = nil; + + [self finish]; +} + +- (void)connection:(NSURLConnection __unused *)connection + didFailWithError:(NSError *)error +{ + self.error = error; + + [self.outputStream close]; + if (self.responseData) { + self.outputStream = nil; + } + + self.connection = nil; + + [self finish]; +} + +- (NSCachedURLResponse *)connection:(NSURLConnection *)connection + willCacheResponse:(NSCachedURLResponse *)cachedResponse +{ + if (self.cacheResponse) { + return self.cacheResponse(connection, cachedResponse); + } else { + if ([self isCancelled]) { + return nil; + } + + return cachedResponse; + } +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder { + NSURLRequest *request = [decoder decodeObjectOfClass:[NSURLRequest class] forKey:NSStringFromSelector(@selector(request))]; + + self = [self initWithRequest:request]; + if (!self) { + return nil; + } + + self.state = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(state))] integerValue]; + self.response = [decoder decodeObjectOfClass:[NSHTTPURLResponse class] forKey:NSStringFromSelector(@selector(response))]; + self.error = [decoder decodeObjectOfClass:[NSError class] forKey:NSStringFromSelector(@selector(error))]; + self.responseData = [decoder decodeObjectOfClass:[NSData class] forKey:NSStringFromSelector(@selector(responseData))]; + self.totalBytesRead = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(totalBytesRead))] longLongValue]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [self pause]; + + [coder encodeObject:self.request forKey:NSStringFromSelector(@selector(request))]; + + switch (self.state) { + case AFOperationExecutingState: + case AFOperationPausedState: + [coder encodeInteger:AFOperationReadyState forKey:NSStringFromSelector(@selector(state))]; + break; + default: + [coder encodeInteger:self.state forKey:NSStringFromSelector(@selector(state))]; + break; + } + + [coder encodeObject:self.response forKey:NSStringFromSelector(@selector(response))]; + [coder encodeObject:self.error forKey:NSStringFromSelector(@selector(error))]; + [coder encodeObject:self.responseData forKey:NSStringFromSelector(@selector(responseData))]; + [coder encodeInt64:self.totalBytesRead forKey:NSStringFromSelector(@selector(totalBytesRead))]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFURLConnectionOperation *operation = [(AFURLConnectionOperation *)[[self class] allocWithZone:zone] initWithRequest:self.request]; + + operation.uploadProgress = self.uploadProgress; + operation.downloadProgress = self.downloadProgress; + operation.authenticationChallenge = self.authenticationChallenge; + operation.cacheResponse = self.cacheResponse; + operation.redirectResponse = self.redirectResponse; + operation.completionQueue = self.completionQueue; + operation.completionGroup = self.completionGroup; + + return operation; +} + +@end diff --git a/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h b/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h new file mode 100644 index 0000000..e60a267 --- /dev/null +++ b/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h @@ -0,0 +1,468 @@ +// AFURLRequestSerialization.h +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +#import +#endif + +/** + The `AFURLRequestSerialization` protocol is adopted by an object that encodes parameters for a specified HTTP requests. Request serializers may encode parameters as query strings, HTTP bodies, setting the appropriate HTTP header fields as necessary. + + For example, a JSON request serializer may set the HTTP body of the request to a JSON representation, and set the `Content-Type` HTTP header field value to `application/json`. + */ +@protocol AFURLRequestSerialization + +/** + Returns a request with the specified parameters encoded into a copy of the original request. + + @param request The original request. + @param parameters The parameters to be encoded. + @param error The error that occurred while attempting to encode the request parameters. + + @return A serialized request. + */ +- (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request + withParameters:(id)parameters + error:(NSError * __autoreleasing *)error; + +@end + +#pragma mark - + +/** + + */ +typedef NS_ENUM(NSUInteger, AFHTTPRequestQueryStringSerializationStyle) { + AFHTTPRequestQueryStringDefaultStyle = 0, +}; + +@protocol AFMultipartFormData; + +/** + `AFHTTPRequestSerializer` conforms to the `AFURLRequestSerialization` & `AFURLResponseSerialization` protocols, offering a concrete base implementation of query string / URL form-encoded parameter serialization and default request headers, as well as response status code and content type validation. + + Any request or response serializer dealing with HTTP is encouraged to subclass `AFHTTPRequestSerializer` in order to ensure consistent default behavior. + */ +@interface AFHTTPRequestSerializer : NSObject + +/** + The string encoding used to serialize parameters. `NSUTF8StringEncoding` by default. + */ +@property (nonatomic, assign) NSStringEncoding stringEncoding; + +/** + Whether created requests can use the device’s cellular radio (if present). `YES` by default. + + @see NSMutableURLRequest -setAllowsCellularAccess: + */ +@property (nonatomic, assign) BOOL allowsCellularAccess; + +/** + The cache policy of created requests. `NSURLRequestUseProtocolCachePolicy` by default. + + @see NSMutableURLRequest -setCachePolicy: + */ +@property (nonatomic, assign) NSURLRequestCachePolicy cachePolicy; + +/** + Whether created requests should use the default cookie handling. `YES` by default. + + @see NSMutableURLRequest -setHTTPShouldHandleCookies: + */ +@property (nonatomic, assign) BOOL HTTPShouldHandleCookies; + +/** + Whether created requests can continue transmitting data before receiving a response from an earlier transmission. `NO` by default + + @see NSMutableURLRequest -setHTTPShouldUsePipelining: + */ +@property (nonatomic, assign) BOOL HTTPShouldUsePipelining; + +/** + The network service type for created requests. `NSURLNetworkServiceTypeDefault` by default. + + @see NSMutableURLRequest -setNetworkServiceType: + */ +@property (nonatomic, assign) NSURLRequestNetworkServiceType networkServiceType; + +/** + The timeout interval, in seconds, for created requests. The default timeout interval is 60 seconds. + + @see NSMutableURLRequest -setTimeoutInterval: + */ +@property (nonatomic, assign) NSTimeInterval timeoutInterval; + +///--------------------------------------- +/// @name Configuring HTTP Request Headers +///--------------------------------------- + +/** + Default HTTP header field values to be applied to serialized requests. By default, these include the following: + + - `Accept-Language` with the contents of `NSLocale +preferredLanguages` + - `User-Agent` with the contents of various bundle identifiers and OS designations + + @discussion To add or remove default request headers, use `setValue:forHTTPHeaderField:`. + */ +@property (readonly, nonatomic, strong) NSDictionary *HTTPRequestHeaders; + +/** + Creates and returns a serializer with default configuration. + */ ++ (instancetype)serializer; + +/** + Sets the value for the HTTP headers set in request objects made by the HTTP client. If `nil`, removes the existing value for that header. + + @param field The HTTP header to set a default value for + @param value The value set as default for the specified header, or `nil` + */ +- (void)setValue:(NSString *)value +forHTTPHeaderField:(NSString *)field; + +/** + Returns the value for the HTTP headers set in the request serializer. + + @param field The HTTP header to retrieve the default value for + + @return The value set as default for the specified header, or `nil` + */ +- (NSString *)valueForHTTPHeaderField:(NSString *)field; + +/** + Sets the "Authorization" HTTP header set in request objects made by the HTTP client to a basic authentication value with Base64-encoded username and password. This overwrites any existing value for this header. + + @param username The HTTP basic auth username + @param password The HTTP basic auth password + */ +- (void)setAuthorizationHeaderFieldWithUsername:(NSString *)username + password:(NSString *)password; + +/** + @deprecated This method has been deprecated. Use -setValue:forHTTPHeaderField: instead. + */ +- (void)setAuthorizationHeaderFieldWithToken:(NSString *)token DEPRECATED_ATTRIBUTE; + + +/** + Clears any existing value for the "Authorization" HTTP header. + */ +- (void)clearAuthorizationHeader; + +///------------------------------------------------------- +/// @name Configuring Query String Parameter Serialization +///------------------------------------------------------- + +/** + HTTP methods for which serialized requests will encode parameters as a query string. `GET`, `HEAD`, and `DELETE` by default. + */ +@property (nonatomic, strong) NSSet *HTTPMethodsEncodingParametersInURI; + +/** + Set the method of query string serialization according to one of the pre-defined styles. + + @param style The serialization style. + + @see AFHTTPRequestQueryStringSerializationStyle + */ +- (void)setQueryStringSerializationWithStyle:(AFHTTPRequestQueryStringSerializationStyle)style; + +/** + Set the a custom method of query string serialization according to the specified block. + + @param block A block that defines a process of encoding parameters into a query string. This block returns the query string and takes three arguments: the request, the parameters to encode, and the error that occurred when attempting to encode parameters for the given request. + */ +- (void)setQueryStringSerializationWithBlock:(NSString * (^)(NSURLRequest *request, id parameters, NSError * __autoreleasing *error))block; + +///------------------------------- +/// @name Creating Request Objects +///------------------------------- + +/** + @deprecated This method has been deprecated. Use -requestWithMethod:URLString:parameters:error: instead. + */ +- (NSMutableURLRequest *)requestWithMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(id)parameters DEPRECATED_ATTRIBUTE; + +/** + Creates an `NSMutableURLRequest` object with the specified HTTP method and URL string. + + If the HTTP method is `GET`, `HEAD`, or `DELETE`, the parameters will be used to construct a url-encoded query string that is appended to the request's URL. Otherwise, the parameters will be encoded according to the value of the `parameterEncoding` property, and set as the request body. + + @param method The HTTP method for the request, such as `GET`, `POST`, `PUT`, or `DELETE`. This parameter must not be `nil`. + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be either set as a query string for `GET` requests, or the request HTTP body. + @param error The error that occured while constructing the request. + + @return An `NSMutableURLRequest` object. + */ +- (NSMutableURLRequest *)requestWithMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(id)parameters + error:(NSError * __autoreleasing *)error; + +/** + @deprecated This method has been deprecated. Use -multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:error: instead. + */ +- (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(NSDictionary *)parameters + constructingBodyWithBlock:(void (^)(id formData))block DEPRECATED_ATTRIBUTE; + +/** + Creates an `NSMutableURLRequest` object with the specified HTTP method and URLString, and constructs a `multipart/form-data` HTTP body, using the specified parameters and multipart form data block. See http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.2 + + Multipart form requests are automatically streamed, reading files directly from disk along with in-memory data in a single HTTP body. The resulting `NSMutableURLRequest` object has an `HTTPBodyStream` property, so refrain from setting `HTTPBodyStream` or `HTTPBody` on this request object, as it will clear out the multipart form body stream. + + @param method The HTTP method for the request. This parameter must not be `GET` or `HEAD`, or `nil`. + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded and set in the request HTTP body. + @param block A block that takes a single argument and appends data to the HTTP body. The block argument is an object adopting the `AFMultipartFormData` protocol. + @param error The error that occured while constructing the request. + + @return An `NSMutableURLRequest` object + */ +- (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(NSDictionary *)parameters + constructingBodyWithBlock:(void (^)(id formData))block + error:(NSError * __autoreleasing *)error; + +/** + Creates an `NSMutableURLRequest` by removing the `HTTPBodyStream` from a request, and asynchronously writing its contents into the specified file, invoking the completion handler when finished. + + @param request The multipart form request. The `HTTPBodyStream` property of `request` must not be `nil`. + @param fileURL The file URL to write multipart form contents to. + @param handler A handler block to execute. + + @discussion There is a bug in `NSURLSessionTask` that causes requests to not send a `Content-Length` header when streaming contents from an HTTP body, which is notably problematic when interacting with the Amazon S3 webservice. As a workaround, this method takes a request constructed with `multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:error:`, or any other request with an `HTTPBodyStream`, writes the contents to the specified file and returns a copy of the original request with the `HTTPBodyStream` property set to `nil`. From here, the file can either be passed to `AFURLSessionManager -uploadTaskWithRequest:fromFile:progress:completionHandler:`, or have its contents read into an `NSData` that's assigned to the `HTTPBody` property of the request. + + @see https://github.com/AFNetworking/AFNetworking/issues/1398 + */ +- (NSMutableURLRequest *)requestWithMultipartFormRequest:(NSURLRequest *)request + writingStreamContentsToFile:(NSURL *)fileURL + completionHandler:(void (^)(NSError *error))handler; + +@end + +#pragma mark - + +/** + The `AFMultipartFormData` protocol defines the methods supported by the parameter in the block argument of `AFHTTPRequestSerializer -multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:`. + */ +@protocol AFMultipartFormData + +/** + Appends the HTTP header `Content-Disposition: file; filename=#{generated filename}; name=#{name}"` and `Content-Type: #{generated mimeType}`, followed by the encoded file data and the multipart form boundary. + + The filename and MIME type for this data in the form will be automatically generated, using the last path component of the `fileURL` and system associated MIME type for the `fileURL` extension, respectively. + + @param fileURL The URL corresponding to the file whose content will be appended to the form. This parameter must not be `nil`. + @param name The name to be associated with the specified data. This parameter must not be `nil`. + @param error If an error occurs, upon return contains an `NSError` object that describes the problem. + + @return `YES` if the file data was successfully appended, otherwise `NO`. + */ +- (BOOL)appendPartWithFileURL:(NSURL *)fileURL + name:(NSString *)name + error:(NSError * __autoreleasing *)error; + +/** + Appends the HTTP header `Content-Disposition: file; filename=#{filename}; name=#{name}"` and `Content-Type: #{mimeType}`, followed by the encoded file data and the multipart form boundary. + + @param fileURL The URL corresponding to the file whose content will be appended to the form. This parameter must not be `nil`. + @param name The name to be associated with the specified data. This parameter must not be `nil`. + @param fileName The file name to be used in the `Content-Disposition` header. This parameter must not be `nil`. + @param mimeType The declared MIME type of the file data. This parameter must not be `nil`. + @param error If an error occurs, upon return contains an `NSError` object that describes the problem. + + @return `YES` if the file data was successfully appended otherwise `NO`. + */ +- (BOOL)appendPartWithFileURL:(NSURL *)fileURL + name:(NSString *)name + fileName:(NSString *)fileName + mimeType:(NSString *)mimeType + error:(NSError * __autoreleasing *)error; + +/** + Appends the HTTP header `Content-Disposition: file; filename=#{filename}; name=#{name}"` and `Content-Type: #{mimeType}`, followed by the data from the input stream and the multipart form boundary. + + @param inputStream The input stream to be appended to the form data + @param name The name to be associated with the specified input stream. This parameter must not be `nil`. + @param fileName The filename to be associated with the specified input stream. This parameter must not be `nil`. + @param length The length of the specified input stream in bytes. + @param mimeType The MIME type of the specified data. (For example, the MIME type for a JPEG image is image/jpeg.) For a list of valid MIME types, see http://www.iana.org/assignments/media-types/. This parameter must not be `nil`. + */ +- (void)appendPartWithInputStream:(NSInputStream *)inputStream + name:(NSString *)name + fileName:(NSString *)fileName + length:(int64_t)length + mimeType:(NSString *)mimeType; + +/** + Appends the HTTP header `Content-Disposition: file; filename=#{filename}; name=#{name}"` and `Content-Type: #{mimeType}`, followed by the encoded file data and the multipart form boundary. + + @param data The data to be encoded and appended to the form data. + @param name The name to be associated with the specified data. This parameter must not be `nil`. + @param fileName The filename to be associated with the specified data. This parameter must not be `nil`. + @param mimeType The MIME type of the specified data. (For example, the MIME type for a JPEG image is image/jpeg.) For a list of valid MIME types, see http://www.iana.org/assignments/media-types/. This parameter must not be `nil`. + */ +- (void)appendPartWithFileData:(NSData *)data + name:(NSString *)name + fileName:(NSString *)fileName + mimeType:(NSString *)mimeType; + +/** + Appends the HTTP headers `Content-Disposition: form-data; name=#{name}"`, followed by the encoded data and the multipart form boundary. + + @param data The data to be encoded and appended to the form data. + @param name The name to be associated with the specified data. This parameter must not be `nil`. + */ + +- (void)appendPartWithFormData:(NSData *)data + name:(NSString *)name; + + +/** + Appends HTTP headers, followed by the encoded data and the multipart form boundary. + + @param headers The HTTP headers to be appended to the form data. + @param body The data to be encoded and appended to the form data. This parameter must not be `nil`. + */ +- (void)appendPartWithHeaders:(NSDictionary *)headers + body:(NSData *)body; + +/** + Throttles request bandwidth by limiting the packet size and adding a delay for each chunk read from the upload stream. + + When uploading over a 3G or EDGE connection, requests may fail with "request body stream exhausted". Setting a maximum packet size and delay according to the recommended values (`kAFUploadStream3GSuggestedPacketSize` and `kAFUploadStream3GSuggestedDelay`) lowers the risk of the input stream exceeding its allocated bandwidth. Unfortunately, there is no definite way to distinguish between a 3G, EDGE, or LTE connection over `NSURLConnection`. As such, it is not recommended that you throttle bandwidth based solely on network reachability. Instead, you should consider checking for the "request body stream exhausted" in a failure block, and then retrying the request with throttled bandwidth. + + @param numberOfBytes Maximum packet size, in number of bytes. The default packet size for an input stream is 16kb. + @param delay Duration of delay each time a packet is read. By default, no delay is set. + */ +- (void)throttleBandwidthWithPacketSize:(NSUInteger)numberOfBytes + delay:(NSTimeInterval)delay; + +@end + +#pragma mark - + +/** + `AFJSONRequestSerializer` is a subclass of `AFHTTPRequestSerializer` that encodes parameters as JSON using `NSJSONSerialization`, setting the `Content-Type` of the encoded request to `application/json`. + */ +@interface AFJSONRequestSerializer : AFHTTPRequestSerializer + +/** + Options for writing the request JSON data from Foundation objects. For possible values, see the `NSJSONSerialization` documentation section "NSJSONWritingOptions". `0` by default. + */ +@property (nonatomic, assign) NSJSONWritingOptions writingOptions; + +/** + Creates and returns a JSON serializer with specified reading and writing options. + + @param writingOptions The specified JSON writing options. + */ ++ (instancetype)serializerWithWritingOptions:(NSJSONWritingOptions)writingOptions; + +@end + +#pragma mark - + +/** + `AFPropertyListRequestSerializer` is a subclass of `AFHTTPRequestSerializer` that encodes parameters as JSON using `NSPropertyListSerializer`, setting the `Content-Type` of the encoded request to `application/x-plist`. + */ +@interface AFPropertyListRequestSerializer : AFHTTPRequestSerializer + +/** + The property list format. Possible values are described in "NSPropertyListFormat". + */ +@property (nonatomic, assign) NSPropertyListFormat format; + +/** + @warning The `writeOptions` property is currently unused. + */ +@property (nonatomic, assign) NSPropertyListWriteOptions writeOptions; + +/** + Creates and returns a property list serializer with a specified format, read options, and write options. + + @param format The property list format. + @param writeOptions The property list write options. + + @warning The `writeOptions` property is currently unused. + */ ++ (instancetype)serializerWithFormat:(NSPropertyListFormat)format + writeOptions:(NSPropertyListWriteOptions)writeOptions; + +@end + +#pragma mark - + +///---------------- +/// @name Constants +///---------------- + +/** + ## Error Domains + + The following error domain is predefined. + + - `NSString * const AFURLRequestSerializationErrorDomain` + + ### Constants + + `AFURLRequestSerializationErrorDomain` + AFURLRequestSerializer errors. Error codes for `AFURLRequestSerializationErrorDomain` correspond to codes in `NSURLErrorDomain`. + */ +extern NSString * const AFURLRequestSerializationErrorDomain; + +/** + ## User info dictionary keys + + These keys may exist in the user info dictionary, in addition to those defined for NSError. + + - `NSString * const AFNetworkingOperationFailingURLRequestErrorKey` + + ### Constants + + `AFNetworkingOperationFailingURLRequestErrorKey` + The corresponding value is an `NSURLRequest` containing the request of the operation associated with an error. This key is only present in the `AFURLRequestSerializationErrorDomain`. + */ +extern NSString * const AFNetworkingOperationFailingURLRequestErrorKey; + +/** + ## Throttling Bandwidth for HTTP Request Input Streams + + @see -throttleBandwidthWithPacketSize:delay: + + ### Constants + + `kAFUploadStream3GSuggestedPacketSize` + Maximum packet size, in number of bytes. Equal to 16kb. + + `kAFUploadStream3GSuggestedDelay` + Duration of delay each time a packet is read. Equal to 0.2 seconds. + */ +extern NSUInteger const kAFUploadStream3GSuggestedPacketSize; +extern NSTimeInterval const kAFUploadStream3GSuggestedDelay; diff --git a/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m b/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m new file mode 100644 index 0000000..4c1b9f3 --- /dev/null +++ b/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m @@ -0,0 +1,1344 @@ +// AFURLRequestSerialization.m +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import "AFURLRequestSerialization.h" + +#if __IPHONE_OS_VERSION_MIN_REQUIRED +#import +#else +#import +#endif + +NSString * const AFURLRequestSerializationErrorDomain = @"com.alamofire.error.serialization.request"; +NSString * const AFNetworkingOperationFailingURLRequestErrorKey = @"com.alamofire.serialization.request.error.response"; + +typedef NSString * (^AFQueryStringSerializationBlock)(NSURLRequest *request, id parameters, NSError *__autoreleasing *error); + +static NSString * AFBase64EncodedStringFromString(NSString *string) { + NSData *data = [NSData dataWithBytes:[string UTF8String] length:[string lengthOfBytesUsingEncoding:NSUTF8StringEncoding]]; + NSUInteger length = [data length]; + NSMutableData *mutableData = [NSMutableData dataWithLength:((length + 2) / 3) * 4]; + + uint8_t *input = (uint8_t *)[data bytes]; + uint8_t *output = (uint8_t *)[mutableData mutableBytes]; + + for (NSUInteger i = 0; i < length; i += 3) { + NSUInteger value = 0; + for (NSUInteger j = i; j < (i + 3); j++) { + value <<= 8; + if (j < length) { + value |= (0xFF & input[j]); + } + } + + static uint8_t const kAFBase64EncodingTable[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + + NSUInteger idx = (i / 3) * 4; + output[idx + 0] = kAFBase64EncodingTable[(value >> 18) & 0x3F]; + output[idx + 1] = kAFBase64EncodingTable[(value >> 12) & 0x3F]; + output[idx + 2] = (i + 1) < length ? kAFBase64EncodingTable[(value >> 6) & 0x3F] : '='; + output[idx + 3] = (i + 2) < length ? kAFBase64EncodingTable[(value >> 0) & 0x3F] : '='; + } + + return [[NSString alloc] initWithData:mutableData encoding:NSASCIIStringEncoding]; +} + +static NSString * const kAFCharactersToBeEscapedInQueryString = @":/?&=;+!@#$()',*"; + +static NSString * AFPercentEscapedQueryStringKeyFromStringWithEncoding(NSString *string, NSStringEncoding encoding) { + static NSString * const kAFCharactersToLeaveUnescapedInQueryStringPairKey = @"[]."; + + return (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)string, (__bridge CFStringRef)kAFCharactersToLeaveUnescapedInQueryStringPairKey, (__bridge CFStringRef)kAFCharactersToBeEscapedInQueryString, CFStringConvertNSStringEncodingToEncoding(encoding)); +} + +static NSString * AFPercentEscapedQueryStringValueFromStringWithEncoding(NSString *string, NSStringEncoding encoding) { + return (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)string, NULL, (__bridge CFStringRef)kAFCharactersToBeEscapedInQueryString, CFStringConvertNSStringEncodingToEncoding(encoding)); +} + +#pragma mark - + +@interface AFQueryStringPair : NSObject +@property (readwrite, nonatomic, strong) id field; +@property (readwrite, nonatomic, strong) id value; + +- (id)initWithField:(id)field value:(id)value; + +- (NSString *)URLEncodedStringValueWithEncoding:(NSStringEncoding)stringEncoding; +@end + +@implementation AFQueryStringPair + +- (id)initWithField:(id)field value:(id)value { + self = [super init]; + if (!self) { + return nil; + } + + self.field = field; + self.value = value; + + return self; +} + +- (NSString *)URLEncodedStringValueWithEncoding:(NSStringEncoding)stringEncoding { + if (!self.value || [self.value isEqual:[NSNull null]]) { + return AFPercentEscapedQueryStringKeyFromStringWithEncoding([self.field description], stringEncoding); + } else { + return [NSString stringWithFormat:@"%@=%@", AFPercentEscapedQueryStringKeyFromStringWithEncoding([self.field description], stringEncoding), AFPercentEscapedQueryStringValueFromStringWithEncoding([self.value description], stringEncoding)]; + } +} + +@end + +#pragma mark - + +extern NSArray * AFQueryStringPairsFromDictionary(NSDictionary *dictionary); +extern NSArray * AFQueryStringPairsFromKeyAndValue(NSString *key, id value); + +static NSString * AFQueryStringFromParametersWithEncoding(NSDictionary *parameters, NSStringEncoding stringEncoding) { + NSMutableArray *mutablePairs = [NSMutableArray array]; + for (AFQueryStringPair *pair in AFQueryStringPairsFromDictionary(parameters)) { + [mutablePairs addObject:[pair URLEncodedStringValueWithEncoding:stringEncoding]]; + } + + return [mutablePairs componentsJoinedByString:@"&"]; +} + +NSArray * AFQueryStringPairsFromDictionary(NSDictionary *dictionary) { + return AFQueryStringPairsFromKeyAndValue(nil, dictionary); +} + +NSArray * AFQueryStringPairsFromKeyAndValue(NSString *key, id value) { + NSMutableArray *mutableQueryStringComponents = [NSMutableArray array]; + + NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"description" ascending:YES selector:@selector(compare:)]; + + if ([value isKindOfClass:[NSDictionary class]]) { + NSDictionary *dictionary = value; + // Sort dictionary keys to ensure consistent ordering in query string, which is important when deserializing potentially ambiguous sequences, such as an array of dictionaries + for (id nestedKey in [dictionary.allKeys sortedArrayUsingDescriptors:@[ sortDescriptor ]]) { + id nestedValue = [dictionary objectForKey:nestedKey]; + if (nestedValue) { + [mutableQueryStringComponents addObjectsFromArray:AFQueryStringPairsFromKeyAndValue((key ? [NSString stringWithFormat:@"%@[%@]", key, nestedKey] : nestedKey), nestedValue)]; + } + } + } else if ([value isKindOfClass:[NSArray class]]) { + NSArray *array = value; + for (id nestedValue in array) { + [mutableQueryStringComponents addObjectsFromArray:AFQueryStringPairsFromKeyAndValue([NSString stringWithFormat:@"%@[]", key], nestedValue)]; + } + } else if ([value isKindOfClass:[NSSet class]]) { + NSSet *set = value; + for (id obj in [set sortedArrayUsingDescriptors:@[ sortDescriptor ]]) { + [mutableQueryStringComponents addObjectsFromArray:AFQueryStringPairsFromKeyAndValue(key, obj)]; + } + } else { + [mutableQueryStringComponents addObject:[[AFQueryStringPair alloc] initWithField:key value:value]]; + } + + return mutableQueryStringComponents; +} + +#pragma mark - + +@interface AFStreamingMultipartFormData : NSObject +- (instancetype)initWithURLRequest:(NSMutableURLRequest *)urlRequest + stringEncoding:(NSStringEncoding)encoding; + +- (NSMutableURLRequest *)requestByFinalizingMultipartFormData; +@end + +#pragma mark - + +static NSArray * AFHTTPRequestSerializerObservedKeyPaths() { + static NSArray *_AFHTTPRequestSerializerObservedKeyPaths = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _AFHTTPRequestSerializerObservedKeyPaths = @[NSStringFromSelector(@selector(allowsCellularAccess)), NSStringFromSelector(@selector(cachePolicy)), NSStringFromSelector(@selector(HTTPShouldHandleCookies)), NSStringFromSelector(@selector(HTTPShouldUsePipelining)), NSStringFromSelector(@selector(networkServiceType)), NSStringFromSelector(@selector(timeoutInterval))]; + }); + + return _AFHTTPRequestSerializerObservedKeyPaths; +} + +static void *AFHTTPRequestSerializerObserverContext = &AFHTTPRequestSerializerObserverContext; + +@interface AFHTTPRequestSerializer () +@property (readwrite, nonatomic, strong) NSMutableSet *mutableObservedChangedKeyPaths; +@property (readwrite, nonatomic, strong) NSMutableDictionary *mutableHTTPRequestHeaders; +@property (readwrite, nonatomic, assign) AFHTTPRequestQueryStringSerializationStyle queryStringSerializationStyle; +@property (readwrite, nonatomic, copy) AFQueryStringSerializationBlock queryStringSerialization; +@end + +@implementation AFHTTPRequestSerializer + ++ (instancetype)serializer { + return [[self alloc] init]; +} + +- (instancetype)init { + self = [super init]; + if (!self) { + return nil; + } + + self.stringEncoding = NSUTF8StringEncoding; + + self.mutableHTTPRequestHeaders = [NSMutableDictionary dictionary]; + + // Accept-Language HTTP Header; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4 + NSMutableArray *acceptLanguagesComponents = [NSMutableArray array]; + [[NSLocale preferredLanguages] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { + float q = 1.0f - (idx * 0.1f); + [acceptLanguagesComponents addObject:[NSString stringWithFormat:@"%@;q=%0.1g", obj, q]]; + *stop = q <= 0.5f; + }]; + [self setValue:[acceptLanguagesComponents componentsJoinedByString:@", "] forHTTPHeaderField:@"Accept-Language"]; + + NSString *userAgent = nil; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + // User-Agent Header; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.43 + userAgent = [NSString stringWithFormat:@"%@/%@ (%@; iOS %@; Scale/%0.2f)", [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleExecutableKey] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleIdentifierKey], [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleVersionKey], [[UIDevice currentDevice] model], [[UIDevice currentDevice] systemVersion], [[UIScreen mainScreen] scale]]; +#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) + userAgent = [NSString stringWithFormat:@"%@/%@ (Mac OS X %@)", [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleExecutableKey] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleIdentifierKey], [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleVersionKey], [[NSProcessInfo processInfo] operatingSystemVersionString]]; +#endif +#pragma clang diagnostic pop + if (userAgent) { + if (![userAgent canBeConvertedToEncoding:NSASCIIStringEncoding]) { + NSMutableString *mutableUserAgent = [userAgent mutableCopy]; + if (CFStringTransform((__bridge CFMutableStringRef)(mutableUserAgent), NULL, (__bridge CFStringRef)@"Any-Latin; Latin-ASCII; [:^ASCII:] Remove", false)) { + userAgent = mutableUserAgent; + } + } + [self setValue:userAgent forHTTPHeaderField:@"User-Agent"]; + } + + // HTTP Method Definitions; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html + self.HTTPMethodsEncodingParametersInURI = [NSSet setWithObjects:@"GET", @"HEAD", @"DELETE", nil]; + + self.mutableObservedChangedKeyPaths = [NSMutableSet set]; + for (NSString *keyPath in AFHTTPRequestSerializerObservedKeyPaths()) { + if ([self respondsToSelector:NSSelectorFromString(keyPath)]) { + [self addObserver:self forKeyPath:keyPath options:NSKeyValueObservingOptionNew context:AFHTTPRequestSerializerObserverContext]; + } + } + + return self; +} + +- (void)dealloc { + for (NSString *keyPath in AFHTTPRequestSerializerObservedKeyPaths()) { + if ([self respondsToSelector:NSSelectorFromString(keyPath)]) { + [self removeObserver:self forKeyPath:keyPath context:AFHTTPRequestSerializerObserverContext]; + } + } +} + +#pragma mark - + +- (NSDictionary *)HTTPRequestHeaders { + return [NSDictionary dictionaryWithDictionary:self.mutableHTTPRequestHeaders]; +} + +- (void)setValue:(NSString *)value +forHTTPHeaderField:(NSString *)field +{ + [self.mutableHTTPRequestHeaders setValue:value forKey:field]; +} + +- (NSString *)valueForHTTPHeaderField:(NSString *)field { + return [self.mutableHTTPRequestHeaders valueForKey:field]; +} + +- (void)setAuthorizationHeaderFieldWithUsername:(NSString *)username + password:(NSString *)password +{ + NSString *basicAuthCredentials = [NSString stringWithFormat:@"%@:%@", username, password]; + [self setValue:[NSString stringWithFormat:@"Basic %@", AFBase64EncodedStringFromString(basicAuthCredentials)] forHTTPHeaderField:@"Authorization"]; +} + +- (void)setAuthorizationHeaderFieldWithToken:(NSString *)token { + [self setValue:[NSString stringWithFormat:@"Token token=\"%@\"", token] forHTTPHeaderField:@"Authorization"]; +} + +- (void)clearAuthorizationHeader { + [self.mutableHTTPRequestHeaders removeObjectForKey:@"Authorization"]; +} + +#pragma mark - + +- (void)setQueryStringSerializationWithStyle:(AFHTTPRequestQueryStringSerializationStyle)style { + self.queryStringSerializationStyle = style; + self.queryStringSerialization = nil; +} + +- (void)setQueryStringSerializationWithBlock:(NSString *(^)(NSURLRequest *, id, NSError *__autoreleasing *))block { + self.queryStringSerialization = block; +} + +#pragma mark - + +- (NSMutableURLRequest *)requestWithMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(id)parameters +{ + return [self requestWithMethod:method URLString:URLString parameters:parameters error:nil]; +} + +- (NSMutableURLRequest *)requestWithMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(id)parameters + error:(NSError *__autoreleasing *)error +{ + NSParameterAssert(method); + NSParameterAssert(URLString); + + NSURL *url = [NSURL URLWithString:URLString]; + + NSParameterAssert(url); + + NSMutableURLRequest *mutableRequest = [[NSMutableURLRequest alloc] initWithURL:url]; + mutableRequest.HTTPMethod = method; + + for (NSString *keyPath in AFHTTPRequestSerializerObservedKeyPaths()) { + if ([self.mutableObservedChangedKeyPaths containsObject:keyPath]) { + [mutableRequest setValue:[self valueForKeyPath:keyPath] forKey:keyPath]; + } + } + + mutableRequest = [[self requestBySerializingRequest:mutableRequest withParameters:parameters error:error] mutableCopy]; + + return mutableRequest; +} + +- (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(NSDictionary *)parameters + constructingBodyWithBlock:(void (^)(id formData))block +{ + return [self multipartFormRequestWithMethod:method URLString:URLString parameters:parameters constructingBodyWithBlock:block error:nil]; +} + +- (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(NSDictionary *)parameters + constructingBodyWithBlock:(void (^)(id formData))block + error:(NSError *__autoreleasing *)error +{ + NSParameterAssert(method); + NSParameterAssert(![method isEqualToString:@"GET"] && ![method isEqualToString:@"HEAD"]); + + NSMutableURLRequest *mutableRequest = [self requestWithMethod:method URLString:URLString parameters:nil error:error]; + + __block AFStreamingMultipartFormData *formData = [[AFStreamingMultipartFormData alloc] initWithURLRequest:mutableRequest stringEncoding:NSUTF8StringEncoding]; + + if (parameters) { + for (AFQueryStringPair *pair in AFQueryStringPairsFromDictionary(parameters)) { + NSData *data = nil; + if ([pair.value isKindOfClass:[NSData class]]) { + data = pair.value; + } else if ([pair.value isEqual:[NSNull null]]) { + data = [NSData data]; + } else { + data = [[pair.value description] dataUsingEncoding:self.stringEncoding]; + } + + if (data) { + [formData appendPartWithFormData:data name:[pair.field description]]; + } + } + } + + if (block) { + block(formData); + } + + return [formData requestByFinalizingMultipartFormData]; +} + +- (NSMutableURLRequest *)requestWithMultipartFormRequest:(NSURLRequest *)request + writingStreamContentsToFile:(NSURL *)fileURL + completionHandler:(void (^)(NSError *error))handler +{ + NSParameterAssert(request.HTTPBodyStream); + NSParameterAssert([fileURL isFileURL]); + + NSInputStream *inputStream = request.HTTPBodyStream; + NSOutputStream *outputStream = [[NSOutputStream alloc] initWithURL:fileURL append:NO]; + __block NSError *error = nil; + + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + [inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; + [outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; + + [inputStream open]; + [outputStream open]; + + while ([inputStream hasBytesAvailable] && [outputStream hasSpaceAvailable]) { + uint8_t buffer[1024]; + + NSInteger bytesRead = [inputStream read:buffer maxLength:1024]; + if (inputStream.streamError || bytesRead < 0) { + error = inputStream.streamError; + break; + } + + NSInteger bytesWritten = [outputStream write:buffer maxLength:(NSUInteger)bytesRead]; + if (outputStream.streamError || bytesWritten < 0) { + error = outputStream.streamError; + break; + } + + if (bytesRead == 0 && bytesWritten == 0) { + break; + } + } + + [outputStream close]; + [inputStream close]; + + if (handler) { + dispatch_async(dispatch_get_main_queue(), ^{ + handler(error); + }); + } + }); + + NSMutableURLRequest *mutableRequest = [request mutableCopy]; + mutableRequest.HTTPBodyStream = nil; + + return mutableRequest; +} + +#pragma mark - AFURLRequestSerialization + +- (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request + withParameters:(id)parameters + error:(NSError *__autoreleasing *)error +{ + NSParameterAssert(request); + + NSMutableURLRequest *mutableRequest = [request mutableCopy]; + + [self.HTTPRequestHeaders enumerateKeysAndObjectsUsingBlock:^(id field, id value, BOOL * __unused stop) { + if (![request valueForHTTPHeaderField:field]) { + [mutableRequest setValue:value forHTTPHeaderField:field]; + } + }]; + + if (parameters) { + NSString *query = nil; + if (self.queryStringSerialization) { + NSError *serializationError; + query = self.queryStringSerialization(request, parameters, &serializationError); + + if (serializationError) { + if (error) { + *error = serializationError; + } + + return nil; + } + } else { + switch (self.queryStringSerializationStyle) { + case AFHTTPRequestQueryStringDefaultStyle: + query = AFQueryStringFromParametersWithEncoding(parameters, self.stringEncoding); + break; + } + } + + if ([self.HTTPMethodsEncodingParametersInURI containsObject:[[request HTTPMethod] uppercaseString]]) { + mutableRequest.URL = [NSURL URLWithString:[[mutableRequest.URL absoluteString] stringByAppendingFormat:mutableRequest.URL.query ? @"&%@" : @"?%@", query]]; + } else { + if (![mutableRequest valueForHTTPHeaderField:@"Content-Type"]) { + [mutableRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; + } + [mutableRequest setHTTPBody:[query dataUsingEncoding:self.stringEncoding]]; + } + } + + return mutableRequest; +} + +#pragma mark - NSKeyValueObserving + ++ (BOOL)automaticallyNotifiesObserversForKey:(NSString *)key { + if ([AFHTTPRequestSerializerObservedKeyPaths() containsObject:key]) { + return NO; + } + + return [super automaticallyNotifiesObserversForKey:key]; +} + +- (void)observeValueForKeyPath:(NSString *)keyPath + ofObject:(__unused id)object + change:(NSDictionary *)change + context:(void *)context +{ + if (context == AFHTTPRequestSerializerObserverContext) { + if ([change[NSKeyValueChangeNewKey] isEqual:[NSNull null]]) { + [self.mutableObservedChangedKeyPaths removeObject:keyPath]; + } else { + [self.mutableObservedChangedKeyPaths addObject:keyPath]; + } + } +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [self init]; + if (!self) { + return nil; + } + + self.mutableHTTPRequestHeaders = [[decoder decodeObjectOfClass:[NSDictionary class] forKey:NSStringFromSelector(@selector(mutableHTTPRequestHeaders))] mutableCopy]; + self.queryStringSerializationStyle = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(queryStringSerializationStyle))] unsignedIntegerValue]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [coder encodeObject:self.mutableHTTPRequestHeaders forKey:NSStringFromSelector(@selector(mutableHTTPRequestHeaders))]; + [coder encodeInteger:self.queryStringSerializationStyle forKey:NSStringFromSelector(@selector(queryStringSerializationStyle))]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFHTTPRequestSerializer *serializer = [[[self class] allocWithZone:zone] init]; + serializer.mutableHTTPRequestHeaders = [self.mutableHTTPRequestHeaders mutableCopyWithZone:zone]; + serializer.queryStringSerializationStyle = self.queryStringSerializationStyle; + serializer.queryStringSerialization = self.queryStringSerialization; + + return serializer; +} + +@end + +#pragma mark - + +static NSString * AFCreateMultipartFormBoundary() { + return [NSString stringWithFormat:@"Boundary+%08X%08X", arc4random(), arc4random()]; +} + +static NSString * const kAFMultipartFormCRLF = @"\r\n"; + +static inline NSString * AFMultipartFormInitialBoundary(NSString *boundary) { + return [NSString stringWithFormat:@"--%@%@", boundary, kAFMultipartFormCRLF]; +} + +static inline NSString * AFMultipartFormEncapsulationBoundary(NSString *boundary) { + return [NSString stringWithFormat:@"%@--%@%@", kAFMultipartFormCRLF, boundary, kAFMultipartFormCRLF]; +} + +static inline NSString * AFMultipartFormFinalBoundary(NSString *boundary) { + return [NSString stringWithFormat:@"%@--%@--%@", kAFMultipartFormCRLF, boundary, kAFMultipartFormCRLF]; +} + +static inline NSString * AFContentTypeForPathExtension(NSString *extension) { +#ifdef __UTTYPE__ + NSString *UTI = (__bridge_transfer NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef)extension, NULL); + NSString *contentType = (__bridge_transfer NSString *)UTTypeCopyPreferredTagWithClass((__bridge CFStringRef)UTI, kUTTagClassMIMEType); + if (!contentType) { + return @"application/octet-stream"; + } else { + return contentType; + } +#else +#pragma unused (extension) + return @"application/octet-stream"; +#endif +} + +NSUInteger const kAFUploadStream3GSuggestedPacketSize = 1024 * 16; +NSTimeInterval const kAFUploadStream3GSuggestedDelay = 0.2; + +@interface AFHTTPBodyPart : NSObject +@property (nonatomic, assign) NSStringEncoding stringEncoding; +@property (nonatomic, strong) NSDictionary *headers; +@property (nonatomic, copy) NSString *boundary; +@property (nonatomic, strong) id body; +@property (nonatomic, assign) unsigned long long bodyContentLength; +@property (nonatomic, strong) NSInputStream *inputStream; + +@property (nonatomic, assign) BOOL hasInitialBoundary; +@property (nonatomic, assign) BOOL hasFinalBoundary; + +@property (readonly, nonatomic, assign, getter = hasBytesAvailable) BOOL bytesAvailable; +@property (readonly, nonatomic, assign) unsigned long long contentLength; + +- (NSInteger)read:(uint8_t *)buffer + maxLength:(NSUInteger)length; +@end + +@interface AFMultipartBodyStream : NSInputStream +@property (nonatomic, assign) NSUInteger numberOfBytesInPacket; +@property (nonatomic, assign) NSTimeInterval delay; +@property (nonatomic, strong) NSInputStream *inputStream; +@property (readonly, nonatomic, assign) unsigned long long contentLength; +@property (readonly, nonatomic, assign, getter = isEmpty) BOOL empty; + +- (id)initWithStringEncoding:(NSStringEncoding)encoding; +- (void)setInitialAndFinalBoundaries; +- (void)appendHTTPBodyPart:(AFHTTPBodyPart *)bodyPart; +@end + +#pragma mark - + +@interface AFStreamingMultipartFormData () +@property (readwrite, nonatomic, copy) NSMutableURLRequest *request; +@property (readwrite, nonatomic, assign) NSStringEncoding stringEncoding; +@property (readwrite, nonatomic, copy) NSString *boundary; +@property (readwrite, nonatomic, strong) AFMultipartBodyStream *bodyStream; +@end + +@implementation AFStreamingMultipartFormData + +- (id)initWithURLRequest:(NSMutableURLRequest *)urlRequest + stringEncoding:(NSStringEncoding)encoding +{ + self = [super init]; + if (!self) { + return nil; + } + + self.request = urlRequest; + self.stringEncoding = encoding; + self.boundary = AFCreateMultipartFormBoundary(); + self.bodyStream = [[AFMultipartBodyStream alloc] initWithStringEncoding:encoding]; + + return self; +} + +- (BOOL)appendPartWithFileURL:(NSURL *)fileURL + name:(NSString *)name + error:(NSError * __autoreleasing *)error +{ + NSParameterAssert(fileURL); + NSParameterAssert(name); + + NSString *fileName = [fileURL lastPathComponent]; + NSString *mimeType = AFContentTypeForPathExtension([fileURL pathExtension]); + + return [self appendPartWithFileURL:fileURL name:name fileName:fileName mimeType:mimeType error:error]; +} + +- (BOOL)appendPartWithFileURL:(NSURL *)fileURL + name:(NSString *)name + fileName:(NSString *)fileName + mimeType:(NSString *)mimeType + error:(NSError * __autoreleasing *)error +{ + NSParameterAssert(fileURL); + NSParameterAssert(name); + NSParameterAssert(fileName); + NSParameterAssert(mimeType); + + if (![fileURL isFileURL]) { + NSDictionary *userInfo = @{NSLocalizedFailureReasonErrorKey: NSLocalizedStringFromTable(@"Expected URL to be a file URL", @"AFNetworking", nil)}; + if (error) { + *error = [[NSError alloc] initWithDomain:AFURLRequestSerializationErrorDomain code:NSURLErrorBadURL userInfo:userInfo]; + } + + return NO; + } else if ([fileURL checkResourceIsReachableAndReturnError:error] == NO) { + NSDictionary *userInfo = @{NSLocalizedFailureReasonErrorKey: NSLocalizedStringFromTable(@"File URL not reachable.", @"AFNetworking", nil)}; + if (error) { + *error = [[NSError alloc] initWithDomain:AFURLRequestSerializationErrorDomain code:NSURLErrorBadURL userInfo:userInfo]; + } + + return NO; + } + + NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:[fileURL path] error:error]; + if (!fileAttributes) { + return NO; + } + + NSMutableDictionary *mutableHeaders = [NSMutableDictionary dictionary]; + [mutableHeaders setValue:[NSString stringWithFormat:@"form-data; name=\"%@\"; filename=\"%@\"", name, fileName] forKey:@"Content-Disposition"]; + [mutableHeaders setValue:mimeType forKey:@"Content-Type"]; + + AFHTTPBodyPart *bodyPart = [[AFHTTPBodyPart alloc] init]; + bodyPart.stringEncoding = self.stringEncoding; + bodyPart.headers = mutableHeaders; + bodyPart.boundary = self.boundary; + bodyPart.body = fileURL; + bodyPart.bodyContentLength = [[fileAttributes objectForKey:NSFileSize] unsignedLongLongValue]; + [self.bodyStream appendHTTPBodyPart:bodyPart]; + + return YES; +} + +- (void)appendPartWithInputStream:(NSInputStream *)inputStream + name:(NSString *)name + fileName:(NSString *)fileName + length:(int64_t)length + mimeType:(NSString *)mimeType +{ + NSParameterAssert(name); + NSParameterAssert(fileName); + NSParameterAssert(mimeType); + + NSMutableDictionary *mutableHeaders = [NSMutableDictionary dictionary]; + [mutableHeaders setValue:[NSString stringWithFormat:@"form-data; name=\"%@\"; filename=\"%@\"", name, fileName] forKey:@"Content-Disposition"]; + [mutableHeaders setValue:mimeType forKey:@"Content-Type"]; + + AFHTTPBodyPart *bodyPart = [[AFHTTPBodyPart alloc] init]; + bodyPart.stringEncoding = self.stringEncoding; + bodyPart.headers = mutableHeaders; + bodyPart.boundary = self.boundary; + bodyPart.body = inputStream; + + bodyPart.bodyContentLength = (unsigned long long)length; + + [self.bodyStream appendHTTPBodyPart:bodyPart]; +} + +- (void)appendPartWithFileData:(NSData *)data + name:(NSString *)name + fileName:(NSString *)fileName + mimeType:(NSString *)mimeType +{ + NSParameterAssert(name); + NSParameterAssert(fileName); + NSParameterAssert(mimeType); + + NSMutableDictionary *mutableHeaders = [NSMutableDictionary dictionary]; + [mutableHeaders setValue:[NSString stringWithFormat:@"form-data; name=\"%@\"; filename=\"%@\"", name, fileName] forKey:@"Content-Disposition"]; + [mutableHeaders setValue:mimeType forKey:@"Content-Type"]; + + [self appendPartWithHeaders:mutableHeaders body:data]; +} + +- (void)appendPartWithFormData:(NSData *)data + name:(NSString *)name +{ + NSParameterAssert(name); + + NSMutableDictionary *mutableHeaders = [NSMutableDictionary dictionary]; + [mutableHeaders setValue:[NSString stringWithFormat:@"form-data; name=\"%@\"", name] forKey:@"Content-Disposition"]; + + [self appendPartWithHeaders:mutableHeaders body:data]; +} + +- (void)appendPartWithHeaders:(NSDictionary *)headers + body:(NSData *)body +{ + NSParameterAssert(body); + + AFHTTPBodyPart *bodyPart = [[AFHTTPBodyPart alloc] init]; + bodyPart.stringEncoding = self.stringEncoding; + bodyPart.headers = headers; + bodyPart.boundary = self.boundary; + bodyPart.bodyContentLength = [body length]; + bodyPart.body = body; + + [self.bodyStream appendHTTPBodyPart:bodyPart]; +} + +- (void)throttleBandwidthWithPacketSize:(NSUInteger)numberOfBytes + delay:(NSTimeInterval)delay +{ + self.bodyStream.numberOfBytesInPacket = numberOfBytes; + self.bodyStream.delay = delay; +} + +- (NSMutableURLRequest *)requestByFinalizingMultipartFormData { + if ([self.bodyStream isEmpty]) { + return self.request; + } + + // Reset the initial and final boundaries to ensure correct Content-Length + [self.bodyStream setInitialAndFinalBoundaries]; + [self.request setHTTPBodyStream:self.bodyStream]; + + [self.request setValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@", self.boundary] forHTTPHeaderField:@"Content-Type"]; + [self.request setValue:[NSString stringWithFormat:@"%llu", [self.bodyStream contentLength]] forHTTPHeaderField:@"Content-Length"]; + + return self.request; +} + +@end + +#pragma mark - + +@interface NSStream () +@property (readwrite) NSStreamStatus streamStatus; +@property (readwrite, copy) NSError *streamError; +@end + +@interface AFMultipartBodyStream () +@property (readwrite, nonatomic, assign) NSStringEncoding stringEncoding; +@property (readwrite, nonatomic, strong) NSMutableArray *HTTPBodyParts; +@property (readwrite, nonatomic, strong) NSEnumerator *HTTPBodyPartEnumerator; +@property (readwrite, nonatomic, strong) AFHTTPBodyPart *currentHTTPBodyPart; +@property (readwrite, nonatomic, strong) NSOutputStream *outputStream; +@property (readwrite, nonatomic, strong) NSMutableData *buffer; +@end + +@implementation AFMultipartBodyStream +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wimplicit-atomic-properties" +#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000) || (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1100) +@synthesize delegate; +#endif +@synthesize streamStatus; +@synthesize streamError; +#pragma clang diagnostic pop + +- (id)initWithStringEncoding:(NSStringEncoding)encoding { + self = [super init]; + if (!self) { + return nil; + } + + self.stringEncoding = encoding; + self.HTTPBodyParts = [NSMutableArray array]; + self.numberOfBytesInPacket = NSIntegerMax; + + return self; +} + +- (void)setInitialAndFinalBoundaries { + if ([self.HTTPBodyParts count] > 0) { + for (AFHTTPBodyPart *bodyPart in self.HTTPBodyParts) { + bodyPart.hasInitialBoundary = NO; + bodyPart.hasFinalBoundary = NO; + } + + [[self.HTTPBodyParts objectAtIndex:0] setHasInitialBoundary:YES]; + [[self.HTTPBodyParts lastObject] setHasFinalBoundary:YES]; + } +} + +- (void)appendHTTPBodyPart:(AFHTTPBodyPart *)bodyPart { + [self.HTTPBodyParts addObject:bodyPart]; +} + +- (BOOL)isEmpty { + return [self.HTTPBodyParts count] == 0; +} + +#pragma mark - NSInputStream + +- (NSInteger)read:(uint8_t *)buffer + maxLength:(NSUInteger)length +{ + if ([self streamStatus] == NSStreamStatusClosed) { + return 0; + } + + NSInteger totalNumberOfBytesRead = 0; + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + while ((NSUInteger)totalNumberOfBytesRead < MIN(length, self.numberOfBytesInPacket)) { + if (!self.currentHTTPBodyPart || ![self.currentHTTPBodyPart hasBytesAvailable]) { + if (!(self.currentHTTPBodyPart = [self.HTTPBodyPartEnumerator nextObject])) { + break; + } + } else { + NSUInteger maxLength = length - (NSUInteger)totalNumberOfBytesRead; + NSInteger numberOfBytesRead = [self.currentHTTPBodyPart read:&buffer[totalNumberOfBytesRead] maxLength:maxLength]; + if (numberOfBytesRead == -1) { + self.streamError = self.currentHTTPBodyPart.inputStream.streamError; + break; + } else { + totalNumberOfBytesRead += numberOfBytesRead; + + if (self.delay > 0.0f) { + [NSThread sleepForTimeInterval:self.delay]; + } + } + } + } +#pragma clang diagnostic pop + + return totalNumberOfBytesRead; +} + +- (BOOL)getBuffer:(__unused uint8_t **)buffer + length:(__unused NSUInteger *)len +{ + return NO; +} + +- (BOOL)hasBytesAvailable { + return [self streamStatus] == NSStreamStatusOpen; +} + +#pragma mark - NSStream + +- (void)open { + if (self.streamStatus == NSStreamStatusOpen) { + return; + } + + self.streamStatus = NSStreamStatusOpen; + + [self setInitialAndFinalBoundaries]; + self.HTTPBodyPartEnumerator = [self.HTTPBodyParts objectEnumerator]; +} + +- (void)close { + self.streamStatus = NSStreamStatusClosed; +} + +- (id)propertyForKey:(__unused NSString *)key { + return nil; +} + +- (BOOL)setProperty:(__unused id)property + forKey:(__unused NSString *)key +{ + return NO; +} + +- (void)scheduleInRunLoop:(__unused NSRunLoop *)aRunLoop + forMode:(__unused NSString *)mode +{} + +- (void)removeFromRunLoop:(__unused NSRunLoop *)aRunLoop + forMode:(__unused NSString *)mode +{} + +- (unsigned long long)contentLength { + unsigned long long length = 0; + for (AFHTTPBodyPart *bodyPart in self.HTTPBodyParts) { + length += [bodyPart contentLength]; + } + + return length; +} + +#pragma mark - Undocumented CFReadStream Bridged Methods + +- (void)_scheduleInCFRunLoop:(__unused CFRunLoopRef)aRunLoop + forMode:(__unused CFStringRef)aMode +{} + +- (void)_unscheduleFromCFRunLoop:(__unused CFRunLoopRef)aRunLoop + forMode:(__unused CFStringRef)aMode +{} + +- (BOOL)_setCFClientFlags:(__unused CFOptionFlags)inFlags + callback:(__unused CFReadStreamClientCallBack)inCallback + context:(__unused CFStreamClientContext *)inContext { + return NO; +} + +#pragma mark - NSCopying + +-(id)copyWithZone:(NSZone *)zone { + AFMultipartBodyStream *bodyStreamCopy = [[[self class] allocWithZone:zone] initWithStringEncoding:self.stringEncoding]; + + for (AFHTTPBodyPart *bodyPart in self.HTTPBodyParts) { + [bodyStreamCopy appendHTTPBodyPart:[bodyPart copy]]; + } + + [bodyStreamCopy setInitialAndFinalBoundaries]; + + return bodyStreamCopy; +} + +@end + +#pragma mark - + +typedef enum { + AFEncapsulationBoundaryPhase = 1, + AFHeaderPhase = 2, + AFBodyPhase = 3, + AFFinalBoundaryPhase = 4, +} AFHTTPBodyPartReadPhase; + +@interface AFHTTPBodyPart () { + AFHTTPBodyPartReadPhase _phase; + NSInputStream *_inputStream; + unsigned long long _phaseReadOffset; +} + +- (BOOL)transitionToNextPhase; +- (NSInteger)readData:(NSData *)data + intoBuffer:(uint8_t *)buffer + maxLength:(NSUInteger)length; +@end + +@implementation AFHTTPBodyPart + +- (id)init { + self = [super init]; + if (!self) { + return nil; + } + + [self transitionToNextPhase]; + + return self; +} + +- (void)dealloc { + if (_inputStream) { + [_inputStream close]; + _inputStream = nil; + } +} + +- (NSInputStream *)inputStream { + if (!_inputStream) { + if ([self.body isKindOfClass:[NSData class]]) { + _inputStream = [NSInputStream inputStreamWithData:self.body]; + } else if ([self.body isKindOfClass:[NSURL class]]) { + _inputStream = [NSInputStream inputStreamWithURL:self.body]; + } else if ([self.body isKindOfClass:[NSInputStream class]]) { + _inputStream = self.body; + } else { + _inputStream = [NSInputStream inputStreamWithData:[NSData data]]; + } + } + + return _inputStream; +} + +- (NSString *)stringForHeaders { + NSMutableString *headerString = [NSMutableString string]; + for (NSString *field in [self.headers allKeys]) { + [headerString appendString:[NSString stringWithFormat:@"%@: %@%@", field, [self.headers valueForKey:field], kAFMultipartFormCRLF]]; + } + [headerString appendString:kAFMultipartFormCRLF]; + + return [NSString stringWithString:headerString]; +} + +- (unsigned long long)contentLength { + unsigned long long length = 0; + + NSData *encapsulationBoundaryData = [([self hasInitialBoundary] ? AFMultipartFormInitialBoundary(self.boundary) : AFMultipartFormEncapsulationBoundary(self.boundary)) dataUsingEncoding:self.stringEncoding]; + length += [encapsulationBoundaryData length]; + + NSData *headersData = [[self stringForHeaders] dataUsingEncoding:self.stringEncoding]; + length += [headersData length]; + + length += _bodyContentLength; + + NSData *closingBoundaryData = ([self hasFinalBoundary] ? [AFMultipartFormFinalBoundary(self.boundary) dataUsingEncoding:self.stringEncoding] : [NSData data]); + length += [closingBoundaryData length]; + + return length; +} + +- (BOOL)hasBytesAvailable { + // Allows `read:maxLength:` to be called again if `AFMultipartFormFinalBoundary` doesn't fit into the available buffer + if (_phase == AFFinalBoundaryPhase) { + return YES; + } + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" + switch (self.inputStream.streamStatus) { + case NSStreamStatusNotOpen: + case NSStreamStatusOpening: + case NSStreamStatusOpen: + case NSStreamStatusReading: + case NSStreamStatusWriting: + return YES; + case NSStreamStatusAtEnd: + case NSStreamStatusClosed: + case NSStreamStatusError: + default: + return NO; + } +#pragma clang diagnostic pop +} + +- (NSInteger)read:(uint8_t *)buffer + maxLength:(NSUInteger)length +{ + NSInteger totalNumberOfBytesRead = 0; + + if (_phase == AFEncapsulationBoundaryPhase) { + NSData *encapsulationBoundaryData = [([self hasInitialBoundary] ? AFMultipartFormInitialBoundary(self.boundary) : AFMultipartFormEncapsulationBoundary(self.boundary)) dataUsingEncoding:self.stringEncoding]; + totalNumberOfBytesRead += [self readData:encapsulationBoundaryData intoBuffer:&buffer[totalNumberOfBytesRead] maxLength:(length - (NSUInteger)totalNumberOfBytesRead)]; + } + + if (_phase == AFHeaderPhase) { + NSData *headersData = [[self stringForHeaders] dataUsingEncoding:self.stringEncoding]; + totalNumberOfBytesRead += [self readData:headersData intoBuffer:&buffer[totalNumberOfBytesRead] maxLength:(length - (NSUInteger)totalNumberOfBytesRead)]; + } + + if (_phase == AFBodyPhase) { + NSInteger numberOfBytesRead = 0; + + numberOfBytesRead = [self.inputStream read:&buffer[totalNumberOfBytesRead] maxLength:(length - (NSUInteger)totalNumberOfBytesRead)]; + if (numberOfBytesRead == -1) { + return -1; + } else { + totalNumberOfBytesRead += numberOfBytesRead; + + if ([self.inputStream streamStatus] >= NSStreamStatusAtEnd) { + [self transitionToNextPhase]; + } + } + } + + if (_phase == AFFinalBoundaryPhase) { + NSData *closingBoundaryData = ([self hasFinalBoundary] ? [AFMultipartFormFinalBoundary(self.boundary) dataUsingEncoding:self.stringEncoding] : [NSData data]); + totalNumberOfBytesRead += [self readData:closingBoundaryData intoBuffer:&buffer[totalNumberOfBytesRead] maxLength:(length - (NSUInteger)totalNumberOfBytesRead)]; + } + + return totalNumberOfBytesRead; +} + +- (NSInteger)readData:(NSData *)data + intoBuffer:(uint8_t *)buffer + maxLength:(NSUInteger)length +{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + NSRange range = NSMakeRange((NSUInteger)_phaseReadOffset, MIN([data length] - ((NSUInteger)_phaseReadOffset), length)); + [data getBytes:buffer range:range]; +#pragma clang diagnostic pop + + _phaseReadOffset += range.length; + + if (((NSUInteger)_phaseReadOffset) >= [data length]) { + [self transitionToNextPhase]; + } + + return (NSInteger)range.length; +} + +- (BOOL)transitionToNextPhase { + if (![[NSThread currentThread] isMainThread]) { + dispatch_sync(dispatch_get_main_queue(), ^{ + [self transitionToNextPhase]; + }); + return YES; + } + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" + switch (_phase) { + case AFEncapsulationBoundaryPhase: + _phase = AFHeaderPhase; + break; + case AFHeaderPhase: + [self.inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; + [self.inputStream open]; + _phase = AFBodyPhase; + break; + case AFBodyPhase: + [self.inputStream close]; + _phase = AFFinalBoundaryPhase; + break; + case AFFinalBoundaryPhase: + default: + _phase = AFEncapsulationBoundaryPhase; + break; + } + _phaseReadOffset = 0; +#pragma clang diagnostic pop + + return YES; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFHTTPBodyPart *bodyPart = [[[self class] allocWithZone:zone] init]; + + bodyPart.stringEncoding = self.stringEncoding; + bodyPart.headers = self.headers; + bodyPart.bodyContentLength = self.bodyContentLength; + bodyPart.body = self.body; + bodyPart.boundary = self.boundary; + + return bodyPart; +} + +@end + +#pragma mark - + +@implementation AFJSONRequestSerializer + ++ (instancetype)serializer { + return [self serializerWithWritingOptions:(NSJSONWritingOptions)0]; +} + ++ (instancetype)serializerWithWritingOptions:(NSJSONWritingOptions)writingOptions +{ + AFJSONRequestSerializer *serializer = [[self alloc] init]; + serializer.writingOptions = writingOptions; + + return serializer; +} + +#pragma mark - AFURLRequestSerialization + +- (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request + withParameters:(id)parameters + error:(NSError *__autoreleasing *)error +{ + NSParameterAssert(request); + + if ([self.HTTPMethodsEncodingParametersInURI containsObject:[[request HTTPMethod] uppercaseString]]) { + return [super requestBySerializingRequest:request withParameters:parameters error:error]; + } + + NSMutableURLRequest *mutableRequest = [request mutableCopy]; + + [self.HTTPRequestHeaders enumerateKeysAndObjectsUsingBlock:^(id field, id value, BOOL * __unused stop) { + if (![request valueForHTTPHeaderField:field]) { + [mutableRequest setValue:value forHTTPHeaderField:field]; + } + }]; + + if (parameters) { + if (![mutableRequest valueForHTTPHeaderField:@"Content-Type"]) { + [mutableRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; + } + + [mutableRequest setHTTPBody:[NSJSONSerialization dataWithJSONObject:parameters options:self.writingOptions error:error]]; + } + + return mutableRequest; +} + +#pragma mark - NSSecureCoding + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (!self) { + return nil; + } + + self.writingOptions = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(writingOptions))] unsignedIntegerValue]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [super encodeWithCoder:coder]; + + [coder encodeInteger:self.writingOptions forKey:NSStringFromSelector(@selector(writingOptions))]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFJSONRequestSerializer *serializer = [super copyWithZone:zone]; + serializer.writingOptions = self.writingOptions; + + return serializer; +} + +@end + +#pragma mark - + +@implementation AFPropertyListRequestSerializer + ++ (instancetype)serializer { + return [self serializerWithFormat:NSPropertyListXMLFormat_v1_0 writeOptions:0]; +} + ++ (instancetype)serializerWithFormat:(NSPropertyListFormat)format + writeOptions:(NSPropertyListWriteOptions)writeOptions +{ + AFPropertyListRequestSerializer *serializer = [[self alloc] init]; + serializer.format = format; + serializer.writeOptions = writeOptions; + + return serializer; +} + +#pragma mark - AFURLRequestSerializer + +- (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request + withParameters:(id)parameters + error:(NSError *__autoreleasing *)error +{ + NSParameterAssert(request); + + if ([self.HTTPMethodsEncodingParametersInURI containsObject:[[request HTTPMethod] uppercaseString]]) { + return [super requestBySerializingRequest:request withParameters:parameters error:error]; + } + + NSMutableURLRequest *mutableRequest = [request mutableCopy]; + + [self.HTTPRequestHeaders enumerateKeysAndObjectsUsingBlock:^(id field, id value, BOOL * __unused stop) { + if (![request valueForHTTPHeaderField:field]) { + [mutableRequest setValue:value forHTTPHeaderField:field]; + } + }]; + + if (parameters) { + if (![mutableRequest valueForHTTPHeaderField:@"Content-Type"]) { + [mutableRequest setValue:@"application/x-plist" forHTTPHeaderField:@"Content-Type"]; + } + + [mutableRequest setHTTPBody:[NSPropertyListSerialization dataWithPropertyList:parameters format:self.format options:self.writeOptions error:error]]; + } + + return mutableRequest; +} + +#pragma mark - NSSecureCoding + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (!self) { + return nil; + } + + self.format = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(format))] unsignedIntegerValue]; + self.writeOptions = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(writeOptions))] unsignedIntegerValue]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [super encodeWithCoder:coder]; + + [coder encodeInteger:self.format forKey:NSStringFromSelector(@selector(format))]; + [coder encodeObject:@(self.writeOptions) forKey:NSStringFromSelector(@selector(writeOptions))]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFPropertyListRequestSerializer *serializer = [super copyWithZone:zone]; + serializer.format = self.format; + serializer.writeOptions = self.writeOptions; + + return serializer; +} + +@end diff --git a/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h b/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h new file mode 100644 index 0000000..5eff8e6 --- /dev/null +++ b/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h @@ -0,0 +1,310 @@ +// AFURLResponseSerialization.h +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import +#import + +/** + The `AFURLResponseSerialization` protocol is adopted by an object that decodes data into a more useful object representation, according to details in the server response. Response serializers may additionally perform validation on the incoming response and data. + + For example, a JSON response serializer may check for an acceptable status code (`2XX` range) and content type (`application/json`), decoding a valid JSON response into an object. + */ +@protocol AFURLResponseSerialization + +/** + The response object decoded from the data associated with a specified response. + + @param response The response to be processed. + @param data The response data to be decoded. + @param error The error that occurred while attempting to decode the response data. + + @return The object decoded from the specified response data. + */ +- (id)responseObjectForResponse:(NSURLResponse *)response + data:(NSData *)data + error:(NSError *__autoreleasing *)error; + +@end + +#pragma mark - + +/** + `AFHTTPResponseSerializer` conforms to the `AFURLRequestSerialization` & `AFURLResponseSerialization` protocols, offering a concrete base implementation of query string / URL form-encoded parameter serialization and default request headers, as well as response status code and content type validation. + + Any request or response serializer dealing with HTTP is encouraged to subclass `AFHTTPResponseSerializer` in order to ensure consistent default behavior. + */ +@interface AFHTTPResponseSerializer : NSObject + +- (instancetype) init; + +/** + The string encoding used to serialize data received from the server, when no string encoding is specified by the response. `NSUTF8StringEncoding` by default. + */ +@property (nonatomic, assign) NSStringEncoding stringEncoding; + +/** + Creates and returns a serializer with default configuration. + */ ++ (instancetype)serializer; + +///----------------------------------------- +/// @name Configuring Response Serialization +///----------------------------------------- + +/** + The acceptable HTTP status codes for responses. When non-`nil`, responses with status codes not contained by the set will result in an error during validation. + + See http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html + */ +@property (nonatomic, copy) NSIndexSet *acceptableStatusCodes; + +/** + The acceptable MIME types for responses. When non-`nil`, responses with a `Content-Type` with MIME types that do not intersect with the set will result in an error during validation. + */ +@property (nonatomic, copy) NSSet *acceptableContentTypes; + +/** + Validates the specified response and data. + + In its base implementation, this method checks for an acceptable status code and content type. Subclasses may wish to add other domain-specific checks. + + @param response The response to be validated. + @param data The data associated with the response. + @param error The error that occurred while attempting to validate the response. + + @return `YES` if the response is valid, otherwise `NO`. + */ +- (BOOL)validateResponse:(NSHTTPURLResponse *)response + data:(NSData *)data + error:(NSError *__autoreleasing *)error; + +@end + +#pragma mark - + + +/** + `AFJSONResponseSerializer` is a subclass of `AFHTTPResponseSerializer` that validates and decodes JSON responses. + + By default, `AFJSONResponseSerializer` accepts the following MIME types, which includes the official standard, `application/json`, as well as other commonly-used types: + + - `application/json` + - `text/json` + - `text/javascript` + */ +@interface AFJSONResponseSerializer : AFHTTPResponseSerializer + +- (instancetype) init; + +/** + Options for reading the response JSON data and creating the Foundation objects. For possible values, see the `NSJSONSerialization` documentation section "NSJSONReadingOptions". `0` by default. + */ +@property (nonatomic, assign) NSJSONReadingOptions readingOptions; + +/** + Whether to remove keys with `NSNull` values from response JSON. Defaults to `NO`. + */ +@property (nonatomic, assign) BOOL removesKeysWithNullValues; + +/** + Creates and returns a JSON serializer with specified reading and writing options. + + @param readingOptions The specified JSON reading options. + */ ++ (instancetype)serializerWithReadingOptions:(NSJSONReadingOptions)readingOptions; + +@end + +#pragma mark - + +/** + `AFXMLParserResponseSerializer` is a subclass of `AFHTTPResponseSerializer` that validates and decodes XML responses as an `NSXMLParser` objects. + + By default, `AFXMLParserResponseSerializer` accepts the following MIME types, which includes the official standard, `application/xml`, as well as other commonly-used types: + + - `application/xml` + - `text/xml` + */ +@interface AFXMLParserResponseSerializer : AFHTTPResponseSerializer + +@end + +#pragma mark - + +#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED + +/** + `AFXMLDocumentResponseSerializer` is a subclass of `AFHTTPResponseSerializer` that validates and decodes XML responses as an `NSXMLDocument` objects. + + By default, `AFXMLDocumentResponseSerializer` accepts the following MIME types, which includes the official standard, `application/xml`, as well as other commonly-used types: + + - `application/xml` + - `text/xml` + */ +@interface AFXMLDocumentResponseSerializer : AFHTTPResponseSerializer + +- (instancetype) init; + +/** + Input and output options specifically intended for `NSXMLDocument` objects. For possible values, see the `NSJSONSerialization` documentation section "NSJSONReadingOptions". `0` by default. + */ +@property (nonatomic, assign) NSUInteger options; + +/** + Creates and returns an XML document serializer with the specified options. + + @param mask The XML document options. + */ ++ (instancetype)serializerWithXMLDocumentOptions:(NSUInteger)mask; + +@end + +#endif + +#pragma mark - + +/** + `AFPropertyListResponseSerializer` is a subclass of `AFHTTPResponseSerializer` that validates and decodes XML responses as an `NSXMLDocument` objects. + + By default, `AFPropertyListResponseSerializer` accepts the following MIME types: + + - `application/x-plist` + */ +@interface AFPropertyListResponseSerializer : AFHTTPResponseSerializer + +- (instancetype) init; + +/** + The property list format. Possible values are described in "NSPropertyListFormat". + */ +@property (nonatomic, assign) NSPropertyListFormat format; + +/** + The property list reading options. Possible values are described in "NSPropertyListMutabilityOptions." + */ +@property (nonatomic, assign) NSPropertyListReadOptions readOptions; + +/** + Creates and returns a property list serializer with a specified format, read options, and write options. + + @param format The property list format. + @param readOptions The property list reading options. + */ ++ (instancetype)serializerWithFormat:(NSPropertyListFormat)format + readOptions:(NSPropertyListReadOptions)readOptions; + +@end + +#pragma mark - + +/** + `AFImageResponseSerializer` is a subclass of `AFHTTPResponseSerializer` that validates and decodes image responses. + + By default, `AFImageResponseSerializer` accepts the following MIME types, which correspond to the image formats supported by UIImage or NSImage: + + - `image/tiff` + - `image/jpeg` + - `image/gif` + - `image/png` + - `image/ico` + - `image/x-icon` + - `image/bmp` + - `image/x-bmp` + - `image/x-xbitmap` + - `image/x-win-bitmap` + */ +@interface AFImageResponseSerializer : AFHTTPResponseSerializer + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +/** + The scale factor used when interpreting the image data to construct `responseImage`. Specifying a scale factor of 1.0 results in an image whose size matches the pixel-based dimensions of the image. Applying a different scale factor changes the size of the image as reported by the size property. This is set to the value of scale of the main screen by default, which automatically scales images for retina displays, for instance. + */ +@property (nonatomic, assign) CGFloat imageScale; + +/** + Whether to automatically inflate response image data for compressed formats (such as PNG or JPEG). Enabling this can significantly improve drawing performance on iOS when used with `setCompletionBlockWithSuccess:failure:`, as it allows a bitmap representation to be constructed in the background rather than on the main thread. `YES` by default. + */ +@property (nonatomic, assign) BOOL automaticallyInflatesResponseImage; +#endif + +@end + +#pragma mark - + +/** + `AFCompoundSerializer` is a subclass of `AFHTTPResponseSerializer` that delegates the response serialization to the first `AFHTTPResponseSerializer` object that returns an object for `responseObjectForResponse:data:error:`, falling back on the default behavior of `AFHTTPResponseSerializer`. This is useful for supporting multiple potential types and structures of server responses with a single serializer. + */ +@interface AFCompoundResponseSerializer : AFHTTPResponseSerializer + +/** + The component response serializers. + */ +@property (readonly, nonatomic, copy) NSArray *responseSerializers; + +/** + Creates and returns a compound serializer comprised of the specified response serializers. + + @warning Each response serializer specified must be a subclass of `AFHTTPResponseSerializer`, and response to `-validateResponse:data:error:`. + */ ++ (instancetype)compoundSerializerWithResponseSerializers:(NSArray *)responseSerializers; + +@end + +///---------------- +/// @name Constants +///---------------- + +/** + ## Error Domains + + The following error domain is predefined. + + - `NSString * const AFURLResponseSerializationErrorDomain` + + ### Constants + + `AFURLResponseSerializationErrorDomain` + AFURLResponseSerializer errors. Error codes for `AFURLResponseSerializationErrorDomain` correspond to codes in `NSURLErrorDomain`. + */ +extern NSString * const AFURLResponseSerializationErrorDomain; + +/** + ## User info dictionary keys + + These keys may exist in the user info dictionary, in addition to those defined for NSError. + + - `NSString * const AFNetworkingOperationFailingURLResponseErrorKey` + - `NSString * const AFNetworkingOperationFailingURLResponseDataErrorKey` + + ### Constants + + `AFNetworkingOperationFailingURLResponseErrorKey` + The corresponding value is an `NSURLResponse` containing the response of the operation associated with an error. This key is only present in the `AFURLResponseSerializationErrorDomain`. + + `AFNetworkingOperationFailingURLResponseDataErrorKey` + The corresponding value is an `NSData` containing the original data of the operation associated with an error. This key is only present in the `AFURLResponseSerializationErrorDomain`. + */ +extern NSString * const AFNetworkingOperationFailingURLResponseErrorKey; + +extern NSString * const AFNetworkingOperationFailingURLResponseDataErrorKey; + + diff --git a/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m b/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m new file mode 100644 index 0000000..c5a8563 --- /dev/null +++ b/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m @@ -0,0 +1,793 @@ +// AFURLResponseSerialization.m +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import "AFURLResponseSerialization.h" + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +#import +#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) +#import +#endif + +NSString * const AFURLResponseSerializationErrorDomain = @"com.alamofire.error.serialization.response"; +NSString * const AFNetworkingOperationFailingURLResponseErrorKey = @"com.alamofire.serialization.response.error.response"; +NSString * const AFNetworkingOperationFailingURLResponseDataErrorKey = @"com.alamofire.serialization.response.error.data"; + +static NSError * AFErrorWithUnderlyingError(NSError *error, NSError *underlyingError) { + if (!error) { + return underlyingError; + } + + if (!underlyingError || error.userInfo[NSUnderlyingErrorKey]) { + return error; + } + + NSMutableDictionary *mutableUserInfo = [error.userInfo mutableCopy]; + mutableUserInfo[NSUnderlyingErrorKey] = underlyingError; + + return [[NSError alloc] initWithDomain:error.domain code:error.code userInfo:mutableUserInfo]; +} + +static BOOL AFErrorOrUnderlyingErrorHasCodeInDomain(NSError *error, NSInteger code, NSString *domain) { + if ([error.domain isEqualToString:domain] && error.code == code) { + return YES; + } else if (error.userInfo[NSUnderlyingErrorKey]) { + return AFErrorOrUnderlyingErrorHasCodeInDomain(error.userInfo[NSUnderlyingErrorKey], code, domain); + } + + return NO; +} + +static id AFJSONObjectByRemovingKeysWithNullValues(id JSONObject, NSJSONReadingOptions readingOptions) { + if ([JSONObject isKindOfClass:[NSArray class]]) { + NSMutableArray *mutableArray = [NSMutableArray arrayWithCapacity:[(NSArray *)JSONObject count]]; + for (id value in (NSArray *)JSONObject) { + [mutableArray addObject:AFJSONObjectByRemovingKeysWithNullValues(value, readingOptions)]; + } + + return (readingOptions & NSJSONReadingMutableContainers) ? mutableArray : [NSArray arrayWithArray:mutableArray]; + } else if ([JSONObject isKindOfClass:[NSDictionary class]]) { + NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionaryWithDictionary:JSONObject]; + for (id key in [(NSDictionary *)JSONObject allKeys]) { + id value = [(NSDictionary *)JSONObject objectForKey:key]; + if (!value || [value isEqual:[NSNull null]]) { + [mutableDictionary removeObjectForKey:key]; + } else if ([value isKindOfClass:[NSArray class]] || [value isKindOfClass:[NSDictionary class]]) { + [mutableDictionary setObject:AFJSONObjectByRemovingKeysWithNullValues(value, readingOptions) forKey:key]; + } + } + + return (readingOptions & NSJSONReadingMutableContainers) ? mutableDictionary : [NSDictionary dictionaryWithDictionary:mutableDictionary]; + } + + return JSONObject; +} + +@implementation AFHTTPResponseSerializer + ++ (instancetype)serializer { + return [[self alloc] init]; +} + +- (instancetype)init { + self = [super init]; + if (!self) { + return nil; + } + + self.stringEncoding = NSUTF8StringEncoding; + + self.acceptableStatusCodes = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(200, 100)]; + self.acceptableContentTypes = nil; + + return self; +} + +#pragma mark - + +- (BOOL)validateResponse:(NSHTTPURLResponse *)response + data:(NSData *)data + error:(NSError * __autoreleasing *)error +{ + BOOL responseIsValid = YES; + NSError *validationError = nil; + + if (response && [response isKindOfClass:[NSHTTPURLResponse class]]) { + if (self.acceptableContentTypes && ![self.acceptableContentTypes containsObject:[response MIMEType]]) { + if ([data length] > 0 && [response URL]) { + NSMutableDictionary *mutableUserInfo = [@{ + NSLocalizedDescriptionKey: [NSString stringWithFormat:NSLocalizedStringFromTable(@"Request failed: unacceptable content-type: %@", @"AFNetworking", nil), [response MIMEType]], + NSURLErrorFailingURLErrorKey:[response URL], + AFNetworkingOperationFailingURLResponseErrorKey: response, + } mutableCopy]; + if (data) { + mutableUserInfo[AFNetworkingOperationFailingURLResponseDataErrorKey] = data; + } + + validationError = AFErrorWithUnderlyingError([NSError errorWithDomain:AFURLResponseSerializationErrorDomain code:NSURLErrorCannotDecodeContentData userInfo:mutableUserInfo], validationError); + } + + responseIsValid = NO; + } + + if (self.acceptableStatusCodes && ![self.acceptableStatusCodes containsIndex:(NSUInteger)response.statusCode] && [response URL]) { + NSMutableDictionary *mutableUserInfo = [@{ + NSLocalizedDescriptionKey: [NSString stringWithFormat:NSLocalizedStringFromTable(@"Request failed: %@ (%ld)", @"AFNetworking", nil), [NSHTTPURLResponse localizedStringForStatusCode:response.statusCode], (long)response.statusCode], + NSURLErrorFailingURLErrorKey:[response URL], + AFNetworkingOperationFailingURLResponseErrorKey: response, + } mutableCopy]; + + if (data) { + mutableUserInfo[AFNetworkingOperationFailingURLResponseDataErrorKey] = data; + } + + validationError = AFErrorWithUnderlyingError([NSError errorWithDomain:AFURLResponseSerializationErrorDomain code:NSURLErrorBadServerResponse userInfo:mutableUserInfo], validationError); + + responseIsValid = NO; + } + } + + if (error && !responseIsValid) { + *error = validationError; + } + + return responseIsValid; +} + +#pragma mark - AFURLResponseSerialization + +- (id)responseObjectForResponse:(NSURLResponse *)response + data:(NSData *)data + error:(NSError *__autoreleasing *)error +{ + [self validateResponse:(NSHTTPURLResponse *)response data:data error:error]; + + return data; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [self init]; + if (!self) { + return nil; + } + + self.acceptableStatusCodes = [decoder decodeObjectOfClass:[NSIndexSet class] forKey:NSStringFromSelector(@selector(acceptableStatusCodes))]; + self.acceptableContentTypes = [decoder decodeObjectOfClass:[NSIndexSet class] forKey:NSStringFromSelector(@selector(acceptableContentTypes))]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [coder encodeObject:self.acceptableStatusCodes forKey:NSStringFromSelector(@selector(acceptableStatusCodes))]; + [coder encodeObject:self.acceptableContentTypes forKey:NSStringFromSelector(@selector(acceptableContentTypes))]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFHTTPResponseSerializer *serializer = [[[self class] allocWithZone:zone] init]; + serializer.acceptableStatusCodes = [self.acceptableStatusCodes copyWithZone:zone]; + serializer.acceptableContentTypes = [self.acceptableContentTypes copyWithZone:zone]; + + return serializer; +} + +@end + +#pragma mark - + +@implementation AFJSONResponseSerializer + ++ (instancetype)serializer { + return [self serializerWithReadingOptions:(NSJSONReadingOptions)0]; +} + ++ (instancetype)serializerWithReadingOptions:(NSJSONReadingOptions)readingOptions { + AFJSONResponseSerializer *serializer = [[self alloc] init]; + serializer.readingOptions = readingOptions; + + return serializer; +} + +- (instancetype)init { + self = [super init]; + if (!self) { + return nil; + } + + self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", nil]; + + return self; +} + +#pragma mark - AFURLResponseSerialization + +- (id)responseObjectForResponse:(NSURLResponse *)response + data:(NSData *)data + error:(NSError *__autoreleasing *)error +{ + if (![self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) { + if (!error || AFErrorOrUnderlyingErrorHasCodeInDomain(*error, NSURLErrorCannotDecodeContentData, AFURLResponseSerializationErrorDomain)) { + return nil; + } + } + + // Workaround for behavior of Rails to return a single space for `head :ok` (a workaround for a bug in Safari), which is not interpreted as valid input by NSJSONSerialization. + // See https://github.com/rails/rails/issues/1742 + NSStringEncoding stringEncoding = self.stringEncoding; + if (response.textEncodingName) { + CFStringEncoding encoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)response.textEncodingName); + if (encoding != kCFStringEncodingInvalidId) { + stringEncoding = CFStringConvertEncodingToNSStringEncoding(encoding); + } + } + + id responseObject = nil; + NSError *serializationError = nil; + @autoreleasepool { + NSString *responseString = [[NSString alloc] initWithData:data encoding:stringEncoding]; + if (responseString && ![responseString isEqualToString:@" "]) { + // Workaround for a bug in NSJSONSerialization when Unicode character escape codes are used instead of the actual character + // See http://stackoverflow.com/a/12843465/157142 + data = [responseString dataUsingEncoding:NSUTF8StringEncoding]; + + if (data) { + if ([data length] > 0) { + responseObject = [NSJSONSerialization JSONObjectWithData:data options:self.readingOptions error:&serializationError]; + } else { + return nil; + } + } else { + NSDictionary *userInfo = @{ + NSLocalizedDescriptionKey: NSLocalizedStringFromTable(@"Data failed decoding as a UTF-8 string", @"AFNetworking", nil), + NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:NSLocalizedStringFromTable(@"Could not decode string: %@", @"AFNetworking", nil), responseString] + }; + + serializationError = [NSError errorWithDomain:AFURLResponseSerializationErrorDomain code:NSURLErrorCannotDecodeContentData userInfo:userInfo]; + } + } + } + + if (self.removesKeysWithNullValues && responseObject) { + responseObject = AFJSONObjectByRemovingKeysWithNullValues(responseObject, self.readingOptions); + } + + if (error) { + *error = AFErrorWithUnderlyingError(serializationError, *error); + } + + return responseObject; +} + +#pragma mark - NSSecureCoding + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (!self) { + return nil; + } + + self.readingOptions = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(readingOptions))] unsignedIntegerValue]; + self.removesKeysWithNullValues = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(removesKeysWithNullValues))] boolValue]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [super encodeWithCoder:coder]; + + [coder encodeObject:@(self.readingOptions) forKey:NSStringFromSelector(@selector(readingOptions))]; + [coder encodeObject:@(self.removesKeysWithNullValues) forKey:NSStringFromSelector(@selector(removesKeysWithNullValues))]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFJSONResponseSerializer *serializer = [[[self class] allocWithZone:zone] init]; + serializer.readingOptions = self.readingOptions; + serializer.removesKeysWithNullValues = self.removesKeysWithNullValues; + + return serializer; +} + +@end + +#pragma mark - + +@implementation AFXMLParserResponseSerializer + ++ (instancetype)serializer { + AFXMLParserResponseSerializer *serializer = [[self alloc] init]; + + return serializer; +} + +- (instancetype)init { + self = [super init]; + if (!self) { + return nil; + } + + self.acceptableContentTypes = [[NSSet alloc] initWithObjects:@"application/xml", @"text/xml", nil]; + + return self; +} + +#pragma mark - AFURLResponseSerialization + +- (id)responseObjectForResponse:(NSHTTPURLResponse *)response + data:(NSData *)data + error:(NSError *__autoreleasing *)error +{ + if (![self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) { + if (!error || AFErrorOrUnderlyingErrorHasCodeInDomain(*error, NSURLErrorCannotDecodeContentData, AFURLResponseSerializationErrorDomain)) { + return nil; + } + } + + return [[NSXMLParser alloc] initWithData:data]; +} + +@end + +#pragma mark - + +#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED + +@implementation AFXMLDocumentResponseSerializer + ++ (instancetype)serializer { + return [self serializerWithXMLDocumentOptions:0]; +} + ++ (instancetype)serializerWithXMLDocumentOptions:(NSUInteger)mask { + AFXMLDocumentResponseSerializer *serializer = [[self alloc] init]; + serializer.options = mask; + + return serializer; +} + +- (instancetype)init { + self = [super init]; + if (!self) { + return nil; + } + + self.acceptableContentTypes = [[NSSet alloc] initWithObjects:@"application/xml", @"text/xml", nil]; + + return self; +} + +#pragma mark - AFURLResponseSerialization + +- (id)responseObjectForResponse:(NSURLResponse *)response + data:(NSData *)data + error:(NSError *__autoreleasing *)error +{ + if (![self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) { + if (!error || AFErrorOrUnderlyingErrorHasCodeInDomain(*error, NSURLErrorCannotDecodeContentData, AFURLResponseSerializationErrorDomain)) { + return nil; + } + } + + NSError *serializationError = nil; + NSXMLDocument *document = [[NSXMLDocument alloc] initWithData:data options:self.options error:&serializationError]; + + if (error) { + *error = AFErrorWithUnderlyingError(serializationError, *error); + } + + return document; +} + +#pragma mark - NSSecureCoding + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (!self) { + return nil; + } + + self.options = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(options))] unsignedIntegerValue]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [super encodeWithCoder:coder]; + + [coder encodeObject:@(self.options) forKey:NSStringFromSelector(@selector(options))]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFXMLDocumentResponseSerializer *serializer = [[[self class] allocWithZone:zone] init]; + serializer.options = self.options; + + return serializer; +} + +@end + +#endif + +#pragma mark - + +@implementation AFPropertyListResponseSerializer + ++ (instancetype)serializer { + return [self serializerWithFormat:NSPropertyListXMLFormat_v1_0 readOptions:0]; +} + ++ (instancetype)serializerWithFormat:(NSPropertyListFormat)format + readOptions:(NSPropertyListReadOptions)readOptions +{ + AFPropertyListResponseSerializer *serializer = [[self alloc] init]; + serializer.format = format; + serializer.readOptions = readOptions; + + return serializer; +} + +- (instancetype)init { + self = [super init]; + if (!self) { + return nil; + } + + self.acceptableContentTypes = [[NSSet alloc] initWithObjects:@"application/x-plist", nil]; + + return self; +} + +#pragma mark - AFURLResponseSerialization + +- (id)responseObjectForResponse:(NSURLResponse *)response + data:(NSData *)data + error:(NSError *__autoreleasing *)error +{ + if (![self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) { + if (!error || AFErrorOrUnderlyingErrorHasCodeInDomain(*error, NSURLErrorCannotDecodeContentData, AFURLResponseSerializationErrorDomain)) { + return nil; + } + } + + id responseObject; + NSError *serializationError = nil; + + if (data) { + responseObject = [NSPropertyListSerialization propertyListWithData:data options:self.readOptions format:NULL error:&serializationError]; + } + + if (error) { + *error = AFErrorWithUnderlyingError(serializationError, *error); + } + + return responseObject; +} + +#pragma mark - NSSecureCoding + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (!self) { + return nil; + } + + self.format = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(format))] unsignedIntegerValue]; + self.readOptions = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(readOptions))] unsignedIntegerValue]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [super encodeWithCoder:coder]; + + [coder encodeObject:@(self.format) forKey:NSStringFromSelector(@selector(format))]; + [coder encodeObject:@(self.readOptions) forKey:NSStringFromSelector(@selector(readOptions))]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFPropertyListResponseSerializer *serializer = [[[self class] allocWithZone:zone] init]; + serializer.format = self.format; + serializer.readOptions = self.readOptions; + + return serializer; +} + +@end + +#pragma mark - + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +#import + +static UIImage * AFImageWithDataAtScale(NSData *data, CGFloat scale) { + UIImage *image = [[UIImage alloc] initWithData:data]; + + return [[UIImage alloc] initWithCGImage:[image CGImage] scale:scale orientation:image.imageOrientation]; +} + +static UIImage * AFInflatedImageFromResponseWithDataAtScale(NSHTTPURLResponse *response, NSData *data, CGFloat scale) { + if (!data || [data length] == 0) { + return nil; + } + + CGImageRef imageRef = NULL; + CGDataProviderRef dataProvider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data); + + if ([response.MIMEType isEqualToString:@"image/png"]) { + imageRef = CGImageCreateWithPNGDataProvider(dataProvider, NULL, true, kCGRenderingIntentDefault); + } else if ([response.MIMEType isEqualToString:@"image/jpeg"]) { + imageRef = CGImageCreateWithJPEGDataProvider(dataProvider, NULL, true, kCGRenderingIntentDefault); + + // CGImageCreateWithJPEGDataProvider does not properly handle CMKY, so if so, fall back to AFImageWithDataAtScale + if (imageRef) { + CGColorSpaceRef imageColorSpace = CGImageGetColorSpace(imageRef); + CGColorSpaceModel imageColorSpaceModel = CGColorSpaceGetModel(imageColorSpace); + if (imageColorSpaceModel == kCGColorSpaceModelCMYK) { + CGImageRelease(imageRef); + imageRef = NULL; + } + } + } + + CGDataProviderRelease(dataProvider); + + UIImage *image = AFImageWithDataAtScale(data, scale); + if (!imageRef) { + if (image.images || !image) { + return image; + } + + imageRef = CGImageCreateCopy([image CGImage]); + if (!imageRef) { + return nil; + } + } + + size_t width = CGImageGetWidth(imageRef); + size_t height = CGImageGetHeight(imageRef); + size_t bitsPerComponent = CGImageGetBitsPerComponent(imageRef); + + if (width * height > 1024 * 1024 || bitsPerComponent > 8) { + CGImageRelease(imageRef); + + return image; + } + + size_t bytesPerRow = 0; // CGImageGetBytesPerRow() calculates incorrectly in iOS 5.0, so defer to CGBitmapContextCreate + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + CGColorSpaceModel colorSpaceModel = CGColorSpaceGetModel(colorSpace); + CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(imageRef); + + if (colorSpaceModel == kCGColorSpaceModelRGB) { + uint32_t alpha = (bitmapInfo & kCGBitmapAlphaInfoMask); +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wassign-enum" + if (alpha == kCGImageAlphaNone) { + bitmapInfo &= ~kCGBitmapAlphaInfoMask; + bitmapInfo |= kCGImageAlphaNoneSkipFirst; + } else if (!(alpha == kCGImageAlphaNoneSkipFirst || alpha == kCGImageAlphaNoneSkipLast)) { + bitmapInfo &= ~kCGBitmapAlphaInfoMask; + bitmapInfo |= kCGImageAlphaPremultipliedFirst; + } +#pragma clang diagnostic pop + } + + CGContextRef context = CGBitmapContextCreate(NULL, width, height, bitsPerComponent, bytesPerRow, colorSpace, bitmapInfo); + + CGColorSpaceRelease(colorSpace); + + if (!context) { + CGImageRelease(imageRef); + + return image; + } + + CGContextDrawImage(context, CGRectMake(0.0f, 0.0f, width, height), imageRef); + CGImageRef inflatedImageRef = CGBitmapContextCreateImage(context); + + CGContextRelease(context); + + UIImage *inflatedImage = [[UIImage alloc] initWithCGImage:inflatedImageRef scale:scale orientation:image.imageOrientation]; + + CGImageRelease(inflatedImageRef); + CGImageRelease(imageRef); + + return inflatedImage; +} +#endif + + +@implementation AFImageResponseSerializer + +- (instancetype)init { + self = [super init]; + if (!self) { + return nil; + } + + self.acceptableContentTypes = [[NSSet alloc] initWithObjects:@"image/tiff", @"image/jpeg", @"image/gif", @"image/png", @"image/ico", @"image/x-icon", @"image/bmp", @"image/x-bmp", @"image/x-xbitmap", @"image/x-win-bitmap", nil]; + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + self.imageScale = [[UIScreen mainScreen] scale]; + self.automaticallyInflatesResponseImage = YES; +#endif + + return self; +} + +#pragma mark - AFURLResponseSerializer + +- (id)responseObjectForResponse:(NSURLResponse *)response + data:(NSData *)data + error:(NSError *__autoreleasing *)error +{ + if (![self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) { + if (!error || AFErrorOrUnderlyingErrorHasCodeInDomain(*error, NSURLErrorCannotDecodeContentData, AFURLResponseSerializationErrorDomain)) { + return nil; + } + } + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + if (self.automaticallyInflatesResponseImage) { + return AFInflatedImageFromResponseWithDataAtScale((NSHTTPURLResponse *)response, data, self.imageScale); + } else { + return AFImageWithDataAtScale(data, self.imageScale); + } +#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) + // Ensure that the image is set to it's correct pixel width and height + NSBitmapImageRep *bitimage = [[NSBitmapImageRep alloc] initWithData:data]; + NSImage *image = [[NSImage alloc] initWithSize:NSMakeSize([bitimage pixelsWide], [bitimage pixelsHigh])]; + [image addRepresentation:bitimage]; + + return image; +#endif + + return nil; +} + +#pragma mark - NSSecureCoding + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (!self) { + return nil; + } + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + NSNumber *imageScale = [decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(imageScale))]; +#if CGFLOAT_IS_DOUBLE + self.imageScale = [imageScale doubleValue]; +#else + self.imageScale = [imageScale floatValue]; +#endif + + self.automaticallyInflatesResponseImage = [decoder decodeBoolForKey:NSStringFromSelector(@selector(automaticallyInflatesResponseImage))]; +#endif + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [super encodeWithCoder:coder]; + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + [coder encodeObject:@(self.imageScale) forKey:NSStringFromSelector(@selector(imageScale))]; + [coder encodeBool:self.automaticallyInflatesResponseImage forKey:NSStringFromSelector(@selector(automaticallyInflatesResponseImage))]; +#endif +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFImageResponseSerializer *serializer = [[[self class] allocWithZone:zone] init]; + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + serializer.imageScale = self.imageScale; + serializer.automaticallyInflatesResponseImage = self.automaticallyInflatesResponseImage; +#endif + + return serializer; +} + +@end + +#pragma mark - + +@interface AFCompoundResponseSerializer () +@property (readwrite, nonatomic, copy) NSArray *responseSerializers; +@end + +@implementation AFCompoundResponseSerializer + ++ (instancetype)compoundSerializerWithResponseSerializers:(NSArray *)responseSerializers { + AFCompoundResponseSerializer *serializer = [[self alloc] init]; + serializer.responseSerializers = responseSerializers; + + return serializer; +} + +#pragma mark - AFURLResponseSerialization + +- (id)responseObjectForResponse:(NSURLResponse *)response + data:(NSData *)data + error:(NSError *__autoreleasing *)error +{ + for (id serializer in self.responseSerializers) { + if (![serializer isKindOfClass:[AFHTTPResponseSerializer class]]) { + continue; + } + + NSError *serializerError = nil; + id responseObject = [serializer responseObjectForResponse:response data:data error:&serializerError]; + if (responseObject) { + if (error) { + *error = AFErrorWithUnderlyingError(serializerError, *error); + } + + return responseObject; + } + } + + return [super responseObjectForResponse:response data:data error:error]; +} + +#pragma mark - NSSecureCoding + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (!self) { + return nil; + } + + self.responseSerializers = [decoder decodeObjectOfClass:[NSArray class] forKey:NSStringFromSelector(@selector(responseSerializers))]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [super encodeWithCoder:coder]; + + [coder encodeObject:self.responseSerializers forKey:NSStringFromSelector(@selector(responseSerializers))]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFCompoundResponseSerializer *serializer = [[[self class] allocWithZone:zone] init]; + serializer.responseSerializers = self.responseSerializers; + + return serializer; +} + +@end diff --git a/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h b/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h new file mode 100644 index 0000000..5a3b75f --- /dev/null +++ b/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h @@ -0,0 +1,539 @@ +// AFURLSessionManager.h +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import + +#import "AFURLResponseSerialization.h" +#import "AFURLRequestSerialization.h" +#import "AFSecurityPolicy.h" +#import "AFNetworkReachabilityManager.h" + +#ifndef NS_DESIGNATED_INITIALIZER +#if __has_attribute(objc_designated_initializer) +#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +#else +#define NS_DESIGNATED_INITIALIZER +#endif +#endif + +/** + `AFURLSessionManager` creates and manages an `NSURLSession` object based on a specified `NSURLSessionConfiguration` object, which conforms to ``, ``, ``, and ``. + + ## Subclassing Notes + + This is the base class for `AFHTTPSessionManager`, which adds functionality specific to making HTTP requests. If you are looking to extend `AFURLSessionManager` specifically for HTTP, consider subclassing `AFHTTPSessionManager` instead. + + ## NSURLSession & NSURLSessionTask Delegate Methods + + `AFURLSessionManager` implements the following delegate methods: + + ### `NSURLSessionDelegate` + + - `URLSession:didBecomeInvalidWithError:` + - `URLSession:didReceiveChallenge:completionHandler:` + - `URLSessionDidFinishEventsForBackgroundURLSession:` + + ### `NSURLSessionTaskDelegate` + + - `URLSession:willPerformHTTPRedirection:newRequest:completionHandler:` + - `URLSession:task:didReceiveChallenge:completionHandler:` + - `URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:` + - `URLSession:task:didCompleteWithError:` + + ### `NSURLSessionDataDelegate` + + - `URLSession:dataTask:didReceiveResponse:completionHandler:` + - `URLSession:dataTask:didBecomeDownloadTask:` + - `URLSession:dataTask:didReceiveData:` + - `URLSession:dataTask:willCacheResponse:completionHandler:` + + ### `NSURLSessionDownloadDelegate` + + - `URLSession:downloadTask:didFinishDownloadingToURL:` + - `URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesWritten:totalBytesExpectedToWrite:` + - `URLSession:downloadTask:didResumeAtOffset:expectedTotalBytes:` + + If any of these methods are overridden in a subclass, they _must_ call the `super` implementation first. + + ## Network Reachability Monitoring + + Network reachability status and change monitoring is available through the `reachabilityManager` property. Applications may choose to monitor network reachability conditions in order to prevent or suspend any outbound requests. See `AFNetworkReachabilityManager` for more details. + + ## NSCoding Caveats + + - Encoded managers do not include any block properties. Be sure to set delegate callback blocks when using `-initWithCoder:` or `NSKeyedUnarchiver`. + + ## NSCopying Caveats + + - `-copy` and `-copyWithZone:` return a new manager with a new `NSURLSession` created from the configuration of the original. + - Operation copies do not include any delegate callback blocks, as they often strongly captures a reference to `self`, which would otherwise have the unintuitive side-effect of pointing to the _original_ session manager when copied. + + @warning Managers for background sessions must be owned for the duration of their use. This can be accomplished by creating an application-wide or shared singleton instance. + */ + +#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000) || (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1090) + +@interface AFURLSessionManager : NSObject + +/** + The managed session. + */ +@property (readonly, nonatomic, strong) NSURLSession *session; + +/** + The operation queue on which delegate callbacks are run. + */ +@property (readonly, nonatomic, strong) NSOperationQueue *operationQueue; + +/** + Responses sent from the server in data tasks created with `dataTaskWithRequest:success:failure:` and run using the `GET` / `POST` / et al. convenience methods are automatically validated and serialized by the response serializer. By default, this property is set to an instance of `AFJSONResponseSerializer`. + + @warning `responseSerializer` must not be `nil`. + */ +@property (nonatomic, strong) id responseSerializer; + +///------------------------------- +/// @name Managing Security Policy +///------------------------------- + +/** + The security policy used by created request operations to evaluate server trust for secure connections. `AFURLSessionManager` uses the `defaultPolicy` unless otherwise specified. + */ +@property (nonatomic, strong) AFSecurityPolicy *securityPolicy; + +///-------------------------------------- +/// @name Monitoring Network Reachability +///-------------------------------------- + +/** + The network reachability manager. `AFURLSessionManager` uses the `sharedManager` by default. + */ +@property (readwrite, nonatomic, strong) AFNetworkReachabilityManager *reachabilityManager; + +///---------------------------- +/// @name Getting Session Tasks +///---------------------------- + +/** + The data, upload, and download tasks currently run by the managed session. + */ +@property (readonly, nonatomic, strong) NSArray *tasks; + +/** + The data tasks currently run by the managed session. + */ +@property (readonly, nonatomic, strong) NSArray *dataTasks; + +/** + The upload tasks currently run by the managed session. + */ +@property (readonly, nonatomic, strong) NSArray *uploadTasks; + +/** + The download tasks currently run by the managed session. + */ +@property (readonly, nonatomic, strong) NSArray *downloadTasks; + +///------------------------------- +/// @name Managing Callback Queues +///------------------------------- + +/** + The dispatch queue for `completionBlock`. If `NULL` (default), the main queue is used. + */ +@property (nonatomic, strong) dispatch_queue_t completionQueue; + +/** + The dispatch group for `completionBlock`. If `NULL` (default), a private dispatch group is used. + */ +@property (nonatomic, strong) dispatch_group_t completionGroup; + +///--------------------------------- +/// @name Working Around System Bugs +///--------------------------------- + +/** + Whether to attempt to retry creation of upload tasks for background sessions when initial call returns `nil`. `NO` by default. + + @bug As of iOS 7.0, there is a bug where upload tasks created for background tasks are sometimes `nil`. As a workaround, if this property is `YES`, AFNetworking will follow Apple's recommendation to try creating the task again. + + @see https://github.com/AFNetworking/AFNetworking/issues/1675 + */ +@property (nonatomic, assign) BOOL attemptsToRecreateUploadTasksForBackgroundSessions; + +///--------------------- +/// @name Initialization +///--------------------- + +/** + Creates and returns a manager for a session created with the specified configuration. This is the designated initializer. + + @param configuration The configuration used to create the managed session. + + @return A manager for a newly-created session. + */ +- (instancetype)initWithSessionConfiguration:(NSURLSessionConfiguration *)configuration NS_DESIGNATED_INITIALIZER; + +/** + Invalidates the managed session, optionally canceling pending tasks. + + @param cancelPendingTasks Whether or not to cancel pending tasks. + */ +- (void)invalidateSessionCancelingTasks:(BOOL)cancelPendingTasks; + +///------------------------- +/// @name Running Data Tasks +///------------------------- + +/** + Creates an `NSURLSessionDataTask` with the specified request. + + @param request The HTTP request for the request. + @param completionHandler A block object to be executed when the task finishes. This block has no return value and takes three arguments: the server response, the response object created by that serializer, and the error that occurred, if any. + */ +- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request + completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler; + +///--------------------------- +/// @name Running Upload Tasks +///--------------------------- + +/** + Creates an `NSURLSessionUploadTask` with the specified request for a local file. + + @param request The HTTP request for the request. + @param fileURL A URL to the local file to be uploaded. + @param progress A progress object monitoring the current upload progress. + @param completionHandler A block object to be executed when the task finishes. This block has no return value and takes three arguments: the server response, the response object created by that serializer, and the error that occurred, if any. + + @see `attemptsToRecreateUploadTasksForBackgroundSessions` + */ +- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request + fromFile:(NSURL *)fileURL + progress:(NSProgress * __autoreleasing *)progress + completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler; + +/** + Creates an `NSURLSessionUploadTask` with the specified request for an HTTP body. + + @param request The HTTP request for the request. + @param bodyData A data object containing the HTTP body to be uploaded. + @param progress A progress object monitoring the current upload progress. + @param completionHandler A block object to be executed when the task finishes. This block has no return value and takes three arguments: the server response, the response object created by that serializer, and the error that occurred, if any. + */ +- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request + fromData:(NSData *)bodyData + progress:(NSProgress * __autoreleasing *)progress + completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler; + +/** + Creates an `NSURLSessionUploadTask` with the specified streaming request. + + @param request The HTTP request for the request. + @param progress A progress object monitoring the current upload progress. + @param completionHandler A block object to be executed when the task finishes. This block has no return value and takes three arguments: the server response, the response object created by that serializer, and the error that occurred, if any. + */ +- (NSURLSessionUploadTask *)uploadTaskWithStreamedRequest:(NSURLRequest *)request + progress:(NSProgress * __autoreleasing *)progress + completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler; + +///----------------------------- +/// @name Running Download Tasks +///----------------------------- + +/** + Creates an `NSURLSessionDownloadTask` with the specified request. + + @param request The HTTP request for the request. + @param progress A progress object monitoring the current download progress. + @param destination A block object to be executed in order to determine the destination of the downloaded file. This block takes two arguments, the target path & the server response, and returns the desired file URL of the resulting download. The temporary file used during the download will be automatically deleted after being moved to the returned URL. + @param completionHandler A block to be executed when a task finishes. This block has no return value and takes three arguments: the server response, the path of the downloaded file, and the error describing the network or parsing error that occurred, if any. + + @warning If using a background `NSURLSessionConfiguration` on iOS, these blocks will be lost when the app is terminated. Background sessions may prefer to use `-setDownloadTaskDidFinishDownloadingBlock:` to specify the URL for saving the downloaded file, rather than the destination block of this method. + */ +- (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request + progress:(NSProgress * __autoreleasing *)progress + destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination + completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler; + +/** + Creates an `NSURLSessionDownloadTask` with the specified resume data. + + @param resumeData The data used to resume downloading. + @param progress A progress object monitoring the current download progress. + @param destination A block object to be executed in order to determine the destination of the downloaded file. This block takes two arguments, the target path & the server response, and returns the desired file URL of the resulting download. The temporary file used during the download will be automatically deleted after being moved to the returned URL. + @param completionHandler A block to be executed when a task finishes. This block has no return value and takes three arguments: the server response, the path of the downloaded file, and the error describing the network or parsing error that occurred, if any. + */ +- (NSURLSessionDownloadTask *)downloadTaskWithResumeData:(NSData *)resumeData + progress:(NSProgress * __autoreleasing *)progress + destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination + completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler; + +///--------------------------------- +/// @name Getting Progress for Tasks +///--------------------------------- + +/** + Returns the upload progress of the specified task. + + @param uploadTask The session upload task. Must not be `nil`. + + @return An `NSProgress` object reporting the upload progress of a task, or `nil` if the progress is unavailable. + */ +- (NSProgress *)uploadProgressForTask:(NSURLSessionUploadTask *)uploadTask; + +/** + Returns the download progress of the specified task. + + @param downloadTask The session download task. Must not be `nil`. + + @return An `NSProgress` object reporting the download progress of a task, or `nil` if the progress is unavailable. + */ +- (NSProgress *)downloadProgressForTask:(NSURLSessionDownloadTask *)downloadTask; + +///----------------------------------------- +/// @name Setting Session Delegate Callbacks +///----------------------------------------- + +/** + Sets a block to be executed when the managed session becomes invalid, as handled by the `NSURLSessionDelegate` method `URLSession:didBecomeInvalidWithError:`. + + @param block A block object to be executed when the managed session becomes invalid. The block has no return value, and takes two arguments: the session, and the error related to the cause of invalidation. + */ +- (void)setSessionDidBecomeInvalidBlock:(void (^)(NSURLSession *session, NSError *error))block; + +/** + Sets a block to be executed when a connection level authentication challenge has occurred, as handled by the `NSURLSessionDelegate` method `URLSession:didReceiveChallenge:completionHandler:`. + + @param block A block object to be executed when a connection level authentication challenge has occurred. The block returns the disposition of the authentication challenge, and takes three arguments: the session, the authentication challenge, and a pointer to the credential that should be used to resolve the challenge. + */ +- (void)setSessionDidReceiveAuthenticationChallengeBlock:(NSURLSessionAuthChallengeDisposition (^)(NSURLSession *session, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential))block; + +///-------------------------------------- +/// @name Setting Task Delegate Callbacks +///-------------------------------------- + +/** + Sets a block to be executed when a task requires a new request body stream to send to the remote server, as handled by the `NSURLSessionTaskDelegate` method `URLSession:task:needNewBodyStream:`. + + @param block A block object to be executed when a task requires a new request body stream. + */ +- (void)setTaskNeedNewBodyStreamBlock:(NSInputStream * (^)(NSURLSession *session, NSURLSessionTask *task))block; + +/** + Sets a block to be executed when an HTTP request is attempting to perform a redirection to a different URL, as handled by the `NSURLSessionTaskDelegate` method `URLSession:willPerformHTTPRedirection:newRequest:completionHandler:`. + + @param block A block object to be executed when an HTTP request is attempting to perform a redirection to a different URL. The block returns the request to be made for the redirection, and takes four arguments: the session, the task, the redirection response, and the request corresponding to the redirection response. + */ +- (void)setTaskWillPerformHTTPRedirectionBlock:(NSURLRequest * (^)(NSURLSession *session, NSURLSessionTask *task, NSURLResponse *response, NSURLRequest *request))block; + +/** + Sets a block to be executed when a session task has received a request specific authentication challenge, as handled by the `NSURLSessionTaskDelegate` method `URLSession:task:didReceiveChallenge:completionHandler:`. + + @param block A block object to be executed when a session task has received a request specific authentication challenge. The block returns the disposition of the authentication challenge, and takes four arguments: the session, the task, the authentication challenge, and a pointer to the credential that should be used to resolve the challenge. + */ +- (void)setTaskDidReceiveAuthenticationChallengeBlock:(NSURLSessionAuthChallengeDisposition (^)(NSURLSession *session, NSURLSessionTask *task, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential))block; + +/** + Sets a block to be executed periodically to track upload progress, as handled by the `NSURLSessionTaskDelegate` method `URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:`. + + @param block A block object to be called when an undetermined number of bytes have been uploaded to the server. This block has no return value and takes five arguments: the session, the task, the number of bytes written since the last time the upload progress block was called, the total bytes written, and the total bytes expected to be written during the request, as initially determined by the length of the HTTP body. This block may be called multiple times, and will execute on the main thread. + */ +- (void)setTaskDidSendBodyDataBlock:(void (^)(NSURLSession *session, NSURLSessionTask *task, int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend))block; + +/** + Sets a block to be executed as the last message related to a specific task, as handled by the `NSURLSessionTaskDelegate` method `URLSession:task:didCompleteWithError:`. + + @param block A block object to be executed when a session task is completed. The block has no return value, and takes three arguments: the session, the task, and any error that occurred in the process of executing the task. + */ +- (void)setTaskDidCompleteBlock:(void (^)(NSURLSession *session, NSURLSessionTask *task, NSError *error))block; + +///------------------------------------------- +/// @name Setting Data Task Delegate Callbacks +///------------------------------------------- + +/** + Sets a block to be executed when a data task has received a response, as handled by the `NSURLSessionDataDelegate` method `URLSession:dataTask:didReceiveResponse:completionHandler:`. + + @param block A block object to be executed when a data task has received a response. The block returns the disposition of the session response, and takes three arguments: the session, the data task, and the received response. + */ +- (void)setDataTaskDidReceiveResponseBlock:(NSURLSessionResponseDisposition (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLResponse *response))block; + +/** + Sets a block to be executed when a data task has become a download task, as handled by the `NSURLSessionDataDelegate` method `URLSession:dataTask:didBecomeDownloadTask:`. + + @param block A block object to be executed when a data task has become a download task. The block has no return value, and takes three arguments: the session, the data task, and the download task it has become. + */ +- (void)setDataTaskDidBecomeDownloadTaskBlock:(void (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLSessionDownloadTask *downloadTask))block; + +/** + Sets a block to be executed when a data task receives data, as handled by the `NSURLSessionDataDelegate` method `URLSession:dataTask:didReceiveData:`. + + @param block A block object to be called when an undetermined number of bytes have been downloaded from the server. This block has no return value and takes three arguments: the session, the data task, and the data received. This block may be called multiple times, and will execute on the session manager operation queue. + */ +- (void)setDataTaskDidReceiveDataBlock:(void (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSData *data))block; + +/** + Sets a block to be executed to determine the caching behavior of a data task, as handled by the `NSURLSessionDataDelegate` method `URLSession:dataTask:willCacheResponse:completionHandler:`. + + @param block A block object to be executed to determine the caching behavior of a data task. The block returns the response to cache, and takes three arguments: the session, the data task, and the proposed cached URL response. + */ +- (void)setDataTaskWillCacheResponseBlock:(NSCachedURLResponse * (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSCachedURLResponse *proposedResponse))block; + +/** + Sets a block to be executed once all messages enqueued for a session have been delivered, as handled by the `NSURLSessionDataDelegate` method `URLSessionDidFinishEventsForBackgroundURLSession:`. + + @param block A block object to be executed once all messages enqueued for a session have been delivered. The block has no return value and takes a single argument: the session. + */ +- (void)setDidFinishEventsForBackgroundURLSessionBlock:(void (^)(NSURLSession *session))block; + +///----------------------------------------------- +/// @name Setting Download Task Delegate Callbacks +///----------------------------------------------- + +/** + Sets a block to be executed when a download task has completed a download, as handled by the `NSURLSessionDownloadDelegate` method `URLSession:downloadTask:didFinishDownloadingToURL:`. + + @param block A block object to be executed when a download task has completed. The block returns the URL the download should be moved to, and takes three arguments: the session, the download task, and the temporary location of the downloaded file. If the file manager encounters an error while attempting to move the temporary file to the destination, an `AFURLSessionDownloadTaskDidFailToMoveFileNotification` will be posted, with the download task as its object, and the user info of the error. + */ +- (void)setDownloadTaskDidFinishDownloadingBlock:(NSURL * (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, NSURL *location))block; + +/** + Sets a block to be executed periodically to track download progress, as handled by the `NSURLSessionDownloadDelegate` method `URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesWritten:totalBytesExpectedToWrite:`. + + @param block A block object to be called when an undetermined number of bytes have been downloaded from the server. This block has no return value and takes five arguments: the session, the download task, the number of bytes read since the last time the download progress block was called, the total bytes read, and the total bytes expected to be read during the request, as initially determined by the expected content size of the `NSHTTPURLResponse` object. This block may be called multiple times, and will execute on the session manager operation queue. + */ +- (void)setDownloadTaskDidWriteDataBlock:(void (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite))block; + +/** + Sets a block to be executed when a download task has been resumed, as handled by the `NSURLSessionDownloadDelegate` method `URLSession:downloadTask:didResumeAtOffset:expectedTotalBytes:`. + + @param block A block object to be executed when a download task has been resumed. The block has no return value and takes four arguments: the session, the download task, the file offset of the resumed download, and the total number of bytes expected to be downloaded. + */ +- (void)setDownloadTaskDidResumeBlock:(void (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t fileOffset, int64_t expectedTotalBytes))block; + +@end + +#endif + +///-------------------- +/// @name Notifications +///-------------------- + +/** + Posted when a task begins executing. + + @deprecated Use `AFNetworkingTaskDidResumeNotification` instead. + */ +extern NSString * const AFNetworkingTaskDidStartNotification DEPRECATED_ATTRIBUTE; + +/** + Posted when a task resumes. + */ +extern NSString * const AFNetworkingTaskDidResumeNotification; + +/** + Posted when a task finishes executing. Includes a userInfo dictionary with additional information about the task. + + @deprecated Use `AFNetworkingTaskDidCompleteNotification` instead. + */ +extern NSString * const AFNetworkingTaskDidFinishNotification DEPRECATED_ATTRIBUTE; + +/** + Posted when a task finishes executing. Includes a userInfo dictionary with additional information about the task. + */ +extern NSString * const AFNetworkingTaskDidCompleteNotification; + +/** + Posted when a task suspends its execution. + */ +extern NSString * const AFNetworkingTaskDidSuspendNotification; + +/** + Posted when a session is invalidated. + */ +extern NSString * const AFURLSessionDidInvalidateNotification; + +/** + Posted when a session download task encountered an error when moving the temporary download file to a specified destination. + */ +extern NSString * const AFURLSessionDownloadTaskDidFailToMoveFileNotification; + +/** + The raw response data of the task. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if response data exists for the task. + + @deprecated Use `AFNetworkingTaskDidCompleteResponseDataKey` instead. + */ +extern NSString * const AFNetworkingTaskDidFinishResponseDataKey DEPRECATED_ATTRIBUTE; + +/** + The raw response data of the task. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if response data exists for the task. + */ +extern NSString * const AFNetworkingTaskDidCompleteResponseDataKey; + +/** + The serialized response object of the task. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if the response was serialized. + + @deprecated Use `AFNetworkingTaskDidCompleteSerializedResponseKey` instead. + */ +extern NSString * const AFNetworkingTaskDidFinishSerializedResponseKey DEPRECATED_ATTRIBUTE; + +/** + The serialized response object of the task. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if the response was serialized. + */ +extern NSString * const AFNetworkingTaskDidCompleteSerializedResponseKey; + +/** + The response serializer used to serialize the response. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if the task has an associated response serializer. + + @deprecated Use `AFNetworkingTaskDidCompleteResponseSerializerKey` instead. + */ +extern NSString * const AFNetworkingTaskDidFinishResponseSerializerKey DEPRECATED_ATTRIBUTE; + +/** + The response serializer used to serialize the response. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if the task has an associated response serializer. + */ +extern NSString * const AFNetworkingTaskDidCompleteResponseSerializerKey; + +/** + The file path associated with the download task. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if an the response data has been stored directly to disk. + + @deprecated Use `AFNetworkingTaskDidCompleteAssetPathKey` instead. + */ +extern NSString * const AFNetworkingTaskDidFinishAssetPathKey DEPRECATED_ATTRIBUTE; + +/** + The file path associated with the download task. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if an the response data has been stored directly to disk. + */ +extern NSString * const AFNetworkingTaskDidCompleteAssetPathKey; + +/** + Any error associated with the task, or the serialization of the response. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if an error exists. + + @deprecated Use `AFNetworkingTaskDidCompleteErrorKey` instead. + */ +extern NSString * const AFNetworkingTaskDidFinishErrorKey DEPRECATED_ATTRIBUTE; + +/** + Any error associated with the task, or the serialization of the response. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if an error exists. + */ +extern NSString * const AFNetworkingTaskDidCompleteErrorKey; diff --git a/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m b/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m new file mode 100644 index 0000000..a6ebbee --- /dev/null +++ b/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m @@ -0,0 +1,1094 @@ +// AFURLSessionManager.m +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import "AFURLSessionManager.h" +#import + +#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000) || (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1090) + +static dispatch_queue_t url_session_manager_creation_queue() { + static dispatch_queue_t af_url_session_manager_creation_queue; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + af_url_session_manager_creation_queue = dispatch_queue_create("com.alamofire.networking.session.manager.creation", DISPATCH_QUEUE_SERIAL); + }); + + return af_url_session_manager_creation_queue; +} + +static dispatch_queue_t url_session_manager_processing_queue() { + static dispatch_queue_t af_url_session_manager_processing_queue; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + af_url_session_manager_processing_queue = dispatch_queue_create("com.alamofire.networking.session.manager.processing", DISPATCH_QUEUE_CONCURRENT); + }); + + return af_url_session_manager_processing_queue; +} + +static dispatch_group_t url_session_manager_completion_group() { + static dispatch_group_t af_url_session_manager_completion_group; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + af_url_session_manager_completion_group = dispatch_group_create(); + }); + + return af_url_session_manager_completion_group; +} + +NSString * const AFNetworkingTaskDidResumeNotification = @"com.alamofire.networking.task.resume"; +NSString * const AFNetworkingTaskDidCompleteNotification = @"com.alamofire.networking.task.complete"; +NSString * const AFNetworkingTaskDidSuspendNotification = @"com.alamofire.networking.task.suspend"; +NSString * const AFURLSessionDidInvalidateNotification = @"com.alamofire.networking.session.invalidate"; +NSString * const AFURLSessionDownloadTaskDidFailToMoveFileNotification = @"com.alamofire.networking.session.download.file-manager-error"; + +NSString * const AFNetworkingTaskDidStartNotification = @"com.alamofire.networking.task.resume"; // Deprecated +NSString * const AFNetworkingTaskDidFinishNotification = @"com.alamofire.networking.task.complete"; // Deprecated + +NSString * const AFNetworkingTaskDidCompleteSerializedResponseKey = @"com.alamofire.networking.task.complete.serializedresponse"; +NSString * const AFNetworkingTaskDidCompleteResponseSerializerKey = @"com.alamofire.networking.task.complete.responseserializer"; +NSString * const AFNetworkingTaskDidCompleteResponseDataKey = @"com.alamofire.networking.complete.finish.responsedata"; +NSString * const AFNetworkingTaskDidCompleteErrorKey = @"com.alamofire.networking.task.complete.error"; +NSString * const AFNetworkingTaskDidCompleteAssetPathKey = @"com.alamofire.networking.task.complete.assetpath"; + +NSString * const AFNetworkingTaskDidFinishSerializedResponseKey = @"com.alamofire.networking.task.complete.serializedresponse"; // Deprecated +NSString * const AFNetworkingTaskDidFinishResponseSerializerKey = @"com.alamofire.networking.task.complete.responseserializer"; // Deprecated +NSString * const AFNetworkingTaskDidFinishResponseDataKey = @"com.alamofire.networking.complete.finish.responsedata"; // Deprecated +NSString * const AFNetworkingTaskDidFinishErrorKey = @"com.alamofire.networking.task.complete.error"; // Deprecated +NSString * const AFNetworkingTaskDidFinishAssetPathKey = @"com.alamofire.networking.task.complete.assetpath"; // Deprecated + +static NSString * const AFURLSessionManagerLockName = @"com.alamofire.networking.session.manager.lock"; + +static NSUInteger const AFMaximumNumberOfAttemptsToRecreateBackgroundSessionUploadTask = 3; + +static void * AFTaskStateChangedContext = &AFTaskStateChangedContext; + +typedef void (^AFURLSessionDidBecomeInvalidBlock)(NSURLSession *session, NSError *error); +typedef NSURLSessionAuthChallengeDisposition (^AFURLSessionDidReceiveAuthenticationChallengeBlock)(NSURLSession *session, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential); + +typedef NSURLRequest * (^AFURLSessionTaskWillPerformHTTPRedirectionBlock)(NSURLSession *session, NSURLSessionTask *task, NSURLResponse *response, NSURLRequest *request); +typedef NSURLSessionAuthChallengeDisposition (^AFURLSessionTaskDidReceiveAuthenticationChallengeBlock)(NSURLSession *session, NSURLSessionTask *task, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential); +typedef void (^AFURLSessionDidFinishEventsForBackgroundURLSessionBlock)(NSURLSession *session); + +typedef NSInputStream * (^AFURLSessionTaskNeedNewBodyStreamBlock)(NSURLSession *session, NSURLSessionTask *task); +typedef void (^AFURLSessionTaskDidSendBodyDataBlock)(NSURLSession *session, NSURLSessionTask *task, int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend); +typedef void (^AFURLSessionTaskDidCompleteBlock)(NSURLSession *session, NSURLSessionTask *task, NSError *error); + +typedef NSURLSessionResponseDisposition (^AFURLSessionDataTaskDidReceiveResponseBlock)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLResponse *response); +typedef void (^AFURLSessionDataTaskDidBecomeDownloadTaskBlock)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLSessionDownloadTask *downloadTask); +typedef void (^AFURLSessionDataTaskDidReceiveDataBlock)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSData *data); +typedef NSCachedURLResponse * (^AFURLSessionDataTaskWillCacheResponseBlock)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSCachedURLResponse *proposedResponse); + +typedef NSURL * (^AFURLSessionDownloadTaskDidFinishDownloadingBlock)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, NSURL *location); +typedef void (^AFURLSessionDownloadTaskDidWriteDataBlock)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite); +typedef void (^AFURLSessionDownloadTaskDidResumeBlock)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t fileOffset, int64_t expectedTotalBytes); + +typedef void (^AFURLSessionTaskCompletionHandler)(NSURLResponse *response, id responseObject, NSError *error); + +#pragma mark - + +@interface AFURLSessionManagerTaskDelegate : NSObject +@property (nonatomic, weak) AFURLSessionManager *manager; +@property (nonatomic, strong) NSMutableData *mutableData; +@property (nonatomic, strong) NSProgress *progress; +@property (nonatomic, copy) NSURL *downloadFileURL; +@property (nonatomic, copy) AFURLSessionDownloadTaskDidFinishDownloadingBlock downloadTaskDidFinishDownloading; +@property (nonatomic, copy) AFURLSessionTaskCompletionHandler completionHandler; +@end + +@implementation AFURLSessionManagerTaskDelegate + +- (instancetype)init { + self = [super init]; + if (!self) { + return nil; + } + + self.mutableData = [NSMutableData data]; + + self.progress = [NSProgress progressWithTotalUnitCount:0]; + + return self; +} + +#pragma mark - NSURLSessionTaskDelegate + +- (void)URLSession:(__unused NSURLSession *)session + task:(__unused NSURLSessionTask *)task + didSendBodyData:(__unused int64_t)bytesSent + totalBytesSent:(int64_t)totalBytesSent +totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend +{ + self.progress.totalUnitCount = totalBytesExpectedToSend; + self.progress.completedUnitCount = totalBytesSent; +} + +- (void)URLSession:(__unused NSURLSession *)session + task:(NSURLSessionTask *)task +didCompleteWithError:(NSError *)error +{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + __strong AFURLSessionManager *manager = self.manager; + + __block id responseObject = nil; + + __block NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + userInfo[AFNetworkingTaskDidCompleteResponseSerializerKey] = manager.responseSerializer; + + if (self.downloadFileURL) { + userInfo[AFNetworkingTaskDidCompleteAssetPathKey] = self.downloadFileURL; + } else if (self.mutableData) { + userInfo[AFNetworkingTaskDidCompleteResponseDataKey] = [NSData dataWithData:self.mutableData]; + } + + if (error) { + userInfo[AFNetworkingTaskDidCompleteErrorKey] = error; + + dispatch_group_async(manager.completionGroup ?: url_session_manager_completion_group(), manager.completionQueue ?: dispatch_get_main_queue(), ^{ + if (self.completionHandler) { + self.completionHandler(task.response, responseObject, error); + } + + dispatch_async(dispatch_get_main_queue(), ^{ + [[NSNotificationCenter defaultCenter] postNotificationName:AFNetworkingTaskDidCompleteNotification object:task userInfo:userInfo]; + }); + }); + } else { + dispatch_async(url_session_manager_processing_queue(), ^{ + NSError *serializationError = nil; + responseObject = [manager.responseSerializer responseObjectForResponse:task.response data:[NSData dataWithData:self.mutableData] error:&serializationError]; + + if (self.downloadFileURL) { + responseObject = self.downloadFileURL; + } + + if (responseObject) { + userInfo[AFNetworkingTaskDidCompleteSerializedResponseKey] = responseObject; + } + + if (serializationError) { + userInfo[AFNetworkingTaskDidCompleteErrorKey] = serializationError; + } + + dispatch_group_async(manager.completionGroup ?: url_session_manager_completion_group(), manager.completionQueue ?: dispatch_get_main_queue(), ^{ + if (self.completionHandler) { + self.completionHandler(task.response, responseObject, serializationError); + } + + dispatch_async(dispatch_get_main_queue(), ^{ + [[NSNotificationCenter defaultCenter] postNotificationName:AFNetworkingTaskDidCompleteNotification object:task userInfo:userInfo]; + }); + }); + }); + } +#pragma clang diagnostic pop +} + +#pragma mark - NSURLSessionDataTaskDelegate + +- (void)URLSession:(__unused NSURLSession *)session + dataTask:(__unused NSURLSessionDataTask *)dataTask + didReceiveData:(NSData *)data +{ + [self.mutableData appendData:data]; +} + +#pragma mark - NSURLSessionDownloadTaskDelegate + +- (void)URLSession:(NSURLSession *)session + downloadTask:(NSURLSessionDownloadTask *)downloadTask +didFinishDownloadingToURL:(NSURL *)location +{ + NSError *fileManagerError = nil; + self.downloadFileURL = nil; + + if (self.downloadTaskDidFinishDownloading) { + self.downloadFileURL = self.downloadTaskDidFinishDownloading(session, downloadTask, location); + if (self.downloadFileURL) { + [[NSFileManager defaultManager] moveItemAtURL:location toURL:self.downloadFileURL error:&fileManagerError]; + + if (fileManagerError) { + [[NSNotificationCenter defaultCenter] postNotificationName:AFURLSessionDownloadTaskDidFailToMoveFileNotification object:downloadTask userInfo:fileManagerError.userInfo]; + } + } + } +} + +- (void)URLSession:(__unused NSURLSession *)session + downloadTask:(__unused NSURLSessionDownloadTask *)downloadTask + didWriteData:(__unused int64_t)bytesWritten + totalBytesWritten:(int64_t)totalBytesWritten +totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite +{ + self.progress.totalUnitCount = totalBytesExpectedToWrite; + self.progress.completedUnitCount = totalBytesWritten; +} + +- (void)URLSession:(__unused NSURLSession *)session + downloadTask:(__unused NSURLSessionDownloadTask *)downloadTask + didResumeAtOffset:(int64_t)fileOffset +expectedTotalBytes:(int64_t)expectedTotalBytes { + self.progress.totalUnitCount = expectedTotalBytes; + self.progress.completedUnitCount = fileOffset; +} + +@end + +#pragma mark - + +/* + A workaround for issues related to key-value observing the `state` of an `NSURLSessionTask`. + + See https://github.com/AFNetworking/AFNetworking/issues/1477 + */ + +static inline void af_swizzleSelector(Class class, SEL originalSelector, SEL swizzledSelector) { + Method originalMethod = class_getInstanceMethod(class, originalSelector); + Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector); + if (class_addMethod(class, originalSelector, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod))) { + class_replaceMethod(class, swizzledSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod)); + } else { + method_exchangeImplementations(originalMethod, swizzledMethod); + } +} + +static NSString * const AFNSURLSessionTaskDidResumeNotification = @"com.alamofire.networking.nsurlsessiontask.resume"; +static NSString * const AFNSURLSessionTaskDidSuspendNotification = @"com.alamofire.networking.nsurlsessiontask.suspend"; + +@interface NSURLSessionTask (_AFStateObserving) +@end + +@implementation NSURLSessionTask (_AFStateObserving) + ++ (void)load { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + af_swizzleSelector([self class], @selector(resume), @selector(af_resume)); + af_swizzleSelector([self class], @selector(suspend), @selector(af_suspend)); + }); +} + +#pragma mark - + +- (void)af_resume { + NSURLSessionTaskState state = self.state; + [self af_resume]; + + if (state != NSURLSessionTaskStateRunning) { + [[NSNotificationCenter defaultCenter] postNotificationName:AFNSURLSessionTaskDidResumeNotification object:self]; + } +} + +- (void)af_suspend { + NSURLSessionTaskState state = self.state; + [self af_suspend]; + + if (state != NSURLSessionTaskStateSuspended) { + [[NSNotificationCenter defaultCenter] postNotificationName:AFNSURLSessionTaskDidSuspendNotification object:self]; + } +} + +@end + +#pragma mark - + +@interface AFURLSessionManager () +@property (readwrite, nonatomic, strong) NSURLSessionConfiguration *sessionConfiguration; +@property (readwrite, nonatomic, strong) NSOperationQueue *operationQueue; +@property (readwrite, nonatomic, strong) NSURLSession *session; +@property (readwrite, nonatomic, strong) NSMutableDictionary *mutableTaskDelegatesKeyedByTaskIdentifier; +@property (readonly, nonatomic, copy) NSString *taskDescriptionForSessionTasks; +@property (readwrite, nonatomic, strong) NSLock *lock; +@property (readwrite, nonatomic, copy) AFURLSessionDidBecomeInvalidBlock sessionDidBecomeInvalid; +@property (readwrite, nonatomic, copy) AFURLSessionDidReceiveAuthenticationChallengeBlock sessionDidReceiveAuthenticationChallenge; +@property (readwrite, nonatomic, copy) AFURLSessionDidFinishEventsForBackgroundURLSessionBlock didFinishEventsForBackgroundURLSession; +@property (readwrite, nonatomic, copy) AFURLSessionTaskWillPerformHTTPRedirectionBlock taskWillPerformHTTPRedirection; +@property (readwrite, nonatomic, copy) AFURLSessionTaskDidReceiveAuthenticationChallengeBlock taskDidReceiveAuthenticationChallenge; +@property (readwrite, nonatomic, copy) AFURLSessionTaskNeedNewBodyStreamBlock taskNeedNewBodyStream; +@property (readwrite, nonatomic, copy) AFURLSessionTaskDidSendBodyDataBlock taskDidSendBodyData; +@property (readwrite, nonatomic, copy) AFURLSessionTaskDidCompleteBlock taskDidComplete; +@property (readwrite, nonatomic, copy) AFURLSessionDataTaskDidReceiveResponseBlock dataTaskDidReceiveResponse; +@property (readwrite, nonatomic, copy) AFURLSessionDataTaskDidBecomeDownloadTaskBlock dataTaskDidBecomeDownloadTask; +@property (readwrite, nonatomic, copy) AFURLSessionDataTaskDidReceiveDataBlock dataTaskDidReceiveData; +@property (readwrite, nonatomic, copy) AFURLSessionDataTaskWillCacheResponseBlock dataTaskWillCacheResponse; +@property (readwrite, nonatomic, copy) AFURLSessionDownloadTaskDidFinishDownloadingBlock downloadTaskDidFinishDownloading; +@property (readwrite, nonatomic, copy) AFURLSessionDownloadTaskDidWriteDataBlock downloadTaskDidWriteData; +@property (readwrite, nonatomic, copy) AFURLSessionDownloadTaskDidResumeBlock downloadTaskDidResume; +@end + +@implementation AFURLSessionManager + +- (instancetype)init { + return [self initWithSessionConfiguration:nil]; +} + +- (instancetype)initWithSessionConfiguration:(NSURLSessionConfiguration *)configuration { + self = [super init]; + if (!self) { + return nil; + } + + if (!configuration) { + configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; + } + + self.sessionConfiguration = configuration; + + self.operationQueue = [[NSOperationQueue alloc] init]; + self.operationQueue.maxConcurrentOperationCount = 1; + + self.session = [NSURLSession sessionWithConfiguration:self.sessionConfiguration delegate:self delegateQueue:self.operationQueue]; + + self.responseSerializer = [AFJSONResponseSerializer serializer]; + + self.securityPolicy = [AFSecurityPolicy defaultPolicy]; + + self.reachabilityManager = [AFNetworkReachabilityManager sharedManager]; + + self.mutableTaskDelegatesKeyedByTaskIdentifier = [[NSMutableDictionary alloc] init]; + + self.lock = [[NSLock alloc] init]; + self.lock.name = AFURLSessionManagerLockName; + + [self.session getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks) { + for (NSURLSessionDataTask *task in dataTasks) { + [self addDelegateForDataTask:task completionHandler:nil]; + } + + for (NSURLSessionUploadTask *uploadTask in uploadTasks) { + [self addDelegateForUploadTask:uploadTask progress:nil completionHandler:nil]; + } + + for (NSURLSessionDownloadTask *downloadTask in downloadTasks) { + [self addDelegateForDownloadTask:downloadTask progress:nil destination:nil completionHandler:nil]; + } + }]; + + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(taskDidResume:) name:AFNSURLSessionTaskDidResumeNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(taskDidSuspend:) name:AFNSURLSessionTaskDidSuspendNotification object:nil]; + + return self; +} + +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +#pragma mark - + +- (NSString *)taskDescriptionForSessionTasks { + return [NSString stringWithFormat:@"%p", self]; +} + +- (void)taskDidResume:(NSNotification *)notification { + NSURLSessionTask *task = notification.object; + if ([task isKindOfClass:[NSURLSessionTask class]]) { + if ([task.taskDescription isEqualToString:self.taskDescriptionForSessionTasks]) { + dispatch_async(dispatch_get_main_queue(), ^{ + [[NSNotificationCenter defaultCenter] postNotificationName:AFNetworkingTaskDidResumeNotification object:task]; + }); + } + } +} + +- (void)taskDidSuspend:(NSNotification *)notification { + NSURLSessionTask *task = notification.object; + if ([task isKindOfClass:[NSURLSessionTask class]]) { + if ([task.taskDescription isEqualToString:self.taskDescriptionForSessionTasks]) { + dispatch_async(dispatch_get_main_queue(), ^{ + [[NSNotificationCenter defaultCenter] postNotificationName:AFNetworkingTaskDidSuspendNotification object:task]; + }); + } + } +} + +#pragma mark - + +- (AFURLSessionManagerTaskDelegate *)delegateForTask:(NSURLSessionTask *)task { + NSParameterAssert(task); + + AFURLSessionManagerTaskDelegate *delegate = nil; + [self.lock lock]; + delegate = self.mutableTaskDelegatesKeyedByTaskIdentifier[@(task.taskIdentifier)]; + [self.lock unlock]; + + return delegate; +} + +- (void)setDelegate:(AFURLSessionManagerTaskDelegate *)delegate + forTask:(NSURLSessionTask *)task +{ + NSParameterAssert(task); + NSParameterAssert(delegate); + + [self.lock lock]; + self.mutableTaskDelegatesKeyedByTaskIdentifier[@(task.taskIdentifier)] = delegate; + [self.lock unlock]; +} + +- (void)addDelegateForDataTask:(NSURLSessionDataTask *)dataTask + completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler +{ + AFURLSessionManagerTaskDelegate *delegate = [[AFURLSessionManagerTaskDelegate alloc] init]; + delegate.manager = self; + delegate.completionHandler = completionHandler; + + dataTask.taskDescription = self.taskDescriptionForSessionTasks; + [self setDelegate:delegate forTask:dataTask]; +} + +- (void)addDelegateForUploadTask:(NSURLSessionUploadTask *)uploadTask + progress:(NSProgress * __autoreleasing *)progress + completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler +{ + AFURLSessionManagerTaskDelegate *delegate = [[AFURLSessionManagerTaskDelegate alloc] init]; + delegate.manager = self; + delegate.completionHandler = completionHandler; + + int64_t totalUnitCount = uploadTask.countOfBytesExpectedToSend; + if(totalUnitCount == NSURLSessionTransferSizeUnknown) { + NSString *contentLength = [uploadTask.originalRequest valueForHTTPHeaderField:@"Content-Length"]; + if(contentLength) { + totalUnitCount = (int64_t)[contentLength longLongValue]; + } + } + + if (delegate.progress) { + delegate.progress.totalUnitCount = totalUnitCount; + } else { + delegate.progress = [NSProgress progressWithTotalUnitCount:totalUnitCount]; + } + + delegate.progress.pausingHandler = ^{ + [uploadTask suspend]; + }; + delegate.progress.cancellationHandler = ^{ + [uploadTask cancel]; + }; + + if (progress) { + *progress = delegate.progress; + } + + uploadTask.taskDescription = self.taskDescriptionForSessionTasks; + + [self setDelegate:delegate forTask:uploadTask]; +} + +- (void)addDelegateForDownloadTask:(NSURLSessionDownloadTask *)downloadTask + progress:(NSProgress * __autoreleasing *)progress + destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination + completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler +{ + AFURLSessionManagerTaskDelegate *delegate = [[AFURLSessionManagerTaskDelegate alloc] init]; + delegate.manager = self; + delegate.completionHandler = completionHandler; + + if (destination) { + delegate.downloadTaskDidFinishDownloading = ^NSURL * (NSURLSession * __unused session, NSURLSessionDownloadTask *task, NSURL *location) { + return destination(location, task.response); + }; + } + + if (progress) { + *progress = delegate.progress; + } + + downloadTask.taskDescription = self.taskDescriptionForSessionTasks; + + [self setDelegate:delegate forTask:downloadTask]; +} + +- (void)removeDelegateForTask:(NSURLSessionTask *)task { + NSParameterAssert(task); + + [self.lock lock]; + [self.mutableTaskDelegatesKeyedByTaskIdentifier removeObjectForKey:@(task.taskIdentifier)]; + [self.lock unlock]; +} + +- (void)removeAllDelegates { + [self.lock lock]; + [self.mutableTaskDelegatesKeyedByTaskIdentifier removeAllObjects]; + [self.lock unlock]; +} + +#pragma mark - + +- (NSArray *)tasksForKeyPath:(NSString *)keyPath { + __block NSArray *tasks = nil; + dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); + [self.session getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks) { + if ([keyPath isEqualToString:NSStringFromSelector(@selector(dataTasks))]) { + tasks = dataTasks; + } else if ([keyPath isEqualToString:NSStringFromSelector(@selector(uploadTasks))]) { + tasks = uploadTasks; + } else if ([keyPath isEqualToString:NSStringFromSelector(@selector(downloadTasks))]) { + tasks = downloadTasks; + } else if ([keyPath isEqualToString:NSStringFromSelector(@selector(tasks))]) { + tasks = [@[dataTasks, uploadTasks, downloadTasks] valueForKeyPath:@"@unionOfArrays.self"]; + } + + dispatch_semaphore_signal(semaphore); + }]; + + dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); + + return tasks; +} + +- (NSArray *)tasks { + return [self tasksForKeyPath:NSStringFromSelector(_cmd)]; +} + +- (NSArray *)dataTasks { + return [self tasksForKeyPath:NSStringFromSelector(_cmd)]; +} + +- (NSArray *)uploadTasks { + return [self tasksForKeyPath:NSStringFromSelector(_cmd)]; +} + +- (NSArray *)downloadTasks { + return [self tasksForKeyPath:NSStringFromSelector(_cmd)]; +} + +#pragma mark - + +- (void)invalidateSessionCancelingTasks:(BOOL)cancelPendingTasks { + dispatch_async(dispatch_get_main_queue(), ^{ + if (cancelPendingTasks) { + [self.session invalidateAndCancel]; + } else { + [self.session finishTasksAndInvalidate]; + } + }); +} + +#pragma mark - + +- (void)setResponseSerializer:(id )responseSerializer { + NSParameterAssert(responseSerializer); + + _responseSerializer = responseSerializer; +} + +#pragma mark - + +- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request + completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler +{ + __block NSURLSessionDataTask *dataTask = nil; + dispatch_sync(url_session_manager_creation_queue(), ^{ + dataTask = [self.session dataTaskWithRequest:request]; + }); + + [self addDelegateForDataTask:dataTask completionHandler:completionHandler]; + + return dataTask; +} + +#pragma mark - + +- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request + fromFile:(NSURL *)fileURL + progress:(NSProgress * __autoreleasing *)progress + completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler +{ + __block NSURLSessionUploadTask *uploadTask = nil; + dispatch_sync(url_session_manager_creation_queue(), ^{ + uploadTask = [self.session uploadTaskWithRequest:request fromFile:fileURL]; + }); + + if (!uploadTask && self.attemptsToRecreateUploadTasksForBackgroundSessions && self.session.configuration.identifier) { + for (NSUInteger attempts = 0; !uploadTask && attempts < AFMaximumNumberOfAttemptsToRecreateBackgroundSessionUploadTask; attempts++) { + uploadTask = [self.session uploadTaskWithRequest:request fromFile:fileURL]; + } + } + + [self addDelegateForUploadTask:uploadTask progress:progress completionHandler:completionHandler]; + + return uploadTask; +} + +- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request + fromData:(NSData *)bodyData + progress:(NSProgress * __autoreleasing *)progress + completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler +{ + __block NSURLSessionUploadTask *uploadTask = nil; + dispatch_sync(url_session_manager_creation_queue(), ^{ + uploadTask = [self.session uploadTaskWithRequest:request fromData:bodyData]; + }); + + [self addDelegateForUploadTask:uploadTask progress:progress completionHandler:completionHandler]; + + return uploadTask; +} + +- (NSURLSessionUploadTask *)uploadTaskWithStreamedRequest:(NSURLRequest *)request + progress:(NSProgress * __autoreleasing *)progress + completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler +{ + __block NSURLSessionUploadTask *uploadTask = nil; + dispatch_sync(url_session_manager_creation_queue(), ^{ + uploadTask = [self.session uploadTaskWithStreamedRequest:request]; + }); + + [self addDelegateForUploadTask:uploadTask progress:progress completionHandler:completionHandler]; + + return uploadTask; +} + +#pragma mark - + +- (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request + progress:(NSProgress * __autoreleasing *)progress + destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination + completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler +{ + __block NSURLSessionDownloadTask *downloadTask = nil; + dispatch_sync(url_session_manager_creation_queue(), ^{ + downloadTask = [self.session downloadTaskWithRequest:request]; + }); + + [self addDelegateForDownloadTask:downloadTask progress:progress destination:destination completionHandler:completionHandler]; + + return downloadTask; +} + +- (NSURLSessionDownloadTask *)downloadTaskWithResumeData:(NSData *)resumeData + progress:(NSProgress * __autoreleasing *)progress + destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination + completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler +{ + __block NSURLSessionDownloadTask *downloadTask = nil; + dispatch_sync(url_session_manager_creation_queue(), ^{ + downloadTask = [self.session downloadTaskWithResumeData:resumeData]; + }); + + [self addDelegateForDownloadTask:downloadTask progress:progress destination:destination completionHandler:completionHandler]; + + return downloadTask; +} + +#pragma mark - + +- (NSProgress *)uploadProgressForTask:(NSURLSessionUploadTask *)uploadTask { + return [[self delegateForTask:uploadTask] progress]; +} + +- (NSProgress *)downloadProgressForTask:(NSURLSessionDownloadTask *)downloadTask { + return [[self delegateForTask:downloadTask] progress]; +} + +#pragma mark - + +- (void)setSessionDidBecomeInvalidBlock:(void (^)(NSURLSession *session, NSError *error))block { + self.sessionDidBecomeInvalid = block; +} + +- (void)setSessionDidReceiveAuthenticationChallengeBlock:(NSURLSessionAuthChallengeDisposition (^)(NSURLSession *session, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential))block { + self.sessionDidReceiveAuthenticationChallenge = block; +} + +- (void)setDidFinishEventsForBackgroundURLSessionBlock:(void (^)(NSURLSession *session))block { + self.didFinishEventsForBackgroundURLSession = block; +} + +#pragma mark - + +- (void)setTaskNeedNewBodyStreamBlock:(NSInputStream * (^)(NSURLSession *session, NSURLSessionTask *task))block { + self.taskNeedNewBodyStream = block; +} + +- (void)setTaskWillPerformHTTPRedirectionBlock:(NSURLRequest * (^)(NSURLSession *session, NSURLSessionTask *task, NSURLResponse *response, NSURLRequest *request))block { + self.taskWillPerformHTTPRedirection = block; +} + +- (void)setTaskDidReceiveAuthenticationChallengeBlock:(NSURLSessionAuthChallengeDisposition (^)(NSURLSession *session, NSURLSessionTask *task, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential))block { + self.taskDidReceiveAuthenticationChallenge = block; +} + +- (void)setTaskDidSendBodyDataBlock:(void (^)(NSURLSession *session, NSURLSessionTask *task, int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend))block { + self.taskDidSendBodyData = block; +} + +- (void)setTaskDidCompleteBlock:(void (^)(NSURLSession *session, NSURLSessionTask *task, NSError *error))block { + self.taskDidComplete = block; +} + +#pragma mark - + +- (void)setDataTaskDidReceiveResponseBlock:(NSURLSessionResponseDisposition (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLResponse *response))block { + self.dataTaskDidReceiveResponse = block; +} + +- (void)setDataTaskDidBecomeDownloadTaskBlock:(void (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLSessionDownloadTask *downloadTask))block { + self.dataTaskDidBecomeDownloadTask = block; +} + +- (void)setDataTaskDidReceiveDataBlock:(void (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSData *data))block { + self.dataTaskDidReceiveData = block; +} + +- (void)setDataTaskWillCacheResponseBlock:(NSCachedURLResponse * (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSCachedURLResponse *proposedResponse))block { + self.dataTaskWillCacheResponse = block; +} + +#pragma mark - + +- (void)setDownloadTaskDidFinishDownloadingBlock:(NSURL * (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, NSURL *location))block { + self.downloadTaskDidFinishDownloading = block; +} + +- (void)setDownloadTaskDidWriteDataBlock:(void (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite))block { + self.downloadTaskDidWriteData = block; +} + +- (void)setDownloadTaskDidResumeBlock:(void (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t fileOffset, int64_t expectedTotalBytes))block { + self.downloadTaskDidResume = block; +} + +#pragma mark - NSObject + +- (NSString *)description { + return [NSString stringWithFormat:@"<%@: %p, session: %@, operationQueue: %@>", NSStringFromClass([self class]), self, self.session, self.operationQueue]; +} + +- (BOOL)respondsToSelector:(SEL)selector { + if (selector == @selector(URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:)) { + return self.taskWillPerformHTTPRedirection != nil; + } else if (selector == @selector(URLSession:dataTask:didReceiveResponse:completionHandler:)) { + return self.dataTaskDidReceiveResponse != nil; + } else if (selector == @selector(URLSession:dataTask:willCacheResponse:completionHandler:)) { + return self.dataTaskWillCacheResponse != nil; + } else if (selector == @selector(URLSessionDidFinishEventsForBackgroundURLSession:)) { + return self.didFinishEventsForBackgroundURLSession != nil; + } + + return [[self class] instancesRespondToSelector:selector]; +} + +#pragma mark - NSURLSessionDelegate + +- (void)URLSession:(NSURLSession *)session +didBecomeInvalidWithError:(NSError *)error +{ + if (self.sessionDidBecomeInvalid) { + self.sessionDidBecomeInvalid(session, error); + } + + [self removeAllDelegates]; + [[NSNotificationCenter defaultCenter] postNotificationName:AFURLSessionDidInvalidateNotification object:session]; +} + +- (void)URLSession:(NSURLSession *)session +didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge + completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler +{ + NSURLSessionAuthChallengeDisposition disposition = NSURLSessionAuthChallengePerformDefaultHandling; + __block NSURLCredential *credential = nil; + + if (self.sessionDidReceiveAuthenticationChallenge) { + disposition = self.sessionDidReceiveAuthenticationChallenge(session, challenge, &credential); + } else { + if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) { + if ([self.securityPolicy evaluateServerTrust:challenge.protectionSpace.serverTrust forDomain:challenge.protectionSpace.host]) { + credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; + if (credential) { + disposition = NSURLSessionAuthChallengeUseCredential; + } else { + disposition = NSURLSessionAuthChallengePerformDefaultHandling; + } + } else { + disposition = NSURLSessionAuthChallengeCancelAuthenticationChallenge; + } + } else { + disposition = NSURLSessionAuthChallengePerformDefaultHandling; + } + } + + if (completionHandler) { + completionHandler(disposition, credential); + } +} + +#pragma mark - NSURLSessionTaskDelegate + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task +willPerformHTTPRedirection:(NSHTTPURLResponse *)response + newRequest:(NSURLRequest *)request + completionHandler:(void (^)(NSURLRequest *))completionHandler +{ + NSURLRequest *redirectRequest = request; + + if (self.taskWillPerformHTTPRedirection) { + redirectRequest = self.taskWillPerformHTTPRedirection(session, task, response, request); + } + + if (completionHandler) { + completionHandler(redirectRequest); + } +} + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task +didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge + completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler +{ + NSURLSessionAuthChallengeDisposition disposition = NSURLSessionAuthChallengePerformDefaultHandling; + __block NSURLCredential *credential = nil; + + if (self.taskDidReceiveAuthenticationChallenge) { + disposition = self.taskDidReceiveAuthenticationChallenge(session, task, challenge, &credential); + } else { + if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) { + if ([self.securityPolicy evaluateServerTrust:challenge.protectionSpace.serverTrust forDomain:challenge.protectionSpace.host]) { + disposition = NSURLSessionAuthChallengeUseCredential; + credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; + } else { + disposition = NSURLSessionAuthChallengeCancelAuthenticationChallenge; + } + } else { + disposition = NSURLSessionAuthChallengePerformDefaultHandling; + } + } + + if (completionHandler) { + completionHandler(disposition, credential); + } +} + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task + needNewBodyStream:(void (^)(NSInputStream *bodyStream))completionHandler +{ + NSInputStream *inputStream = nil; + + if (self.taskNeedNewBodyStream) { + inputStream = self.taskNeedNewBodyStream(session, task); + } else if (task.originalRequest.HTTPBodyStream && [task.originalRequest.HTTPBodyStream conformsToProtocol:@protocol(NSCopying)]) { + inputStream = [task.originalRequest.HTTPBodyStream copy]; + } + + if (completionHandler) { + completionHandler(inputStream); + } +} + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task + didSendBodyData:(int64_t)bytesSent + totalBytesSent:(int64_t)totalBytesSent +totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend +{ + + int64_t totalUnitCount = totalBytesExpectedToSend; + if(totalUnitCount == NSURLSessionTransferSizeUnknown) { + NSString *contentLength = [task.originalRequest valueForHTTPHeaderField:@"Content-Length"]; + if(contentLength) { + totalUnitCount = (int64_t) [contentLength longLongValue]; + } + } + + AFURLSessionManagerTaskDelegate *delegate = [self delegateForTask:task]; + [delegate URLSession:session task:task didSendBodyData:bytesSent totalBytesSent:totalBytesSent totalBytesExpectedToSend:totalUnitCount]; + + if (self.taskDidSendBodyData) { + self.taskDidSendBodyData(session, task, bytesSent, totalBytesSent, totalUnitCount); + } +} + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task +didCompleteWithError:(NSError *)error +{ + AFURLSessionManagerTaskDelegate *delegate = [self delegateForTask:task]; + + // delegate may be nil when completing a task in the background + if (delegate) { + [delegate URLSession:session task:task didCompleteWithError:error]; + + [self removeDelegateForTask:task]; + } + + if (self.taskDidComplete) { + self.taskDidComplete(session, task, error); + } + +} + +#pragma mark - NSURLSessionDataDelegate + +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)dataTask +didReceiveResponse:(NSURLResponse *)response + completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler +{ + NSURLSessionResponseDisposition disposition = NSURLSessionResponseAllow; + + if (self.dataTaskDidReceiveResponse) { + disposition = self.dataTaskDidReceiveResponse(session, dataTask, response); + } + + if (completionHandler) { + completionHandler(disposition); + } +} + +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)dataTask +didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask +{ + AFURLSessionManagerTaskDelegate *delegate = [self delegateForTask:dataTask]; + if (delegate) { + [self removeDelegateForTask:dataTask]; + [self setDelegate:delegate forTask:downloadTask]; + } + + if (self.dataTaskDidBecomeDownloadTask) { + self.dataTaskDidBecomeDownloadTask(session, dataTask, downloadTask); + } +} + +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)dataTask + didReceiveData:(NSData *)data +{ + AFURLSessionManagerTaskDelegate *delegate = [self delegateForTask:dataTask]; + [delegate URLSession:session dataTask:dataTask didReceiveData:data]; + + if (self.dataTaskDidReceiveData) { + self.dataTaskDidReceiveData(session, dataTask, data); + } +} + +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)dataTask + willCacheResponse:(NSCachedURLResponse *)proposedResponse + completionHandler:(void (^)(NSCachedURLResponse *cachedResponse))completionHandler +{ + NSCachedURLResponse *cachedResponse = proposedResponse; + + if (self.dataTaskWillCacheResponse) { + cachedResponse = self.dataTaskWillCacheResponse(session, dataTask, proposedResponse); + } + + if (completionHandler) { + completionHandler(cachedResponse); + } +} + +- (void)URLSessionDidFinishEventsForBackgroundURLSession:(NSURLSession *)session { + if (self.didFinishEventsForBackgroundURLSession) { + dispatch_async(dispatch_get_main_queue(), ^{ + self.didFinishEventsForBackgroundURLSession(session); + }); + } +} + +#pragma mark - NSURLSessionDownloadDelegate + +- (void)URLSession:(NSURLSession *)session + downloadTask:(NSURLSessionDownloadTask *)downloadTask +didFinishDownloadingToURL:(NSURL *)location +{ + AFURLSessionManagerTaskDelegate *delegate = [self delegateForTask:downloadTask]; + if (self.downloadTaskDidFinishDownloading) { + NSURL *fileURL = self.downloadTaskDidFinishDownloading(session, downloadTask, location); + if (fileURL) { + delegate.downloadFileURL = fileURL; + NSError *error = nil; + [[NSFileManager defaultManager] moveItemAtURL:location toURL:fileURL error:&error]; + if (error) { + [[NSNotificationCenter defaultCenter] postNotificationName:AFURLSessionDownloadTaskDidFailToMoveFileNotification object:downloadTask userInfo:error.userInfo]; + } + + return; + } + } + + if (delegate) { + [delegate URLSession:session downloadTask:downloadTask didFinishDownloadingToURL:location]; + } +} + +- (void)URLSession:(NSURLSession *)session + downloadTask:(NSURLSessionDownloadTask *)downloadTask + didWriteData:(int64_t)bytesWritten + totalBytesWritten:(int64_t)totalBytesWritten +totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite +{ + AFURLSessionManagerTaskDelegate *delegate = [self delegateForTask:downloadTask]; + [delegate URLSession:session downloadTask:downloadTask didWriteData:bytesWritten totalBytesWritten:totalBytesWritten totalBytesExpectedToWrite:totalBytesExpectedToWrite]; + + if (self.downloadTaskDidWriteData) { + self.downloadTaskDidWriteData(session, downloadTask, bytesWritten, totalBytesWritten, totalBytesExpectedToWrite); + } +} + +- (void)URLSession:(NSURLSession *)session + downloadTask:(NSURLSessionDownloadTask *)downloadTask + didResumeAtOffset:(int64_t)fileOffset +expectedTotalBytes:(int64_t)expectedTotalBytes +{ + AFURLSessionManagerTaskDelegate *delegate = [self delegateForTask:downloadTask]; + [delegate URLSession:session downloadTask:downloadTask didResumeAtOffset:fileOffset expectedTotalBytes:expectedTotalBytes]; + + if (self.downloadTaskDidResume) { + self.downloadTaskDidResume(session, downloadTask, fileOffset, expectedTotalBytes); + } +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder { + NSURLSessionConfiguration *configuration = [decoder decodeObjectOfClass:[NSURLSessionConfiguration class] forKey:@"sessionConfiguration"]; + + self = [self initWithSessionConfiguration:configuration]; + if (!self) { + return nil; + } + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [coder encodeObject:self.session.configuration forKey:@"sessionConfiguration"]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + return [[[self class] allocWithZone:zone] initWithSessionConfiguration:self.session.configuration]; +} + +@end + +#endif diff --git a/Pods/AFNetworking/LICENSE b/Pods/AFNetworking/LICENSE new file mode 100644 index 0000000..22508e7 --- /dev/null +++ b/Pods/AFNetworking/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com/) + +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. diff --git a/Pods/AFNetworking/README.md b/Pods/AFNetworking/README.md new file mode 100644 index 0000000..74104f0 --- /dev/null +++ b/Pods/AFNetworking/README.md @@ -0,0 +1,387 @@ +

+ AFNetworking +

+ +[![Build Status](https://travis-ci.org/AFNetworking/AFNetworking.svg)](https://travis-ci.org/AFNetworking/AFNetworking) + +AFNetworking is a delightful networking library for iOS and Mac OS X. It's built on top of the [Foundation URL Loading System](http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/URLLoadingSystem/URLLoadingSystem.html), extending the powerful high-level networking abstractions built into Cocoa. It has a modular architecture with well-designed, feature-rich APIs that are a joy to use. + +Perhaps the most important feature of all, however, is the amazing community of developers who use and contribute to AFNetworking every day. AFNetworking powers some of the most popular and critically-acclaimed apps on the iPhone, iPad, and Mac. + +Choose AFNetworking for your next project, or migrate over your existing projects—you'll be happy you did! + +## How To Get Started + +- [Download AFNetworking](https://github.com/AFNetworking/AFNetworking/archive/master.zip) and try out the included Mac and iPhone example apps +- Read the ["Getting Started" guide](https://github.com/AFNetworking/AFNetworking/wiki/Getting-Started-with-AFNetworking), [FAQ](https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-FAQ), or [other articles on the Wiki](https://github.com/AFNetworking/AFNetworking/wiki) +- Check out the [documentation](http://cocoadocs.org/docsets/AFNetworking/) for a comprehensive look at all of the APIs available in AFNetworking +- Read the [AFNetworking 2.0 Migration Guide](https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-2.0-Migration-Guide) for an overview of the architectural changes from 1.0. + +## Communication + +- If you **need help**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/afnetworking). (Tag 'afnetworking') +- If you'd like to **ask a general question**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/afnetworking). +- If you **found a bug**, _and can provide steps to reliably reproduce it_, open an issue. +- If you **have a feature request**, open an issue. +- If you **want to contribute**, submit a pull request. + +### Installation with CocoaPods + +[CocoaPods](http://cocoapods.org) is a dependency manager for Objective-C, which automates and simplifies the process of using 3rd-party libraries like AFNetworking in your projects. See the ["Getting Started" guide for more information](https://github.com/AFNetworking/AFNetworking/wiki/Getting-Started-with-AFNetworking). + +#### Podfile + +```ruby +platform :ios, '7.0' +pod "AFNetworking", "~> 2.0" +``` + +## Requirements + +| AFNetworking Version | Minimum iOS Target | Minimum OS X Target | Notes | +|:--------------------:|:---------------------------:|:----------------------------:|:-------------------------------------------------------------------------:| +| 2.x | iOS 6 | OS X 10.8 | Xcode 5 is required. `NSURLSession` subspec requires iOS 7 or OS X 10.9. | +| [1.x](https://github.com/AFNetworking/AFNetworking/tree/1.x) | iOS 5 | Mac OS X 10.7 | | +| [0.10.x](https://github.com/AFNetworking/AFNetworking/tree/0.10.x) | iOS 4 | Mac OS X 10.6 | | + +(OS X projects must support [64-bit with modern Cocoa runtime](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtVersionsPlatforms.html)). + +> Programming in Swift? Try [Alamofire](https://github.com/Alamofire/Alamofire) for a more conventional set of APIs. + +## Architecture + +### NSURLConnection + +- `AFURLConnectionOperation` +- `AFHTTPRequestOperation` +- `AFHTTPRequestOperationManager` + +### NSURLSession _(iOS 7 / Mac OS X 10.9)_ + +- `AFURLSessionManager` +- `AFHTTPSessionManager` + +### Serialization + +* `` + - `AFHTTPRequestSerializer` + - `AFJSONRequestSerializer` + - `AFPropertyListRequestSerializer` +* `` + - `AFHTTPResponseSerializer` + - `AFJSONResponseSerializer` + - `AFXMLParserResponseSerializer` + - `AFXMLDocumentResponseSerializer` _(Mac OS X)_ + - `AFPropertyListResponseSerializer` + - `AFImageResponseSerializer` + - `AFCompoundResponseSerializer` + +### Additional Functionality + +- `AFSecurityPolicy` +- `AFNetworkReachabilityManager` + +## Usage + +### HTTP Request Operation Manager + +`AFHTTPRequestOperationManager` encapsulates the common patterns of communicating with a web application over HTTP, including request creation, response serialization, network reachability monitoring, and security, as well as request operation management. + +#### `GET` Request + +```objective-c +AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; +[manager GET:@"http://example.com/resources.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { + NSLog(@"JSON: %@", responseObject); +} failure:^(AFHTTPRequestOperation *operation, NSError *error) { + NSLog(@"Error: %@", error); +}]; +``` + +#### `POST` URL-Form-Encoded Request + +```objective-c +AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; +NSDictionary *parameters = @{@"foo": @"bar"}; +[manager POST:@"http://example.com/resources.json" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { + NSLog(@"JSON: %@", responseObject); +} failure:^(AFHTTPRequestOperation *operation, NSError *error) { + NSLog(@"Error: %@", error); +}]; +``` + +#### `POST` Multi-Part Request + +```objective-c +AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; +NSDictionary *parameters = @{@"foo": @"bar"}; +NSURL *filePath = [NSURL fileURLWithPath:@"file://path/to/image.png"]; +[manager POST:@"http://example.com/resources.json" parameters:parameters constructingBodyWithBlock:^(id formData) { + [formData appendPartWithFileURL:filePath name:@"image" error:nil]; +} success:^(AFHTTPRequestOperation *operation, id responseObject) { + NSLog(@"Success: %@", responseObject); +} failure:^(AFHTTPRequestOperation *operation, NSError *error) { + NSLog(@"Error: %@", error); +}]; +``` + +--- + +### AFURLSessionManager + +`AFURLSessionManager` creates and manages an `NSURLSession` object based on a specified `NSURLSessionConfiguration` object, which conforms to ``, ``, ``, and ``. + +#### Creating a Download Task + +```objective-c +NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; +AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration]; + +NSURL *URL = [NSURL URLWithString:@"http://example.com/download.zip"]; +NSURLRequest *request = [NSURLRequest requestWithURL:URL]; + +NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) { + NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil]; + return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]]; +} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) { + NSLog(@"File downloaded to: %@", filePath); +}]; +[downloadTask resume]; +``` + +#### Creating an Upload Task + +```objective-c +NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; +AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration]; + +NSURL *URL = [NSURL URLWithString:@"http://example.com/upload"]; +NSURLRequest *request = [NSURLRequest requestWithURL:URL]; + +NSURL *filePath = [NSURL fileURLWithPath:@"file://path/to/image.png"]; +NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithRequest:request fromFile:filePath progress:nil completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) { + if (error) { + NSLog(@"Error: %@", error); + } else { + NSLog(@"Success: %@ %@", response, responseObject); + } +}]; +[uploadTask resume]; +``` + +#### Creating an Upload Task for a Multi-Part Request, with Progress + +```objective-c +NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"http://example.com/upload" parameters:nil constructingBodyWithBlock:^(id formData) { + [formData appendPartWithFileURL:[NSURL fileURLWithPath:@"file://path/to/image.jpg"] name:@"file" fileName:@"filename.jpg" mimeType:@"image/jpeg" error:nil]; + } error:nil]; + +AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; +NSProgress *progress = nil; + +NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithStreamedRequest:request progress:&progress completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) { + if (error) { + NSLog(@"Error: %@", error); + } else { + NSLog(@"%@ %@", response, responseObject); + } +}]; + +[uploadTask resume]; +``` + +#### Creating a Data Task + +```objective-c +NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; +AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration]; + +NSURL *URL = [NSURL URLWithString:@"http://example.com/upload"]; +NSURLRequest *request = [NSURLRequest requestWithURL:URL]; + +NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) { + if (error) { + NSLog(@"Error: %@", error); + } else { + NSLog(@"%@ %@", response, responseObject); + } +}]; +[dataTask resume]; +``` + +--- + +### Request Serialization + +Request serializers create requests from URL strings, encoding parameters as either a query string or HTTP body. + +```objective-c +NSString *URLString = @"http://example.com"; +NSDictionary *parameters = @{@"foo": @"bar", @"baz": @[@1, @2, @3]}; +``` + +#### Query String Parameter Encoding + +```objective-c +[[AFHTTPRequestSerializer serializer] requestWithMethod:@"GET" URLString:URLString parameters:parameters error:nil]; +``` + + GET http://example.com?foo=bar&baz[]=1&baz[]=2&baz[]=3 + +#### URL Form Parameter Encoding + +```objective-c +[[AFHTTPRequestSerializer serializer] requestWithMethod:@"POST" URLString:URLString parameters:parameters]; +``` + + POST http://example.com/ + Content-Type: application/x-www-form-urlencoded + + foo=bar&baz[]=1&baz[]=2&baz[]=3 + +#### JSON Parameter Encoding + +```objective-c +[[AFJSONRequestSerializer serializer] requestWithMethod:@"POST" URLString:URLString parameters:parameters]; +``` + + POST http://example.com/ + Content-Type: application/json + + {"foo": "bar", "baz": [1,2,3]} + +--- + +### Network Reachability Manager + +`AFNetworkReachabilityManager` monitors the reachability of domains, and addresses for both WWAN and WiFi network interfaces. + +**Network reachability is a diagnostic tool that can be used to understand why a request might have failed. It should not be used to determine whether or not to make a request.** + +#### Shared Network Reachability + +```objective-c +[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { + NSLog(@"Reachability: %@", AFStringFromNetworkReachabilityStatus(status)); +}]; +``` + +#### HTTP Manager Reachability + +```objective-c +NSURL *baseURL = [NSURL URLWithString:@"http://example.com/"]; +AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:baseURL]; + +NSOperationQueue *operationQueue = manager.operationQueue; +[manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { + switch (status) { + case AFNetworkReachabilityStatusReachableViaWWAN: + case AFNetworkReachabilityStatusReachableViaWiFi: + [operationQueue setSuspended:NO]; + break; + case AFNetworkReachabilityStatusNotReachable: + default: + [operationQueue setSuspended:YES]; + break; + } +}]; + +[manager.reachabilityManager startMonitoring]; +``` + +--- + +### Security Policy + +`AFSecurityPolicy` evaluates server trust against pinned X.509 certificates and public keys over secure connections. + +Adding pinned SSL certificates to your app helps prevent man-in-the-middle attacks and other vulnerabilities. Applications dealing with sensitive customer data or financial information are strongly encouraged to route all communication over an HTTPS connection with SSL pinning configured and enabled. + +#### Allowing Invalid SSL Certificates + +```objective-c +AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; +manager.securityPolicy.allowInvalidCertificates = YES; // not recommended for production +``` + +--- + +### AFHTTPRequestOperation + +`AFHTTPRequestOperation` is a subclass of `AFURLConnectionOperation` for requests using the HTTP or HTTPS protocols. It encapsulates the concept of acceptable status codes and content types, which determine the success or failure of a request. + +Although `AFHTTPRequestOperationManager` is usually the best way to go about making requests, `AFHTTPRequestOperation` can be used by itself. + +#### `GET` with `AFHTTPRequestOperation` + +```objective-c +NSURL *URL = [NSURL URLWithString:@"http://example.com/resources/123.json"]; +NSURLRequest *request = [NSURLRequest requestWithURL:URL]; +AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request]; +op.responseSerializer = [AFJSONResponseSerializer serializer]; +[op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { + NSLog(@"JSON: %@", responseObject); +} failure:^(AFHTTPRequestOperation *operation, NSError *error) { + NSLog(@"Error: %@", error); +}]; +[[NSOperationQueue mainQueue] addOperation:op]; +``` + +#### Batch of Operations + +```objective-c +NSMutableArray *mutableOperations = [NSMutableArray array]; +for (NSURL *fileURL in filesToUpload) { + NSURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"http://example.com/upload" parameters:nil constructingBodyWithBlock:^(id formData) { + [formData appendPartWithFileURL:fileURL name:@"images[]" error:nil]; + }]; + + AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; + + [mutableOperations addObject:operation]; +} + +NSArray *operations = [AFURLConnectionOperation batchOfRequestOperations:@[...] progressBlock:^(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations) { + NSLog(@"%lu of %lu complete", numberOfFinishedOperations, totalNumberOfOperations); +} completionBlock:^(NSArray *operations) { + NSLog(@"All operations in batch complete"); +}]; +[[NSOperationQueue mainQueue] addOperations:operations waitUntilFinished:NO]; +``` + +## Unit Tests + +AFNetworking includes a suite of unit tests within the Tests subdirectory. In order to run the unit tests, you must install the testing dependencies via [CocoaPods](http://cocoapods.org/): + + $ cd Tests + $ pod install + +Once testing dependencies are installed, you can execute the test suite via the 'iOS Tests' and 'OS X Tests' schemes within Xcode. + +### Running Tests from the Command Line + +Tests can also be run from the command line or within a continuous integration environment. The [`xcpretty`](https://github.com/mneorr/xcpretty) utility needs to be installed before running the tests from the command line: + + $ gem install xcpretty + +Once `xcpretty` is installed, you can execute the suite via `rake test`. + +## Credits + +AFNetworking was originally created by [Scott Raymond](https://github.com/sco/) and [Mattt Thompson](https://github.com/mattt/) in the development of [Gowalla for iPhone](http://en.wikipedia.org/wiki/Gowalla). + +AFNetworking's logo was designed by [Alan Defibaugh](http://www.alandefibaugh.com/). + +And most of all, thanks to AFNetworking's [growing list of contributors](https://github.com/AFNetworking/AFNetworking/contributors). + +## Contact + +Follow AFNetworking on Twitter ([@AFNetworking](https://twitter.com/AFNetworking)) + +### Maintainers + +- [Mattt Thompson](http://github.com/mattt) ([@mattt](https://twitter.com/mattt)) + +## License + +AFNetworking is available under the MIT license. See the LICENSE file for more info. diff --git a/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h b/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h new file mode 100644 index 0000000..afebad3 --- /dev/null +++ b/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h @@ -0,0 +1,76 @@ +// AFNetworkActivityIndicatorManager.h +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import + +/** + `AFNetworkActivityIndicatorManager` manages the state of the network activity indicator in the status bar. When enabled, it will listen for notifications indicating that a network request operation has started or finished, and start or stop animating the indicator accordingly. The number of active requests is incremented and decremented much like a stack or a semaphore, and the activity indicator will animate so long as that number is greater than zero. + + You should enable the shared instance of `AFNetworkActivityIndicatorManager` when your application finishes launching. In `AppDelegate application:didFinishLaunchingWithOptions:` you can do so with the following code: + + [[AFNetworkActivityIndicatorManager sharedManager] setEnabled:YES]; + + By setting `enabled` to `YES` for `sharedManager`, the network activity indicator will show and hide automatically as requests start and finish. You should not ever need to call `incrementActivityCount` or `decrementActivityCount` yourself. + + See the Apple Human Interface Guidelines section about the Network Activity Indicator for more information: + http://developer.apple.com/library/iOS/#documentation/UserExperience/Conceptual/MobileHIG/UIElementGuidelines/UIElementGuidelines.html#//apple_ref/doc/uid/TP40006556-CH13-SW44 + */ +@interface AFNetworkActivityIndicatorManager : NSObject + +/** + A Boolean value indicating whether the manager is enabled. + + If YES, the manager will change status bar network activity indicator according to network operation notifications it receives. The default value is NO. + */ +@property (nonatomic, assign, getter = isEnabled) BOOL enabled; + +/** + A Boolean value indicating whether the network activity indicator is currently displayed in the status bar. + */ +@property (readonly, nonatomic, assign) BOOL isNetworkActivityIndicatorVisible; + +/** + Returns the shared network activity indicator manager object for the system. + + @return The systemwide network activity indicator manager. + */ ++ (instancetype)sharedManager; + +/** + Increments the number of active network requests. If this number was zero before incrementing, this will start animating the status bar network activity indicator. + */ +- (void)incrementActivityCount; + +/** + Decrements the number of active network requests. If this number becomes zero after decrementing, this will stop animating the status bar network activity indicator. + */ +- (void)decrementActivityCount; + +@end + +#endif diff --git a/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m b/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m new file mode 100644 index 0000000..5c6d4fa --- /dev/null +++ b/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m @@ -0,0 +1,171 @@ +// AFNetworkActivityIndicatorManager.m +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import "AFNetworkActivityIndicatorManager.h" + +#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) + +#import "AFHTTPRequestOperation.h" + +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 +#import "AFURLSessionManager.h" +#endif + +static NSTimeInterval const kAFNetworkActivityIndicatorInvisibilityDelay = 0.17; + +static NSURLRequest * AFNetworkRequestFromNotification(NSNotification *notification) { + if ([[notification object] isKindOfClass:[AFURLConnectionOperation class]]) { + return [(AFURLConnectionOperation *)[notification object] request]; + } + +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 + if ([[notification object] respondsToSelector:@selector(originalRequest)]) { + return [(NSURLSessionTask *)[notification object] originalRequest]; + } +#endif + + return nil; +} + +@interface AFNetworkActivityIndicatorManager () +@property (readwrite, nonatomic, assign) NSInteger activityCount; +@property (readwrite, nonatomic, strong) NSTimer *activityIndicatorVisibilityTimer; +@property (readonly, nonatomic, getter = isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible; + +- (void)updateNetworkActivityIndicatorVisibility; +- (void)updateNetworkActivityIndicatorVisibilityDelayed; +@end + +@implementation AFNetworkActivityIndicatorManager +@dynamic networkActivityIndicatorVisible; + ++ (instancetype)sharedManager { + static AFNetworkActivityIndicatorManager *_sharedManager = nil; + static dispatch_once_t oncePredicate; + dispatch_once(&oncePredicate, ^{ + _sharedManager = [[self alloc] init]; + }); + + return _sharedManager; +} + ++ (NSSet *)keyPathsForValuesAffectingIsNetworkActivityIndicatorVisible { + return [NSSet setWithObject:@"activityCount"]; +} + +- (id)init { + self = [super init]; + if (!self) { + return nil; + } + + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkRequestDidStart:) name:AFNetworkingOperationDidStartNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkRequestDidFinish:) name:AFNetworkingOperationDidFinishNotification object:nil]; + +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkRequestDidStart:) name:AFNetworkingTaskDidResumeNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkRequestDidFinish:) name:AFNetworkingTaskDidSuspendNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkRequestDidFinish:) name:AFNetworkingTaskDidCompleteNotification object:nil]; +#endif + + return self; +} + +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; + + [_activityIndicatorVisibilityTimer invalidate]; +} + +- (void)updateNetworkActivityIndicatorVisibilityDelayed { + if (self.enabled) { + // Delay hiding of activity indicator for a short interval, to avoid flickering + if (![self isNetworkActivityIndicatorVisible]) { + [self.activityIndicatorVisibilityTimer invalidate]; + self.activityIndicatorVisibilityTimer = [NSTimer timerWithTimeInterval:kAFNetworkActivityIndicatorInvisibilityDelay target:self selector:@selector(updateNetworkActivityIndicatorVisibility) userInfo:nil repeats:NO]; + [[NSRunLoop mainRunLoop] addTimer:self.activityIndicatorVisibilityTimer forMode:NSRunLoopCommonModes]; + } else { + [self performSelectorOnMainThread:@selector(updateNetworkActivityIndicatorVisibility) withObject:nil waitUntilDone:NO modes:@[NSRunLoopCommonModes]]; + } + } +} + +- (BOOL)isNetworkActivityIndicatorVisible { + return self.activityCount > 0; +} + +- (void)updateNetworkActivityIndicatorVisibility { + [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:[self isNetworkActivityIndicatorVisible]]; +} + +- (void)setActivityCount:(NSInteger)activityCount { + @synchronized(self) { + _activityCount = activityCount; + } + + dispatch_async(dispatch_get_main_queue(), ^{ + [self updateNetworkActivityIndicatorVisibilityDelayed]; + }); +} + +- (void)incrementActivityCount { + [self willChangeValueForKey:@"activityCount"]; + @synchronized(self) { + _activityCount++; + } + [self didChangeValueForKey:@"activityCount"]; + + dispatch_async(dispatch_get_main_queue(), ^{ + [self updateNetworkActivityIndicatorVisibilityDelayed]; + }); +} + +- (void)decrementActivityCount { + [self willChangeValueForKey:@"activityCount"]; + @synchronized(self) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + _activityCount = MAX(_activityCount - 1, 0); +#pragma clang diagnostic pop + } + [self didChangeValueForKey:@"activityCount"]; + + dispatch_async(dispatch_get_main_queue(), ^{ + [self updateNetworkActivityIndicatorVisibilityDelayed]; + }); +} + +- (void)networkRequestDidStart:(NSNotification *)notification { + if ([AFNetworkRequestFromNotification(notification) URL]) { + [self incrementActivityCount]; + } +} + +- (void)networkRequestDidFinish:(NSNotification *)notification { + if ([AFNetworkRequestFromNotification(notification) URL]) { + [self decrementActivityCount]; + } +} + +@end + +#endif diff --git a/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h b/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h new file mode 100644 index 0000000..cbefccd --- /dev/null +++ b/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h @@ -0,0 +1,64 @@ +// UIActivityIndicatorView+AFNetworking.h +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import + +@class AFURLConnectionOperation; + +/** + This category adds methods to the UIKit framework's `UIActivityIndicatorView` class. The methods in this category provide support for automatically starting and stopping animation depending on the loading state of a request operation or session task. + */ +@interface UIActivityIndicatorView (AFNetworking) + +///---------------------------------- +/// @name Animating for Session Tasks +///---------------------------------- + +/** + Binds the animating state to the state of the specified task. + + @param task The task. If `nil`, automatic updating from any previously specified operation will be disabled. + */ +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +- (void)setAnimatingWithStateOfTask:(NSURLSessionTask *)task; +#endif + +///--------------------------------------- +/// @name Animating for Request Operations +///--------------------------------------- + +/** + Binds the animating state to the execution state of the specified operation. + + @param operation The operation. If `nil`, automatic updating from any previously specified operation will be disabled. + */ +- (void)setAnimatingWithStateOfOperation:(AFURLConnectionOperation *)operation; + +@end + +#endif diff --git a/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m b/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m new file mode 100644 index 0000000..c981314 --- /dev/null +++ b/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m @@ -0,0 +1,97 @@ +// UIActivityIndicatorView+AFNetworking.m +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import "UIActivityIndicatorView+AFNetworking.h" + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import "AFHTTPRequestOperation.h" + +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +#import "AFURLSessionManager.h" +#endif + +@implementation UIActivityIndicatorView (AFNetworking) + +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +- (void)setAnimatingWithStateOfTask:(NSURLSessionTask *)task { + NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; + + [notificationCenter removeObserver:self name:AFNetworkingTaskDidResumeNotification object:nil]; + [notificationCenter removeObserver:self name:AFNetworkingTaskDidSuspendNotification object:nil]; + [notificationCenter removeObserver:self name:AFNetworkingTaskDidCompleteNotification object:nil]; + + if (task) { + if (task.state != NSURLSessionTaskStateCompleted) { + if (task.state == NSURLSessionTaskStateRunning) { + [self startAnimating]; + } else { + [self stopAnimating]; + } + + [notificationCenter addObserver:self selector:@selector(af_startAnimating) name:AFNetworkingTaskDidResumeNotification object:task]; + [notificationCenter addObserver:self selector:@selector(af_stopAnimating) name:AFNetworkingTaskDidCompleteNotification object:task]; + [notificationCenter addObserver:self selector:@selector(af_stopAnimating) name:AFNetworkingTaskDidSuspendNotification object:task]; + } + } +} +#endif + +#pragma mark - + +- (void)setAnimatingWithStateOfOperation:(AFURLConnectionOperation *)operation { + NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; + + [notificationCenter removeObserver:self name:AFNetworkingOperationDidStartNotification object:nil]; + [notificationCenter removeObserver:self name:AFNetworkingOperationDidFinishNotification object:nil]; + + if (operation) { + if (![operation isFinished]) { + if ([operation isExecuting]) { + [self startAnimating]; + } else { + [self stopAnimating]; + } + + [notificationCenter addObserver:self selector:@selector(af_startAnimating) name:AFNetworkingOperationDidStartNotification object:operation]; + [notificationCenter addObserver:self selector:@selector(af_stopAnimating) name:AFNetworkingOperationDidFinishNotification object:operation]; + } + } +} + +#pragma mark - + +- (void)af_startAnimating { + dispatch_async(dispatch_get_main_queue(), ^{ + [self startAnimating]; + }); +} + +- (void)af_stopAnimating { + dispatch_async(dispatch_get_main_queue(), ^{ + [self stopAnimating]; + }); +} + +@end + +#endif diff --git a/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.h b/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.h new file mode 100644 index 0000000..3cc1694 --- /dev/null +++ b/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.h @@ -0,0 +1,96 @@ +// UIAlertView+AFNetworking.h +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import + +@class AFURLConnectionOperation; + +/** + This category adds methods to the UIKit framework's `UIAlertView` class. The methods in this category provide support for automatically showing an alert if a session task or request operation finishes with an error. Alert title and message are filled from the corresponding `localizedDescription` & `localizedRecoverySuggestion` or `localizedFailureReason` of the error. + */ +@interface UIAlertView (AFNetworking) + +///------------------------------------- +/// @name Showing Alert for Session Task +///------------------------------------- + +/** + Shows an alert view with the error of the specified session task, if any. + + @param task The session task. + @param delegate The alert view delegate. + */ +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 ++ (void)showAlertViewForTaskWithErrorOnCompletion:(NSURLSessionTask *)task + delegate:(id)delegate; +#endif + +/** + Shows an alert view with the error of the specified session task, if any, with a custom cancel button title and other button titles. + + @param task The session task. + @param delegate The alert view delegate. + @param cancelButtonTitle The title of the cancel button or nil if there is no cancel button. Using this argument is equivalent to setting the cancel button index to the value returned by invoking addButtonWithTitle: specifying this title. + @param otherButtonTitles The title of another button. Using this argument is equivalent to invoking addButtonWithTitle: with this title to add more buttons. Too many buttons can cause the alert view to scroll. For guidelines on the best ways to use an alert in an app, see "Temporary Views". Titles of additional buttons to add to the receiver, terminated with `nil`. + */ +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 ++ (void)showAlertViewForTaskWithErrorOnCompletion:(NSURLSessionTask *)task + delegate:(id)delegate + cancelButtonTitle:(NSString *)cancelButtonTitle + otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION; +#endif + +///------------------------------------------ +/// @name Showing Alert for Request Operation +///------------------------------------------ + +/** + Shows an alert view with the error of the specified request operation, if any. + + @param operation The request operation. + @param delegate The alert view delegate. + */ ++ (void)showAlertViewForRequestOperationWithErrorOnCompletion:(AFURLConnectionOperation *)operation + delegate:(id)delegate; + +/** + Shows an alert view with the error of the specified request operation, if any, with a custom cancel button title and other button titles. + + @param operation The request operation. + @param delegate The alert view delegate. + @param cancelButtonTitle The title of the cancel button or nil if there is no cancel button. Using this argument is equivalent to setting the cancel button index to the value returned by invoking addButtonWithTitle: specifying this title. + @param otherButtonTitles The title of another button. Using this argument is equivalent to invoking addButtonWithTitle: with this title to add more buttons. Too many buttons can cause the alert view to scroll. For guidelines on the best ways to use an alert in an app, see "Temporary Views". Titles of additional buttons to add to the receiver, terminated with `nil`. + */ ++ (void)showAlertViewForRequestOperationWithErrorOnCompletion:(AFURLConnectionOperation *)operation + delegate:(id)delegate + cancelButtonTitle:(NSString *)cancelButtonTitle + otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION; + +@end + +#endif diff --git a/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.m b/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.m new file mode 100644 index 0000000..bb4eabc --- /dev/null +++ b/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.m @@ -0,0 +1,129 @@ +// UIAlertView+AFNetworking.m +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import "UIAlertView+AFNetworking.h" + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import "AFURLConnectionOperation.h" + +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +#import "AFURLSessionManager.h" +#endif + +static void AFGetAlertViewTitleAndMessageFromError(NSError *error, NSString * __autoreleasing *title, NSString * __autoreleasing *message) { + if (error.localizedDescription && (error.localizedRecoverySuggestion || error.localizedFailureReason)) { + *title = error.localizedDescription; + + if (error.localizedRecoverySuggestion) { + *message = error.localizedRecoverySuggestion; + } else { + *message = error.localizedFailureReason; + } + } else if (error.localizedDescription) { + *title = NSLocalizedStringFromTable(@"Error", @"AFNetworking", @"Fallback Error Description"); + *message = error.localizedDescription; + } else { + *title = NSLocalizedStringFromTable(@"Error", @"AFNetworking", @"Fallback Error Description"); + *message = [NSString stringWithFormat:NSLocalizedStringFromTable(@"%@ Error: %ld", @"AFNetworking", @"Fallback Error Failure Reason Format"), error.domain, (long)error.code]; + } +} + +@implementation UIAlertView (AFNetworking) + +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 ++ (void)showAlertViewForTaskWithErrorOnCompletion:(NSURLSessionTask *)task + delegate:(id)delegate +{ + [self showAlertViewForTaskWithErrorOnCompletion:task delegate:delegate cancelButtonTitle:NSLocalizedStringFromTable(@"Dismiss", @"AFNetworking", @"UIAlertView Cancel Button Title") otherButtonTitles:nil, nil]; +} + ++ (void)showAlertViewForTaskWithErrorOnCompletion:(NSURLSessionTask *)task + delegate:(id)delegate + cancelButtonTitle:(NSString *)cancelButtonTitle + otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION +{ + va_list otherTitleList; + va_start(otherTitleList, otherButtonTitles); + UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:nil delegate:delegate cancelButtonTitle:cancelButtonTitle otherButtonTitles:nil, nil]; + for(NSString *otherTitle = otherButtonTitles; otherTitle != nil; otherTitle = va_arg(otherTitleList, NSString *)){ + [alertView addButtonWithTitle:otherTitle]; + } + va_end(otherTitleList); + __block id observer = [[NSNotificationCenter defaultCenter] addObserverForName:AFNetworkingTaskDidCompleteNotification object:task queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification) { + + NSError *error = notification.userInfo[AFNetworkingTaskDidCompleteErrorKey]; + if (error) { + NSString *title, *message; + AFGetAlertViewTitleAndMessageFromError(error, &title, &message); + + [alertView setTitle:title]; + [alertView setMessage:message]; + [alertView show]; + } + + [[NSNotificationCenter defaultCenter] removeObserver:observer name:AFNetworkingTaskDidCompleteNotification object:notification.object]; + }]; +} +#endif + +#pragma mark - + ++ (void)showAlertViewForRequestOperationWithErrorOnCompletion:(AFURLConnectionOperation *)operation + delegate:(id)delegate +{ + [self showAlertViewForRequestOperationWithErrorOnCompletion:operation delegate:delegate cancelButtonTitle:NSLocalizedStringFromTable(@"Dismiss", @"AFNetworking", @"UIAlertView Cancel Button Title") otherButtonTitles:nil, nil]; +} + ++ (void)showAlertViewForRequestOperationWithErrorOnCompletion:(AFURLConnectionOperation *)operation + delegate:(id)delegate + cancelButtonTitle:(NSString *)cancelButtonTitle + otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION +{ + va_list otherTitleList; + va_start(otherTitleList, otherButtonTitles); + UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:nil delegate:delegate cancelButtonTitle:cancelButtonTitle otherButtonTitles:nil, nil]; + for(NSString *otherTitle = otherButtonTitles; otherTitle != nil; otherTitle = va_arg(otherTitleList, NSString *)){ + [alertView addButtonWithTitle:otherTitle]; + } + va_end(otherTitleList); + __block id observer = [[NSNotificationCenter defaultCenter] addObserverForName:AFNetworkingOperationDidFinishNotification object:operation queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification) { + + if (notification.object && [notification.object isKindOfClass:[AFURLConnectionOperation class]]) { + NSError *error = [(AFURLConnectionOperation *)notification.object error]; + if (error) { + NSString *title, *message; + AFGetAlertViewTitleAndMessageFromError(error, &title, &message); + + [alertView setTitle:title]; + [alertView setMessage:message]; + [alertView show]; + } + } + + [[NSNotificationCenter defaultCenter] removeObserver:observer name:AFNetworkingOperationDidFinishNotification object:notification.object]; + }]; +} + +@end + +#endif diff --git a/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h b/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h new file mode 100644 index 0000000..af8ff82 --- /dev/null +++ b/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h @@ -0,0 +1,181 @@ +// UIButton+AFNetworking.h +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import + +@protocol AFURLResponseSerialization, AFImageCache; + +/** + This category adds methods to the UIKit framework's `UIButton` class. The methods in this category provide support for loading remote images and background images asynchronously from a URL. + + @warning Compound values for control `state` (such as `UIControlStateHighlighted | UIControlStateDisabled`) are unsupported. + */ +@interface UIButton (AFNetworking) + +///---------------------------- +/// @name Accessing Image Cache +///---------------------------- + +/** + The image cache used to improve image loadiing performance on scroll views. By default, `UIButton` will use the `sharedImageCache` of `UIImageView`. + */ ++ (id )sharedImageCache; + +/** + Set the cache used for image loading. + + @param imageCache The image cache. + */ ++ (void)setSharedImageCache:(id )imageCache; + +///------------------------------------ +/// @name Accessing Response Serializer +///------------------------------------ + +/** + The response serializer used to create an image representation from the server response and response data. By default, this is an instance of `AFImageResponseSerializer`. + + @discussion Subclasses of `AFImageResponseSerializer` could be used to perform post-processing, such as color correction, face detection, or other effects. See https://github.com/AFNetworking/AFCoreImageSerializer + */ +@property (nonatomic, strong) id imageResponseSerializer; + +///-------------------- +/// @name Setting Image +///-------------------- + +/** + Asynchronously downloads an image from the specified URL, and sets it as the image for the specified state once the request is finished. Any previous image request for the receiver will be cancelled. + + If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + @param state The control state. + @param url The URL used for the image request. + */ +- (void)setImageForState:(UIControlState)state + withURL:(NSURL *)url; + +/** + Asynchronously downloads an image from the specified URL, and sets it as the image for the specified state once the request is finished. Any previous image request for the receiver will be cancelled. + + If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + @param state The control state. + @param url The URL used for the image request. + @param placeholderImage The image to be set initially, until the image request finishes. If `nil`, the button will not change its image until the image request finishes. + */ +- (void)setImageForState:(UIControlState)state + withURL:(NSURL *)url + placeholderImage:(UIImage *)placeholderImage; + +/** + Asynchronously downloads an image from the specified URL request, and sets it as the image for the specified state once the request is finished. Any previous image request for the receiver will be cancelled. + + If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + If a success block is specified, it is the responsibility of the block to set the image of the button before returning. If no success block is specified, the default behavior of setting the image with `setImage:forState:` is applied. + + @param state The control state. + @param urlRequest The URL request used for the image request. + @param placeholderImage The image to be set initially, until the image request finishes. If `nil`, the button will not change its image until the image request finishes. + @param success A block to be executed when the image request operation finishes successfully. This block has no return value and takes two arguments: the server response and the image. If the image was returned from cache, the request and response parameters will be `nil`. + @param failure A block object to be executed when the image request operation finishes unsuccessfully, or that finishes successfully. This block has no return value and takes a single argument: the error that occurred. + */ +- (void)setImageForState:(UIControlState)state + withURLRequest:(NSURLRequest *)urlRequest + placeholderImage:(UIImage *)placeholderImage + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success + failure:(void (^)(NSError *error))failure; + + +///------------------------------- +/// @name Setting Background Image +///------------------------------- + +/** + Asynchronously downloads an image from the specified URL, and sets it as the background image for the specified state once the request is finished. Any previous background image request for the receiver will be cancelled. + + If the background image is cached locally, the background image is set immediately, otherwise the specified placeholder background image will be set immediately, and then the remote background image will be set once the request is finished. + + @param state The control state. + @param url The URL used for the background image request. + */ +- (void)setBackgroundImageForState:(UIControlState)state + withURL:(NSURL *)url; + +/** + Asynchronously downloads an image from the specified URL, and sets it as the background image for the specified state once the request is finished. Any previous image request for the receiver will be cancelled. + + If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + @param state The control state. + @param url The URL used for the background image request. + @param placeholderImage The background image to be set initially, until the background image request finishes. If `nil`, the button will not change its background image until the background image request finishes. + */ +- (void)setBackgroundImageForState:(UIControlState)state + withURL:(NSURL *)url + placeholderImage:(UIImage *)placeholderImage; + +/** + Asynchronously downloads an image from the specified URL request, and sets it as the image for the specified state once the request is finished. Any previous image request for the receiver will be cancelled. + + If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + If a success block is specified, it is the responsibility of the block to set the image of the button before returning. If no success block is specified, the default behavior of setting the image with `setBackgroundImage:forState:` is applied. + + @param state The control state. + @param urlRequest The URL request used for the image request. + @param placeholderImage The background image to be set initially, until the background image request finishes. If `nil`, the button will not change its background image until the background image request finishes. + */ +- (void)setBackgroundImageForState:(UIControlState)state + withURLRequest:(NSURLRequest *)urlRequest + placeholderImage:(UIImage *)placeholderImage + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success + failure:(void (^)(NSError *error))failure; + + +///------------------------------ +/// @name Canceling Image Loading +///------------------------------ + +/** + Cancels any executing image operation for the specified control state of the receiver, if one exists. + + @param state The control state. + */ +- (void)cancelImageRequestOperationForState:(UIControlState)state; + +/** + Cancels any executing background image operation for the specified control state of the receiver, if one exists. + + @param state The control state. + */ +- (void)cancelBackgroundImageRequestOperationForState:(UIControlState)state; + +@end + +#endif diff --git a/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m b/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m new file mode 100644 index 0000000..d7a0a1b --- /dev/null +++ b/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m @@ -0,0 +1,294 @@ +// UIButton+AFNetworking.m +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import "UIButton+AFNetworking.h" + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import "AFURLResponseSerialization.h" +#import "AFHTTPRequestOperation.h" + +#import "UIImageView+AFNetworking.h" + +@interface UIButton (_AFNetworking) +@end + +@implementation UIButton (_AFNetworking) + ++ (NSOperationQueue *)af_sharedImageRequestOperationQueue { + static NSOperationQueue *_af_sharedImageRequestOperationQueue = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _af_sharedImageRequestOperationQueue = [[NSOperationQueue alloc] init]; + _af_sharedImageRequestOperationQueue.maxConcurrentOperationCount = NSOperationQueueDefaultMaxConcurrentOperationCount; + }); + + return _af_sharedImageRequestOperationQueue; +} + +#pragma mark - + +static char AFImageRequestOperationNormal; +static char AFImageRequestOperationHighlighted; +static char AFImageRequestOperationSelected; +static char AFImageRequestOperationDisabled; + +static const char * af_imageRequestOperationKeyForState(UIControlState state) { + switch (state) { + case UIControlStateHighlighted: + return &AFImageRequestOperationHighlighted; + case UIControlStateSelected: + return &AFImageRequestOperationSelected; + case UIControlStateDisabled: + return &AFImageRequestOperationDisabled; + case UIControlStateNormal: + default: + return &AFImageRequestOperationNormal; + } +} + +- (AFHTTPRequestOperation *)af_imageRequestOperationForState:(UIControlState)state { + return (AFHTTPRequestOperation *)objc_getAssociatedObject(self, af_imageRequestOperationKeyForState(state)); +} + +- (void)af_setImageRequestOperation:(AFHTTPRequestOperation *)imageRequestOperation + forState:(UIControlState)state +{ + objc_setAssociatedObject(self, af_imageRequestOperationKeyForState(state), imageRequestOperation, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +#pragma mark - + +static char AFBackgroundImageRequestOperationNormal; +static char AFBackgroundImageRequestOperationHighlighted; +static char AFBackgroundImageRequestOperationSelected; +static char AFBackgroundImageRequestOperationDisabled; + +static const char * af_backgroundImageRequestOperationKeyForState(UIControlState state) { + switch (state) { + case UIControlStateHighlighted: + return &AFBackgroundImageRequestOperationHighlighted; + case UIControlStateSelected: + return &AFBackgroundImageRequestOperationSelected; + case UIControlStateDisabled: + return &AFBackgroundImageRequestOperationDisabled; + case UIControlStateNormal: + default: + return &AFBackgroundImageRequestOperationNormal; + } +} + +- (AFHTTPRequestOperation *)af_backgroundImageRequestOperationForState:(UIControlState)state { + return (AFHTTPRequestOperation *)objc_getAssociatedObject(self, af_backgroundImageRequestOperationKeyForState(state)); +} + +- (void)af_setBackgroundImageRequestOperation:(AFHTTPRequestOperation *)imageRequestOperation + forState:(UIControlState)state +{ + objc_setAssociatedObject(self, af_backgroundImageRequestOperationKeyForState(state), imageRequestOperation, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +@end + +#pragma mark - + +@implementation UIButton (AFNetworking) + ++ (id )sharedImageCache { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + return objc_getAssociatedObject(self, @selector(sharedImageCache)) ?: [UIImageView sharedImageCache]; +#pragma clang diagnostic pop +} + ++ (void)setSharedImageCache:(id )imageCache { + objc_setAssociatedObject(self, @selector(sharedImageCache), imageCache, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +#pragma mark - + +- (id )imageResponseSerializer { + static id _af_defaultImageResponseSerializer = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _af_defaultImageResponseSerializer = [AFImageResponseSerializer serializer]; + }); + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + return objc_getAssociatedObject(self, @selector(imageResponseSerializer)) ?: _af_defaultImageResponseSerializer; +#pragma clang diagnostic pop +} + +- (void)setImageResponseSerializer:(id )serializer { + objc_setAssociatedObject(self, @selector(imageResponseSerializer), serializer, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +#pragma mark - + +- (void)setImageForState:(UIControlState)state + withURL:(NSURL *)url +{ + [self setImageForState:state withURL:url placeholderImage:nil]; +} + +- (void)setImageForState:(UIControlState)state + withURL:(NSURL *)url + placeholderImage:(UIImage *)placeholderImage +{ + NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; + [request addValue:@"image/*" forHTTPHeaderField:@"Accept"]; + + [self setImageForState:state withURLRequest:request placeholderImage:placeholderImage success:nil failure:nil]; +} + +- (void)setImageForState:(UIControlState)state + withURLRequest:(NSURLRequest *)urlRequest + placeholderImage:(UIImage *)placeholderImage + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success + failure:(void (^)(NSError *error))failure +{ + [self cancelImageRequestOperationForState:state]; + + UIImage *cachedImage = [[[self class] sharedImageCache] cachedImageForRequest:urlRequest]; + if (cachedImage) { + if (success) { + success(nil, nil, cachedImage); + } else { + [self setImage:cachedImage forState:state]; + } + + [self af_setImageRequestOperation:nil forState:state]; + } else { + if (placeholderImage) { + [self setImage:placeholderImage forState:state]; + } + + __weak __typeof(self)weakSelf = self; + AFHTTPRequestOperation *imageRequestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest]; + imageRequestOperation.responseSerializer = self.imageResponseSerializer; + [imageRequestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { + __strong __typeof(weakSelf)strongSelf = weakSelf; + if ([[urlRequest URL] isEqual:[operation.request URL]]) { + if (success) { + success(operation.request, operation.response, responseObject); + } else if (responseObject) { + [strongSelf setImage:responseObject forState:state]; + } + } + [[[strongSelf class] sharedImageCache] cacheImage:responseObject forRequest:urlRequest]; + } failure:^(AFHTTPRequestOperation *operation, NSError *error) { + if ([[urlRequest URL] isEqual:[operation.request URL]]) { + if (failure) { + failure(error); + } + } + }]; + + [self af_setImageRequestOperation:imageRequestOperation forState:state]; + [[[self class] af_sharedImageRequestOperationQueue] addOperation:imageRequestOperation]; + } +} + +#pragma mark - + +- (void)setBackgroundImageForState:(UIControlState)state + withURL:(NSURL *)url +{ + [self setBackgroundImageForState:state withURL:url placeholderImage:nil]; +} + +- (void)setBackgroundImageForState:(UIControlState)state + withURL:(NSURL *)url + placeholderImage:(UIImage *)placeholderImage +{ + NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; + [request addValue:@"image/*" forHTTPHeaderField:@"Accept"]; + + [self setBackgroundImageForState:state withURLRequest:request placeholderImage:placeholderImage success:nil failure:nil]; +} + +- (void)setBackgroundImageForState:(UIControlState)state + withURLRequest:(NSURLRequest *)urlRequest + placeholderImage:(UIImage *)placeholderImage + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success + failure:(void (^)(NSError *error))failure +{ + [self cancelBackgroundImageRequestOperationForState:state]; + + UIImage *cachedImage = [[[self class] sharedImageCache] cachedImageForRequest:urlRequest]; + if (cachedImage) { + if (success) { + success(nil, nil, cachedImage); + } else { + [self setBackgroundImage:cachedImage forState:state]; + } + + [self af_setBackgroundImageRequestOperation:nil forState:state]; + } else { + if (placeholderImage) { + [self setBackgroundImage:placeholderImage forState:state]; + } + + __weak __typeof(self)weakSelf = self; + AFHTTPRequestOperation *backgroundImageRequestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest]; + backgroundImageRequestOperation.responseSerializer = self.imageResponseSerializer; + [backgroundImageRequestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { + __strong __typeof(weakSelf)strongSelf = weakSelf; + if ([[urlRequest URL] isEqual:[operation.request URL]]) { + if (success) { + success(operation.request, operation.response, responseObject); + } else if (responseObject) { + [strongSelf setBackgroundImage:responseObject forState:state]; + } + } + [[[strongSelf class] sharedImageCache] cacheImage:responseObject forRequest:urlRequest]; + } failure:^(AFHTTPRequestOperation *operation, NSError *error) { + if ([[urlRequest URL] isEqual:[operation.request URL]]) { + if (failure) { + failure(error); + } + } + }]; + + [self af_setBackgroundImageRequestOperation:backgroundImageRequestOperation forState:state]; + [[[self class] af_sharedImageRequestOperationQueue] addOperation:backgroundImageRequestOperation]; + } +} + +#pragma mark - + +- (void)cancelImageRequestOperationForState:(UIControlState)state { + [[self af_imageRequestOperationForState:state] cancel]; + [self af_setImageRequestOperation:nil forState:state]; +} + +- (void)cancelBackgroundImageRequestOperationForState:(UIControlState)state { + [[self af_backgroundImageRequestOperationForState:state] cancel]; + [self af_setBackgroundImageRequestOperation:nil forState:state]; +} + +@end + +#endif diff --git a/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h b/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h new file mode 100644 index 0000000..5838b56 --- /dev/null +++ b/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h @@ -0,0 +1,143 @@ +// UIImageView+AFNetworking.h +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import + +@protocol AFURLResponseSerialization, AFImageCache; + +/** + This category adds methods to the UIKit framework's `UIImageView` class. The methods in this category provide support for loading remote images asynchronously from a URL. + */ +@interface UIImageView (AFNetworking) + +///---------------------------- +/// @name Accessing Image Cache +///---------------------------- + +/** + The image cache used to improve image loadiing performance on scroll views. By default, this is an `NSCache` subclass conforming to the `AFImageCache` protocol, which listens for notification warnings and evicts objects accordingly. +*/ ++ (id )sharedImageCache; + +/** + Set the cache used for image loading. + + @param imageCache The image cache. + */ ++ (void)setSharedImageCache:(id )imageCache; + +///------------------------------------ +/// @name Accessing Response Serializer +///------------------------------------ + +/** + The response serializer used to create an image representation from the server response and response data. By default, this is an instance of `AFImageResponseSerializer`. + + @discussion Subclasses of `AFImageResponseSerializer` could be used to perform post-processing, such as color correction, face detection, or other effects. See https://github.com/AFNetworking/AFCoreImageSerializer + */ +@property (nonatomic, strong) id imageResponseSerializer; + +///-------------------- +/// @name Setting Image +///-------------------- + +/** + Asynchronously downloads an image from the specified URL, and sets it once the request is finished. Any previous image request for the receiver will be cancelled. + + If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + By default, URL requests have a `Accept` header field value of "image / *", a cache policy of `NSURLCacheStorageAllowed` and a timeout interval of 30 seconds, and are set not handle cookies. To configure URL requests differently, use `setImageWithURLRequest:placeholderImage:success:failure:` + + @param url The URL used for the image request. + */ +- (void)setImageWithURL:(NSURL *)url; + +/** + Asynchronously downloads an image from the specified URL, and sets it once the request is finished. Any previous image request for the receiver will be cancelled. + + If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + By default, URL requests have a `Accept` header field value of "image / *", a cache policy of `NSURLCacheStorageAllowed` and a timeout interval of 30 seconds, and are set not handle cookies. To configure URL requests differently, use `setImageWithURLRequest:placeholderImage:success:failure:` + + @param url The URL used for the image request. + @param placeholderImage The image to be set initially, until the image request finishes. If `nil`, the image view will not change its image until the image request finishes. + */ +- (void)setImageWithURL:(NSURL *)url + placeholderImage:(UIImage *)placeholderImage; + +/** + Asynchronously downloads an image from the specified URL request, and sets it once the request is finished. Any previous image request for the receiver will be cancelled. + + If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + If a success block is specified, it is the responsibility of the block to set the image of the image view before returning. If no success block is specified, the default behavior of setting the image with `self.image = image` is applied. + + @param urlRequest The URL request used for the image request. + @param placeholderImage The image to be set initially, until the image request finishes. If `nil`, the image view will not change its image until the image request finishes. + @param success A block to be executed when the image request operation finishes successfully. This block has no return value and takes three arguments: the request sent from the client, the response received from the server, and the image created from the response data of request. If the image was returned from cache, the request and response parameters will be `nil`. + @param failure A block object to be executed when the image request operation finishes unsuccessfully, or that finishes successfully. This block has no return value and takes three arguments: the request sent from the client, the response received from the server, and the error object describing the network or parsing error that occurred. + */ +- (void)setImageWithURLRequest:(NSURLRequest *)urlRequest + placeholderImage:(UIImage *)placeholderImage + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success + failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure; + +/** + Cancels any executing image operation for the receiver, if one exists. + */ +- (void)cancelImageRequestOperation; + +@end + +#pragma mark - + +/** + The `AFImageCache` protocol is adopted by an object used to cache images loaded by the AFNetworking category on `UIImageView`. + */ +@protocol AFImageCache + +/** + Returns a cached image for the specififed request, if available. + + @param request The image request. + + @return The cached image. + */ +- (UIImage *)cachedImageForRequest:(NSURLRequest *)request; + +/** + Caches a particular image for the specified request. + + @param image The image to cache. + @param request The request to be used as a cache key. + */ +- (void)cacheImage:(UIImage *)image + forRequest:(NSURLRequest *)request; +@end + +#endif diff --git a/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m b/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m new file mode 100644 index 0000000..04b6b0c --- /dev/null +++ b/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m @@ -0,0 +1,216 @@ +// UIImageView+AFNetworking.m +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import "UIImageView+AFNetworking.h" + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import "AFHTTPRequestOperation.h" + +@interface AFImageCache : NSCache +@end + +#pragma mark - + +@interface UIImageView (_AFNetworking) +@property (readwrite, nonatomic, strong, setter = af_setImageRequestOperation:) AFHTTPRequestOperation *af_imageRequestOperation; +@end + +@implementation UIImageView (_AFNetworking) + ++ (NSOperationQueue *)af_sharedImageRequestOperationQueue { + static NSOperationQueue *_af_sharedImageRequestOperationQueue = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _af_sharedImageRequestOperationQueue = [[NSOperationQueue alloc] init]; + _af_sharedImageRequestOperationQueue.maxConcurrentOperationCount = NSOperationQueueDefaultMaxConcurrentOperationCount; + }); + + return _af_sharedImageRequestOperationQueue; +} + +- (AFHTTPRequestOperation *)af_imageRequestOperation { + return (AFHTTPRequestOperation *)objc_getAssociatedObject(self, @selector(af_imageRequestOperation)); +} + +- (void)af_setImageRequestOperation:(AFHTTPRequestOperation *)imageRequestOperation { + objc_setAssociatedObject(self, @selector(af_imageRequestOperation), imageRequestOperation, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +@end + +#pragma mark - + +@implementation UIImageView (AFNetworking) +@dynamic imageResponseSerializer; + ++ (id )sharedImageCache { + static AFImageCache *_af_defaultImageCache = nil; + static dispatch_once_t oncePredicate; + dispatch_once(&oncePredicate, ^{ + _af_defaultImageCache = [[AFImageCache alloc] init]; + + [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidReceiveMemoryWarningNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * __unused notification) { + [_af_defaultImageCache removeAllObjects]; + }]; + }); + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + return objc_getAssociatedObject(self, @selector(sharedImageCache)) ?: _af_defaultImageCache; +#pragma clang diagnostic pop +} + ++ (void)setSharedImageCache:(id )imageCache { + objc_setAssociatedObject(self, @selector(sharedImageCache), imageCache, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +#pragma mark - + +- (id )imageResponseSerializer { + static id _af_defaultImageResponseSerializer = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _af_defaultImageResponseSerializer = [AFImageResponseSerializer serializer]; + }); + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + return objc_getAssociatedObject(self, @selector(imageResponseSerializer)) ?: _af_defaultImageResponseSerializer; +#pragma clang diagnostic pop +} + +- (void)setImageResponseSerializer:(id )serializer { + objc_setAssociatedObject(self, @selector(imageResponseSerializer), serializer, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +#pragma mark - + +- (void)setImageWithURL:(NSURL *)url { + [self setImageWithURL:url placeholderImage:nil]; +} + +- (void)setImageWithURL:(NSURL *)url + placeholderImage:(UIImage *)placeholderImage +{ + NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; + [request addValue:@"image/*" forHTTPHeaderField:@"Accept"]; + + [self setImageWithURLRequest:request placeholderImage:placeholderImage success:nil failure:nil]; +} + +- (void)setImageWithURLRequest:(NSURLRequest *)urlRequest + placeholderImage:(UIImage *)placeholderImage + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success + failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure +{ + [self cancelImageRequestOperation]; + + UIImage *cachedImage = [[[self class] sharedImageCache] cachedImageForRequest:urlRequest]; + if (cachedImage) { + if (success) { + success(nil, nil, cachedImage); + } else { + self.image = cachedImage; + } + + self.af_imageRequestOperation = nil; + } else { + if (placeholderImage) { + self.image = placeholderImage; + } + + __weak __typeof(self)weakSelf = self; + self.af_imageRequestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest]; + self.af_imageRequestOperation.responseSerializer = self.imageResponseSerializer; + [self.af_imageRequestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { + __strong __typeof(weakSelf)strongSelf = weakSelf; + if ([[urlRequest URL] isEqual:[strongSelf.af_imageRequestOperation.request URL]]) { + if (success) { + success(urlRequest, operation.response, responseObject); + } else if (responseObject) { + strongSelf.image = responseObject; + } + + if (operation == strongSelf.af_imageRequestOperation){ + strongSelf.af_imageRequestOperation = nil; + } + } + + [[[strongSelf class] sharedImageCache] cacheImage:responseObject forRequest:urlRequest]; + } failure:^(AFHTTPRequestOperation *operation, NSError *error) { + __strong __typeof(weakSelf)strongSelf = weakSelf; + if ([[urlRequest URL] isEqual:[strongSelf.af_imageRequestOperation.request URL]]) { + if (failure) { + failure(urlRequest, operation.response, error); + } + + if (operation == strongSelf.af_imageRequestOperation){ + strongSelf.af_imageRequestOperation = nil; + } + } + }]; + + [[[self class] af_sharedImageRequestOperationQueue] addOperation:self.af_imageRequestOperation]; + } +} + +- (void)cancelImageRequestOperation { + [self.af_imageRequestOperation cancel]; + self.af_imageRequestOperation = nil; +} + +@end + +#pragma mark - + +static inline NSString * AFImageCacheKeyFromURLRequest(NSURLRequest *request) { + return [[request URL] absoluteString]; +} + +@implementation AFImageCache + +- (UIImage *)cachedImageForRequest:(NSURLRequest *)request { + switch ([request cachePolicy]) { + case NSURLRequestReloadIgnoringCacheData: + case NSURLRequestReloadIgnoringLocalAndRemoteCacheData: + return nil; + default: + break; + } + + return [self objectForKey:AFImageCacheKeyFromURLRequest(request)]; +} + +- (void)cacheImage:(UIImage *)image + forRequest:(NSURLRequest *)request +{ + if (image && request) { + [self setObject:image forKey:AFImageCacheKeyFromURLRequest(request)]; + } +} + +@end + +#endif diff --git a/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h b/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h new file mode 100644 index 0000000..94082f6 --- /dev/null +++ b/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h @@ -0,0 +1,38 @@ +// UIKit+AFNetworking.h +// +// Copyright (c) 2013 AFNetworking (http://afnetworking.com/) +// +// 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. + +#import + +#ifndef _UIKIT_AFNETWORKING_ + #define _UIKIT_AFNETWORKING_ + + #import "AFNetworkActivityIndicatorManager.h" + + #import "UIActivityIndicatorView+AFNetworking.h" + #import "UIAlertView+AFNetworking.h" + #import "UIButton+AFNetworking.h" + #import "UIImageView+AFNetworking.h" + #import "UIKit+AFNetworking.h" + #import "UIProgressView+AFNetworking.h" + #import "UIRefreshControl+AFNetworking.h" + #import "UIWebView+AFNetworking.h" +#endif /* _UIKIT_AFNETWORKING_ */ diff --git a/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h b/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h new file mode 100644 index 0000000..06f3808 --- /dev/null +++ b/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h @@ -0,0 +1,88 @@ +// UIProgressView+AFNetworking.h +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import + +@class AFURLConnectionOperation; + +/** + This category adds methods to the UIKit framework's `UIProgressView` class. The methods in this category provide support for binding the progress to the upload and download progress of a session task or request operation. + */ +@interface UIProgressView (AFNetworking) + +///------------------------------------ +/// @name Setting Session Task Progress +///------------------------------------ + +/** + Binds the progress to the upload progress of the specified session task. + + @param task The session task. + @param animated `YES` if the change should be animated, `NO` if the change should happen immediately. + */ +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +- (void)setProgressWithUploadProgressOfTask:(NSURLSessionUploadTask *)task + animated:(BOOL)animated; +#endif + +/** + Binds the progress to the download progress of the specified session task. + + @param task The session task. + @param animated `YES` if the change should be animated, `NO` if the change should happen immediately. + */ +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +- (void)setProgressWithDownloadProgressOfTask:(NSURLSessionDownloadTask *)task + animated:(BOOL)animated; +#endif + +///------------------------------------ +/// @name Setting Session Task Progress +///------------------------------------ + +/** + Binds the progress to the upload progress of the specified request operation. + + @param operation The request operation. + @param animated `YES` if the change should be animated, `NO` if the change should happen immediately. + */ +- (void)setProgressWithUploadProgressOfOperation:(AFURLConnectionOperation *)operation + animated:(BOOL)animated; + +/** + Binds the progress to the download progress of the specified request operation. + + @param operation The request operation. + @param animated `YES` if the change should be animated, `NO` if the change should happen immediately. + */ +- (void)setProgressWithDownloadProgressOfOperation:(AFURLConnectionOperation *)operation + animated:(BOOL)animated; + +@end + +#endif diff --git a/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.m b/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.m new file mode 100644 index 0000000..dfe4151 --- /dev/null +++ b/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.m @@ -0,0 +1,183 @@ +// UIProgressView+AFNetworking.m +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import "UIProgressView+AFNetworking.h" + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import "AFURLConnectionOperation.h" + +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +#import "AFURLSessionManager.h" +#endif + +static void * AFTaskCountOfBytesSentContext = &AFTaskCountOfBytesSentContext; +static void * AFTaskCountOfBytesReceivedContext = &AFTaskCountOfBytesReceivedContext; + +@interface AFURLConnectionOperation (_UIProgressView) +@property (readwrite, nonatomic, copy) void (^uploadProgress)(NSUInteger bytes, long long totalBytes, long long totalBytesExpected); +@property (readwrite, nonatomic, assign, setter = af_setUploadProgressAnimated:) BOOL af_uploadProgressAnimated; + +@property (readwrite, nonatomic, copy) void (^downloadProgress)(NSUInteger bytes, long long totalBytes, long long totalBytesExpected); +@property (readwrite, nonatomic, assign, setter = af_setDownloadProgressAnimated:) BOOL af_downloadProgressAnimated; +@end + +@implementation AFURLConnectionOperation (_UIProgressView) +@dynamic uploadProgress; // Implemented in AFURLConnectionOperation +@dynamic af_uploadProgressAnimated; + +@dynamic downloadProgress; // Implemented in AFURLConnectionOperation +@dynamic af_downloadProgressAnimated; +@end + +#pragma mark - + +@implementation UIProgressView (AFNetworking) + +- (BOOL)af_uploadProgressAnimated { + return [(NSNumber *)objc_getAssociatedObject(self, @selector(af_uploadProgressAnimated)) boolValue]; +} + +- (void)af_setUploadProgressAnimated:(BOOL)animated { + objc_setAssociatedObject(self, @selector(af_uploadProgressAnimated), @(animated), OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +- (BOOL)af_downloadProgressAnimated { + return [(NSNumber *)objc_getAssociatedObject(self, @selector(af_downloadProgressAnimated)) boolValue]; +} + +- (void)af_setDownloadProgressAnimated:(BOOL)animated { + objc_setAssociatedObject(self, @selector(af_downloadProgressAnimated), @(animated), OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +#pragma mark - + +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +- (void)setProgressWithUploadProgressOfTask:(NSURLSessionUploadTask *)task + animated:(BOOL)animated +{ + [task addObserver:self forKeyPath:@"state" options:(NSKeyValueObservingOptions)0 context:AFTaskCountOfBytesSentContext]; + [task addObserver:self forKeyPath:@"countOfBytesSent" options:(NSKeyValueObservingOptions)0 context:AFTaskCountOfBytesSentContext]; + + [self af_setUploadProgressAnimated:animated]; +} + +- (void)setProgressWithDownloadProgressOfTask:(NSURLSessionDownloadTask *)task + animated:(BOOL)animated +{ + [task addObserver:self forKeyPath:@"state" options:(NSKeyValueObservingOptions)0 context:AFTaskCountOfBytesReceivedContext]; + [task addObserver:self forKeyPath:@"countOfBytesReceived" options:(NSKeyValueObservingOptions)0 context:AFTaskCountOfBytesReceivedContext]; + + [self af_setDownloadProgressAnimated:animated]; +} +#endif + +#pragma mark - + +- (void)setProgressWithUploadProgressOfOperation:(AFURLConnectionOperation *)operation + animated:(BOOL)animated +{ + __weak __typeof(self)weakSelf = self; + void (^original)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) = [operation.uploadProgress copy]; + [operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) { + if (original) { + original(bytesWritten, totalBytesWritten, totalBytesExpectedToWrite); + } + + dispatch_async(dispatch_get_main_queue(), ^{ + if (totalBytesExpectedToWrite > 0) { + __strong __typeof(weakSelf)strongSelf = weakSelf; + [strongSelf setProgress:(totalBytesWritten / (totalBytesExpectedToWrite * 1.0f)) animated:animated]; + } + }); + }]; +} + +- (void)setProgressWithDownloadProgressOfOperation:(AFURLConnectionOperation *)operation + animated:(BOOL)animated +{ + __weak __typeof(self)weakSelf = self; + void (^original)(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) = [operation.downloadProgress copy]; + [operation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) { + if (original) { + original(bytesRead, totalBytesRead, totalBytesExpectedToRead); + } + + dispatch_async(dispatch_get_main_queue(), ^{ + if (totalBytesExpectedToRead > 0) { + __strong __typeof(weakSelf)strongSelf = weakSelf; + [strongSelf setProgress:(totalBytesRead / (totalBytesExpectedToRead * 1.0f)) animated:animated]; + } + }); + }]; +} + +#pragma mark - NSKeyValueObserving + +- (void)observeValueForKeyPath:(NSString *)keyPath + ofObject:(id)object + change:(__unused NSDictionary *)change + context:(void *)context +{ +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 + if (context == AFTaskCountOfBytesSentContext || context == AFTaskCountOfBytesReceivedContext) { + if ([keyPath isEqualToString:NSStringFromSelector(@selector(countOfBytesSent))]) { + if ([object countOfBytesExpectedToSend] > 0) { + dispatch_async(dispatch_get_main_queue(), ^{ + [self setProgress:[object countOfBytesSent] / ([object countOfBytesExpectedToSend] * 1.0f) animated:self.af_uploadProgressAnimated]; + }); + } + } + + if ([keyPath isEqualToString:NSStringFromSelector(@selector(countOfBytesReceived))]) { + if ([object countOfBytesExpectedToReceive] > 0) { + dispatch_async(dispatch_get_main_queue(), ^{ + [self setProgress:[object countOfBytesReceived] / ([object countOfBytesExpectedToReceive] * 1.0f) animated:self.af_downloadProgressAnimated]; + }); + } + } + + if ([keyPath isEqualToString:NSStringFromSelector(@selector(state))]) { + if ([(NSURLSessionTask *)object state] == NSURLSessionTaskStateCompleted) { + @try { + [object removeObserver:self forKeyPath:NSStringFromSelector(@selector(state))]; + + if (context == AFTaskCountOfBytesSentContext) { + [object removeObserver:self forKeyPath:NSStringFromSelector(@selector(countOfBytesSent))]; + } + + if (context == AFTaskCountOfBytesReceivedContext) { + [object removeObserver:self forKeyPath:NSStringFromSelector(@selector(countOfBytesReceived))]; + } + } + @catch (NSException * __unused exception) {} + } + } + } +#endif +} + +@end + +#endif diff --git a/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h b/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h new file mode 100644 index 0000000..18c12ea --- /dev/null +++ b/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h @@ -0,0 +1,64 @@ +// UIRefreshControl+AFNetworking.m +// +// Copyright (c) 2014 AFNetworking (http://afnetworking.com) +// +// 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. + +#import + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import + +@class AFURLConnectionOperation; + +/** + This category adds methods to the UIKit framework's `UIRefreshControl` class. The methods in this category provide support for automatically begining and ending refreshing depending on the loading state of a request operation or session task. + */ +@interface UIRefreshControl (AFNetworking) + +///----------------------------------- +/// @name Refreshing for Session Tasks +///----------------------------------- + +/** + Binds the refreshing state to the state of the specified task. + + @param task The task. If `nil`, automatic updating from any previously specified operation will be disabled. + */ +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +- (void)setRefreshingWithStateOfTask:(NSURLSessionTask *)task; +#endif + +///---------------------------------------- +/// @name Refreshing for Request Operations +///---------------------------------------- + +/** + Binds the refreshing state to the execution state of the specified operation. + + @param operation The operation. If `nil`, automatic updating from any previously specified operation will be disabled. + */ +- (void)setRefreshingWithStateOfOperation:(AFURLConnectionOperation *)operation; + +@end + +#endif diff --git a/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.m b/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.m new file mode 100644 index 0000000..e266451 --- /dev/null +++ b/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.m @@ -0,0 +1,93 @@ +// UIRefreshControl+AFNetworking.m +// +// Copyright (c) 2014 AFNetworking (http://afnetworking.com) +// +// 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. + +#import "UIRefreshControl+AFNetworking.h" + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import "AFHTTPRequestOperation.h" + +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +#import "AFURLSessionManager.h" +#endif + +@implementation UIRefreshControl (AFNetworking) + +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +- (void)setRefreshingWithStateOfTask:(NSURLSessionTask *)task { + NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; + + [notificationCenter removeObserver:self name:AFNetworkingTaskDidResumeNotification object:nil]; + [notificationCenter removeObserver:self name:AFNetworkingTaskDidSuspendNotification object:nil]; + [notificationCenter removeObserver:self name:AFNetworkingTaskDidCompleteNotification object:nil]; + + if (task) { + if (task.state == NSURLSessionTaskStateRunning) { + [self beginRefreshing]; + + [notificationCenter addObserver:self selector:@selector(af_beginRefreshing) name:AFNetworkingTaskDidResumeNotification object:task]; + [notificationCenter addObserver:self selector:@selector(af_endRefreshing) name:AFNetworkingTaskDidCompleteNotification object:task]; + [notificationCenter addObserver:self selector:@selector(af_endRefreshing) name:AFNetworkingTaskDidSuspendNotification object:task]; + } else { + [self endRefreshing]; + } + } +} +#endif + +- (void)setRefreshingWithStateOfOperation:(AFURLConnectionOperation *)operation { + NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; + + [notificationCenter removeObserver:self name:AFNetworkingOperationDidStartNotification object:nil]; + [notificationCenter removeObserver:self name:AFNetworkingOperationDidFinishNotification object:nil]; + + if (operation) { + if (![operation isFinished]) { + if ([operation isExecuting]) { + [self beginRefreshing]; + } else { + [self endRefreshing]; + } + + [notificationCenter addObserver:self selector:@selector(af_beginRefreshing) name:AFNetworkingOperationDidStartNotification object:operation]; + [notificationCenter addObserver:self selector:@selector(af_endRefreshing) name:AFNetworkingOperationDidFinishNotification object:operation]; + } + } +} + +#pragma mark - + +- (void)af_beginRefreshing { + dispatch_async(dispatch_get_main_queue(), ^{ + [self beginRefreshing]; + }); +} + +- (void)af_endRefreshing { + dispatch_async(dispatch_get_main_queue(), ^{ + [self endRefreshing]; + }); +} + +@end + +#endif diff --git a/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h b/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h new file mode 100644 index 0000000..159a51a --- /dev/null +++ b/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h @@ -0,0 +1,83 @@ +// UIWebView+AFNetworking.h +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import + +@class AFHTTPRequestSerializer, AFHTTPResponseSerializer; +@protocol AFURLRequestSerialization, AFURLResponseSerialization; + +/** + This category adds methods to the UIKit framework's `UIWebView` class. The methods in this category provide increased control over the request cycle, including progress monitoring and success / failure handling. + + @discussion When using these category methods, make sure to assign `delegate` for the web view, which implements `–webView:shouldStartLoadWithRequest:navigationType:` appropriately. This allows for tapped links to be loaded through AFNetworking, and can ensure that `canGoBack` & `canGoForward` update their values correctly. + */ +@interface UIWebView (AFNetworking) + +/** + The request serializer used to serialize requests made with the `-loadRequest:...` category methods. By default, this is an instance of `AFHTTPRequestSerializer`. + */ +@property (nonatomic, strong) AFHTTPRequestSerializer * requestSerializer; + +/** + The response serializer used to serialize responses made with the `-loadRequest:...` category methods. By default, this is an instance of `AFHTTPResponseSerializer`. + */ +@property (nonatomic, strong) AFHTTPResponseSerializer * responseSerializer; + +/** + Asynchronously loads the specified request. + + @param request A URL request identifying the location of the content to load. This must not be `nil`. + @param progress A block object to be called when an undetermined number of bytes have been downloaded from the server. This block has no return value and takes three arguments: the number of bytes read since the last time the download progress block was called, the total bytes read, and the total bytes expected to be read during the request, as initially determined by the expected content size of the `NSHTTPURLResponse` object. This block may be called multiple times, and will execute on the main thread. + @param success A block object to be executed when the request finishes loading successfully. This block returns the HTML string to be loaded by the web view, and takes two arguments: the response, and the response string. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a single argument: the error that occurred. + */ +- (void)loadRequest:(NSURLRequest *)request + progress:(void (^)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))progress + success:(NSString * (^)(NSHTTPURLResponse *response, NSString *HTML))success + failure:(void (^)(NSError *error))failure; + +/** + Asynchronously loads the data associated with a particular request with a specified MIME type and text encoding. + + @param request A URL request identifying the location of the content to load. This must not be `nil`. + @param MIMEType The MIME type of the content. Defaults to the content type of the response if not specified. + @param textEncodingName The IANA encoding name, as in `utf-8` or `utf-16`. Defaults to the response text encoding if not specified. + @param progress A block object to be called when an undetermined number of bytes have been downloaded from the server. This block has no return value and takes three arguments: the number of bytes read since the last time the download progress block was called, the total bytes read, and the total bytes expected to be read during the request, as initially determined by the expected content size of the `NSHTTPURLResponse` object. This block may be called multiple times, and will execute on the main thread. + @param success A block object to be executed when the request finishes loading successfully. This block returns the data to be loaded by the web view and takes two arguments: the response, and the downloaded data. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a single argument: the error that occurred. + */ +- (void)loadRequest:(NSURLRequest *)request + MIMEType:(NSString *)MIMEType + textEncodingName:(NSString *)textEncodingName + progress:(void (^)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))progress + success:(NSData * (^)(NSHTTPURLResponse *response, NSData *data))success + failure:(void (^)(NSError *error))failure; + +@end + +#endif diff --git a/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m b/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m new file mode 100644 index 0000000..4ff13e4 --- /dev/null +++ b/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m @@ -0,0 +1,151 @@ +// UIWebView+AFNetworking.m +// +// Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com) +// +// 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. + +#import "UIWebView+AFNetworking.h" + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import "AFHTTPRequestOperation.h" +#import "AFURLResponseSerialization.h" +#import "AFURLRequestSerialization.h" + +@interface UIWebView (_AFNetworking) +@property (readwrite, nonatomic, strong, setter = af_setHTTPRequestOperation:) AFHTTPRequestOperation *af_HTTPRequestOperation; +@end + +@implementation UIWebView (_AFNetworking) + +- (AFHTTPRequestOperation *)af_HTTPRequestOperation { + return (AFHTTPRequestOperation *)objc_getAssociatedObject(self, @selector(af_HTTPRequestOperation)); +} + +- (void)af_setHTTPRequestOperation:(AFHTTPRequestOperation *)operation { + objc_setAssociatedObject(self, @selector(af_HTTPRequestOperation), operation, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +@end + +#pragma mark - + +@implementation UIWebView (AFNetworking) + +- (AFHTTPRequestSerializer *)requestSerializer { + static AFHTTPRequestSerializer *_af_defaultRequestSerializer = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _af_defaultRequestSerializer = [AFHTTPRequestSerializer serializer]; + }); + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + return objc_getAssociatedObject(self, @selector(requestSerializer)) ?: _af_defaultRequestSerializer; +#pragma clang diagnostic pop +} + +- (void)setRequestSerializer:(AFHTTPRequestSerializer *)requestSerializer { + objc_setAssociatedObject(self, @selector(requestSerializer), requestSerializer, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +- (AFHTTPResponseSerializer *)responseSerializer { + static AFHTTPResponseSerializer *_af_defaultResponseSerializer = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _af_defaultResponseSerializer = [AFHTTPResponseSerializer serializer]; + }); + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + return objc_getAssociatedObject(self, @selector(responseSerializer)) ?: _af_defaultResponseSerializer; +#pragma clang diagnostic pop +} + +- (void)setResponseSerializer:(AFHTTPResponseSerializer *)responseSerializer { + objc_setAssociatedObject(self, @selector(responseSerializer), responseSerializer, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +#pragma mark - + +- (void)loadRequest:(NSURLRequest *)request + progress:(void (^)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))progress + success:(NSString * (^)(NSHTTPURLResponse *response, NSString *HTML))success + failure:(void (^)(NSError *error))failure +{ + [self loadRequest:request MIMEType:nil textEncodingName:nil progress:progress success:^NSData *(NSHTTPURLResponse *response, NSData *data) { + NSStringEncoding stringEncoding = NSUTF8StringEncoding; + if (response.textEncodingName) { + CFStringEncoding encoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)response.textEncodingName); + if (encoding != kCFStringEncodingInvalidId) { + stringEncoding = CFStringConvertEncodingToNSStringEncoding(encoding); + } + } + + NSString *string = [[NSString alloc] initWithData:data encoding:stringEncoding]; + if (success) { + string = success(response, string); + } + + return [string dataUsingEncoding:stringEncoding]; + } failure:failure]; +} + +- (void)loadRequest:(NSURLRequest *)request + MIMEType:(NSString *)MIMEType + textEncodingName:(NSString *)textEncodingName + progress:(void (^)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))progress + success:(NSData * (^)(NSHTTPURLResponse *response, NSData *data))success + failure:(void (^)(NSError *error))failure +{ + NSParameterAssert(request); + + if (self.af_HTTPRequestOperation) { + [self.af_HTTPRequestOperation cancel]; + } + + request = [self.requestSerializer requestBySerializingRequest:request withParameters:nil error:nil]; + + self.af_HTTPRequestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; + self.af_HTTPRequestOperation.responseSerializer = self.responseSerializer; + + __weak __typeof(self)weakSelf = self; + [self.af_HTTPRequestOperation setDownloadProgressBlock:progress]; + [self.af_HTTPRequestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id __unused responseObject) { + NSData *data = success ? success(operation.response, operation.responseData) : operation.responseData; + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + __strong __typeof(weakSelf) strongSelf = weakSelf; + [strongSelf loadData:data MIMEType:(MIMEType ?: [operation.response MIMEType]) textEncodingName:(textEncodingName ?: [operation.response textEncodingName]) baseURL:[operation.response URL]]; +#pragma clang diagnostic pop + } failure:^(AFHTTPRequestOperation * __unused operation, NSError *error) { + if (failure) { + failure(error); + } + }]; + + [self.af_HTTPRequestOperation start]; +} + +@end + +#endif diff --git a/Pods/Headers/Build/AFNetworking/AFHTTPRequestOperation.h b/Pods/Headers/Build/AFNetworking/AFHTTPRequestOperation.h new file mode 120000 index 0000000..ac762c8 --- /dev/null +++ b/Pods/Headers/Build/AFNetworking/AFHTTPRequestOperation.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFHTTPRequestOperation.h \ No newline at end of file diff --git a/Pods/Headers/Build/AFNetworking/AFHTTPRequestOperationManager.h b/Pods/Headers/Build/AFNetworking/AFHTTPRequestOperationManager.h new file mode 120000 index 0000000..9dcc623 --- /dev/null +++ b/Pods/Headers/Build/AFNetworking/AFHTTPRequestOperationManager.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFHTTPRequestOperationManager.h \ No newline at end of file diff --git a/Pods/Headers/Build/AFNetworking/AFHTTPSessionManager.h b/Pods/Headers/Build/AFNetworking/AFHTTPSessionManager.h new file mode 120000 index 0000000..56feb9f --- /dev/null +++ b/Pods/Headers/Build/AFNetworking/AFHTTPSessionManager.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFHTTPSessionManager.h \ No newline at end of file diff --git a/Pods/Headers/Build/AFNetworking/AFNetworkActivityIndicatorManager.h b/Pods/Headers/Build/AFNetworking/AFNetworkActivityIndicatorManager.h new file mode 120000 index 0000000..67519d9 --- /dev/null +++ b/Pods/Headers/Build/AFNetworking/AFNetworkActivityIndicatorManager.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h \ No newline at end of file diff --git a/Pods/Headers/Build/AFNetworking/AFNetworkReachabilityManager.h b/Pods/Headers/Build/AFNetworking/AFNetworkReachabilityManager.h new file mode 120000 index 0000000..68fc774 --- /dev/null +++ b/Pods/Headers/Build/AFNetworking/AFNetworkReachabilityManager.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFNetworkReachabilityManager.h \ No newline at end of file diff --git a/Pods/Headers/Build/AFNetworking/AFNetworking.h b/Pods/Headers/Build/AFNetworking/AFNetworking.h new file mode 120000 index 0000000..a5a38da --- /dev/null +++ b/Pods/Headers/Build/AFNetworking/AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Build/AFNetworking/AFSecurityPolicy.h b/Pods/Headers/Build/AFNetworking/AFSecurityPolicy.h new file mode 120000 index 0000000..fd1322d --- /dev/null +++ b/Pods/Headers/Build/AFNetworking/AFSecurityPolicy.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFSecurityPolicy.h \ No newline at end of file diff --git a/Pods/Headers/Build/AFNetworking/AFURLConnectionOperation.h b/Pods/Headers/Build/AFNetworking/AFURLConnectionOperation.h new file mode 120000 index 0000000..d9b35fb --- /dev/null +++ b/Pods/Headers/Build/AFNetworking/AFURLConnectionOperation.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFURLConnectionOperation.h \ No newline at end of file diff --git a/Pods/Headers/Build/AFNetworking/AFURLRequestSerialization.h b/Pods/Headers/Build/AFNetworking/AFURLRequestSerialization.h new file mode 120000 index 0000000..ca8209b --- /dev/null +++ b/Pods/Headers/Build/AFNetworking/AFURLRequestSerialization.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFURLRequestSerialization.h \ No newline at end of file diff --git a/Pods/Headers/Build/AFNetworking/AFURLResponseSerialization.h b/Pods/Headers/Build/AFNetworking/AFURLResponseSerialization.h new file mode 120000 index 0000000..e36a765 --- /dev/null +++ b/Pods/Headers/Build/AFNetworking/AFURLResponseSerialization.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFURLResponseSerialization.h \ No newline at end of file diff --git a/Pods/Headers/Build/AFNetworking/AFURLSessionManager.h b/Pods/Headers/Build/AFNetworking/AFURLSessionManager.h new file mode 120000 index 0000000..835101d --- /dev/null +++ b/Pods/Headers/Build/AFNetworking/AFURLSessionManager.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFURLSessionManager.h \ No newline at end of file diff --git a/Pods/Headers/Build/AFNetworking/UIActivityIndicatorView+AFNetworking.h b/Pods/Headers/Build/AFNetworking/UIActivityIndicatorView+AFNetworking.h new file mode 120000 index 0000000..c534ebf --- /dev/null +++ b/Pods/Headers/Build/AFNetworking/UIActivityIndicatorView+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Build/AFNetworking/UIAlertView+AFNetworking.h b/Pods/Headers/Build/AFNetworking/UIAlertView+AFNetworking.h new file mode 120000 index 0000000..f992813 --- /dev/null +++ b/Pods/Headers/Build/AFNetworking/UIAlertView+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Build/AFNetworking/UIButton+AFNetworking.h b/Pods/Headers/Build/AFNetworking/UIButton+AFNetworking.h new file mode 120000 index 0000000..8f2e221 --- /dev/null +++ b/Pods/Headers/Build/AFNetworking/UIButton+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Build/AFNetworking/UIImageView+AFNetworking.h b/Pods/Headers/Build/AFNetworking/UIImageView+AFNetworking.h new file mode 120000 index 0000000..a95d673 --- /dev/null +++ b/Pods/Headers/Build/AFNetworking/UIImageView+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Build/AFNetworking/UIKit+AFNetworking.h b/Pods/Headers/Build/AFNetworking/UIKit+AFNetworking.h new file mode 120000 index 0000000..95017cc --- /dev/null +++ b/Pods/Headers/Build/AFNetworking/UIKit+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Build/AFNetworking/UIProgressView+AFNetworking.h b/Pods/Headers/Build/AFNetworking/UIProgressView+AFNetworking.h new file mode 120000 index 0000000..730b167 --- /dev/null +++ b/Pods/Headers/Build/AFNetworking/UIProgressView+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Build/AFNetworking/UIRefreshControl+AFNetworking.h b/Pods/Headers/Build/AFNetworking/UIRefreshControl+AFNetworking.h new file mode 120000 index 0000000..8efd826 --- /dev/null +++ b/Pods/Headers/Build/AFNetworking/UIRefreshControl+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Build/AFNetworking/UIWebView+AFNetworking.h b/Pods/Headers/Build/AFNetworking/UIWebView+AFNetworking.h new file mode 120000 index 0000000..c8df6ef --- /dev/null +++ b/Pods/Headers/Build/AFNetworking/UIWebView+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperation.h b/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperation.h new file mode 120000 index 0000000..ac762c8 --- /dev/null +++ b/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperation.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFHTTPRequestOperation.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperationManager.h b/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperationManager.h new file mode 120000 index 0000000..9dcc623 --- /dev/null +++ b/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperationManager.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFHTTPRequestOperationManager.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/AFHTTPSessionManager.h b/Pods/Headers/Public/AFNetworking/AFHTTPSessionManager.h new file mode 120000 index 0000000..56feb9f --- /dev/null +++ b/Pods/Headers/Public/AFNetworking/AFHTTPSessionManager.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFHTTPSessionManager.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h b/Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h new file mode 120000 index 0000000..67519d9 --- /dev/null +++ b/Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/AFNetworkReachabilityManager.h b/Pods/Headers/Public/AFNetworking/AFNetworkReachabilityManager.h new file mode 120000 index 0000000..68fc774 --- /dev/null +++ b/Pods/Headers/Public/AFNetworking/AFNetworkReachabilityManager.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFNetworkReachabilityManager.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/AFNetworking.h b/Pods/Headers/Public/AFNetworking/AFNetworking.h new file mode 120000 index 0000000..a5a38da --- /dev/null +++ b/Pods/Headers/Public/AFNetworking/AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/AFSecurityPolicy.h b/Pods/Headers/Public/AFNetworking/AFSecurityPolicy.h new file mode 120000 index 0000000..fd1322d --- /dev/null +++ b/Pods/Headers/Public/AFNetworking/AFSecurityPolicy.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFSecurityPolicy.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/AFURLConnectionOperation.h b/Pods/Headers/Public/AFNetworking/AFURLConnectionOperation.h new file mode 120000 index 0000000..d9b35fb --- /dev/null +++ b/Pods/Headers/Public/AFNetworking/AFURLConnectionOperation.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFURLConnectionOperation.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/AFURLRequestSerialization.h b/Pods/Headers/Public/AFNetworking/AFURLRequestSerialization.h new file mode 120000 index 0000000..ca8209b --- /dev/null +++ b/Pods/Headers/Public/AFNetworking/AFURLRequestSerialization.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFURLRequestSerialization.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/AFURLResponseSerialization.h b/Pods/Headers/Public/AFNetworking/AFURLResponseSerialization.h new file mode 120000 index 0000000..e36a765 --- /dev/null +++ b/Pods/Headers/Public/AFNetworking/AFURLResponseSerialization.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFURLResponseSerialization.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/AFURLSessionManager.h b/Pods/Headers/Public/AFNetworking/AFURLSessionManager.h new file mode 120000 index 0000000..835101d --- /dev/null +++ b/Pods/Headers/Public/AFNetworking/AFURLSessionManager.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFURLSessionManager.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/UIActivityIndicatorView+AFNetworking.h b/Pods/Headers/Public/AFNetworking/UIActivityIndicatorView+AFNetworking.h new file mode 120000 index 0000000..c534ebf --- /dev/null +++ b/Pods/Headers/Public/AFNetworking/UIActivityIndicatorView+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/UIAlertView+AFNetworking.h b/Pods/Headers/Public/AFNetworking/UIAlertView+AFNetworking.h new file mode 120000 index 0000000..f992813 --- /dev/null +++ b/Pods/Headers/Public/AFNetworking/UIAlertView+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/UIButton+AFNetworking.h b/Pods/Headers/Public/AFNetworking/UIButton+AFNetworking.h new file mode 120000 index 0000000..8f2e221 --- /dev/null +++ b/Pods/Headers/Public/AFNetworking/UIButton+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h b/Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h new file mode 120000 index 0000000..a95d673 --- /dev/null +++ b/Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/UIKit+AFNetworking.h b/Pods/Headers/Public/AFNetworking/UIKit+AFNetworking.h new file mode 120000 index 0000000..95017cc --- /dev/null +++ b/Pods/Headers/Public/AFNetworking/UIKit+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/UIProgressView+AFNetworking.h b/Pods/Headers/Public/AFNetworking/UIProgressView+AFNetworking.h new file mode 120000 index 0000000..730b167 --- /dev/null +++ b/Pods/Headers/Public/AFNetworking/UIProgressView+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/UIRefreshControl+AFNetworking.h b/Pods/Headers/Public/AFNetworking/UIRefreshControl+AFNetworking.h new file mode 120000 index 0000000..8efd826 --- /dev/null +++ b/Pods/Headers/Public/AFNetworking/UIRefreshControl+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h \ No newline at end of file diff --git a/Pods/Headers/Public/AFNetworking/UIWebView+AFNetworking.h b/Pods/Headers/Public/AFNetworking/UIWebView+AFNetworking.h new file mode 120000 index 0000000..c8df6ef --- /dev/null +++ b/Pods/Headers/Public/AFNetworking/UIWebView+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h \ No newline at end of file diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock new file mode 100644 index 0000000..749bec9 --- /dev/null +++ b/Pods/Manifest.lock @@ -0,0 +1,30 @@ +PODS: + - AFNetworking (2.5.1): + - AFNetworking/NSURLConnection (= 2.5.1) + - AFNetworking/NSURLSession (= 2.5.1) + - AFNetworking/Reachability (= 2.5.1) + - AFNetworking/Security (= 2.5.1) + - AFNetworking/Serialization (= 2.5.1) + - AFNetworking/UIKit (= 2.5.1) + - AFNetworking/NSURLConnection (2.5.1): + - AFNetworking/Reachability + - AFNetworking/Security + - AFNetworking/Serialization + - AFNetworking/NSURLSession (2.5.1): + - AFNetworking/Reachability + - AFNetworking/Security + - AFNetworking/Serialization + - AFNetworking/Reachability (2.5.1) + - AFNetworking/Security (2.5.1) + - AFNetworking/Serialization (2.5.1) + - AFNetworking/UIKit (2.5.1): + - AFNetworking/NSURLConnection + - AFNetworking/NSURLSession + +DEPENDENCIES: + - AFNetworking + +SPEC CHECKSUMS: + AFNetworking: 8bee59492a6ff15d69130efa4d0dc67e0094a52a + +COCOAPODS: 0.35.0 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj new file mode 100644 index 0000000..cf9ba22 --- /dev/null +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -0,0 +1,1950 @@ + + + + + archiveVersion + 1 + classes + + objectVersion + 46 + objects + + 0025295F726C4BBE983AE100 + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + MobileCoreServices.framework + path + Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/MobileCoreServices.framework + sourceTree + DEVELOPER_DIR + + 01249FBB2847E39837979FDE + + fileRef + D49C3296EF7A938597D510A9 + isa + PBXBuildFile + + 012662258BBC10805CDBB23F + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + UIRefreshControl+AFNetworking.m + path + UIKit+AFNetworking/UIRefreshControl+AFNetworking.m + sourceTree + <group> + + 04B68D18C87880357BC50B35 + + fileRef + 8A46E911C84A5E2E04731B6C + isa + PBXBuildFile + + 0524B8CA3E614C29A0BC3973 + + baseConfigurationReference + E05AF70DEB2ED86C8E447CAA + buildSettings + + ALWAYS_SEARCH_USER_PATHS + NO + COPY_PHASE_STRIP + NO + DSTROOT + /tmp/xcodeproj.dst + GCC_DYNAMIC_NO_PIC + NO + GCC_OPTIMIZATION_LEVEL + 0 + GCC_PRECOMPILE_PREFIX_HEADER + YES + GCC_PREPROCESSOR_DEFINITIONS + + DEBUG=1 + $(inherited) + + GCC_SYMBOLS_PRIVATE_EXTERN + NO + INSTALL_PATH + $(BUILT_PRODUCTS_DIR) + IPHONEOS_DEPLOYMENT_TARGET + 8.1 + OTHER_LDFLAGS + + OTHER_LIBTOOLFLAGS + + PRODUCT_NAME + $(TARGET_NAME) + PUBLIC_HEADERS_FOLDER_PATH + $(TARGET_NAME) + SDKROOT + iphoneos + SKIP_INSTALL + YES + + isa + XCBuildConfiguration + name + Debug + + 06922F80187A272A078872AB + + fileRef + 8919212774C218D33CFFB05A + isa + PBXBuildFile + + 0A065E0D49241F04C668ECF3 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + Pods-AFNetworking.xcconfig + sourceTree + <group> + + 0ADDA528943F431DEC924AD9 + + children + + 0A065E0D49241F04C668ECF3 + 4B4A578240CC8301547BC998 + E2D146607ABCAC7BA9A89481 + CBA4989267A1093A6F6B4C0B + + isa + PBXGroup + name + Support Files + path + ../Target Support Files/Pods-AFNetworking + sourceTree + <group> + + 0C10ADB023BA9909F06B8370 + + buildConfigurations + + 0524B8CA3E614C29A0BC3973 + BB519FAE2D381BA89BFE8598 + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 0DE8F58C111DC18CB7FCCE5D + + children + + 49F0652A4FEC09B957776292 + BB1FED4D92F04C6E36C5D42E + A5B18F87780B4194DE95302B + A23886D638B6252E04423F49 + D7A41BF0E78822DEBCD40F1D + E05AF70DEB2ED86C8E447CAA + B87029EE3E01C2B79187D807 + + isa + PBXGroup + name + Pods + path + Target Support Files/Pods + sourceTree + <group> + + 119AC78984A91F33FDBEE238 + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + CoreGraphics.framework + path + Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/CoreGraphics.framework + sourceTree + DEVELOPER_DIR + + 12841FDCF8780360DEAE3995 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + AFURLResponseSerialization.h + path + AFNetworking/AFURLResponseSerialization.h + sourceTree + <group> + + 139BD69C56B49CFFACE1099C + + children + + 0DE8F58C111DC18CB7FCCE5D + + isa + PBXGroup + name + Targets Support Files + sourceTree + <group> + + 1F9599622F4DD64FB523510E + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UIAlertView+AFNetworking.h + path + UIKit+AFNetworking/UIAlertView+AFNetworking.h + sourceTree + <group> + + 1FA3294FA6CA131F9521B1C6 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + AFURLConnectionOperation.h + path + AFNetworking/AFURLConnectionOperation.h + sourceTree + <group> + + 1FA55458A36D08BFFF68BC60 + + attributes + + LastUpgradeCheck + 0510 + + buildConfigurationList + 220334A35084745FF8CD8361 + compatibilityVersion + Xcode 3.2 + developmentRegion + English + hasScannedForEncodings + 0 + isa + PBXProject + knownRegions + + en + + mainGroup + 8FFFD248B56B5991A150E13F + productRefGroup + 601AC2EBC2669D941FB63DFD + projectDirPath + + projectReferences + + projectRoot + + targets + + 63C8DEBBE1DE72C60B100B50 + E4E3EB3017CF3E8DB3F7A5ED + + + 1FE955067F153ABCE0537455 + + fileRef + 4FDAF5041F04E7272B91B65B + isa + PBXBuildFile + + 210F778D41711DFFBA1804D3 + + fileRef + F3A292F6DC1EBBD383166AE6 + isa + PBXBuildFile + + 220334A35084745FF8CD8361 + + buildConfigurations + + F0B3CE4631B9CEEB12784C6D + 65606CDDE0A5E51C1AE57FA2 + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 23E7ADDF5CD816A3FFB4BD80 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + UIActivityIndicatorView+AFNetworking.m + path + UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m + sourceTree + <group> + + 2FA52A022D415365D5144169 + + fileRef + 6D049EF10997F89E4688E4FA + isa + PBXBuildFile + + 3363FC568A8E0736B187EEAA + + children + + C05A679C270542CA8F05CB0F + 6E9AF6D3756CEF27B2492630 + A23569F74ED6D97F627746C5 + 60B6736631E7246CC6625FA4 + 823441A2D9B592CF41E3589F + 4C1A53B1B10876D13638E6D7 + 0ADDA528943F431DEC924AD9 + CC9641DCB5E3A4B0DCBC1F80 + + isa + PBXGroup + name + AFNetworking + path + AFNetworking + sourceTree + <group> + + 3864D65381399E23E009A7A6 + + fileRef + 82917782BC3241AFE1154CC8 + isa + PBXBuildFile + + 39FCC3971981DB9AFC9AED6A + + buildActionMask + 2147483647 + files + + B8944A56570F3C5420280737 + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 40331B170E84CE4B56339ECB + + fileRef + D25FDC3CEEFACC3DA917AAC7 + isa + PBXBuildFile + + 42927C7B8DF685A946A4D24B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + AFHTTPSessionManager.m + path + AFNetworking/AFHTTPSessionManager.m + sourceTree + <group> + + 44024AD051124EE0D5305899 + + fileRef + 9750AD96E1E5C72897853170 + isa + PBXBuildFile + + 445DCE4B4267203EB182A3DB + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + AFURLSessionManager.m + path + AFNetworking/AFURLSessionManager.m + sourceTree + <group> + + 4640906F18370395F5E27D6D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UIButton+AFNetworking.h + path + UIKit+AFNetworking/UIButton+AFNetworking.h + sourceTree + <group> + + 4754CF1C2EA53F717D193EB6 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + AFNetworkReachabilityManager.h + path + AFNetworking/AFNetworkReachabilityManager.h + sourceTree + <group> + + 49D543BBAA55BAD595EAAE59 + + fileRef + 012662258BBC10805CDBB23F + isa + PBXBuildFile + + 49F0652A4FEC09B957776292 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text + path + Pods-acknowledgements.markdown + sourceTree + <group> + + 4A63CA3EBB85B1992561238E + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + UIButton+AFNetworking.m + path + UIKit+AFNetworking/UIButton+AFNetworking.m + sourceTree + <group> + + 4B4A578240CC8301547BC998 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + Pods-AFNetworking-Private.xcconfig + sourceTree + <group> + + 4C1A53B1B10876D13638E6D7 + + children + + 6D049EF10997F89E4688E4FA + 8919212774C218D33CFFB05A + 12841FDCF8780360DEAE3995 + D25FDC3CEEFACC3DA917AAC7 + + isa + PBXGroup + name + Serialization + sourceTree + <group> + + 4C8223BEF4A75C08395C8940 + + fileRef + B8D17A9796D2EA7E12CECB98 + isa + PBXBuildFile + + 4CC3AF0164B6AA8DB749B5D8 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UIRefreshControl+AFNetworking.h + path + UIKit+AFNetworking/UIRefreshControl+AFNetworking.h + sourceTree + <group> + + 4FDAF5041F04E7272B91B65B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + AFNetworkReachabilityManager.m + path + AFNetworking/AFNetworkReachabilityManager.m + sourceTree + <group> + + 52E0DAF1ACFCD1C8715A810D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + AFHTTPRequestOperation.h + path + AFNetworking/AFHTTPRequestOperation.h + sourceTree + <group> + + 54DE4B3A009BC331AB659B53 + + fileRef + E2D146607ABCAC7BA9A89481 + isa + PBXBuildFile + + 573B608509D0A81FF075C44B + + children + + 3363FC568A8E0736B187EEAA + + isa + PBXGroup + name + Pods + sourceTree + <group> + + 5D9B3BE624D306786862673D + + fileRef + 42927C7B8DF685A946A4D24B + isa + PBXBuildFile + + 601AC2EBC2669D941FB63DFD + + children + + B7683369EFB6FB5DB323ECDC + 7A097B6C707E3CAF5ACDA89C + + isa + PBXGroup + name + Products + sourceTree + <group> + + 60B6736631E7246CC6625FA4 + + children + + 4754CF1C2EA53F717D193EB6 + 4FDAF5041F04E7272B91B65B + + isa + PBXGroup + name + Reachability + sourceTree + <group> + + 63C8DEBBE1DE72C60B100B50 + + buildConfigurationList + 0C10ADB023BA9909F06B8370 + buildPhases + + 64E418616BA03BC8BC2B8282 + 39FCC3971981DB9AFC9AED6A + + buildRules + + dependencies + + 933EA915A37F2CD160D0E736 + + isa + PBXNativeTarget + name + Pods + productName + Pods + productReference + B7683369EFB6FB5DB323ECDC + productType + com.apple.product-type.library.static + + 64C587432B0ED2361D26F837 + + fileRef + C05A679C270542CA8F05CB0F + isa + PBXBuildFile + + 64E418616BA03BC8BC2B8282 + + buildActionMask + 2147483647 + files + + 99296B6330A87C70000466E8 + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 65606CDDE0A5E51C1AE57FA2 + + buildSettings + + ALWAYS_SEARCH_USER_PATHS + NO + CLANG_CXX_LANGUAGE_STANDARD + gnu++0x + CLANG_CXX_LIBRARY + libc++ + CLANG_ENABLE_MODULES + YES + CLANG_ENABLE_OBJC_ARC + YES + CLANG_WARN_BOOL_CONVERSION + YES + CLANG_WARN_CONSTANT_CONVERSION + YES + CLANG_WARN_DIRECT_OBJC_ISA_USAGE + YES + CLANG_WARN_EMPTY_BODY + YES + CLANG_WARN_ENUM_CONVERSION + YES + CLANG_WARN_INT_CONVERSION + YES + CLANG_WARN_OBJC_ROOT_CLASS + YES + COPY_PHASE_STRIP + NO + ENABLE_NS_ASSERTIONS + NO + GCC_C_LANGUAGE_STANDARD + gnu99 + GCC_PREPROCESSOR_DEFINITIONS + + RELEASE=1 + + GCC_WARN_64_TO_32_BIT_CONVERSION + YES + GCC_WARN_ABOUT_RETURN_TYPE + YES + GCC_WARN_UNDECLARED_SELECTOR + YES + GCC_WARN_UNINITIALIZED_AUTOS + YES + GCC_WARN_UNUSED_FUNCTION + YES + GCC_WARN_UNUSED_VARIABLE + YES + IPHONEOS_DEPLOYMENT_TARGET + 8.1 + STRIP_INSTALLED_PRODUCT + NO + VALIDATE_PRODUCT + YES + + isa + XCBuildConfiguration + name + Release + + 6632B64308DA0702D055B757 + + fileRef + 1F9599622F4DD64FB523510E + isa + PBXBuildFile + + 699EB8566C067009F8FEB2C3 + + fileRef + 12841FDCF8780360DEAE3995 + isa + PBXBuildFile + + 69AF9F349BE28B45CA2FA2B8 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + AFNetworkActivityIndicatorManager.m + path + UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m + sourceTree + <group> + + 6C275089CABF07538E6960E4 + + children + + 119AC78984A91F33FDBEE238 + F1678AFC7532C7BF805696BB + 0025295F726C4BBE983AE100 + D27A898CA1E9A5196954B609 + 9894E8A946E9DAFFFAACE3BB + + isa + PBXGroup + name + iOS + sourceTree + <group> + + 6C832D4D66531222A4FB8998 + + fileRef + F1678AFC7532C7BF805696BB + isa + PBXBuildFile + + 6D049EF10997F89E4688E4FA + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + AFURLRequestSerialization.h + path + AFNetworking/AFURLRequestSerialization.h + sourceTree + <group> + + 6E55492E8D6A38C2A578FE74 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + UIAlertView+AFNetworking.m + path + UIKit+AFNetworking/UIAlertView+AFNetworking.m + sourceTree + <group> + + 6E9AF6D3756CEF27B2492630 + + children + + 52E0DAF1ACFCD1C8715A810D + B8D17A9796D2EA7E12CECB98 + 82917782BC3241AFE1154CC8 + 9750AD96E1E5C72897853170 + 1FA3294FA6CA131F9521B1C6 + F4EBBE9FD6FEB255E436EAA9 + + isa + PBXGroup + name + NSURLConnection + sourceTree + <group> + + 6EC52275E39F064420B39A4B + + fileRef + B58F84AE06786A9DFD5ED900 + isa + PBXBuildFile + + 70D8233053EDB5F09B47EC28 + + fileRef + 6E55492E8D6A38C2A578FE74 + isa + PBXBuildFile + + 76207FB009EEE23937E52A51 + + fileRef + B7435B7E738211ADE7CDE84B + isa + PBXBuildFile + + 77BE4AEF926C8A5EC9A169FD + + baseConfigurationReference + 4B4A578240CC8301547BC998 + buildSettings + + ALWAYS_SEARCH_USER_PATHS + NO + COPY_PHASE_STRIP + NO + DSTROOT + /tmp/xcodeproj.dst + GCC_DYNAMIC_NO_PIC + NO + GCC_OPTIMIZATION_LEVEL + 0 + GCC_PRECOMPILE_PREFIX_HEADER + YES + GCC_PREFIX_HEADER + Target Support Files/Pods-AFNetworking/Pods-AFNetworking-prefix.pch + GCC_PREPROCESSOR_DEFINITIONS + + DEBUG=1 + $(inherited) + + GCC_SYMBOLS_PRIVATE_EXTERN + NO + INSTALL_PATH + $(BUILT_PRODUCTS_DIR) + IPHONEOS_DEPLOYMENT_TARGET + 8.1 + OTHER_LDFLAGS + + OTHER_LIBTOOLFLAGS + + PRODUCT_NAME + $(TARGET_NAME) + PUBLIC_HEADERS_FOLDER_PATH + $(TARGET_NAME) + SDKROOT + iphoneos + SKIP_INSTALL + YES + + isa + XCBuildConfiguration + name + Debug + + 781DF0F92B07357D43385F19 + + fileRef + 4CC3AF0164B6AA8DB749B5D8 + isa + PBXBuildFile + + 7A097B6C707E3CAF5ACDA89C + + explicitFileType + archive.ar + includeInIndex + 0 + isa + PBXFileReference + path + libPods-AFNetworking.a + sourceTree + BUILT_PRODUCTS_DIR + + 7AFBECADE388B477BA482766 + + fileRef + 9330548DD52CAF5EC44770F3 + isa + PBXBuildFile + + 7F3A9A2CAAD04386CDF744F4 + + fileRef + F09C2AA1401DE1145092C3F9 + isa + PBXBuildFile + + 822C8C02AFEABD978DC7F12D + + fileRef + 445DCE4B4267203EB182A3DB + isa + PBXBuildFile + + 823441A2D9B592CF41E3589F + + children + + C2E19234C28A4928BD673376 + 8A46E911C84A5E2E04731B6C + + isa + PBXGroup + name + Security + sourceTree + <group> + + 82917782BC3241AFE1154CC8 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + AFHTTPRequestOperationManager.h + path + AFNetworking/AFHTTPRequestOperationManager.h + sourceTree + <group> + + 8919212774C218D33CFFB05A + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + AFURLRequestSerialization.m + path + AFNetworking/AFURLRequestSerialization.m + sourceTree + <group> + + 8935FEDA5271C7D3F9A953C8 + + buildActionMask + 2147483647 + files + + A0464A386D18B6217FF53A7D + 3864D65381399E23E009A7A6 + 76207FB009EEE23937E52A51 + F40A1A16E0267CC07692E47D + D540D67DC5155A994AFB172D + 64C587432B0ED2361D26F837 + D8CFB620E1C0A5A5D4E0B89E + AD93F0E7E20F44292971D00D + 2FA52A022D415365D5144169 + 699EB8566C067009F8FEB2C3 + D843C980ACA3462B77FFA85A + 7F3A9A2CAAD04386CDF744F4 + 6632B64308DA0702D055B757 + B3F81EAF1C59AFDFAF12713F + 99BDB74F00E575E4912B370A + 01249FBB2847E39837979FDE + 6EC52275E39F064420B39A4B + 781DF0F92B07357D43385F19 + 210F778D41711DFFBA1804D3 + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 89DF8D8CFB90DAFEEE8722A5 + + children + + 6C275089CABF07538E6960E4 + + isa + PBXGroup + name + Frameworks + sourceTree + <group> + + 8A2145553A285C1AEF11A9A1 + + fileRef + 23E7ADDF5CD816A3FFB4BD80 + isa + PBXBuildFile + + 8A46E911C84A5E2E04731B6C + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + AFSecurityPolicy.m + path + AFNetworking/AFSecurityPolicy.m + sourceTree + <group> + + 8FFFD248B56B5991A150E13F + + children + + E8ED13EF51E5297F03393A0D + 89DF8D8CFB90DAFEEE8722A5 + 573B608509D0A81FF075C44B + 601AC2EBC2669D941FB63DFD + 139BD69C56B49CFFACE1099C + + isa + PBXGroup + sourceTree + <group> + + 92B496A87DAF013F5DB13992 + + fileRef + DAE0A5FBBE70BA645C71BE8C + isa + PBXBuildFile + + 9330548DD52CAF5EC44770F3 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + UIWebView+AFNetworking.m + path + UIKit+AFNetworking/UIWebView+AFNetworking.m + sourceTree + <group> + + 933EA915A37F2CD160D0E736 + + isa + PBXTargetDependency + name + Pods-AFNetworking + target + E4E3EB3017CF3E8DB3F7A5ED + targetProxy + C99CD13C993A500F3414EE22 + + 9750AD96E1E5C72897853170 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + AFHTTPRequestOperationManager.m + path + AFNetworking/AFHTTPRequestOperationManager.m + sourceTree + <group> + + 97E89AA54DFBB3706E4B981A + + baseConfigurationReference + 4B4A578240CC8301547BC998 + buildSettings + + ALWAYS_SEARCH_USER_PATHS + NO + COPY_PHASE_STRIP + YES + DSTROOT + /tmp/xcodeproj.dst + GCC_PRECOMPILE_PREFIX_HEADER + YES + GCC_PREFIX_HEADER + Target Support Files/Pods-AFNetworking/Pods-AFNetworking-prefix.pch + INSTALL_PATH + $(BUILT_PRODUCTS_DIR) + IPHONEOS_DEPLOYMENT_TARGET + 8.1 + OTHER_CFLAGS + + -DNS_BLOCK_ASSERTIONS=1 + $(inherited) + + OTHER_CPLUSPLUSFLAGS + + -DNS_BLOCK_ASSERTIONS=1 + $(inherited) + + OTHER_LDFLAGS + + OTHER_LIBTOOLFLAGS + + PRODUCT_NAME + $(TARGET_NAME) + PUBLIC_HEADERS_FOLDER_PATH + $(TARGET_NAME) + SDKROOT + iphoneos + SKIP_INSTALL + YES + VALIDATE_PRODUCT + YES + + isa + XCBuildConfiguration + name + Release + + 9894E8A946E9DAFFFAACE3BB + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + SystemConfiguration.framework + path + Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/SystemConfiguration.framework + sourceTree + DEVELOPER_DIR + + 99296B6330A87C70000466E8 + + fileRef + A5B18F87780B4194DE95302B + isa + PBXBuildFile + + 99BDB74F00E575E4912B370A + + fileRef + B1CDA6C61B46A23CDD51727F + isa + PBXBuildFile + + A0464A386D18B6217FF53A7D + + fileRef + 52E0DAF1ACFCD1C8715A810D + isa + PBXBuildFile + + A23569F74ED6D97F627746C5 + + children + + B7435B7E738211ADE7CDE84B + 42927C7B8DF685A946A4D24B + E65577A19E258E8588E98DF0 + 445DCE4B4267203EB182A3DB + + isa + PBXGroup + name + NSURLSession + sourceTree + <group> + + A23886D638B6252E04423F49 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + Pods-environment.h + sourceTree + <group> + + A2DD0E9D9D342EDF77EAE020 + + fileRef + A628FC4809F695F2C52725E0 + isa + PBXBuildFile + + A5B18F87780B4194DE95302B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + Pods-dummy.m + sourceTree + <group> + + A628FC4809F695F2C52725E0 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + UIProgressView+AFNetworking.m + path + UIKit+AFNetworking/UIProgressView+AFNetworking.m + sourceTree + <group> + + AD93F0E7E20F44292971D00D + + fileRef + 1FA3294FA6CA131F9521B1C6 + isa + PBXBuildFile + + AE415AFE25FA2872A46A3929 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + AFNetworkActivityIndicatorManager.h + path + UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h + sourceTree + <group> + + B0A032362AC1DFF158E118D4 + + buildActionMask + 2147483647 + files + + 4C8223BEF4A75C08395C8940 + 44024AD051124EE0D5305899 + 5D9B3BE624D306786862673D + FFF79409139C95A2258B1B3D + 1FE955067F153ABCE0537455 + 04B68D18C87880357BC50B35 + B390F84A6FB0CCBF803666CA + 06922F80187A272A078872AB + 40331B170E84CE4B56339ECB + 822C8C02AFEABD978DC7F12D + 54DE4B3A009BC331AB659B53 + 8A2145553A285C1AEF11A9A1 + 70D8233053EDB5F09B47EC28 + C6B3D163A5C877540DA587FB + 92B496A87DAF013F5DB13992 + A2DD0E9D9D342EDF77EAE020 + 49D543BBAA55BAD595EAAE59 + 7AFBECADE388B477BA482766 + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + B1CDA6C61B46A23CDD51727F + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UIImageView+AFNetworking.h + path + UIKit+AFNetworking/UIImageView+AFNetworking.h + sourceTree + <group> + + B390F84A6FB0CCBF803666CA + + fileRef + F4EBBE9FD6FEB255E436EAA9 + isa + PBXBuildFile + + B3F81EAF1C59AFDFAF12713F + + fileRef + 4640906F18370395F5E27D6D + isa + PBXBuildFile + + B58F84AE06786A9DFD5ED900 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UIProgressView+AFNetworking.h + path + UIKit+AFNetworking/UIProgressView+AFNetworking.h + sourceTree + <group> + + B7435B7E738211ADE7CDE84B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + AFHTTPSessionManager.h + path + AFNetworking/AFHTTPSessionManager.h + sourceTree + <group> + + B7683369EFB6FB5DB323ECDC + + explicitFileType + archive.ar + includeInIndex + 0 + isa + PBXFileReference + path + libPods.a + sourceTree + BUILT_PRODUCTS_DIR + + B87029EE3E01C2B79187D807 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + Pods.release.xcconfig + sourceTree + <group> + + B8944A56570F3C5420280737 + + fileRef + F1678AFC7532C7BF805696BB + isa + PBXBuildFile + + B8D17A9796D2EA7E12CECB98 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + AFHTTPRequestOperation.m + path + AFNetworking/AFHTTPRequestOperation.m + sourceTree + <group> + + BB1FED4D92F04C6E36C5D42E + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Pods-acknowledgements.plist + sourceTree + <group> + + BB519FAE2D381BA89BFE8598 + + baseConfigurationReference + B87029EE3E01C2B79187D807 + buildSettings + + ALWAYS_SEARCH_USER_PATHS + NO + COPY_PHASE_STRIP + YES + DSTROOT + /tmp/xcodeproj.dst + GCC_PRECOMPILE_PREFIX_HEADER + YES + INSTALL_PATH + $(BUILT_PRODUCTS_DIR) + IPHONEOS_DEPLOYMENT_TARGET + 8.1 + OTHER_CFLAGS + + -DNS_BLOCK_ASSERTIONS=1 + $(inherited) + + OTHER_CPLUSPLUSFLAGS + + -DNS_BLOCK_ASSERTIONS=1 + $(inherited) + + OTHER_LDFLAGS + + OTHER_LIBTOOLFLAGS + + PRODUCT_NAME + $(TARGET_NAME) + PUBLIC_HEADERS_FOLDER_PATH + $(TARGET_NAME) + SDKROOT + iphoneos + SKIP_INSTALL + YES + VALIDATE_PRODUCT + YES + + isa + XCBuildConfiguration + name + Release + + BDA1C4B62EE5CF7C4927E1D1 + + buildConfigurations + + 77BE4AEF926C8A5EC9A169FD + 97E89AA54DFBB3706E4B981A + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + C05A679C270542CA8F05CB0F + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + AFNetworking.h + path + AFNetworking/AFNetworking.h + sourceTree + <group> + + C2E19234C28A4928BD673376 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + AFSecurityPolicy.h + path + AFNetworking/AFSecurityPolicy.h + sourceTree + <group> + + C6B3D163A5C877540DA587FB + + fileRef + 4A63CA3EBB85B1992561238E + isa + PBXBuildFile + + C99CD13C993A500F3414EE22 + + containerPortal + 1FA55458A36D08BFFF68BC60 + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + E4E3EB3017CF3E8DB3F7A5ED + remoteInfo + Pods-AFNetworking + + CBA4989267A1093A6F6B4C0B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + Pods-AFNetworking-prefix.pch + sourceTree + <group> + + CC9641DCB5E3A4B0DCBC1F80 + + children + + AE415AFE25FA2872A46A3929 + 69AF9F349BE28B45CA2FA2B8 + F09C2AA1401DE1145092C3F9 + 23E7ADDF5CD816A3FFB4BD80 + 1F9599622F4DD64FB523510E + 6E55492E8D6A38C2A578FE74 + 4640906F18370395F5E27D6D + 4A63CA3EBB85B1992561238E + B1CDA6C61B46A23CDD51727F + DAE0A5FBBE70BA645C71BE8C + D49C3296EF7A938597D510A9 + B58F84AE06786A9DFD5ED900 + A628FC4809F695F2C52725E0 + 4CC3AF0164B6AA8DB749B5D8 + 012662258BBC10805CDBB23F + F3A292F6DC1EBBD383166AE6 + 9330548DD52CAF5EC44770F3 + + isa + PBXGroup + name + UIKit + sourceTree + <group> + + D25FDC3CEEFACC3DA917AAC7 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + AFURLResponseSerialization.m + path + AFNetworking/AFURLResponseSerialization.m + sourceTree + <group> + + D27A898CA1E9A5196954B609 + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + Security.framework + path + Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/Security.framework + sourceTree + DEVELOPER_DIR + + D49C3296EF7A938597D510A9 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UIKit+AFNetworking.h + path + UIKit+AFNetworking/UIKit+AFNetworking.h + sourceTree + <group> + + D540D67DC5155A994AFB172D + + fileRef + 4754CF1C2EA53F717D193EB6 + isa + PBXBuildFile + + D7A41BF0E78822DEBCD40F1D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.script.sh + path + Pods-resources.sh + sourceTree + <group> + + D843C980ACA3462B77FFA85A + + fileRef + E65577A19E258E8588E98DF0 + isa + PBXBuildFile + + D8CFB620E1C0A5A5D4E0B89E + + fileRef + C2E19234C28A4928BD673376 + isa + PBXBuildFile + + D96F85F3F9B0C82AA92B4A1F + + fileRef + D27A898CA1E9A5196954B609 + isa + PBXBuildFile + + DAE0A5FBBE70BA645C71BE8C + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + UIImageView+AFNetworking.m + path + UIKit+AFNetworking/UIImageView+AFNetworking.m + sourceTree + <group> + + DC95C89402906E5F5D520195 + + fileRef + 9894E8A946E9DAFFFAACE3BB + isa + PBXBuildFile + + E05AF70DEB2ED86C8E447CAA + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + Pods.debug.xcconfig + sourceTree + <group> + + E2D146607ABCAC7BA9A89481 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + Pods-AFNetworking-dummy.m + sourceTree + <group> + + E4E3EB3017CF3E8DB3F7A5ED + + buildConfigurationList + BDA1C4B62EE5CF7C4927E1D1 + buildPhases + + B0A032362AC1DFF158E118D4 + FA35D418A950FDAF5C3717CA + 8935FEDA5271C7D3F9A953C8 + + buildRules + + dependencies + + isa + PBXNativeTarget + name + Pods-AFNetworking + productName + Pods-AFNetworking + productReference + 7A097B6C707E3CAF5ACDA89C + productType + com.apple.product-type.library.static + + E65577A19E258E8588E98DF0 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + AFURLSessionManager.h + path + AFNetworking/AFURLSessionManager.h + sourceTree + <group> + + E8ED13EF51E5297F03393A0D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text + name + Podfile + path + ../Podfile + sourceTree + SOURCE_ROOT + xcLanguageSpecificationIdentifier + xcode.lang.ruby + + EAA36B55F6AEE84022B042FB + + fileRef + 119AC78984A91F33FDBEE238 + isa + PBXBuildFile + + F09C2AA1401DE1145092C3F9 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UIActivityIndicatorView+AFNetworking.h + path + UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h + sourceTree + <group> + + F0B3CE4631B9CEEB12784C6D + + buildSettings + + ALWAYS_SEARCH_USER_PATHS + NO + CLANG_CXX_LANGUAGE_STANDARD + gnu++0x + CLANG_CXX_LIBRARY + libc++ + CLANG_ENABLE_MODULES + YES + CLANG_ENABLE_OBJC_ARC + YES + CLANG_WARN_BOOL_CONVERSION + YES + CLANG_WARN_CONSTANT_CONVERSION + YES + CLANG_WARN_DIRECT_OBJC_ISA_USAGE + YES + CLANG_WARN_EMPTY_BODY + YES + CLANG_WARN_ENUM_CONVERSION + YES + CLANG_WARN_INT_CONVERSION + YES + CLANG_WARN_OBJC_ROOT_CLASS + YES + COPY_PHASE_STRIP + YES + GCC_C_LANGUAGE_STANDARD + gnu99 + GCC_DYNAMIC_NO_PIC + NO + GCC_OPTIMIZATION_LEVEL + 0 + GCC_PREPROCESSOR_DEFINITIONS + + DEBUG=1 + $(inherited) + + GCC_SYMBOLS_PRIVATE_EXTERN + NO + GCC_WARN_64_TO_32_BIT_CONVERSION + YES + GCC_WARN_ABOUT_RETURN_TYPE + YES + GCC_WARN_UNDECLARED_SELECTOR + YES + GCC_WARN_UNINITIALIZED_AUTOS + YES + GCC_WARN_UNUSED_FUNCTION + YES + GCC_WARN_UNUSED_VARIABLE + YES + IPHONEOS_DEPLOYMENT_TARGET + 8.1 + ONLY_ACTIVE_ARCH + YES + STRIP_INSTALLED_PRODUCT + NO + + isa + XCBuildConfiguration + name + Debug + + F1678AFC7532C7BF805696BB + + isa + PBXFileReference + lastKnownFileType + wrapper.framework + name + Foundation.framework + path + Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/Foundation.framework + sourceTree + DEVELOPER_DIR + + F3A292F6DC1EBBD383166AE6 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UIWebView+AFNetworking.h + path + UIKit+AFNetworking/UIWebView+AFNetworking.h + sourceTree + <group> + + F40A1A16E0267CC07692E47D + + fileRef + AE415AFE25FA2872A46A3929 + isa + PBXBuildFile + + F4265D4EBC22DC874428032E + + fileRef + 0025295F726C4BBE983AE100 + isa + PBXBuildFile + + F4EBBE9FD6FEB255E436EAA9 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + AFURLConnectionOperation.m + path + AFNetworking/AFURLConnectionOperation.m + sourceTree + <group> + + FA35D418A950FDAF5C3717CA + + buildActionMask + 2147483647 + files + + EAA36B55F6AEE84022B042FB + 6C832D4D66531222A4FB8998 + F4265D4EBC22DC874428032E + D96F85F3F9B0C82AA92B4A1F + DC95C89402906E5F5D520195 + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + FFF79409139C95A2258B1B3D + + fileRef + 69AF9F349BE28B45CA2FA2B8 + isa + PBXBuildFile + + + rootObject + 1FA55458A36D08BFFF68BC60 + + diff --git a/Pods/Pods.xcodeproj/xcuserdata/fil.xcuserdatad/xcschemes/Pods-AFNetworking.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/fil.xcuserdatad/xcschemes/Pods-AFNetworking.xcscheme new file mode 100644 index 0000000..ff6ac0b --- /dev/null +++ b/Pods/Pods.xcodeproj/xcuserdata/fil.xcuserdatad/xcschemes/Pods-AFNetworking.xcscheme @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Pods/Pods.xcodeproj/xcuserdata/fil.xcuserdatad/xcschemes/Pods.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/fil.xcuserdatad/xcschemes/Pods.xcscheme new file mode 100644 index 0000000..f862582 --- /dev/null +++ b/Pods/Pods.xcodeproj/xcuserdata/fil.xcuserdatad/xcschemes/Pods.xcscheme @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Pods/Pods.xcodeproj/xcuserdata/fil.xcuserdatad/xcschemes/xcschememanagement.plist b/Pods/Pods.xcodeproj/xcuserdata/fil.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..4d34c5b --- /dev/null +++ b/Pods/Pods.xcodeproj/xcuserdata/fil.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,32 @@ + + + + + SchemeUserState + + Pods-AFNetworking.xcscheme + + isShown + + + Pods.xcscheme + + isShown + + + + SuppressBuildableAutocreation + + 63C8DEBBE1DE72C60B100B50 + + primary + + + E4E3EB3017CF3E8DB3F7A5ED + + primary + + + + + diff --git a/Pods/Target Support Files/Pods-AFNetworking/Pods-AFNetworking-Private.xcconfig b/Pods/Target Support Files/Pods-AFNetworking/Pods-AFNetworking-Private.xcconfig new file mode 100644 index 0000000..25dceec --- /dev/null +++ b/Pods/Target Support Files/Pods-AFNetworking/Pods-AFNetworking-Private.xcconfig @@ -0,0 +1,5 @@ +#include "Pods-AFNetworking.xcconfig" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Build" "${PODS_ROOT}/Headers/Build/AFNetworking" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" +OTHER_LDFLAGS = ${PODS_AFNETWORKING_OTHER_LDFLAGS} -ObjC +PODS_ROOT = ${SRCROOT} \ No newline at end of file diff --git a/Pods/Target Support Files/Pods-AFNetworking/Pods-AFNetworking-dummy.m b/Pods/Target Support Files/Pods-AFNetworking/Pods-AFNetworking-dummy.m new file mode 100644 index 0000000..c50a8c6 --- /dev/null +++ b/Pods/Target Support Files/Pods-AFNetworking/Pods-AFNetworking-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_AFNetworking : NSObject +@end +@implementation PodsDummy_Pods_AFNetworking +@end diff --git a/Pods/Target Support Files/Pods-AFNetworking/Pods-AFNetworking-prefix.pch b/Pods/Target Support Files/Pods-AFNetworking/Pods-AFNetworking-prefix.pch new file mode 100644 index 0000000..95cf11d --- /dev/null +++ b/Pods/Target Support Files/Pods-AFNetworking/Pods-AFNetworking-prefix.pch @@ -0,0 +1,5 @@ +#ifdef __OBJC__ +#import +#endif + +#import "Pods-environment.h" diff --git a/Pods/Target Support Files/Pods-AFNetworking/Pods-AFNetworking.xcconfig b/Pods/Target Support Files/Pods-AFNetworking/Pods-AFNetworking.xcconfig new file mode 100644 index 0000000..c2f387a --- /dev/null +++ b/Pods/Target Support Files/Pods-AFNetworking/Pods-AFNetworking.xcconfig @@ -0,0 +1 @@ +PODS_AFNETWORKING_OTHER_LDFLAGS = -framework "CoreGraphics" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" \ No newline at end of file diff --git a/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown b/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown new file mode 100644 index 0000000..efa0713 --- /dev/null +++ b/Pods/Target Support Files/Pods/Pods-acknowledgements.markdown @@ -0,0 +1,26 @@ +# Acknowledgements +This application makes use of the following third party libraries: + +## AFNetworking + +Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com/) + +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. + +Generated by CocoaPods - http://cocoapods.org diff --git a/Pods/Target Support Files/Pods/Pods-acknowledgements.plist b/Pods/Target Support Files/Pods/Pods-acknowledgements.plist new file mode 100644 index 0000000..21a0718 --- /dev/null +++ b/Pods/Target Support Files/Pods/Pods-acknowledgements.plist @@ -0,0 +1,56 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2013-2015 AFNetworking (http://afnetworking.com/) + +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. + + Title + AFNetworking + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - http://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/Pods/Target Support Files/Pods/Pods-dummy.m b/Pods/Target Support Files/Pods/Pods-dummy.m new file mode 100644 index 0000000..ade64bd --- /dev/null +++ b/Pods/Target Support Files/Pods/Pods-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods : NSObject +@end +@implementation PodsDummy_Pods +@end diff --git a/Pods/Target Support Files/Pods/Pods-environment.h b/Pods/Target Support Files/Pods/Pods-environment.h new file mode 100644 index 0000000..33bdb5b --- /dev/null +++ b/Pods/Target Support Files/Pods/Pods-environment.h @@ -0,0 +1,50 @@ + +// To check if a library is compiled with CocoaPods you +// can use the `COCOAPODS` macro definition which is +// defined in the xcconfigs so it is available in +// headers also when they are imported in the client +// project. + + +// AFNetworking +#define COCOAPODS_POD_AVAILABLE_AFNetworking +#define COCOAPODS_VERSION_MAJOR_AFNetworking 2 +#define COCOAPODS_VERSION_MINOR_AFNetworking 5 +#define COCOAPODS_VERSION_PATCH_AFNetworking 1 + +// AFNetworking/NSURLConnection +#define COCOAPODS_POD_AVAILABLE_AFNetworking_NSURLConnection +#define COCOAPODS_VERSION_MAJOR_AFNetworking_NSURLConnection 2 +#define COCOAPODS_VERSION_MINOR_AFNetworking_NSURLConnection 5 +#define COCOAPODS_VERSION_PATCH_AFNetworking_NSURLConnection 1 + +// AFNetworking/NSURLSession +#define COCOAPODS_POD_AVAILABLE_AFNetworking_NSURLSession +#define COCOAPODS_VERSION_MAJOR_AFNetworking_NSURLSession 2 +#define COCOAPODS_VERSION_MINOR_AFNetworking_NSURLSession 5 +#define COCOAPODS_VERSION_PATCH_AFNetworking_NSURLSession 1 + +// AFNetworking/Reachability +#define COCOAPODS_POD_AVAILABLE_AFNetworking_Reachability +#define COCOAPODS_VERSION_MAJOR_AFNetworking_Reachability 2 +#define COCOAPODS_VERSION_MINOR_AFNetworking_Reachability 5 +#define COCOAPODS_VERSION_PATCH_AFNetworking_Reachability 1 + +// AFNetworking/Security +#define COCOAPODS_POD_AVAILABLE_AFNetworking_Security +#define COCOAPODS_VERSION_MAJOR_AFNetworking_Security 2 +#define COCOAPODS_VERSION_MINOR_AFNetworking_Security 5 +#define COCOAPODS_VERSION_PATCH_AFNetworking_Security 1 + +// AFNetworking/Serialization +#define COCOAPODS_POD_AVAILABLE_AFNetworking_Serialization +#define COCOAPODS_VERSION_MAJOR_AFNetworking_Serialization 2 +#define COCOAPODS_VERSION_MINOR_AFNetworking_Serialization 5 +#define COCOAPODS_VERSION_PATCH_AFNetworking_Serialization 1 + +// AFNetworking/UIKit +#define COCOAPODS_POD_AVAILABLE_AFNetworking_UIKit +#define COCOAPODS_VERSION_MAJOR_AFNetworking_UIKit 2 +#define COCOAPODS_VERSION_MINOR_AFNetworking_UIKit 5 +#define COCOAPODS_VERSION_PATCH_AFNetworking_UIKit 1 + diff --git a/Pods/Target Support Files/Pods/Pods-resources.sh b/Pods/Target Support Files/Pods/Pods-resources.sh new file mode 100755 index 0000000..e149064 --- /dev/null +++ b/Pods/Target Support Files/Pods/Pods-resources.sh @@ -0,0 +1,74 @@ +#!/bin/sh +set -e + +mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + +RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt +> "$RESOURCES_TO_COPY" + +install_resource() +{ + case $1 in + *.storyboard) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc ${PODS_ROOT}/$1 --sdk ${SDKROOT}" + ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" + ;; + *.xib) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}" + ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" + ;; + *.framework) + echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + ;; + *.xcdatamodel) + echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\"" + xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom" + ;; + *.xcdatamodeld) + echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\"" + xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd" + ;; + *.xcmappingmodel) + echo "xcrun mapc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm\"" + xcrun mapc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm" + ;; + *.xcassets) + ;; + /*) + echo "$1" + echo "$1" >> "$RESOURCES_TO_COPY" + ;; + *) + echo "${PODS_ROOT}/$1" + echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY" + ;; + esac +} + +rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +if [[ "${ACTION}" == "install" ]]; then + rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi +rm -f "$RESOURCES_TO_COPY" + +if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ `find . -name '*.xcassets' | wc -l` -ne 0 ] +then + case "${TARGETED_DEVICE_FAMILY}" in + 1,2) + TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" + ;; + 1) + TARGET_DEVICE_ARGS="--target-device iphone" + ;; + 2) + TARGET_DEVICE_ARGS="--target-device ipad" + ;; + *) + TARGET_DEVICE_ARGS="--target-device mac" + ;; + esac + find "${PWD}" -name "*.xcassets" -print0 | xargs -0 actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi diff --git a/Pods/Target Support Files/Pods/Pods.debug.xcconfig b/Pods/Target Support Files/Pods/Pods.debug.xcconfig new file mode 100644 index 0000000..47f3441 --- /dev/null +++ b/Pods/Target Support Files/Pods/Pods.debug.xcconfig @@ -0,0 +1,6 @@ +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" +OTHER_LDFLAGS = -ObjC -l"Pods-AFNetworking" -framework "CoreGraphics" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" +OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) +PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/Pods/Target Support Files/Pods/Pods.release.xcconfig b/Pods/Target Support Files/Pods/Pods.release.xcconfig new file mode 100644 index 0000000..47f3441 --- /dev/null +++ b/Pods/Target Support Files/Pods/Pods.release.xcconfig @@ -0,0 +1,6 @@ +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" +OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking" +OTHER_LDFLAGS = -ObjC -l"Pods-AFNetworking" -framework "CoreGraphics" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" +OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) +PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/images/titlebackground.graffle b/images/titlebackground.graffle new file mode 100644 index 0000000..2f4ede5 --- /dev/null +++ b/images/titlebackground.graffle @@ -0,0 +1,287 @@ + + + + + ActiveLayerIndex + 0 + AutoAdjust + + CanvasColor + + w + 1 + + CanvasOrigin + {0, 0} + CanvasScale + 1 + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2015-02-23 20:24:18 +0000 + Creator + Filippo Menczer + DisplayScale + 1 in = 1 in + GraphDocumentVersion + 5 + GraphicsList + + + Bounds + {{66, 82}, {640.00098, 110.00017}} + Class + ShapedGraphic + ID + 1 + Shape + Rectangle + Style + + fill + + Color + + a + 0 + b + 0 + g + 0 + r + 0 + + FillType + 2 + GradientAngle + 90 + GradientColor + + archive + + YnBsaXN0MDDUAQIDBAUIIyRUJHRv + cFgkb2JqZWN0c1gkdmVyc2lvblkk + YXJjaGl2ZXLRBgdUcm9vdIABpQkK + ExceVSRudWxs1AsMDQ4PEBESV05T + V2hpdGVWJGNsYXNzXE5TQ29sb3JT + cGFjZV8QEk5TQ3VzdG9tQ29sb3JT + cGFjZUIwAIAEEAOAAtIUDBUWVE5T + SUQQAoAD0hgZGh1YJGNsYXNzZXNa + JGNsYXNzbmFtZaIbHFxOU0NvbG9y + U3BhY2VYTlNPYmplY3RcTlNDb2xv + clNwYWNl0hgZHyKjICEcV05TQ29s + b3JYJU5TQ29sb3JXTlNDb2xvchIA + AYagXxAPTlNLZXllZEFyY2hpdmVy + AAgAEQAWAB8AKAAyADUAOgA8AEIA + SABRAFkAYABtAIIAhQCHAIkAiwCQ + AJUAlwCZAJ4ApwCyALUAwgDLANgA + 3QDhAOkA8gD6AP8AAAAAAAACAQAA + AAAAAAAlAAAAAAAAAAAAAAAAAAAB + EQ== + + b + 0 + g + 0 + r + 0 + + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + + GridInfo + + GuidesLocked + NO + GuidesVisible + YES + HPages + 2 + ImageCounter + 1 + IsPalette + NO + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + LinksVisible + NO + MagnetsVisible + NO + MasterSheet + Master 1 + MasterSheets + + + ActiveLayerIndex + 0 + AutoAdjust + + CanvasColor + + w + 1 + + CanvasOrigin + {0, 0} + CanvasScale + 1 + ColumnAlign + 1 + ColumnSpacing + 36 + DisplayScale + 1 in = 1 in + GraphicsList + + GridInfo + + HPages + 1 + IsPalette + NO + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Orientation + 2 + OutlineStyle + Basic + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Master 1 + UniqueID + 1 + VPages + 1 + + + ModificationDate + 2015-02-23 20:36:46 +0000 + Modifier + Filippo Menczer + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + OutlineStyle + Basic + PageBreaks + YES + PrintInfo + + NSBottomMargin + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFklwCG + + NSLeftMargin + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFklwCG + + NSPaperSize + + size + {612, 792} + + NSRightMargin + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFklwCG + + NSTopMargin + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFklwCG + + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + DrawerOpen + + DrawerTab + Outline + DrawerWidth + 209 + FitInWindow + + Frame + {{344, 712}, {792, 377}} + ShowRuler + + ShowStatusBar + + VisibleRegion + {{0, 0}, {777, 264}} + Zoom + 1 + + + diff --git a/images/titlebackground.png b/images/titlebackground.png new file mode 100644 index 0000000000000000000000000000000000000000..44b48aa76e7e746215882c155a9cd213bbc76218 GIT binary patch literal 4849 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 literal 0 HcmV?d00001 From c6df7c824221231480156414701f2515b6a2f7ba Mon Sep 17 00:00:00 2001 From: filmenczer Date: Tue, 24 Feb 2015 10:52:20 -0800 Subject: [PATCH 03/12] files --- .../UserInterfaceState.xcuserstate | Bin 17573 -> 17573 bytes Podfile.lock | 30 ++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 Podfile.lock diff --git a/DailyGood.xcworkspace/xcuserdata/fil.xcuserdatad/UserInterfaceState.xcuserstate b/DailyGood.xcworkspace/xcuserdata/fil.xcuserdatad/UserInterfaceState.xcuserstate index b9cb28bdf4ab4c75d53e946764facfe2aec49325..e8e2543989d33ca644ff5c363362a6c30fa06a4a 100644 GIT binary patch delta 55 ycmZ45$+)zWaYKce;G7xdO6y~)O%2V=brg&Y4GlMUitPspm-X4B2uJGrhywr}YZ2=J delta 55 ycmZ45$+)zWaYKce;EeP4*aTv#%?%99brcNEEsZvJitPsp-_2W#A{?pfBMty884|<* diff --git a/Podfile.lock b/Podfile.lock new file mode 100644 index 0000000..749bec9 --- /dev/null +++ b/Podfile.lock @@ -0,0 +1,30 @@ +PODS: + - AFNetworking (2.5.1): + - AFNetworking/NSURLConnection (= 2.5.1) + - AFNetworking/NSURLSession (= 2.5.1) + - AFNetworking/Reachability (= 2.5.1) + - AFNetworking/Security (= 2.5.1) + - AFNetworking/Serialization (= 2.5.1) + - AFNetworking/UIKit (= 2.5.1) + - AFNetworking/NSURLConnection (2.5.1): + - AFNetworking/Reachability + - AFNetworking/Security + - AFNetworking/Serialization + - AFNetworking/NSURLSession (2.5.1): + - AFNetworking/Reachability + - AFNetworking/Security + - AFNetworking/Serialization + - AFNetworking/Reachability (2.5.1) + - AFNetworking/Security (2.5.1) + - AFNetworking/Serialization (2.5.1) + - AFNetworking/UIKit (2.5.1): + - AFNetworking/NSURLConnection + - AFNetworking/NSURLSession + +DEPENDENCIES: + - AFNetworking + +SPEC CHECKSUMS: + AFNetworking: 8bee59492a6ff15d69130efa4d0dc67e0094a52a + +COCOAPODS: 0.35.0 From d821ff97acdea61ad03483ac99cc7de19e9d2993 Mon Sep 17 00:00:00 2001 From: filmenczer Date: Wed, 25 Feb 2015 17:14:01 -0800 Subject: [PATCH 04/12] got api for images to work --- DailyGood.xcodeproj/project.pbxproj | 2 + .../xcshareddata/DailyGood.xccheckout | 41 +++++++++++++ .../UserInterfaceState.xcuserstate | Bin 17573 -> 22041 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 5 ++ DailyGood/Base.lproj/Main.storyboard | 57 ++++++++++-------- DailyGood/FeedViewController.swift | 22 +++---- DailyGood/VolCell.swift | 3 +- 7 files changed, 93 insertions(+), 37 deletions(-) create mode 100644 DailyGood.xcworkspace/xcshareddata/DailyGood.xccheckout create mode 100644 DailyGood.xcworkspace/xcuserdata/fil.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist diff --git a/DailyGood.xcodeproj/project.pbxproj b/DailyGood.xcodeproj/project.pbxproj index feecfa3..e1fcec2 100644 --- a/DailyGood.xcodeproj/project.pbxproj +++ b/DailyGood.xcodeproj/project.pbxproj @@ -40,6 +40,7 @@ 283825591A9C859E001EE5A2 /* DailyGood-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "DailyGood-Bridging-Header.h"; sourceTree = ""; }; 2838255A1A9C859E001EE5A2 /* dummy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = dummy.m; sourceTree = ""; }; 28B5FE79BB94E817DA54B43F /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.release.xcconfig; path = "Pods/Target Support Files/Pods/Pods.release.xcconfig"; sourceTree = ""; }; + 28B6B9231A9E98AA00510294 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 6E00CAA1119961FAE6D8ED6D /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = ""; }; B8C5B8651A916D3C00A1909F /* DailyGood.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DailyGood.app; sourceTree = BUILT_PRODUCTS_DIR; }; B8C5B8691A916D3C00A1909F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -82,6 +83,7 @@ 06CC2096E4982442834A2A94 /* Frameworks */ = { isa = PBXGroup; children = ( + 28B6B9231A9E98AA00510294 /* QuartzCore.framework */, C11E9154F5D331D4F6F5DF11 /* libPods.a */, ); name = Frameworks; diff --git a/DailyGood.xcworkspace/xcshareddata/DailyGood.xccheckout b/DailyGood.xcworkspace/xcshareddata/DailyGood.xccheckout new file mode 100644 index 0000000..2d92d9c --- /dev/null +++ b/DailyGood.xcworkspace/xcshareddata/DailyGood.xccheckout @@ -0,0 +1,41 @@ + + + + + IDESourceControlProjectFavoriteDictionaryKey + + IDESourceControlProjectIdentifier + B45CFD7E-531D-4086-A67B-D8AFBA21A2C7 + IDESourceControlProjectName + DailyGood + IDESourceControlProjectOriginsDictionary + + 064BE613D003045803461D0ACEBB03377BEFBAFF + https://github.com/kellyxu1981/Project_DailyGood.git + + IDESourceControlProjectPath + DailyGood.xcworkspace + IDESourceControlProjectRelativeInstallPathDictionary + + 064BE613D003045803461D0ACEBB03377BEFBAFF + .. + + IDESourceControlProjectURL + https://github.com/kellyxu1981/Project_DailyGood.git + IDESourceControlProjectVersion + 111 + IDESourceControlProjectWCCIdentifier + 064BE613D003045803461D0ACEBB03377BEFBAFF + IDESourceControlProjectWCConfigurations + + + IDESourceControlRepositoryExtensionIdentifierKey + public.vcs.git + IDESourceControlWCCIdentifierKey + 064BE613D003045803461D0ACEBB03377BEFBAFF + IDESourceControlWCCName + Project_DailyGood + + + + diff --git a/DailyGood.xcworkspace/xcuserdata/fil.xcuserdatad/UserInterfaceState.xcuserstate b/DailyGood.xcworkspace/xcuserdata/fil.xcuserdatad/UserInterfaceState.xcuserstate index e8e2543989d33ca644ff5c363362a6c30fa06a4a..10ea9956f4d2b93c263fbf8c4b94cb178cae470a 100644 GIT binary patch literal 22041 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 delta 9671 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 + + diff --git a/DailyGood/Base.lproj/Main.storyboard b/DailyGood/Base.lproj/Main.storyboard index 4fe10d4..ec00fce 100644 --- a/DailyGood/Base.lproj/Main.storyboard +++ b/DailyGood/Base.lproj/Main.storyboard @@ -184,6 +184,7 @@ + @@ -191,42 +192,47 @@ + + + + - + - - - - - - + + - + @@ -316,19 +320,22 @@ - - + diff --git a/DailyGood/FeedViewController.swift b/DailyGood/FeedViewController.swift index 1671936..8eae939 100644 --- a/DailyGood/FeedViewController.swift +++ b/DailyGood/FeedViewController.swift @@ -88,7 +88,7 @@ class FeedViewController: UIViewController, UITableViewDataSource, UITableViewDe }) } func useLocationInfo(placemark: CLPlacemark!) { - if placemark != nil { + if placemark != nil && placemark.subThoroughfare != nil { //stop updating location to save battery life locationManager.stopUpdatingLocation() myLocation = placemark.subThoroughfare + " " + placemark.thoroughfare + ", " + placemark.locality + ", " + placemark.administrativeArea @@ -107,10 +107,10 @@ class FeedViewController: UIViewController, UITableViewDataSource, UITableViewDe cell.volOppLocation.text = opportunities[indexPath.row]["location_name"] as? String var tag = opportunities[indexPath.row]["categoryTags"] as [String] if tag.count > 0 { - // cell.volOppTag.hidden = false cell.volOppTag.text = tag[0] as String } else { - cell.volOppTag.hidden = true + //cell.volOppTag.hidden = true + cell.volOppTag.text = "no tag" } cell.volOppTitle.text = opportunities[indexPath.row]["title"] as? String cell.volOppDescription.text = opportunities[indexPath.row]["description"] as? String @@ -129,7 +129,9 @@ class FeedViewController: UIViewController, UITableViewDataSource, UITableViewDe } else { return cell } - var flickrUrl = "https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=fc0877fa484b0b38e2d299a5c491c764&tag_mode=any&license=7&safe_search=1&content_type=1&media=photos&format=json&nojsoncallback=1&sort=relevance&per_page=1" + // license = 7 (no copyright) does not return much, will deal with thislater + // var flickrUrl = "https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=fc0877fa484b0b38e2d299a5c491c764&tag_mode=any&license=7&safe_search=1&content_type=1&media=photos&format=json&nojsoncallback=1&sort=interestingness&per_page=1" + var flickrUrl = "https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=fc0877fa484b0b38e2d299a5c491c764&tag_mode=any&safe_search=1&content_type=1&media=photos&format=json&nojsoncallback=1&sort=interestingness-desc &per_page=1" flickrUrl += query let request = NSURLRequest(URL: NSURL(string: flickrUrl)!) NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) { (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in @@ -139,10 +141,10 @@ class FeedViewController: UIViewController, UITableViewDataSource, UITableViewDe var picList = results["photo"] as [NSDictionary] if picList.count > 0 { var pic = picList[0] as NSDictionary - var picUrl: String = "https://farm" + (pic["farm"] as String) - picUrl += ".staticflickr.com/" + (pic["server"] as String) - picUrl += "/" + (pic["id"] as String) - picUrl += "_" + (pic["secret"] as String) + var picUrl: String = "https://farm" + toString(pic["farm"]!) + picUrl += ".staticflickr.com/" + toString(pic["server"]!) + picUrl += "/" + toString(pic["id"]!) + picUrl += "_" + toString(pic["secret"]!) picUrl += "_n.jpg" cell.volOppImage.setImageWithURL(NSURL(string: picUrl)) } @@ -150,7 +152,6 @@ class FeedViewController: UIViewController, UITableViewDataSource, UITableViewDe } // would be nice to get/set these too... - // cell.volOppLogo = ..... // cell.volOppSponsor = ..... // cell.volOppWhoJoined = ..... return cell @@ -169,7 +170,6 @@ class FeedViewController: UIViewController, UITableViewDataSource, UITableViewDe if city.isEmpty == false { // add location to query but escape spaces url += "&vol_loc=" + city.stringByReplacingOccurrencesOfString(" ", withString: "+") - println(url) } let request = NSURLRequest(URL: NSURL(string: url)!) NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) { (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in @@ -183,8 +183,8 @@ class FeedViewController: UIViewController, UITableViewDataSource, UITableViewDe } // be sure to load the table - self.refreshControl.endRefreshing() self.tableView.reloadData() + self.refreshControl.endRefreshing() } } diff --git a/DailyGood/VolCell.swift b/DailyGood/VolCell.swift index 56ec887..8d4cb6e 100644 --- a/DailyGood/VolCell.swift +++ b/DailyGood/VolCell.swift @@ -11,9 +11,9 @@ import UIKit class VolCell: UITableViewCell { @IBOutlet weak var volOppImage: UIImageView! - @IBOutlet weak var volOppLogo: UIImageView! @IBOutlet weak var volOppCharity: UILabel! @IBOutlet weak var volOppLocation: UILabel! + @IBOutlet weak var volOppTagView: UIView! @IBOutlet weak var volOppTag: UILabel! @IBOutlet weak var volOppTitle: UILabel! @IBOutlet weak var volOppDescription: UILabel! @@ -24,6 +24,7 @@ class VolCell: UITableViewCell { override func awakeFromNib() { super.awakeFromNib() // Initialization code + volOppTagView.layer.cornerRadius = 4 } override func setSelected(selected: Bool, animated: Bool) { From fef66f4620de439ae6d136b11aeeb355d2e53f1e Mon Sep 17 00:00:00 2001 From: filmenczer Date: Wed, 25 Feb 2015 17:49:29 -0800 Subject: [PATCH 05/12] added startup screen and tested on iPhone --- DailyGood.xcodeproj/project.pbxproj | 2 ++ .../UserInterfaceState.xcuserstate | Bin 22041 -> 21583 bytes DailyGood/Base.lproj/Main.storyboard | 4 +-- DailyGood/FeedViewController.swift | 2 +- .../LaunchImage.launchimage/Contents.json | 24 ++++++++++++++++++ .../LaunchImage.launchimage/startupScreen.png | Bin 0 -> 380842 bytes images/startupScreen.png | Bin 0 -> 380842 bytes 7 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 DailyGood/Images.xcassets/LaunchImage.launchimage/Contents.json create mode 100644 DailyGood/Images.xcassets/LaunchImage.launchimage/startupScreen.png create mode 100644 images/startupScreen.png diff --git a/DailyGood.xcodeproj/project.pbxproj b/DailyGood.xcodeproj/project.pbxproj index e1fcec2..72ece31 100644 --- a/DailyGood.xcodeproj/project.pbxproj +++ b/DailyGood.xcodeproj/project.pbxproj @@ -432,6 +432,7 @@ baseConfigurationReference = 6E00CAA1119961FAE6D8ED6D /* Pods.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; CLANG_ENABLE_MODULES = YES; INFOPLIST_FILE = DailyGood/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 7.1; @@ -447,6 +448,7 @@ baseConfigurationReference = 28B5FE79BB94E817DA54B43F /* Pods.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; CLANG_ENABLE_MODULES = YES; INFOPLIST_FILE = DailyGood/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 7.1; diff --git a/DailyGood.xcworkspace/xcuserdata/fil.xcuserdatad/UserInterfaceState.xcuserstate b/DailyGood.xcworkspace/xcuserdata/fil.xcuserdatad/UserInterfaceState.xcuserstate index 10ea9956f4d2b93c263fbf8c4b94cb178cae470a..6f6797fc46de2b92ac5592a46a61c432e474c560 100644 GIT binary patch delta 7658 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 diff --git a/DailyGood/Base.lproj/Main.storyboard b/DailyGood/Base.lproj/Main.storyboard index ec00fce..ea7aad3 100644 --- a/DailyGood/Base.lproj/Main.storyboard +++ b/DailyGood/Base.lproj/Main.storyboard @@ -257,10 +257,10 @@ diff --git a/DailyGood/FeedViewController.swift b/DailyGood/FeedViewController.swift index 8eae939..b142d5c 100644 --- a/DailyGood/FeedViewController.swift +++ b/DailyGood/FeedViewController.swift @@ -131,7 +131,7 @@ class FeedViewController: UIViewController, UITableViewDataSource, UITableViewDe } // license = 7 (no copyright) does not return much, will deal with thislater // var flickrUrl = "https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=fc0877fa484b0b38e2d299a5c491c764&tag_mode=any&license=7&safe_search=1&content_type=1&media=photos&format=json&nojsoncallback=1&sort=interestingness&per_page=1" - var flickrUrl = "https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=fc0877fa484b0b38e2d299a5c491c764&tag_mode=any&safe_search=1&content_type=1&media=photos&format=json&nojsoncallback=1&sort=interestingness-desc &per_page=1" + var flickrUrl = "https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=fc0877fa484b0b38e2d299a5c491c764&tag_mode=any&safe_search=1&content_type=1&media=photos&format=json&nojsoncallback=1&sort=interestingness-desc&per_page=1" flickrUrl += query let request = NSURLRequest(URL: NSURL(string: flickrUrl)!) NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) { (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in diff --git a/DailyGood/Images.xcassets/LaunchImage.launchimage/Contents.json b/DailyGood/Images.xcassets/LaunchImage.launchimage/Contents.json new file mode 100644 index 0000000..f19b554 --- /dev/null +++ b/DailyGood/Images.xcassets/LaunchImage.launchimage/Contents.json @@ -0,0 +1,24 @@ +{ + "images" : [ + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "2x" + }, + { + "extent" : "full-screen", + "idiom" : "iphone", + "subtype" : "retina4", + "filename" : "startupScreen.png", + "minimum-system-version" : "7.0", + "orientation" : "portrait", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/DailyGood/Images.xcassets/LaunchImage.launchimage/startupScreen.png b/DailyGood/Images.xcassets/LaunchImage.launchimage/startupScreen.png new file mode 100644 index 0000000000000000000000000000000000000000..e9defef1634540753f60629ef951d0f975282a44 GIT binary patch literal 380842 zcmY(p1CS_9@FzI7ZQFQb+qP}nwmolb+qP}nwmtj4|L*PGbwqbmWoIS2GqNkQe-ZMs zVz5wHPyhe`uoB|JiU0sW{r~_V_7GtID4uc0|E>UlPKsiJ05vl>=l>><_Tm~&007X) z|DAvU8Ce+r7&I)D)t%L4q&bc3Z0HP(?F>!m+->atTMNML&iQX>W8!Q;;BI4W>%{5K zL-ao!od3rEk?DyD{)ffciib#DMxH>(&e4Q`h3*d>0}(G20RaKGqp>NcqOj=yS^jUv zLuBskY|lwg@8;%4=f+HD=V(UH$icxu&%i{_#6@JtG|h{r{Ey zZz=bGR8BcZ3zL7E|C7(l$o)T@|3BLQ(ZfyupYs2YG5_1s|DpbKl^2Se{{KEUUMT4S zat#0gegFw!0cCfhhYWtoIq!9m5^0ou5|5cLaF?ejtHGzu3xR^Z+eU_W1(;z2<>OVHwO%I7*#y}mHFJ+DWfH?YTtJDQ+`Pu)MG zkg$bR*#JWFh~KZLW^{SsKXfIWcMqHP6)RGGi?GH1g|DA*u~HpIQjSfyEi|x}$t^bz zPpWK~y`f71yIWK9F@H0jvb|-&dG!~kNuB)zFKhC8O^e^W)8lOHcy_LV{H3Y(cKjQ&A16#C3`&z?PT?u6z3m!0MK+e-SV&cDJAfK z*R~X%Q($F0?Ibc9YUONuh{+bLa96G_dBziv9~|ej%*#7dbj7wKic)o zl3TWJV<86vesl+wXuZImx$F&LPkh7d`E@UqdS5NbxJM;%Ugf~bT0ha6@X(zb28qcn zMK#4)%^rfpVEJj^J+|1oP0v=!?>28YU#8<7p7(yyc9TuHDYT2B5P^2DEL0m?A^G|w zH_Z0XgTI!F$$a^Fz49HC1qNYJ%nsJBl_<30=?-%|xUz)Y6ac#+8S4wzgHs6H<2J)R z<={49Wa7FFzHg#4YaqRQS-DM@Ev@|hlvnot-s_N?HeyneqIrcw=H4Cm({Rp$YcW(* zocwL>Dg+Mt>{AquJE%Pty+Bk4=>mH!5?mkAkGyC3rU_PbI!0d|wBeJMhxn!w#a(kJ zj%~Sdr<&O7F=v-$y@=k6dk39eeM-m8+qAw>P0B^zUCwTgJhkLX@{%1_{lmkOlHHZSG&l{-#8DcK>c!5``m>>DNPsFR_6;y|I}YJ( zd>AP#7T#083-`4Gw8hF{X*A1tc<(A;)mmyFJdGC*$dbKSPk*_|b=S=o&DHjei2ax|Y(;aqsJ}F` zw$RI$*4;jK@soG@bQ1BC{82Gfdh}+zP^Waj<30_hyRr2s)p6$AMFDFgD~W2GGWePD zW=XcJ0Ni`I$YuWnY|<0l|6PCnlC|pc$54Ki`#U|eRp-jv!%g&xhR-(X6N0@lr`<*E zHKwA#)6wM_N%%hh3nMn#+iVR)R`Z> z6YO=jJTWd2zUlV*NTEIvi;DknTMvg3&mcrGT2W+&6{IX7DwcI$?3eJYWox*H(!lJI z+G2G|?B=XFI<#!7Us1Q631J&#{KF2(-e-fW)l{wXwrc+a_tUhi47k&Fme`T+am82A zEbeN;rT$x1gdP|boZqxp_8#0A$v48Urh*!;St`>jq;9U_pQsG0lc>4S7c2rNP<)%~ z`8ST{)4W!;XPk7s6=Y8PhaG%h+IUG`jmG2$o))K^c-K0()@m?oaZRPj&#?#ZUnv5a zu$j-4U@{dOhHG71=aYHFF+z)r$ zbKg-L0u=$=zgM?qW%A>bX>AE)d4#y%)TCgjw*Y8{zW0V5`JJ935$`f}QLkh<@Khq_ zd#7q;D87{*?*@V3FK(N*+r3hW^t&XZOZ#YCBMsyq->n`x0^Opyf4IJKxfZ@zU1r~R z-^ac`K9f%ISBn3lv2INNO@4+;XRBCxc^8$i^8iY-O<20LNNjaJtz>rbfAM+bm1Yh!q`B=HpiO%(fywBh3F$l&jwkg0e z@Ik$ZDV3ss-jke_7_}XO)qtD6IVjF6ewGv^yrQr58|3xw3UzB-a~J#%W?#pWjZGH8zq~#Z_Lr@G{xd(* zQz|Y{M)}jKE9yQuG;c90Yqok=mGOzSgKgQhr5X7?f1W|?=Yfwb6MoLN9ePst# zqNeg1F@5IZoOC#wK)3M7l~*h~F~+;j2;^r*!M!>^tk2FDqsnd+QpandyI}`|kO|$j z$SPe#yxx#VFraCU;!UhP(jENg^YIo)YDzIFCNcN4R}`|L%FWsjTwJLfoa*%y33Ku& z28)pli!ymBr?72s!{Pa9U^N+Lbml&h1RMnaYCm8qOh|&W$JXL8%8PB;+sY}#7owzm z32BW=ERyGe#H4mO7KNom4XAyg@XB!pcjc6-QI$<6pi9JrGo%U928I+?6)E}~DLfgL z@aS@Se^i{3u{41$vesrt!AB@(qKb|-%knN67*##U^d52$oBGo6>O z@ak$Dj!tO5>H7<9?@?25cC=nqJ0T4jCrzrI6kD$U+k1xb&+WUVwdNuo#tY#-eO4Y` zbaKY573B^(AWoPE&&vI3&2x#+X|rd~I-HCCYY7Lh{KDI7F5j<+&q53^#k;4|8zU0w z$)5$0`{rq`g1D0zcy?{{*iI$#o<(^L*TvrD!R5|;Ma z^ob$yW2~8Xdjg? z1!`ShN=r38u!p6VQnMg%U(NQhD|9ia0(|%qZv^6xEXXri zPhhNT8m6jA9fd*bq<+GFx%RpJ%lFOCGrQXtv^|vfWLV7wjql4tw~ja#$lF9>2fNGV zwHsQT{-=Z;^B0-0ymV6rzEoVFT>dy5jJ3#e!4FE8((341s1!zV;Wd~Vf^0ImaQ)Hs zaGAPx#2J&`ij^nA+yL9>K^GksleV|18}Sk*mET%1naQgIln$O?=G&^1H9r>bwwG~a z;w?(pSJm$B3NM03rdu{X?p~WOQ*7S6L}s`xW)NfAC7AaCi*f2t_{<_PbVJ{m7)l*c z{GY>DW=mT0)5|UwSxR^v;I1c_jdsaE z9pi35ZdpUWN~w<5Df@<9pKYsL*&S563eXBSW0_|^QxLeSL&jmqejy3)Lmm99Ibuht|z5`7f?m2{p1_&Zjhs^ula zTr=LV5j5OJj?UuXuUWMdrU0Fxd?t0sU|Qfl!?@S}1pr}#(P;u0tN^T(z#`gUald(m z5a2*!c(hA)g+)Y_DY@a0AHvn<>WEW)U+!{!m5>tUsqhL656O$97t?sc4oNN{MkPM_ zVKj2glh>ys2P1cGx*08|{0@N_#AB(&2GO?WV*u|##rrzz#)ZcOYOy)01m~Zu)Cr|m zFHfY(n99z0?5J;ic<)U|iv3=k_GlfpM1XPV!E|dRYJ+jB^l&w`@*~c^c5#0YnV>7R z`S|LMm20^xSz^jD9{|LVlXf9$sT_8XMkyY9kA{e!=-eCz9mbjyc@hB>Yn*mPd*Goy z>@oou{~*!c9{Yz4SZQb+`2r!rGpjD?l2<&g1-Ixu)K45-_v`MR_k-^Uud6Qlc5ydk z`p2gH46>ZFO{O^yxfTzgG`AOVFZhFUg{K%zn!e}G!r0y1kR~uWWTdzc-&9w%7w4@G zO#S$)#WU{dSOh+|aFa6{AE+wEm+6K%id%U(e~CBd%b-5Yef@@8tO%)pnzGccW~%gVL78 zbul$SG>OrZ3}blk_g|^@dobgz_0TZgYcxo4dI4E&ealNW5|vsv)IEVf6#%At) zagsoHjIib)!9_M8Qi!r$k0{o)@rwlERKgjb{MpCA5({x5Y<@&xD>-!7A6CgDefNeo z4#Zb{!+gOWq_h)~zf1&*@nwX17~cgBU;+PVx$6bJRpCv&UTGJO9{xKtU65h#THXS1 zOmzd5y<PWjAxc zGuN0y@_;I5P9ujK#v%%qory=5CiN<^yA*KCySwz3(v;h!p`7_b!?s)5ZO!5L38(); zJ0*TXZg-(A)#7XjJ)U(Vmd}^(yX1eb0J}pUI)RhI`4Cl+8Yo;66?6i1Nn;X)ImVJ6-S|ES8e4%Y_M_F8oGn#R?lO>Wb@mEJ znB>M{d@BxH!!^1CU%p*_sc&lyKN93@@PgGy5VkO z=Gl&>x8Bq+aBmUN1hF3o9hQ^o^&r-_Wy!gAKP7T^iPkMyR+^~SB-N+OCY-3tKdVL# z&N0H7y7}HULR&>>!h9W=_)S=5!}nMoEoLG&49vapoA8?)D}L~Y(6}_p@NEm5{uk_6 z#L(=^Vc|zv)(*Jt!GoDTeHQT%Hw7*)-8|!uBE|lmQd!q};Q4Tzk36?1FN%W;U=!&8 z>2(jUGxB5ZtJDlwPmZLRSDc zVQ=&HK2~db*A$7_OIHCQRh+$UP$OFK{vijq2b%%Qa1d-SR4Jr42hPPsT1kHut^Wmk zOUko|k1n{W?K0-osmp~{!U|vqJsP|X)^YmFE#TeM4R63_Qf^t%2FYfL4*-j(tW=!G z_zdIjyA#*lc4y_wNqV+yFU$0C_gTnS#rEe3rnCO!w-CwdmUkGuf7gzHmF8>yUaD>F zasL4x&2$gAa_~Oc?efOsdI-uG-f_ijRvrMa!F=T# z@@3f7oEq3|UxEx%*Uz2u3I_?JXIgk*I#)ExemwUa-qt>?&LVi9rkn)28d*GsN5cI* zkPyBu(PD?iwVsARz`f|`0>3ys(Izlu65_XTBu*PsC(V2$`%sr)k|M(uzMQA`ey54&yAO&XS3TB^c1g_@YIy_69I9WnnT zu|8IgK&%68_VhK!#5;BYb^yUO?~fqFR#M)wO$=TNcv~z+Hl|(ZL9IfX!JI{iMkD}6-j>!}g6NFsTDK*o%4)kL&u-0S1w2|jSBopZ zH!ZQJdCP5KAw3$LDHLYkXJY3NBKLvj8ZXf=EP z(g!L|1W&bys)Fj4g&;kFuXIctB9rY$R8ee{hJf~#fA+bnV|CNbQyMvn`J%qiwcT2| zhaBndZd71GQztMoy#Obl2nO^qB7;=IT|HvHD0`H44iPCi1`a?m0^ZO1qtZ`^kJ_X; zwO(U3$x|Qk;Q}YU%*qyzq3irw@DI@-4=hJ=N+3MqSHbmjjHg&*i}fX!q|Yj>`g49w@iL;UD6jN6!wWcnGAD=&3T-3IIZ z9YLbYPfa!#|LghQ8`6kgs{41o-#M|t2Sf#B!LBC}l4ywYGzpm55hkF@tG}jxKbT#> z6rkOGCl#Z5sP!xZ%f?_k+I-H2Bpl9v@1CcTW@YqHBV*_ikwW>L-C;6@#h_9dK+hKn zR2Ac$vx|xFM@i9ya~m-J2-7-krD4r)`V{r!f~c^FIZXbU84DC9_;w-23YuT=_mL4& zjZVG769Q}lbVmp$P{4wWbBC3~7+U!9>MjMgmAm|#{h+#^X-fl52x4YzJd!BHPTd>h zyA|_FE@H3DL5`wR%Ll+J6A`-V=e>!7#wOn&)dJx+Jh!~-((y1B7Y3mM%`Mt+5B=hq z%&^7EcWZ(%ktO%~5N_KFw+v<~3xxe&--<6RoP9q0j9rsKWsECzWuS^(*M+a-_L$p% zH%bnsoBypTL45DfX*?Clm)!0Opyf|5RR2KbxUMbj33qgVdwbs~=xZ29YZKxT=)pWV zKV1_gFzTP!zgQi^JxyeEpG)7IDOqa!rzh5?`bh^tFsG~r5!r#MKz!y}ONupCGo08EP86@iltKtpiindi7#>}-NC5In0E>P^~MQLKQ(J_`n1^0 zA0s5qxj2cjz4Os zZ7Goh874%&n5bEdmf{n3cN$1biU~SP=pBoJdwrCOK4QQd6gnd|giXLw;T@1$X_$O6 zG*jsD0H~!0*&j*)m>ER6tQ1$ptgIEUz0^#OV_sRWrEeElX+Z0X;?j1MgeNk{f=rj# zJ-?P(0EeBnsY3`vZH3=p`Sf3ucZ{r*pZdIxyfsR=?$$FKG;wt!N3V}CuM~*r6*!=< z`k+P_MEzd}h?z`?!xW zS=tQ$PN+jMxxM)GMfjq~Ynsauoe3f$#3aJLiAA46z*J>r&U)To`xC{P z(;(zF=XvtwpU9ONm{9W;+&o5NFd^$hTyP)74Y``%I^o)cS9ymlFKHr+uRJyDt_QTo zWC-bLj2hEX9UU1WeeYGNbSR-vmkBe3aaU8EwFXB7Or@7=j|)dOAE?O}q=%*A13JZF zeC&%Z#ofys_b4>Z?H)6w0)ry{&3uW%XF}44=;%UZBiq_V_^<=A?(X?)Zq8m!O2JmI zkyUK`ZQ+$Ti)iY`8|vLuycOXs5GdM!xr*5x#wBt-%$tiB4hg`5+ zzH&=3nGf<))h?SSvQmwu7b3!2W_y^0N*`G*kU-Ee#*e^$htHa~)X+u#WPM;h^D1Q) zF{PQVi_*NttR~Fb2DupW)7j*z^ON$7J{)b;)Q?kzMZ)QH2f2u2xc{jG@3tnRen}1> z#{vvR2&A#nR@7uLOlBBA;oryQN9GLS@nfnmJMt3@QH@dELbkjx?}M*ojaTp?_7iGb zBp^Ly<^B5*`=uD&s4+l;5%Pm;DiwextwBq~kh;@__0Igj^|=KXeFJogFVJ*SHDckd z*SQ5)J$ofB8sD`9Wb8Q(71|ep8qa}DvyzZz$x4e>+j=b4hxIZ3l3tOk8RoJoyX4mq zyoj7NpYY+vmJl3QQ%_J*pW9mk6^Jal-W;4X6AW zleI^aD#^9bq!c2pZIj1q|r6=gfmON@|1O>TPwUK*H3au zl!r;9q;0fKsd$oD?X-Nomp1t(lF4QNdLsYR$&!}&49Z&qyv#$44@AC%0I56{-0hh9dexO+XVUM$4z3WM?;LD)l>Kcfp)HtLK|frUg`MjT zVjzttI}8^X*AHBNA{r#5R-JuFxUugwxt`9Xum-vOlgdtN>o028=TNzHhESuH@or=~ zs_m#&f~xjn$#Gxk`6_m*rUfk1zI2{muUzhef2Zr`!Xn7G4|ys>FSYnG^QgHJCe9+m zf?LOjHopN3|n4JEC&Sd9r?OH$B#{+@JiTg1EJuL`)mmVS4Y z`^LB^+79`n`J*9Zj5(>;iJZ*ZncEy z!vE00A;0!e+MOOQ-y&KWmhZm$dfQb2De#C|WkqLNF6JaR#OoPm+wFS?+Z`{B{3M?I zE->XfP`7=$KSI~kN^uLu-;d%Wh`h#r67bSY3K1Y;Gane>?khtRF*>G$h(WZjIz{5{ zZvYdBJQ0aSH%In!E*@(@BuL`N_v@ z0si-n6PTh}?RyX&i&*bQ308+syN2tGo_Y-X=jGCp+CCyMItaS(_WcGhngk50&*Ca! zmzQ}Tv5trkIYh)H==*+(Rzdk;x%~x^R|YWP{DI^dAotBOEm5o9He6bgncwl1CS3%F zq>Za^pFgI2)+T6Cg&>mtRVD(?6u39J96imxFS2fJotZiKjGrvo!D2og?+)b!%^BDvPL zBZP-+97he)mIz@+?Oz(KlD?#yE>0h;VjF}f55eFmL^Ma!szD}`9o=rvQ}W6vp1Cp2 z2bB247z9cO+WxeYQ4S~BP+u3N?R4v{b|w~{$gh?rR%&D)whZwoz^|~x^BlfZyX|ht zV7Tt@bq3tv`#-q>ncbX=(m^Uf-XRB45zHeJEhS4k2&#JSK2rWtwrTF#Z(q+be5m?& z5u=N964ncrr#Zz4@rUNHX(0+Q+Gtx*swC-owGp8iVUDW`0Sx+`i4$WCZG#f5|xS`lO$xs;U@ z5m~)7^@1oCyw*D21Z}a*w-JIPU+g!d;Ccj}b{*-MI=TXqCwIg+=DJfa()&4?PtK&< zv0aw9tC+6PvUEil7c)~c%E-0E|EYp!ly@*gb0>Qh(sWOSvCQTI357d(6wbj!9;MCO zg*s7tYfhRN15|SIB(M9BON2R;P)9+pKg9)@+vwd~_kYu&Uy;x7ti)?V#Fgp48&{-Kg27%DPee zl_lVVp!24Q{_NohEsJfiMz%giP%q(d1$dfv494h(y;t95a#YYpxE6nUZ#CK4$n-bh z3N05ksfc%QHW$}eR2X}F4PF~z3A?45x7Ynt=~-)bDu-ai5cn5ArzJmmG(F3xeLXJTXKb7%zM#{#cJ(mu`Ly zFy_H9n%0ibkR&XkWf`j_#h^HQ?QL5V4Sw$t2f!Z9Q*}dK5G8_nsDtYl(POoYy!L3) z&7=HKED>F~nqJez*7jX^(hlgcLeH?jP&CALG9rJ#=fR@%0pnU>#$)*J$GD__GpplN zavph*f_1e*<7(S!wOO*%+Q!JLcaLWKh=A+3^h`x5P=lyvoFD^0gjE}FcVEO zc^Ugzw)9EKll6K3H?V$8&6{3hR)rCiw*<6wr0%Z;aK#Y&u4bfip~|Rtj+@w6Onh~= zB&9xQ+2CtH%_d&ru8&4nrtN0E=q+{Yo#8xhwtX3rw2WUV>{ICcETAcpl%6o7)FE_C zEMKR8! zrd4l8&tFs?AkEuGM0lz9k#gmnW)@{TL_M0FwHRiW%jxl)^qJgpmqadf2F$mROfG__ zHir3XWO~*R3tQ)~KE59WamX9|R`T zDK?wQvQN_!%h$C-o;M1D&jVK6t`6p3@Hj1+&k!Zi_eOVD($h|x;#$20m6{s-H|NkG z_gHGkyCEbPS(hUhF|H<|#}jUv**p9_b{B4IDZm~3vC~6C;$Di-D%wgx_TD=0?!*6d z+zQ^Gxu${-m$UQYRHv|Pu;MIj1Wg*LLZbjNVMA_} z%=rvOq0490hSi-Ws^`l)#Ha~mgTAvy+=D#jG!HWB%LI-0@PWcH=I~PoKxB(}6zF^$ zhE{)E{4*Wm>Yw`znpYRzUp8m46w6sz;A`Pa!9xasN!u@yJrpq-a6epwtKf)sjsMf$)T=MC&cT_b&3X=Y--{d43R4-PnJdh11znY79|xfa#wv zG8xJvlLrp+`74}4UTD-ja(a1EQ5maqdNs|d)t~D=Z*bq)ZWqU5VZS4Uvx9SjRj+MS zH?|W}y)>pE40%lQeHG_ZVtt~X`;CkrR6o2RDqdX{^$uyB)0oVjWKZoW3`FGK16~cw zM9MS!_Y={~qb-1p+dgVZ-;gov7B9}@wgjUg=LJ3dxl0R=y^4flw>5DnH$n%D0c`(I ziZ}T0(^Z`DrCH#GMK}o=M{-o@f%cm(ID&*Nd)m@wFinRrE53}f7&}^{1YT28dubo$ z0o5hPZ`O}YFM`rtLZ2~4kg<)K#v8Qc_lGO)XR?z~2*z?AkPW>H-;rY=d=iuP&@ixr zL#4#OGjbBtcHWmV47~XW;37qgk<3-oMgw1ThA4(6*nQ=2OGA`{fbtLaOA?O;8-#gC ztWmWC&&LV}tUb+V>!fj5wVWiWt!wHE)|!>KZ9vWtWth2*yj0)jU(MNT<*u<-a6X1= zc*I9TSi6$nnJ*{h%?HLKPsf8v&PIp`0*Sfn7|Al2d3>;b1Q`vOkLAwP>ncpOp&0MY z*S(oRvp7h)Pwhulg-!JYC%wsO6lV9=q3>zxqropBuXC!JG2v*WZOh zSCt-m8lPz|Dy@COCf?$d(93+}!t20xH8VOM5qZ`M&_Ky8Tm!HQ`#TJPAydhVKDZyX z!SFcb^fh?UdF8&SiS_~X9pf>#^Bb4@$o^Qt5$zo6XJiCLH zwa3qr=kJy|2lJckx%zVz^H2r2P6u@Qm=il8*6|)YUT{Bgs6UZ_Z(ll_usgE zJyGyXzE0u(CBDLcVgmwlV1>Z6@cjDB^D5U(9E9bf{mwUED#@x>#mmVvV0f*u?NEMul6AL`fi7Ta)h1+YzT^DdzG32)y|jFB2(VjN%W9i^BO3Cb zu+MQxz1!-ChBFVbB$hNpEp3TEDcu4*>^*J4)rUMrgOY9}!O&oYSx)y6E)D{`3<#58 zii{3UY!QrpIl0%~i1kivN_Fb+|B7ZLv4!23`9`$*d36_sSDL)sB0sz!s$J?#zUIPP z$#Pp6yP#m9oY#}6&xo&dRZzZd#2zU$$q_pJ7#BUUQG<`p;wRFVX-)6cc@2I6+S~aG zsF*9duCbCHK317d;F+-E=G}3RaI3{fh6c3+&f+VbIuKG+njVmn=Yq-lm&%H>Qw@k~ zzH^)RHVsK7g?v=)o)%AwsW)>2nNimEWM4EZhKFcE`sBa6H!rQowU=Q(J=!{|O^KEG zatS8FnF3(6aSdr{n-#6X`zOcfeF?zei^ej~Uh3!gCjo>dd_HvDPP0#$-iLe5w#ggd zD%wH5E@sv0Eu?9TH@EZ({5=~i*{3}fSMSv4ddPd4M0$3) zNvIDiu6-i9oe-->J_e4wFQ~waKY3N@syzRmNzwgCf#M9R&Kis?l@Q~fqK&gYZWdI) zo>W-g0+sot*;5Xr$~8Fufg_NNIJ30aOACHNe(GwD^HkdG!kA~Ld{lkY1f-;r2`1V* zWJ9wC`hqRd;H$*Hj*boZ{-BO)9hjcFfRJt`=T8756@*HT^!iBKn zvh_TDei~Ca1mQ@8EFT{&_YcX9yW{Z_7MWG^OdlX`4&I(@|G86eXxn8Xm}OGTuE)A} zay@yAUsGx<&!})EXr{#POCb3|f{rE&<@Bkyh4>&;GQld*)2EEMtU>+<=I7N!Sjgs8H_BEBfjII z&^2_5J_sh`DcMq&=#lc;GZ?PN>_$I0NS~qhJBxrKCf_1%ICy9EbLGU6w%h%I79Sw!>5k!4LjSeJuwOwg&B?)grrCk(AFPGr zl>&Mxkg^=V7fH%dbUvp-p(~Oj#3s9nbg|%%7oi78U@smAr1w^f2X7|OFBCkJX@ObY zqll;L>vXaR0Az^=VyT#YN}5qslG8tNIIWKy26ZcS79_d$6dcc;w6U`E+s zuF=iCn%D*+OOnz8duV8Iki_ejH|ft%yOLAUC5)`x*dak>_Xrq$=lp6Xd67?p8DGu%cB%JbU^&T7`#%C^#Mg^hs|2C~Pl`j+0(_&hd_*h3N zOz@|QlMPJxWOZbmp^f8B`LUGsVo4dI3Fb{syvXbSz+ma7DyDnH6Q23urMpkgZ3*z~ z-C9Di7}jz!7!qUBN{2AC0}lVCChT)TT0n9N-a4h@e49V-nT+F1!J;}e>GBpxeR-1ytwvWlY4yF*zAHA zp#91Scl{tWiKoE@p^U>wo_arRv7-n9mzgxjl*+^V(B#yQiRwDfV$eV6L%v2W;c{kP zF`zNk6@}%&q>7mpBX0p*7i=5_mbkMqD6w!`O>^bEw1l++hYicSkK3!qhKEX^r1L}o z$wN%WJzObLQbxiT^)tTXU#k0^pibwI1?7ly=I#LJv^LKYC+W+(>gB@|K6@T*!4)UZ za^q_jpRBf*QwRVRJSs^8Fh#;)MNR2~#-ijl^C@kUamiA zjsQ#{3bpS9JRA|PDq+RJ$Wz)w%ZPse^=`D`%pZ;;sk+YGNPRV(MRdjPB+zP;f4-gS zkKU6J&8}+Hit0#6Hmw66%xi6>Lx{K5by*4)!gA!*sYGW9WahL;kYqD8bKFYMF_1NcY3s-X0AWU-#xwx8g&)MIYIRbt3sFAZ9)and5EB9T4kR-GKO~VDEDE;&_ zNKNn^wEe{FM&Yl>6`QXbTB`{63@QUsNK;}>TFO|&36P2trrHefCrJDqM}h>~8y=@# z;LpJXb3?F-1@HqGZ!56J=)+Z>CQ)JzZ9G6>a>=QYdr_Y_9VH5Dbo9YL9GnKdteYyZ zp4!MI$m|tPPoXiY_M5RTV6fi1=PoQLwFdcO34J-)_vuBN|-=>&O7w z@PJygyz;Q(DZJ5;Z%nZ!{0)c~lkiJU1D5Ij^EBv(cD|tdlC<1f>KjT}^hg!PZ#;j9 zOQeXviqi%b))yHa^4D0n&682loC#O<(tAiq&sl(NM4#oW)t?y9-B8;v4d}IerHd7i zNwOso?sk6LN)aC;MN&EmJW`qTyuc-npA{7Cz#!u&J-Bp~ZQ&Z%Z29OEyD|11#q>g_ zPfWr)IZX#Q)uV>q#c2fCdHK?LF%NhN_U|ymg3&$#BbZ@@O4zV$9^tasKyo8KJ|M`G z1lU<}7*LT^MBIr1I|Zf;JBaDvUN}^!qwvAPKX6E7;lTJLaXr&v(K1<{NHbcF`f~*w z-uKOWr_|CiTh2&bogFy4sgT({^s+YoLtud}!TpC1v#Gb>?FSa8?rq}thr!Sq2C(#u zH3T>C!I1h>+UGz3665QrCj?oVMsorMpp-LHBZLK(Iv5`^h7v4@#FJBt#+Z07%?E%7v6Adqxt{et1IhL0idgu5 z$;OnAwa^80ubevgJr^#P7`|Ib0MU>LWXVzv9C43Ozvr>G(#{M1Zku&p~u_u*Gll9A{!!MNIAy zB9vKG_F47*4W32X&DE$Qv}KuM|!*_uTf$)M)_Fcs_kjAM5$_*ec-A_t770KuIx*It_5G~okj%w2~oJYXOE z#*;Py#e~vdDdb@JIVYfyuqz2)R_<(;;mQl|bVm@g4g8 z5bpt(I|7i1`zV}}aP13vArom<~Clk90?#~5*O935h9{`1|^1Jb)_1WMh%V6&Pi1^7(9 z!ia~u2euf*n1)1Uwnm7OvP}BMl;%{K#KgRnF^o*Aq!9|#K^c@hO;K31lvEQBD54-t zMpwbJdvN~V>ywgg{#!%;oy$h>Pd5l{+D*^&^-jRU%(QK)FiTpo^WMi%QwlvR6 zOIj7Xf{r(~@k238k2zNapx`4@J?vVff;c0?Pm*gKRgw+0@2I%(HxbT7gl4A*6zJgu z>s$?*yP(?B4Jf05|7z;yvr(Q_MtPN^AwULUBvc<%H6x0yTD|b&h!HMH9=am^KA=Nf zQreSX<7gu+;suDL2V97hGue6>t1LKnx=h9Y1%^O*zuu5`UHIb!qk9EwsgZx(ra5fq}6P7kP55=%lj>b5ub7hgsWwuA3po9HA@z*w@E4lu%v9tfU=bV zI!85*s^%&!9sS73uT+RPDjxy!fU^0e=d)LJ>prepSKueqIA4P?!U%iweetvspQcCL z+sBD~oFK7nU*qrS0Nst{F=JodxYG;%Vlkgf0zL&gdy%>(0 zo}Wd$h1W_#IO&00cf-n8$9>n|4$O7HbVr&%ZC>2P{*K3jVAVrFrKdlwA^a!f+Dxql z>8ey2s3y&jVkY1PQxUSZkXg$Epu-SMx-`3leX^}vN7s2~ReKUQEHGe{O6d6{{0+8J zV!48x!dfhV*f*X`za(_1X$V+KI~_zaMp8!p>7>1YOOy44)V|y)n?xI`&T{Jdfs#(G z_e)-MV6^?s0S?jX=?Z}G9Fkx>Q8ETBT&3Ary~A0VgG_9hlhKSh@iTQJtWUvMx_ICs zh^2$4Kbn%&Aopir{%vjjL@)4mOX@mz7q>r|$~gSHI=gGz%ZIu!2KI90ZGvg9lFW8t zs+?4qnRJ*y0{KZMl5>ls+YdgRj^U8d8N=3!c&qGnIg(@T|$L2f%!a?vxk0 z+yT79)s*r2k8DFlOL@fL+^zxqaJPR(^j%x6XXZcwmN#Lt-eQzv5LM1 zciC;?%URrrYek;k_{A<1x+D(#P6fsyAT4<0_{apbe>adgIwAB-Q2cS16r7SP69N)3 z#sCw;MWaI7F}Inj!b(8F)NvKK-U4M1=EMUaPcwLNDWN^>&-KL`Or@AW*OppJDp!&c zj~K(G&{J)fN)nO@rc>($`O&;SzDI)RNF?lyB9Cb7u{6Hp3=QR);W0v5`Hzw|5HoPM z#d*tGltMN(Uz~0%=$Q!XKXm<3$A7CETOEQ}nS?At6ln7^fk;u|VWt#`x5BXW!>Ra7 zAv{S+l&Mlp-c+tM6QViwjBFkUu9FUcWvX(8)N$-OE9_I27R?sSMfJ={$>=;2gm#?* z{sPmbk}gdanzxd&h$$A68$z*ayy}=t0(i^UT7dn$@zPp5$vUp*H2oDKpVO|hm1qY+ z98~;&k~i*I|J}k;DTRQedb6$o;&v#ogh+-09v3dk|0m*#EZ)~zr1#=Y0}5P(OZ;8i^A~4ib{dyO3*t52r(C$w#r)| zTL{_O9puNjL{7nn2zpt^#A8H{f6{kpvPo?Q_@(l@$+}KMC11$51EB-yPD+zt_va%2 zjXQ+Xl7klrTF9`3OKt=vL�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

&ByU~ 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 z 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

    SrD1ud%hvFwoI87l-X^L~#G7uM*x)>UCt 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�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

    &ByU~ z@$ooO=J|oFnh&mvE}TT$g~eR`HKz|zu`hh(DTHFf1DSu+uy|z{V z((rHDZ}uw#_z+KeXc6ByFzyL+-A}$aW8tOVpA>#Pw9siYt`p{1UYtAL7ssnLf(K(F z`g`g-9=vlNF6W=TsD(x9M0EqH$51}i3FH3I1^X$f5S*q`=IW-{PRh%%U|aB@RLb$f zn%B;Y9wGkpt*Ei?v@|x6&V_t4(Lrei@+bdRUuBs?>F_eL(*lcOBJG)O@}={t>W4>U z&_2unfA*;RXxcaSIn}$|YVE=~*I;~W*0J5XqIGC}cyNel>X{>3zC#=edfE%FoZ6L6 zi33QrjMu64iQyfy(?;j}UqQVNgn>6V{L;;jOklxeT08YX?V)fQUf&KN*}*IF9K_MWDW9}z z*Z#GiQ~VODG1P{RTSNE3fe8%f`DtgJW>w$Pt%A@{#shK{($ zj?Rn2HMaBCGWa|!71L5j+EDdM>OFvydpH+G`%fnq@jhQ&4D_ve{C?qV>!VMUe!GBa z!=yv^o#q(0f4Rn4WNe4Tv2fl==`pTWzcE|+cumk6IKwJ8lYGKW z`rgCFR7IcrJ-T{56c=oI1-|EH7|%T|bTkfiVggUJunw(zcf%26dqv43_6-~Gv;Tjd z=qGL@lMGEBjJmWs9m($Ax*ysFm+uB*BW#Zayk*31Zp7f3*=PuKa^892yPIX&rH(%F z)>V8n?|h@@X8P7Hy{zokmcMH7$*AcMvZEeRqF-J!zBJbZnmpwRlpmjf+-*76!Mab1 zV#RGc{*y~nZb8l*4$_e(VoMd&0}xzD##!O64ZX3hyrEUUYtHdY-o$-uM}4BU4v@Nx z_#8BTNGxkD(nprz?Q*zWi>e2Ai;wz*A4E&(u4B3j#vt(5KA^lZhwZuJJ)v_PHJP#T ziJz>%$CGy0*s{>p80N^ICwsl`fKrr79HlUCG7F{r;29RCtlG~ z`Z-yn#&dXck$iAebC_cNw_ZD41$4iT1o)Rcc*azTHFN*t1&*#a7M1*&*Nn%@2&boJ zE=^5q4oB2#O)g}@)TtlU1W|neCNc)>{SQH>PJKiR`d8t8IKCeLXDuB*%vwxWVecD{ ze$olTtUAuH8v9GuK-1P_w{@0jx3TD|zi*x`{9W_K&jWqId$6X@(2w~ui_uy3q5VA$ zg+3>1z^8n?t-T5c*{5Oj-_CW&HC&*1u??_-k2x98uKq6N38!X)FWiA9`ZaHCZYyOC z-1t~IxHyspI9&OzykI3)e%pu(o4y1q+tye7p?QEOy=vbCt@W#Dg(JVQlbvX!HvDx> zmg*nFuioFPz6ifS-zw)Sgrx4B`}X?A`C5u_t@dcxW}(%2@x>8`=OILKJ}ETU4>Lco zn4I}~fZ4yGet>1{_HOOySQNE>Fg&}NW4BsT_eq+6((_as;@iVanEo>UwcJ7q)?B9G z#Zvs>AZi7rxPHQK9?UitF902uw6bQOEgTM7t>CA>{FZ91il`E-yu7KaMs7?yqfK4M zvb3r503@mF`0!73hAbj^de_HwfeJmpwj+kMVsZbay* z38dq9B_%M|g6PtJ^B(T0iFWt~KIY%Ed3C8jlPv_@rQHefx|*h%-?Dgb9<1Ju!`}VY ze)D2d7p{5uSOJ++lP9gw{FSWf^W)DY-TQkk+bc}lC!OB7c0YL$XL^5~fw3&FABG#A zOVQxwaC`G0oHuis*cjbKso!*F`FWoelbSR5AP2Ja;Fa=babuZY#-tyGf^YMRc60$& ze{omRA{hhMF}C2FZh0pBQ}%`Y0>$d|KSV#^srz<*a!#pDyw2*ca6D&Bot%lAb?#jj zR?@VHK3mM@Atk^%X?TyNgirhUI~vm7g5d*}oSz+}kq09OO&*WJnP28wx*itVb;fM$BXTu|P=^aN;-X8x&J-7gMCfu9vy38>II+}25)5@kNiibiUq#=6>kdUoj@t(^t5x00D5D@8l=9^LaDg7j9sWHbH*3w91lr2 z4q7}aJNtMBiEca8JM#dy1hc;{6v#DAYR z*A}|#82t)ezVlykjnn%j;>5Zwj4-L+7Z5bCIoI`W<5T0ZI;LE>Up3$vlYscGG0)Bc zeFcF|rvKPmG{S=!X!OKHr8!vg^oKc74_$zSTbsCg&4HjnIv-abT*Kp2!N`+NzpP?; zag$6?Bg{CD!Qi7;(4fy@$L^jBlC!%@C)Ppd-y9oE#@BdGF2vHgCr{x-s6Q({v2U7h zCYNrK3BHasJ_(SsaelhL?vLlZrR?p`sO|F#Ccl&)=y$ecaN*M%AbI9Fe2?HyAO!Nz zm`1Low7mz*21op>4<~+p+qbn|yy<43mY9uX`{fr$z^q48vdL#I)D|rd?!{UF!KX#b zxj=!2wj`6IHM`G;#a*K=nya3te*<(@2g0-C)Os$hFU}RSc=CeA|LXR8m;lp!MqJAo#K_2udyP+c`BXM;;<*zL)c|MLSK!x%@gmGA=Y90m`IkU~)2n!1cN!?Q^uJoBZ;f`jby5?4*Tb>pSfbq; zVr#U+)4m_P!KTGr?4LpgHJ@LT`y* zd>a_`9Yj+7-ru^;t}(z|!LCXpoBoAIIz$DNK2|=C2aEZ5HDHegZcij9PsF*a;vmU( z?sx$!w4D6K06wrXpPC9v7;X9`z4gkhS;7@onSc+h4Z(|h6iOeYE5@<}kLXFS8s1p0 zcI6~>-(DJ$)_KA3ke5Zc2Yk|~+|T0hFVU}g#fjRk|I_BkQu)1)$&0I1kmqU{DEq~JUTHAzT(hZT!Kgt|0VRb+CdtK+QBgSK4#QBXyIBI7B+WNw( zPLS*Keh@$BCdEfXuZ@CWq&%KdPj8L(StypK_QgfB89kZy(@JqXx9ZY_cPr})q~`inEP^8froO}H9%A1$EzOanh+Q_Xu}*Me{i2hAd@S_OTC z8&W)?*8b>_tz*8taEXn2&!Z<{989?vY+Avwh+{XO{H^1{CJVd&mVkQeD2aD#@L}_K z)@jk%`8g~cpY{bpk;9|k_mb~Xfx+FkJ{+$RzfQV#Gz!qn;;;E=m3}l&Z_SaAMVcFa zijy`PYCgeZd>VaX1D*4_pn+>0OLL3cGi%5iVQ_o)^~o!eNTt zx)1%4jo+(Tk{&_MuZYpU31=2Ho4c&C!6wMeXSfL%;~jgI9bLv9asq4aY|1{oVbFf) z1-$c!%dPEd^xu45tc$yg<@6sOOL)SHyk~ca@!^L3*1jFnm+~qV@rx_}W|wG%AHxqv zFv%5u)By0}Ps{6!s(MU@>AtnAhA16**D#R&dI#p#*rX9?a6;F%ba&A+$B8G9G7pKofZ!4nrp`6B zkZ`y>QW9-G#q&I(Q||}v@;1*d1`44ot>c0QVWH%QE2K`Q|Hle@ZNrL}UCivl4#j>* zzZP)Om~%~!je**(M|_P})g|nGd@KaZis4e#xGop&8g|;ekZY~yr+P2qg!v!Lv8DuA z|0kia|I%s^9&Gy7+GodAA~hfe)f_fNJk$hHo}TmJ)&bpYs>^*&@7EW7Z*{-dJ2>}? z7kJ`~)8n;0+S}uO+fgucEWu3hPJdbCI(SMtVecG(M@%)14o-doHsb!1f{C<7CBqr5=cpU=CWJxzc9~Nh1O~pkE*S6ntQ=M%XEc% z2*0R!Bbam1Ec*Cg1xh}(+nuV)U)}ae#X3c%|Eb3F(#~(dHYq3eY&B;^^>+{XHKr!b zbICzJ^?{?M&b8Y4jkNPK|Gpk6SiNgqT;O;MTd>KUTL++E;|O;?eh)snB_3^VoB+}+ z8Kurc8|Ymy^ym1WdPE4+J6z_eZ@cMQKDmRgo7eb{;$=T`GNv7U=0MDx>BHoK1L%iS zYsk@UjNF?*eD=3@D=*v{?K~E`)Pc4C^aR0n3})td`Z!wKlsk08g=jDyz}M+ZQR|a3 zXTRQpcMi{+ZC;Dcrvt9$n zWBey5!z*1AtWfXG5^!#PJUxfELyOOpw`uN0^cPQNL*D!AN4lt;dd2ezAjKc82l&7r z;6tVnd_w*~$3${+xAenL0N4laqI$3m_eD4ydL_4{>TT70;;XJoeO&KEUR`YF+jk?l z#~K)KC6iCEusx}*4c>i~GERv&$6&^bd@3s4d}Qf&!C(o}XAFzaadKR=$gcSmHT%&< z+)PsX#Q2bGtmJ3x^#TZ1TKQ!F0SVKi@wm--Z0+c4;b`QlI~>)gfz#qwS?$e5 z&^=usREhWboVkk(AIIdp-e`MV*F_+1h1O;V{*`;cr0G-t_M1dP25(Pwe|xf>{7YlRElf^o>Wq ze=G)_@#tIYnvKOr{hn~f$^Ap_hEHPk)-|wkB<7aZA>g`bPB+%E&(qc|jjzA*`8KTL zlCDqezyyv@*Sq$ff+uRaOk9%(Gq_v)l(fvpXTOM)q^_$zy3|4tTW^rX084@*yjY4@ zy>&f@iUU&6UKP$KOP#ul)l7bqD;}M&S)eeK^Xf^MgSX&XxFz@E4$s!qVlRun(q)mD zV;(3hC#!TlnkU^R0Rl}8cLe_#M=!RgVK zzQ}Ofml|61l~oRy>zZ++ef98p;iEbFjC$ra9F$sjmGpiv1ruM2Pd{|lc0uZ9yycWz zX1H}tQuhpZrD)h{QF~F7{2L#{oHyoCb4gYDv2y?#27TgDeE`Mec%%Cv3w`xyqo4DI zBH*PiIMk*8q8kqt~0^;-SV-)&)%OLStC?N!{ zojP*u3R6!|L!k2DK*kN+JJ%UH(XFT~^;X%irZ80svN+^8m_o}u_+knQK z7i2EHMUBDjHglAin3`aC`#4hosmA;`Cn*4ST?!F(GsjL1ujKYt;&TWI(e>8?uxpW2 zv7_1z*8%l}K3PlWP{fN*{i|L1H_dOKQgdk>b@A565A5@N-E~YOddFY<)>IuLv1||e zh_+`20L#UwdVtS!hSjP65(xrj%klYQQ@C5}a?PNqNqaqVIC*2Ox;|eNWxzJsUZF4S zN@~Rw3Y9wdNpkS;!af!*;=kVmpK~eS9IFa3%Qz+Pw85AAQew%YYpd5f zuzO#JIW`%zN3IVdAm2-0{LR^EN;_M5*JT*eSnYZWb5@Aa&-_vlf_`BqJQ0#oU<%uVsPeBNXB8- z{8KYbein0(+URQTaY-+I8X}!NKE?F#&Z@5FQ*((I$K|=T*iJR=IAZ7Pk#pc7YM924 zw1*#H&FsR?IB_kSX=I^-CJWP=W6hmGy})y?dXeP$t>F6haA~RAwbn6|^#0O-0V}P8 zOlXcZBE_lsSw>t_H->l4 zNnqwdkOYrBpu$6Y(GILCSaY{ap!-7&>TISH(3CeYQ7-`{) z1M_AwK8Q)CDbaym&~OT%cTOze9cPPP{myrs8vjs#l6R~cuC7Io{Yvn>d|yH5HRn&| z$FZbdQmeaU&eEraD*~sF%|A^pr8H^6E)e8@}=6^Rc}(3q=O4hZysyD`yQ44s+mYD>iNjhD8{4 zJVL6*!Mn3bdu^^PYK+0l%V39B++&rTi7HCh@mO`>;hVFifm264ILAiI1AAl&D(-<; zkqGdDOi$y{*&L0wmX@x(@zvj>cUBnVcIrM__bOs>0PjVD{109WFw?C`tu4Xa?uA;$ zDl|th(hgF&Qu$@koH>N;;d^d1M<$Ifi#ThPR9>G5dQm4)7CQflUYqM2^Yen0t8=6G zg3-9ByxM-r27_ILkO)#-@rqh$BlWfi-6dbyi z)I9?=@r6T%PrRtV+qoGwe(6@SLd)|& zaI(l1j_n-bLtY-EK675s$0-h%2SoDpHD)sP8v7Z3NbnEtAM|g*slOv<2fD_bq=Q_m z?fs>6=+V2LBR=XAiCoDF-{DL42%hw+@%`0fUqmNUn?QZSKlPA5gg@Z1Gw%~~E6HwT zN=~o@D?I!YebsygtMCu%ab9U(l4ZAr-`;u`DK? zZq6}d^_&PQC0d`{EzlC>T1j|(?+n(sge|W}?C~}(eTMZzRY~-IAak<(*DASHBinOJ znuSwwJ#dwbe7^081rq$-_adl)EQs7&TMI4dEVkO(9Tv3IdBCg+ob;4ER%ze8J+$-D zUgx5f;y5qNH=q2qwZFwneHMObm`iQcXcK9Tb}RxhDldiNTk&}A zmm&hey%B4>UO(b$fv49CJURMk732#kxZu$y7iAs2o5try4`!Yet7Y2uY5*)bJ>vsV z%eesaJ*7N4KEZ_N6J+%DKhd7A0HLazNqoAcW{RJ-G+7^A&?)mr3Y&8Qc zFY3=(EE)UE^&n?{!94ag0au#-&VBms@*OkRE6*sO{nzc0KIx}TE+)(t?`v_Ll=FJr@)+ArM7Z>^ z&!K=5o9{luSSu1f4OM8z+md-f4_zM~yl7wN0|g@LdCSw>{hEzVS(Tuw8tY zZsy;|daC)s_N9U;?}e9hVIK>=)beCi9F|^OqM%@sL#%|AW-^JBt{c z?^cys9QaRh__8=kT^5MWRlpoQMq>3ogyb^>u4*rCuslkDMj$7OFgx-`YsU}l)cE{0 zpKt5NF2~_xl@RSLW?N*ehpqEaQ)^39=elpu3_HL+kikw6HVXetC>J(BS98q+L*?2h zHb)s-YLq0O5h2xh5955)g=!3(3CY1SC0@W4#C{fgfza`7=b0~-0`cKzhB=?*sUDm{ z?Wy6nr@@#8&7S}Qq!F(4ju*MYl)66yUhv<^9J6zMcqJj6~j zZ+ogLT*gY?=WTp<5RLmz=#rXAEk#oOtgZtg=@_ep@-3tCszDsXdQ~M%lLG4j zGwH6cnpvz+26WXlhJ|@6Dz32c@YQ=!C^vt)C!IeHv_~Byr8zDy4$+|Bo*hfN<{L0Q zXT4j8L45x!;r{n0e)QV%x}XOSRx#fy=C#$Fg3%ij*Vvkr7|3*51lCH-=hCpI>lv%K z7V$NI#>vJdBd+%p>9}9vkrJrq{hf2feGWu}XAER`Cq@AG|CsQv_EMO<*ju~#zvAI0 zc%3T0XeIUL_Q|2Uw9Xq@L_+u4y~ht;TwUlI>FiS%#Ca0+t`Dewy97r5exh-4+pmdV z{75B0Q@X8gtoi7zxMf`%k1~5CDIe_weIobqBA)sQ%7S!5&Nompi@w2!7TW^4cl;Q{ z-#z4fopMaHqmf4R5z$e(*w!qhrk$yL*5=B1OjmUN&AHuz({ zYpjItJs$j9zlZwZe~=&W2k_x!;F4X*cYV<7vj3sXmE%Mr`}lb=5oOsc8zx*z@dot^PnC)HOH6RRlDY!?&VJ{3@v?S z*>hZ3AQ5)FOpPSpRQ588uj=X>OCgiChB1F2u3jy+(YkOok zP6Ph~NG$+~&)jQ~TeXxiXV05nqxiTL`#Lv|j`2?W%zO>Bqt3C!iOFlL*UIF20p)cz zSn32Aqfac(zeM5}Uhy-SxHM)*4L{q*0?thxV{vYP{AyOfLXSn?|6$jSE9)_-k#cfs z*T%VGDts#FUO6q}aMI9Y{pFWHpi1E2A9kg_MT1Rn^B!H$rYBY~ampGC&hc;}A`G6K zvcjw+-BiUA*u(7RA$Hz^bYD0@*L;wI)#-OIV^((du082Brv67TxzhX-4bD5@WHf;Hb;dOIvVvL`hFR*%@n z=!ZTguh*4dN%?+(Ow_r7{Zs@=Urr_cz=r(h^lATBeH?yWw>8w4Sud7Bz6|sQT1B7X zrN5F-?MD7t`l;ZUKhfj*i`#h48`$gj!AWEt+Vz03P5@9m(B;8JQR)Pbj@S=?CjAb{ z17YPzNWZo7jtX0 zv38rYsCU6PM(p|lF*w+8jl}~zu@`o(uX$!shsFy#v^psCKDL!_P3q{=64LX{@?6UF z(fJxBQSXITi}=nEh1TfB#20Ob1o*Xto?0}$&1%SA?$@fYPug^!1G?a&i*vgp~oZ+y7U5!ON^+9|4f8}zDN2>!m< zT@RhH7>Ty$oC|9kan|ml9-JGcC!4OOy>PszF+SS>75GKaSdJ?a&%G-=-Vh1eujjYD z9c$NAxpaQ2*SSE*<}Ou04eGe^!pQk5_1a6*>H=4?!Wy*8>^0;B^A&y}by9skGRBeK zW8xc5Jz-VXfH{v@%#PMHN}8%NPN(kHfoBNtw0Jv5&?0wx5*elobB_7;Q$DTQo+amj zh*OG>`J5L)c|&o1OUA2%J(bLH`iNI=n-sZ!jL{lzk?2w61$AA8Wj?%Wh`Vy?m-LvH z%$k&Z>CLxMF5O%s;Z2>_C0GujW9s}c()?NYaSf>BwNM<`XAB5V8@|%ci>+@HwUWUz z(bm$j)hA>1z-G2t2(dWGr)I`f&Vn!t#kO;v zIda{6#F($WeSf<6*xnc|s*YhNfKE1eFuGV}6pJQ$f zEcmQ%%s5)P3@^dl8!M)c#(atC zIS2f_p3jE>#xEG0?+N!ve(b)k^$J9>xs+|NgHq{<}T2RPmhQ{-8cScyPX1 zI1)4VEC4MO_^ZLEIbMJVSb22x8_qUa>r*)cg0toNnh*e%IAQYd+@N#69z>OTC#gL9i=82I zuBM0iE;VfG2S27O7~fwt!u>Ya{K!;T@gU1pH8EzoJHAvad2FU6`05>Y9+=4_cHcQZ zo++T?e&ZJrEzC zPH}LMHLW91WdDuqBJh>3@FvI@zyfw#xnohgsm5iJ)G?~EWBRMLKOGIaq3N$-TZ1<9 zp$1=D(`(~F%>z7(JUB0wz`fAhI${<=M^o;-V5~&`l{3(uFWzjmBRK6lj?<}`m@*}> z#ukyBzK*TxXU>#Ds<99%pTfYyHD&)2K?>~yvQBZ15B*1LlJ3tb6fcqQF8U$U>Id;7u8oH_P z9E({1B64ekr1UwcjlD4^-ny4q`L=evCcL>-@)2f?SAXZ{tt$rRwWEG(&myhR;T~Ol z=<}@@$0oQ0?b`-)<7M^$FMj2na0C~g@)~N)ziHlMWcXKSY`_VC-7ZAQl}DuBc*yQ^ zjh5`zHBm=+A7`w-4LIB~{yEmtIFyk3Y#(%h7I-Z0LacM};8EN#nYIS+qfEs;A4^AH znog%6`M*AHS8DVWj?-r_5`syN?hACtj;#3y;h|6TVFb`L-CxT85w|?Qj@jT}p1bbS zeeoWCaSnS&cP~KeS{aAy*L&%n^I(rX8@x(0)V}ZocFmg$UT?``T-aFzMw5p!HelZ_ z61cyxDFv#Ld6^)=muXmMPxJ{CJIugV?VXnn1xQ%Skj>9b*K7{I=fOBuXY5mY3KaR_ zs~(x9-*m#>DSMHm0@ujIpXlkS?M0rwq-az6;O+%fU;m>9i$t90?4yk4oZfLS{u)>3 z21hGR#d{yVFl8;=cte&XPJel6Ld>bxE)^?5YYbAY_UaXQ1MG7M$GM~N^MunB=2i#g zGO+Cy?Bg|pNJai6Pa%9h)jKBTHnlz8%WsY2LF1-X8Ta=85vZ=dSn&;2pDMDb zpT!?@LL`7sNHY%dcw%cm1xU?-Y2%;Q$+&3XA-n)|AwW0sv>k)({8x;5O%O$?wichi z+SVS2IH__ANLTLg&7Ts_PuN-fDN&m;1&Q4!L9@6~HMV3^ALGp#>)rADqG;c(PyDL) zIY9IBu3O-{AX$`)o##Yl&^CTK=WXB{s|Rc7n#^EJGuQ+*VA4$EJ;pQEHAE#MKaNp` z@vIT*g%Herk`}yU0&m|vhj?1kg){eyJPE_?A-CV)3N~*4V{vmD_v3*XBlQXWrqLdJ zbr{^IS;x;9nv< zXfDytJ(z-~j5Rdi=4>GK#}ifCc>` zzTjh69OM3_8u=5vb$D=AILAKE0KVt|{H+Cd@zQC9ltmy?w!M%t7LDsm<4*=#Z{Khf z=#7G|c681_+`dOZXDus46bw?SOx-RL+k$~C6opLpZh@Z z03QV8X|7?XjV_Blzka~7Az@tQyq31EH1#AHJ#}SUf#TiZn3}IQiCX^I76^aZhd>QF z3pjFrV%T^%aDQ>7NuqU;>iLBD|7ud4$DB+5$Oqm%E^=!AANj(5#uRMrN6i8_A-nCm zjbDZ$p0bM`Zh~_1$#2t#I`t1hdP8*~Z6hL_b>!Omx-_>Hr4NF~74O6Y)Xo5aK!3lm zcA?*MW>v_yuJcVNPQOaZ>LM!H(8L|M^Idi3czGhwR`S}zCz{?tvcqpJaSD&psCRR7 zAIS1odkv*mEBUJ#3lV?ut~)!IIUR!vjz_brBg}n++S=x;`re!0P-{Q%tx-IDUJP&D z^TM~jHCXxHBacpfUwY`fb=^fh&{#U^bH|1~$*yG$$C)W&Oo|h z{}B5gd?=S(=R*QCrQ7>pb$)%hiXMIH!a3K@*9cGIp5*2jpR>Mo5vFF>wZ%sl%}dln zixG4+xFFqD=;3m$ZoC#VsbP%a{nbim1C|mBsOI#Li!OPe%YZPP65-K{4%SBj5&!)S7I3FU5kd?3#aM%WUoIF)YBdfJk7skp_m$4c|GHq z@WIz7P*&E?W$aRa!dw({2`Fc|Z~ij9>CeK4S!U-tksP0bpSwU|BE$3CSx z_Z}b;wG{>`LVG0MT05_sQB>g9j&{|nM*3O^@>-~TIOTpFwkHlBa})=bYlI0kEY$oS zq8$r3|Msu7=X&`Q!1m6!f$_>03ks{rgL7Fk)V(1Tzxrp8&YZCF0eedmew38bng zb%%goi9r`j>ELhj>dZg8ts&0#&C4gc>+2*{!i7w8{Sq!p5>956ec_S{U(^-vgmEuj zCtT2tV>`Km#DD4dmJ)m#HK_wj?LG$Ztsw_^Yk^a5i3I*Cgrr-1G6$bV>!P@Qqw`o@ zd|_SYao41CdBCF|ERzto!qIuGGaZZUzw{hesu?yu8H;kTj7gq1y;T0H88d3MMVG$D z7A_zd{%M&*IQN|}2f|Lz$!TD4%yy#Kb5URLCYMd~H(N8~jfY~mZ@e+>GJmQ@8}M7< z;};+5e>Pu?el4`;59?103HNk9>NctB4;~CqI&+V}*R?V0_6)$axuYilYM|57DB=Dy zW!2F;6>)K``PQNP)^e!1Iqr9tsu+z@V!Sq1sxO#CKCUJ9Bk#(~FCG|&cJG@m$fzo4 zcza$-5(7cgKR!-J{EhsMaUxjk@Dx@XhZ&~NlovSSEof35xglyL#RqJD4zP3Uz@_e? zN|!MKC7NHbP)f76RwLB=q8U9q<0qZDIH;XX>=Rw)#G!RFuU&NI+v7^Zw>ra7GBGvG z&j>ioX~{Aaxxc1pfNsA&$fHg4k+-RTG=rP-2pp0!hJQQ*x+Pv1!Y#ehX{ocl68c&Q z*0+4?=lJTKzb=<>35fA_0Y%z;{^&{Fx4?r4QxV>L5=irxV7h_)8^B!y{`oV2pu4r< zh7$il?Q<6S-+j&VXgIPLJFKIBpnY<-Cb6xPJf2BS|BE@Ge`RkT&)vVna}l{#+^p2o z(6Eu`p{{UnV%pX@5tc!cHHj}7t~@O?MnJ>I}Qk3IHq2^gex zKGBT>|5>+m9lE2A=Gr6$dB1(t-Hv|@q z`YUlE;Qy@Q`?g(8AC5{{p)6Eu7^WftDOFP~j{E3)^)=HSgA6m?75m5^P*S9x>$7x;a zXNur7#$zLfT&+GW70?=Z>k29*T-R+5Pv+*@QW`*$TOs3~VTt0BqJQ60`Kx;49#1>& z9dDi_$=_pLv<#`m7o2UzXkiwqyliU`sOO#z+UG@}>qPJ^Vz-!CAivJj=X|!>3u?b7 zh+y%^;*uhNo7u5)abFgI<%}k?j~*z^e3I^ir3c>eo9CF&uqC%nz*`$2dh2!(KC6y6 zZH3l=Uk~;cxQkeQ!ty!UiAqDBn|*VqE(?h@VF^c@xB-8K;W^e0I9m7Gaq;Vu#P(Ft zJ|@Oa4RKn|5!}p1Nwm{XP{K+B3hQtX0?$dkTJZFR9{jr|>Kse;yyYF{(<9e98hev) zfU9kOV1cf;_MAbq&br7sS_<2ju4xC>z^^uZWA#J-W$7gqn}16j(hA0v_l^Yf;dc7knbn!$rqG|G{y%CR|yU z*7YcQtmf2>7cqV`bh|mz?nbM&^e%Dl-gRfO2Z|b;;I=<>;!<-RtfQLzE9fA z@g{ftg9P5&lr%V;0^+p1E`}E|ag)iZA+EV=uOvCwj0GAT|B_)AfxIp7&TL+>-yr7T z^NS#QKhTQqKP0MkV!NX2G5%{7kTnR`7M1T6an}Mc2UXK)2L@N8h>e!MvcLCRyW{wP zz4&$G1$!desGFX(2-koqYN3u~uyV zN;^%tQApQ^5~9P)#0*zDlbsicKqkveF-W&*T2SauH76*SG+pl zjU{GY#Cv`_kB<7!raN^66`V8?{nj}ht6GS(*3#77Itpgdqsh*FtCzA*~2@B(*(JK>B88r(F;7~rYN zg*DxpNZYz-de=sq#5nUu@uR`*o9u_|7o1XhZwb1EH}HFpIS z=D5h(m#&Ub2nW*y>$5DpdPooyDm!b?<-ngbE-V>Z*p zug8@ux$@gmMzCe%SJr|ebeViYa0=^9J1^QMw*ytx1>K}vuNy)Ek z$spUucXtCDM`Vu%_iGCr*c(Y z@zgG1K5+ZS?fQBWp8x4#ELt?$30kpN4J$sO3ix|~T97cI_6mo@vMMp%l8!ggaeNk4 z1C$rn&5I(2!welgjb2aahATMmECff;!szp}f)v)DS{R}q4S^d9@sl@9Ck)uz;vKF$ zx>f1W3r`|x=h#Tet*AbWZlL-(#b%eT&h5wp>Dd`+O}OGm>R#P0G#CAP%Hsu0yXsedoyQhk+W2CkcsPPd zAZZ0$r}oPP<``Fv!*NLVrT-YSM}6k`IX8JNjcx9Ud>QN$`ZD}E$&p8-K4GZob1qxp z?$I;7OcCB141(j4n7)tC7_wDx-taL{gJa7%X>CdjYe%1f{n{`9sHOpTTHvwdslua- zwsnbX3gxlKMPE5e@hO0~oX#N_zlB!c#pU-{eCm3?>J8NU8hPbFBNPyBYwTzU>j1$SCu1rtEga-(q#N4& z#wp1>R=LA>9BW&j`0i`YU}^7I!MT^h{8Vo*S|cEGH=b zo=@lXzm4<)F#hPTSmN_$b92`E41D5@SUsF_$N~1;qoLn1RmscY>^JVX0dADEZ)4c7wVqGJ>VcbD zH{20~%ef%uCQ4EGk9=t+l*#A;yS<-=j;4c*J^BP!-`**9UkMD+S~s0}MBiSd)~?*) ztK0dC-??J;fyJA;Roieu-*96(mT=uCrGCeg3k3Id16XYRc+*~|&AJw+X7@S1OGlzDItQIZ z&rps>R5jpk;EP*RYC+u_NIp2fXh5quN*Yh)jPD1J`Z;FddK}f*)U=+C)NKV99=`ip zi0MJtdZy);dJSIxv_$~1gf>l4mCQIxS`z~32Pjgdo`02j?_->N`Nk^{ec}$Ob^YpR z3=#Yi3yZnE&`ZtW_NqDBOHX;^1@s@T&Qb zssf3kHDIBoBW%c^7b?-vGfvI)Q$NW6JlJFAUc`mtVY^zy`{8;Co}}l!(fNd}!H+S( z{lcwcj@ffj>R;CAI!~efIakgR`d5Y3aq;`T=Ks`hc+5d@y)gX`T@e25MBiKOo7XHD znm_*;7|*i{>A1kmVYfGjJ9UggtA}w#2Cm)FA9&tS4y1^ab-bWv{0{7u_#02rYEv(4 z&x815tSxR2boc$Ds_5*o1|w`Nl7{9$?xSmXi4$HuNq{@VUTw{(fJUoqN)=4JbcDti zxx!JF=4S45GtzU88oH}A-V0<7$HK@r9g@6YUYj>ZYfQV%?KsS@v2JY}K7NdoX8lJ| zvG4U~Qb>QuZ+wXorq9^)-;V?3QCDYb_VPFyp-C?U%ckm9trvml#n&f$ zRYxrtEpaXWG~G?`Cig`XMhnrPf_LYE;aSL9a< zhqkWV4<&+#ki3O&{=>#_Yf}>GmGffu$>o0F3z<^!-13>wT)=>X`I*M1y))ke&H*D}jQ0~7iqkx3lGTIbgNNhQL(#&8FZ6T& zP4`y~99!xx$1a?D1;jp~EzAWVh1(C}se8;{kE=?g>(XbO?$gz{R+c`5`rH5u8c(pQ zO0Yc`l$&D|wz#wMHxY|YMmND4D+R8RAR3(;<~ye-_~Y&JZ=A3N_b7b?BI;Hz_|;85 zL6@t0p}EdIQ99bKQwG2>nXTh;*i;TQ^>Cw&roq9N=Djv4j+W9iunX@bWBWPuO+ej+ z<5&Q1JBdNvTDwc4%2?=zR}j7o&UqS5h^rUdg1>dgkMa*~1H6y!Ej$Ua`3C72H#H5<0hp&yZGXFHbl~PtsP!bmr+$ttM5+IAKl4)H^-Nb_ z(?cmrcH2#DYs0?klcz$C9iB1HIf@TGwM^txuEIfsRqvYNsvaA+V^q)F;5~@xr7^7B zP#?&D>4((zV#pSH!m>Dv9&8py6lZXoH{Pa z=X+k?HyKZseht=*QS)4TY?t*@+@x!l!3vjEg>cQUaAc;~Y0&Pj_bks<9QQ{3vn~2% z5X<|?2dBJ#0i=Cws#v|~3Up$8y%2W|Yq@+%=vz*Dukj?Q1z?QIVh%*gA3VTc z8rQbL_IYcrH@8R6!KT)+lH{2X`NrOOas`eXpsTHc7}77unw3NDIfqLBl+T!ZA#iC| zf-h-Z)AkMiq{2(Tl-wJywlpLHkn6kMghDW4JUmhAJCl?$j_& zbM$3hy>WC8J{||BfLa=T<~jW^aJd4d^|_~LT?Bh+=N_tKmv$UEW8}V|f|_t7Kx+S~9nEdHe?fJ#R$lR7~hk0~O^90S z*f$~^LbWa7;3uD8VXywppPEV!=;)*j@A0@mX|re$wqReFD?bITE7p7MqD{Z#CO3X! zBF(_S^FTSG=HqzAGO~3?VqenozKDB~qxxkr!WWx-f|Ay(7pU-Li#^~O<6mHxWF5?f zx8q<0lU(79O|T?|3piI{AO~ycB6@F+78xQg49XY;i+2^!#uQIl@uZB{3H>boEMqoN8Yp)Q%hIg!sy&z=%9J$cPyXyxKIrGu zz@BblJ)hKy>ko7=^Z4vDvx+-cQsa>K)pelQ39SPC+q~-YX(031&97NV-867s1j?)yiM-&-NxKYCWhsek*F z{ZAHu@o;S?)vf&!t+3|az`+w~nUSz3MrugAhuXt`B}XsQiQAVB?8242<3~py@l|7@ zcJ%@G(Sb(Gy+Ff1m~*3_yLTQ{vno4W$cKqN{?JYB1ZDC4Y@NC1zP`$?U-x)L#ZEfx!{%Hr^JeJFr4ioy`+>)~ffWXEP{%fXfKOsREc z$82f=gT@=)6%=5+u&Sj(M~BbamEV)h%mH$YQ`@>D6hPwvNUMJxy5haZSgkt; z_&WD#AI7@TE||IQR>xcjvL(Hejn|o2E+Ri_7yUmDeM9u{829;WcnE$QmX@*UNu1M* zHbzg*CW))6)K~#sY>OgWa%d!K!HIaE&63RC?9fQ`f3)ai!B^|K(t%U&pZin5UC3pp zjGlWWKNCnyaajg!@|3r+qk6!|@2q9HZ3%B7**U7E>FhqR}O)*&Z3Ej_(*+(`it&IS(fm7y(maz;2Ef zeHiITVy1ql&XzcD*4P@>Zm`xZ`6=HZW6`MXp2%@H3pT&>gweHc&fVCBZyyfQ4~7WE zcc~AZBzgJ);=#C(Ef}50noJtZlS3+2m-pP%+g8-bDKjWJIB@_4o@!FzlcCY5YJJx`?!xYHE3fCkcA7X|E}||#_sJ`* znMA^|W!?^-8nBt{9o|$7C7!V3j8B2bTRzd!qYIBV95HSC9CnRo6A5J!KNt4Sey{1~ zmN=h)A!klI$GxyK3zxR{HO?B3@T7?}|AgD*(w^j!T7P!KP4I;?v;;l)AQL>b;B5N> zHDu+Nx^=J}F3}2I-zFD4C#KOw`l=^Se~dmOY5t9D3b*)IZ8Y7_blYU|hff(ZnmB>_ z)Bz>7r4rwFFW%$rE;_IsZ_SD8qW-1Z+>VdOiNdFc*>UCi!oyFe!`0$IM=jh(>LTr0 zS0j*DlC>LgrK`{g*^M#MLX=m!(GtwpBe?s^=dzK zm*#(+)M&iIJdAc(;N_UfY2@4|buI%2gBQbV4-fSIQ@)i8G+sT5dS0MxzozaidJT_} z8r`K)G7CN{YL{;TlkpEdQ%{|1mGg@q+*8iIlXsi#dZT8n5T5A$ zM$cG2VrjN+m(&eZ2>Z?5i3d24glKa{&1#U;2Txwrs?nr^MFV$Xom^O-Ib$JK9nj0g zKU{KzV3ViTSd)rr=yr3?PFsET_o=z`=o+Xp_Kj8OF^apj=qzd7<7mITrzT%a;j$JlRTuxr=MpI{|P=hOcYP$65reuPPt~ap- z{g5q%!X;Yat=ZW#&!nf8NZSE+b-^iuS<)%_hP9Sb>$D^0{bJus$fk|qAYX&=95#hv z=xe+%BMq^DyXx~)nAfgcHxB~A!!bAy(}Sl9#4tKPy%u1y^NA6Ht+qMhJZX_AuW@@A zYuO2ft5AJ%dW)!b<6Ct8_x$7=UCmjq_^$U4-%D-JUIcn<@uY@yf#uLikJ0rtQtxfj zUgA6TaZikt^I&83Z3q0>iu@+Q0vwxP4Sv@$hkwz`O{{m604; zik!`SQ*`;o4~6>lun6X!PYUV(pDP7oa5oA*(Lo-1a8-rc*zNs2L%(Zwd@AC8ke|^q zaMj8QSNaie?%()FKYfBOo>W0%`ozc_YgZWiC#n?bRpjj_iMY*&BG{kDwRf+S4$3J62!tKSF zxvov!(GgXv7k09996@p{HC8ztzu(uybC=1{-pPe$u zV`$yhtH29v8Q^=hHAZlct;FNapaG)#?2)E6y;aL2Vdfl{OW$CBEj*s7P0iIW(q1b^ z*H`i?K}SQ%=GT;hUAno%)J$u!Iqf=q=|jANQT|VYZBj?^dH&FNdGax*e>c)E-(8(E z_}*7Fwg>K~?{Q;V&Bw}QFTRX1Z-KE-pRz@@+>0vfTbq*D_<1^DTjRsF=HVP5+Z`Go zude0Oocg5jlyUF&QN(?E*OM^@$3#c0)?Fq4f7;J@|0}D;cE#SqSxArbM*+diEb6>EBx^gAt!RoAazKNy5B>EE+IykAwkK-|F(mU(#q9I@S z&Fw$xH7BqocKGJEWL%bv+0TMB=OxzYz-U*^PKv(xf=aaaEiLUA5BLvw0V|Bv^nWe> zw(rNa!nBRIzvKUpwKGtc+tzvQciO)H8=v-a0R%;PJUi*RznZZ~5CkdN<8fvu=^MUD zNiFOFfB3rx>{o&U_aVB^SrP$%5F5&p-FJ+)_@Z8YKDkdndBJCHBfffXGT6oiFaC~y z<0)rfysiD5HiZxG=e2P7spPAF=N-OfY! zYB#SY_n^5wVsLBB?gTLWp1DIa{R;mUM_}u3d*@(h3pbtyHulYC z5nF#26_Fq2XkK$U@s+y7(<_9{`EC<&bgU-#G~LO6i9H_*l9xG8KI2ctW9*m<&Pvjr z;3x0-;c~^7v&`0MVqxe8pR9WL`)&w7fExx4ODbaeg5F5SrdGe#sN#u#WXx$*%S9sCUj) za6*@{DcSRl4S9iMj!~=^dqblWcg z{O8A`u_20|q*KcX+=F4s<$&(QaLWmxZRolUi+T?87dfQ()JjR0nVlfrW!9R=1?N>y z6^=Jh69Hijg-gg62#9Dt*xez;za7pQ|Hf#%bbp)s3#o+BW29w!??<@dzcUsZ!Igv= zc=l6!@82qD?~9}#pB51=FCO&xF{*O=2~ZDzAb|C`^he=@@?K#+_53ZM6u22!sMTvK z;BfH^5y$rPs1~A6%_8tOfA#m$I}eP2X1EVN;lCcAr&)`WVC;dg)Mm})E^u-84X?Mh zqJIp#W&G5<@_x_sW`>JaUb~yvsTKa7mDj{KUUaXV-ZaJPu=Cz*_TmEv*tl#zKuq5| z-VKnZF~-)e{FO7;SyEOG(B-bYi3qz`S7}8)!x!gTqayb~4@|A`AyvSIJ^dw>>n)IX zvfpP7J~`nst4&*3ts7itaOg;QU&J~+ot;*(c!uq&s);F)(EJG#WT z9bWLv8{h9e;=HcWz~EzCtVtxC^YUQ)JGX@1)^dx4aij4P{nm1L-)8ca8zB*K8px+x z3!D$al@K#C+-;9jpzswug2Pg&^}or0tq*G(3j0t1zxu@!peTlg=Pz^kL5`?f$e#~P zdF6F5HnTo2%TSHv!t0@Hp=`K}%=Z5GBf3wm_sM?EtrQuebjf5zwg6)kOwLL{M_WUtslWwRsY$$ z67>_J`p_kvCqqswI%&Av(E`HK1N2xKI&H1hX#C!C9z!mjb%-uv@jDsn~biG*o`-!9ND@(A-~dFb!75!-B*Y{1p)iTgq)s? zL_V#Edt7g-IetVV?-?&Y?eQR2amhn1Cz48&UlzYQrWr}W=EEgVAFwaBf<+)MPV17R z{?LjY2%ph2@o*lY;W&YuFb0`59^|ZhV^2GKg8=W9t(dwHS@M8$#uwu(}?-l-%UU>ai!CI}AYvMe?=f!~^`x1pmZ}k9(%kbN7$b~40xIPg? z(jgqj6PE16F%lOj-<;$JXMU7W=$Vh8b5BoiTGEq3`0dmr&DI%IpuL!xhZEy#;MNwc z7R8(tt+Ab8$b#$S$>DH@crQ6H9CMJPbvn0mAjRy+%U+wI{?tjBXLjsplQFtwY&%(A zeLVMfJX>4$O#{~ED65G_-++!2Ykl%DgZCWYEFY&%8KIqcA^!Csk96ZJV~NDvHNs3R z{w_ZJ4vPDc;NWl{q`{%B+-0`Fnm&S#ar~yY7^lpoQ%?IAJc*y^Rcm zVn5ef#FQ`S1x@tcr)Rm98;#6}#?~CCG{$UWeDupXci}GhF~RsB28BBHs`;;^_>9^0 zm%U61`P-Bwo;Y*t7~_Y3ND~@k=eMngKNFN$htM_S*9X5I5ISJHRwIMBbC{J}GY<^B z%mw$l;xqFjJ3T}!p5jHHCNS!k_TA>vgy=!uj7=W!80&QEI=ylaO*JE%^De)fw}-%R zm&A+7{k0!cb|b}1jU+w&;LOk1)8E{)m)=(TJTJ~mbyNa=$Xl`6n7`}BfVRH%t0X`4 z)wNttd3ul}ub!s#5Lod)YGeMcjD0`RgIL8jM*Z!lM{ovnYyrPG(4$^;;Cx~;f<+9? z#Ofb{PKiLu8G^mT5sQ`fxU-Hh_{7GE4#}S%vO{a_Ors-!n@Gm7*!_5H>ex`1KbgUr z7(OSI<;f2izmwPUg$%8Xr#(Iz+aXhY{xX6C`^0p(Ie7Q*8l4we&FutJ)(2)F-)2R5 z=WwyVje*M;dlBcXc5rjHtxfK{3*TB37}XU$`#H3V%HBY*E7Q(>KB%!0%Us@M4>ra- zj|A&4Vyj$8I~Vrk5&VIt;1BUj`*OO_kssjRn}KDVzdqCWi{=Y-L{@N_C;nm$Z;TgG zL!XpSkqrtMo3G=B`*s(>hqdwKoK91y>NhxZ3nAaTJ7r`lr3rn@;;0ver)}p zKp-MO%Hv~D$*Bp)JkPO}s+g6+V~+OWc8vp!rggenpQS|;Z~O4^^Kw4NR5h}5WG`Tu zk3LTBH;y*eG&K=kw|?|0kXYydV7g|?NXKAfH?AB4HS~t60`2Pj#15Fg%yph}6A(06 zPK!P@`lUV&O^t0=x9S3f>5A$o7$yQWcG+e)py1OiMsGm!c8=_9Q0MQPOmd{U5^dH| zJ=LLz7q?dNp8hzlT z?*uZF+auSM$jK{S?}%Bg6V2HdqFZy3l+ zmd0-FlmI7BI?Ha;Tah?30mc}%x2te*>z8Q6_`qZguQiPpUV(`P?D;wmTO+)0iKTdc z^B?ka{^X1t28&>nEj+#|OO8hxDNB5t^cHXkZ3BTr|2O?A7 z<}JERarlO)xn+#qeUck3)|>eG))3T>(>xHEZ$Z9!A|W|4(5oRWn>v!)+1_voE$l=A zYj|g4<~~W9t{YnDp#BDF+4RB4`O>vnSd@YTG}YX8F06%ukudpX8TWCn;~}e!|LKrk zySy4jHt#cV`Fk#a{nkCNpV~APu74kwgc|Ijo&n3?+gtd2Yp9h~LjJ8|=T^L$p&!4B zjULVq135{;8N>bUG=u`@4^i`~_rhlw0@;$sV8BIHwX&zWD>i4^4JEPdj37 zTy!F$_|iz8DGqSdMN>vo36D+R8;@h`9A!Po#w52(8|dS6UwAW3p5;?=@_@;s?*yMZ z1bjn-trdpaIfYje(dW3dpoK8T!V-hk@hiXLlcu}IBpf_YBqqVh+g;R{tAL^5$LRU= zm4Nq!{W;$RSB!9SVj!KgwvQgb8jClaV40i#a0~rJ1U38;wbDxr zV$A3>2Rp`>_L>|1bKd!vuI1*K+5w^?|8l}Ov%?(qPC9{QJvsQsn$*r<7$wIP?0)zo zk9waq!-wJV$vJs%vE+T3^JJ6Mn*CVjhxSdL;97hihKg{M3Y>>l13c-h|_$^LE3Sw#5U?!+c&a!4^Va&+dTT)cB`NxbT{ zqgqEo*2NRjq9u|?!3%!mzq+f?GC!#l&(kl}$_MIaZ`PqcLd2D-8U#LNO8#a^rJ+Zt;|H7t)kGi7b`_l_!s7sug9Obx)z$?PCm7- zo9hq7pCL~C*57@MT?V{85=-6qEIPJ!4Clg*N^(JxV`D#Rp4jKPd)K=4tUUTFnEF?& zB@;Upj>WnXf976(Iq@?`CHZDZF_kr+cruQb2?xjeS^sb^UOAT^9l%H6;f~;W7#rxM zuB2riVq4$WN>(y!mT5oehZq?@1V2IxSmvs`Dm3Bdt@y9Z-$?uo%2j3fV_e}Mou5+P z_V62jb1%+vVrEuj?Oa#|e)Lr=_x-ax=Wxuuy5>cDYLY1|DJ`|v(o%}(9@!kGTQA-! zINbF}q)$i!@E+Xl#va=Km^`WUG*oQ8f|w_)Ob>qxG>qgB9MC#?KqyS>E|L7mI7_gu zANcrD+fSabI$7+@-Ur0RX=3=nBWDt-I@ z>9`+*yg8}hnT5RRM}y5wB|R8*I`RE*6+Ypojej<;;+sH14WJEg{~JENH+gtvG$d{5 zHx@eqX-pz{hZs2X3Q1p8I(Y5PV6HOxD*m}n5H4_dx^Z=aE_yJ_EaNh@pV$7LjAUMW zt~wLh1s=NLtP_@Aa_vD`VP%A~+ZZgGJtueT4W*KlSBpEmV-N44g_~=G#MI6n#fOKT zeI6g9MtGS4=yS*9Ip4>xpAE}2D z$+Q-eM*H+(jC=mN1}c!4bjnFCI75CwfR)oOlX#qF<>`>Kbe~g^`v7fA?^x^|$A0?Z zU9;+&%!3 zppV3NPtxp|*K@vQu-K1DK)ypZIejV*tjq%k`eaO-4`HiS4$p8afJ;W|iTy8I1?=;aX>bHaYqPt&oad{x%+Ej9N332+m)E`$T4d^(E_CO#tq*C^ z%TNl$%h;_( zC;iGVPIR16egT7Zory{Htnpk=QENg^(Yevvd*i%eyJ{5ZOV@Ch_c^S`DHc(|+*f(X zgU5qk_K-Mf=K+vd4x2Fny3<61yAh8kfo$7Z*lKh9EY2yp#x>Z~m9S#eBze~6=I28)23SMcN`XuCLN z^f@sNKMAdY3$`CX!5G6Gqp-4{9?L97ZkuT12WcK2)mHUh%%xFB} z%*O2n%bc8*E-Cp#GBj@Wv#*m$C}TJhc=$UmqS@z6wo<`cXWKil@ogWD(H*<4lT*$G z7jc=*T0KRiNW&Xr=qL89gTMGT>$tF}Y-sE;!g@^|@P)3#+4m4K-|f8?S=1AMT1EOD zo;eTZ!`;$9gf{KfR_^~O@T;_37O#aL;O0JcFMm06zFKRA8tIRS4t&N@SPyCC<$++@ zD+%&`>W|MG$6Ze!wEZC@yxW+k$oS1sEs_SOAie>8qaw5Yi&)&^(c@5*SDxvT4`fHj z6NlGa|5?6rg&7=EhN(8|h@s&JL-O*Fczs|uPr4_mG7~uFSsI2#3z5A6J!K{#UBv&r`6-9Lu~DIM1?tcX zN_kZdRtcDTmMa5}9`vwF;}8B;a7#dh%i!BW{*NL0hOplp1^L^+63AZ?5t&2l!eL~_ z&K^fxHM*8!viVJdK^{ECA-M-W+-3zHp8g#`in`Zbo@SQZT8vnAWti>Tjj_@9g(l9@ zY?H~RD~#WUW6dciKI%=mFfV(vP9NK1HOU7*)$ba~$%R4EevsK3;Xdchk1reOL!;J-HZi$H^#ya&{w${l+}{WnjnusI#{_3HIU9e6n8BU8FyW&Hi$`qu#abCfs?G>8>N3E4Yb zhVpIdC|=`=g;2AvB^mnGaYBZqB`l2v53zLh4Io8QNL8;xT|NnxG3MlOc^T!1HuL0^ z%}8EsbDjH)Jvqsi?n5hFW=1&iF6}hu;Op_?_i8rwOxm%m87%m=$qoLK{fy!7kvd?~ zZ&A*(&PDrIt?hIk`5F}?%!`YCY)9o|f^&G=M#aJ`2j3V;WtX$AJ7eJW8e9p^vRSKH z#T;4u&L6S%;YqWM+(6w-6uP$%;Yp+q?L4u|Uwq>yDvLueY@aWsHFd9T$<crlPp8JxU_6%0uZ#Cmlvf%ZJ~7oK8uxI!NngFm9oYGoy!D&xk` z0xJGfU*R5^+p0K}xe2!q>B3hQI78*j*=;DNV&RDRtHUBM^UBhB`m)Yv4t}U}elN8+ zhxw+F=!qFQ{>wT$iK$IrW7W|3l$X<8mc8GjoD2UOgED+>;4?bK&N-5QJy@O4ZKa7D z{q)f5T3<@46>91)Y9vep-9_EV)7L2s=H7QXjZwK{h3DjPiu%{79gUvJj}`{@_z$~NdOEC} z=bfm&YN67v4@71j;K))8m6lMfMEGl#n-iOdN!9~hN|iAGuyjc1Wwb66+S6bA?7wi1 z6%5CiMPif7E9XaKQ|34ifP<9LJqU8+fXEVaba0{PuyJg%Hg=f7n^C0A!)EL`_JE3~ zg6KO`_K9t6GtY5!42_5;^j^c~xEw*AId=Px9`Ih;ZG_6zBpow_+>PHebm zrJEbx%)@`2*GdYb3@O^!UC50D7qgWR7jst&F^BWqC6+32Rv+{ zV!%KL9s+|+odC?OHQFmiKNlXSI5DTTjP|Nfu9=B%-DP8L&ePuh zl~xVpOAp~RRAluf+XOhA2jOL-hn*Le{;iDyc&^izZbjlBh!$CZvI{7-^v-<`J$Ral z;732lr!R-Z*ayYY+F;w)p8?d(KsSX|l%{qECBs*q8M1Pgs?`&*#@t|9 zH+jrQhW~NO{ZEz9Y_yoij)6c8^Lq2gKYSQl`H`*@C7}us+wt_Uv282wk@FF6VB=@q zr{<1FmwDsQJmTr`4^~oS_`JXw$q5dY3!bx;eC1dIipI``7cSTGT-PBv<tdb=k1$$RozXX4Ri zP7ZeWf%!2u?-6{}{nEoD^{)RKtioSv5Bx(ddV}{y0VmGQ+k=ncdVvM%8SdB7LEf{B zy!Vd?1bxISezc4SoLhVWhf~f7FT5Mn-tT5xMEM(6ktE5v772EWCoBK}KmbWZK~z8M zW)IGuG?(}>WqrsCh4qXa-&P%qMypqyy5Z%=!th3^jNy?JeMr#=r)NUfXzqnQ9O~)5 z8?ExSCj^!t?u^ED&co@Ocifz#`1)ttN&sJ29b6)x7Nb7KaEmCe5+^JpebI|X>&9&~ zp_)6gFT71!Hq5QF?M1uHos<42uY2Q1!VLb`ZnOHvIOoaJKNnNZe~Zh0{#kSWmay_6 z`pFHq-h%+$bD4amAS<|hM@137{l6pBydAp|3G{`T>ysMkTm2R1FI@oCswf1?(~fKo zjiaXilg_C3{+U*0xlb@I;+juim9)foGmSB%g9D%^g23Nd=YM*_vWQP zxT<;jjvhT|Uzz1#FjkU*MqOA@o0H!ei*14RILSw;nQJ}7=^aNhgABeqp;EJ@5YcD|A8_=|9JUFS-C zb6#kHGQXu|PZHxQ44-*zTPUBi62i<*Hmzc_pVEHBm)foyTj6$sWhORuT_gS{Q2Yr9 zeqvJ5fe$9|bKV@&hh+uxA;uG|&p2^J^-Df|^e! zA*)2iJa<-2>~(uHPfml@7KpJBS`liEOCgepDYh>S)1XV!G*XrGjeuJ0ysJ*28{CAHM^MYvxd|VA1B9;Z3kgi!;17 zeBBPJ-+l9jAEXVY!IrHRFOErOZ+@j{T>BZUX1LFO3BPH4EDBw#pGdU}*^jTDhnOoxFMmVtUi@93@ZX2>T zW~QWHv}jH6q;1H*i3MrR9lZDMC<=e!lY3aRjip^^ee(Ez(Tf3^Vpxr%(E&cJM1rfZ zc^y9ahV6GS9CV$FZi$>S7A@arnx6#i;QFj7vGYM$?9$2Krj_`e_P(ko2f@?iDNy*- zTJ~VICrf@E<~lB>IUH?~ z94j+eMtajZW6jmzY*!_K>u>$mQ{LVqIC>~74!X)`t`|HWw(WTKSs`e+tQk;0MuEba z$-!w`vt4})NsJyC*rMuSyM6?Wmr-x5a`ji0vwDU6_M~~lBIw*3bPP@2q%R-r)KiL? z5zGh6bYh9Pn$Q2<>-5no6(@n=Ubo)#si&-dX(cRej&4JO0jd6MtwD4-R`*yMP0nWIn{qa2jeiSYwO<_V!%p5d z{4e^Ow(XR7#R6sy`G@(Vzthr{rE42qY3EAMz4B09nxkXrJNM>-ncF;h`kuoz3U<8a zNkyz3rX~mq2TV@@0QF%z{17TloC?pqUQB?|OlYW%z8qWE-&-bd=Yeyd-sK>H^I}W+7Kj-igU=;xHGYj*iV~Vv zICUBtLmEU$C%>tjKXhY*i(Hz-=)OULnArGQEeTT|Hyf|s?{JG@pBCj(r=DBz?4|* zcF@7h3^_f#(#f-xUtHqY4mEbe{z~owZ{I`caepgslhvvd= zB5*(72x(f`rEm`3Gy~(@u4*SWjY!l9Z=pyn+U)*F z#3*vE^+3;Wb%UdO+2dqKYWEtOP;x$S1Fn78$D&$|kGzH!5i>h4yACVtOAo09iids; z?1Z$R<(w6XG6yuCdroj)UueOJ%C5Wngz=t7q@|`=c(xwD*pGrD)JhX}OAlrO~e^CkSP z>?d9VTjSea3C>%fU7an0a_e9M&HVPH?M6gER{*8BnLOVH0 zBwT$~t>yd2z;FsoKK+naV^Iw}j{L=yo73KCkx(nGqIy`Ge6N|u+xh))0U$a1nI zrIo{)xNh==3E#%*;g4&i`Fih^lTzSdj69rWe~o@Ql31gsaqy$F|E%ifD(6b9KLeqt^-50WFRL^CWg0liZsU5 z8-EyzagfG%4`YJWZ}qd>^4T#EdgYhnt8K@`F_qY8boTZO(s<)dtc=vyx!8HRv(s<* zXl$DVv6j#>#f_i5_-HZqLp45exY->rqsFPH7(|R3qdCUHh=VUaPU;d{X~Ru^ERDYm^d6tlWBH4F);_Vcg2#YkPis`G$wxQx|#0jC0}WsI}*j) zcASkps+jW7k(;E<^zh(aZFQ3M_et3T&d|A+dB?W5?Wt4XD_(?e_~gDB|5MT}gv4*j zH0f8|#5KoRH5PO=GViB_!Zp8+SEA34;~e+-I&Zb4()Z(IYKe9?sMhUwf$S<3G`swiMB6%7=p8^;wjLW-kX|6N$~Cf`Q-4)r-( zoLp-rJ=*a7TI&Xr5ZJC;U@s|k0~~+zPqO4j?DVqxAbk2AQ-*sKL%r#I6gl}yEz;CM zY6XQqv~nzIb}LFa?7|(^R7HQ1C8;>YkY;LCdS}0#yj{To#-Vo&fbdwW4t8q-3iTw z6M0D*V)g!WSj<<-D`?>#LaXvNE92iMZGp@FrBoAs#k=CmS>{zYj(_tS&oeobHwG~r z-^UHxC&JiN?CsXdjz0(Aoj!pQ~{-b#FgnoYfI)Q9_-!6l1Q58 zc!vymrI0#sC zo6#T+C3(4q3z}5yjL6Avr@jF+nVZEtO!QKWL7%1h0&96)Y}rXzT9lQw`JLtoyiW;0 z$I7Zvu}Z!m2MXs>cY@*}sb5IXJhWJge{TTe^MAkMi!_;5?<%y(yR6s6$z4lCZu;DL z8%H8J=f;?7F#WqOTSqVc$6SSG*$EC-x+{no7wR*%(!cOd_OXuW#{6J;uWR(1IQ%lk z4ylpp@sv4?K8@@t<5Od;@kQ?=rv+YhRKZ2|^&|L^r*mxTYg3~?M#P!do~`&YO)lUA zYncll=QnkuF?kKVO%IOU^WIWQa~{-D6aFpOtk>`Ze7K{3jAs0rcv4=hAJcyfTI{+u zUi3HgD!0I8?ljvk!9ae$tb0RcIF@%(O9;$$gTtR-dLOWKKg$A(md^}+=Pz3~%nIx> zu@P>Y_q@yl+C9lp%orCApmN%pLFp!XxPxPpT4d&5a_n2 zSYgguA+!Q6lhmZgW@cnN^ub@biiZrLY<)YJuMx{vxVUPy-mdx>g<1iXuY=~!*91ml zjog#>!-gYwtmz6#uM(Mchv;Pd=s~20u=ES~7}6?i=RGKPOH4hS!_a^PHxe7ott;LH zoumHYk=rxZM+8GB%zAbV?Ay?~T4yw}*h-Stw`AgPu>y0R&>YSfZ%M}V4PY9{8$6rS zTU%@P15%^fRDO4~Vq~};u?bjc+_RFmTEV2{%sO_@sXw?4q;vDK z-PNb&-3@R$^o`EM(3x3>I5o?6DLK0qLE_JmoKxp!Bq!&G=w;(4r3~2(4F1MRPG!K` zc`WFvF+yfuF?725p`jN?bDYBA_IQNc1F;GaQ#>0}-sBR;;hn?SQ`=fYVhe*S_v#tY zq+KK0juhq5d&-|$tx=PyeLX(j;j=eIk{w;ryV$8!fPbl-b0EoN9c>zl9^~LL<8KbJ z;7PzQj^K$E_83=aIm>)xELS8BXDyD}&--UGF41R>Sr=szzZgyaS2;gRW%oW=tH?6N z%Sti>!kOz!tm{(byrTU{G}m&B$f#)P zw0}xid(+fl_c-_%MB7PIiDjlp^@D2&pS&LA$u~~x3FiYfRLvdS9R3*Ka0w*1%_3yI z(wVy6|D?cCs1EFQ&O`9YErahU^zYP7G7o{3Q9dh1hXId0=6`F}+u;B;5-S3HNdc}Q z90(0h=4}U351Av;E4V?|N`4YE7e491$o~L4Sg~t=l2fzFc5dDWxUr$e-!l(?ADqU* zBbQ|PHeIiAri^g#ulx}HzvnNTLoxQV=D9{wi&%~G4PZHq)zdo{P-nL#wm69uKM5-r zo^hJ8#{39!@!|Qby3+P#H}|NdZq2)}$cddbpnaFyb<9gVa}w}_Wu}bn>Zt1{#+)@% zMLr3PklMUrB6x*I!zsF`J9kN>v@(sae4#G1w@BKC!?<(;l5^D}(150G6S#bO1Ph*GC5DdIz$s6 zxASF;6A;b;SzBJ9>`$WDiZ#H8cGe7@2R`K#hcC~B)jUHRUS7q?@xg-lXfiYv>>BO? zR{D`G=E+H(V#&qfX$imi*VOgE{QfnIqe3gb^N8m)6bz?t>a0QE*sX|aRF3jF#I|W1 ze&c%ROH4@wYjiwYOGvL6%NM8ct<@4t&g(fo^9(fq^|&|X_G-(PW=!o()nV4(0#1Op z7$*w<{P?$MSs6I5y7H7GC10imdlXk3dE}NMvJOo$W<(+j$7eX2EVppD!JAfm_mr%O z_f>QJ)1Nd|E7k14_3vGx)+FKBsg=Fzc+s_od1npZaqBjhNqi=~oz8d>*v`SfOCS7jt;2()9{xh< zS@-<1^UMZ(JtQhttRg5@1=TCJZvY0s)2|rtyxLbvz{-)y0d56}w<~NOatah)1Tf0Y zP^`092q(7t1(gd~yvilHZD5`l;GN-XgI**@ApDxavv%_2-vU|-G$rKRg;GZx7so##q=UFB|G} zU!t|IgUyS)9tO+dj{~3q{ud@jNPc>aXWS1%PRRynJBp^*wL0rrPz1GX#V&jC=^%Jf zYaH(J6wsmd2QYgx-LGq(D0yI>Z`@)&#Uors=QKo4T9=LAucm0q<_4QuRXd8oGN%^$ z$tRY0W;A2Fm%HnoBW?k~()(ycs5Qs!9C#!LcclXa4`F=La9BtU?|bZlN4sg4Pr4;4 zdkb6UKCZY-Cn}HqW^hEuwTvmS4+V?&z~ttn>=^8pV#+$CQ3r0Ap)}2$I1Wp3_X&_S zOC!9Mr=*v|tWmY+j1{x4y%rVvww}^YiOf&h?n||b5bm@ipbjM0n4avuBsf6Y{*VD} z32A)PaoQolFH(5YD=a;S&a65iJ{Kv%X8&MEBb3%+kJEcXA9E4jdYc81(422tStC@n zQU_t=3G|hfeG!K2vvvZNWwQt>TAqN?=^S9$=rf3mE6>hgV^T;+sc+zB;z=rIu9u@q(IgOpEQ;$3$?Fp^3vEy?Gw0L+Y{ z&H(3sL593ahA5K%g!14072y6RP_#N&3#0b7F0%YnI@*txM4JEG2tez+)a4dQW8xwspnoxX8wa(8VAPK|VB55S8Np5zHu z9cw!;@y47fvNl3$om+YNR*NiW_~?q=Z|I$?jcQvVbY=%kMlXAXWu7OFj!$I#^box) z4TAU63}1M6e$=~Ks@CkBU3a+Xrk^CXKb$ru+&O~Vp4e19y3yJ5>>&&3oM5=DJDSY0 z8yLS+C4pU|DRvfc;pNEhf|Fl9_{BX+6S(5-XsSbY+Hf6hjLOvNI9*40mwF760DGk^B|VYAM|gHBrv)w&8A&v8O+F!4%04lUl-WM@~5^}*+O zewx#9(20vthf#J8)WQO5T@oz4qUydppR54-)eS;4hKxqblcHFjL>zq_o7_|;?sEq{ zR>};rbqnNyOeIT$kRQ;@zNqC~eyWi}1B@|_ElmYG45x*(PwfKJM_y%4U)T(tldhqy ztpn%y@0d<128O*gnjIbzGj4P3czx*v>6|EqB&?Ykn>hU0Hz`lEEE_}E(k^_Lv z14pi>aL7#@TYfK2)&W$^o=dpdeq;4Y{U8E4Es|NBamNr&G$Y?kWT{yQm7O1iIhDGXzKYMO za=)sk*p4{c2>rV!9qXWV>#Da#hcl^NxZ$V&O;AkxSL$|NXlEU8^lBC4zZiLXA;)LJ*l3WmM1&_u?6hRNft-_skr@4enIAd> zS5nUIu0woUdJ|n_n|*9N;moR6PHv>5-HpiaI#&!Q^>+H0YUi=UP* z_;Qxk(@b*Xq+O|(bCSQnhY+1blu12|daaP{Z?W0@$h+yumsY&Q@Y{}Vm!`7V^|K^h z`??A7jw_7#=B@EYbZBvT1fxeR%l!z0>^p5!JkSm>Dx zpI)|I$!x7+gNeSNq}=rXkGd922H`qlf`%5ZMq8ez2B?Hkh2ceuydFIY(HG*F#Dt z$Uaev!6lg?v&hV>YeLxV>-h$|62TxbF{ImmYKRg-aWD_hdo{Tj;r7g=I>dS*=>_O* zXnzP~;n5U^(~B%?u7!f>Yc9+3=aMPAegvG6k4*RKQ{sgn?F~5#!xCOaV@1h$JnJ2A zTUAA5YhY$=WF33sx8B(_7Vl1`{_OCbgRVKYuy^grZ#*$JGQ&Ca&Dh5k6Jzd+DO#^wig&H4p?9;`I%xd~*8I_L zQ|WbRt$9@1$_4%{F7a;_zH6ke7^FvnI^SxwT%XQg^TL15&w9^z`J19}`g`GiK#RM~ z4_bh5nBSJ3_>;eV?Pm)xP0r;w;{{ScIg@y}wpw$=V>0tn?{$!`pbiBTs5eGdH|$7% z&cC8W>N9hYJo>48qiKr|zxe>HnB*$>33K{yV@;+CU+IJC`MId%8jT6c&NSBygisfB(pWRhE^PA5J?CF;N|Ugb-_F%r?r z2yc359_t;=HuPmw692^<9p-Is3DxW1aF!oT-|UfCed?T`SwUW`AvS!ilNk1Tg*VM~ zEWUKnXLBIei;0>*Xzc-SIU(Z?JOUoZw>PNvVxB6b`?&HJXR&& z1WU~^S_%rKZ+pZJPVjiFZ#pg9IufV@713cZ*|eVQD|R`}O^zgfJdoWA7w_PXZq7Gb z0<3EhmieI{;K`BS;EruOxy;6?`-M@kLfPg`YdcWp5B&rl{Mo$HR%pkQGhzoAu21VQ zFlHHBD-5t%$GL`-w>hz|Ksl#{%{X?&Un$kpD}FLh{2OuO*!9}blDf^`WIpIBR7_6DlL!*$IDpZvK-R%cJ_BS&0NU#u-X3LpLh7?<>MI{kHT7g&5! z@*E{whXN6UTES!_B=rLIpi$1Ti#}qIDNuV@ME?}5Kf}sbPLi6$LjszC^<%#B17r*HzyKaw`qej|?c$eG`eTmn z{&RrTfh%4e!qFVO%Zmp`NfyL}%PS*2#%ETFM9V=#!DNRZ@H+HI_2{QGqz}6QeKyn{ zXggbpJ%t-A4}i*V5n|!UE=Lb+(b)0Aq@jc+fW>Ssf>1Id@LX`vRSuSpu61%W*YAvJx>~M#bD} zK2&l+I!SV6MuKS6rPcvII2{dF!ta%?(wiGy&)TxevFCN#6B4qt=wbn7T9;r&(vBn|-|)zTVL8Sv)b&K?&K zWyOXAulWdca5%*3MZNGu11kU?g9pGkG2ye;JYd3OfHR1R+rGec$UXrC&p8xS7k-1uc?!F`516Inoj` zW!DSDN>Y<&}mki_1ZH3Sj6IaA^>fYI%RkCuj znp-8F`-zuSue0S(U0DykA~~Dg^qKk0`=aMWsmg3$`3)FipQa5Py!AJCNhtBoInkZ7d#BhlXLF-4oHjfS`YFTnD;z4;2V~ANnFk$e}NC-f3;fp|3d#qjTKyG zb&Yo;aWAx-%V)g}T=>P~eP6G|ySQld2!5`!lNSzic(Ur#|M(r`EvY98-^X>W(+04o zWo)pNxEDj}{PC5yKNprDParhWP;Td8lM3aZ(hR1DmL&nl5)kofFvrH{_Nqjj-y5f* zm!?O!-Y_P%D&OL)Z=YsGwG)1(E8t3B(Jhy54XBxC`-2X3;;o=c@jHQ?rDA4YXhAh?foglBCE zfp{3l{?nOdohUe2d9&g(to>x(k#Lky8K~SCItOw5`1xxN;b>i}cDiuJy*EeYeh|w} zMC)W(ZEHm%v)7T;9FI79dv(!~>Jl)w_w9kBI8Yg}na7R+xrQzvo8rh9C%Xoz^E-DW zo;*{nmYiG)_> zfx>AjFo3`yo(*wyVXd_DWLHRQ?X*a0?aop}Iu>gt(>gbHKU+AZU;CpTl;=JN-`6!I zc7gYv#5&X#I(m0Jbq{(h-2i*dJ!u<{_~AaS;eQ%OVJ94ep~{N|{KR`}$JR#g6Tz6|BAq)CKSL;jhy)^c;* z682i_v$mY;0jhjHcj4%so`-xFEqHFDNhG;bUsuFwWFH?+KV(&adhLN z-K!>5{Y?LsYw+lvdJdrmHJT&T20cgWimikzF4Fs9rKnyWww}1M3w+{Po1S?(E>7&8 z$!FK$=Q#;G`DMyx)$kXwc8PBPN%Jm?1XdV)gk|+4}37qb1J*wSqpM8zUp%pM%4kMq>K`_W&B;}xl)$bO`^e$Du>u_vngg7|ovOIob*|NX zL3dD)v%)-$nh(D7sg(@ZrAG!g1Ai^c7w18va`&64zV$0-{I>9oxfZscB~W(cK9>up znKknEkY*j6&3vyzXRd>(flT1ptluYA0XWQWd%17LsN}4~2rwl3FJNWRL6mDi%XWbh;`Fh{BJJ;f- zZu_Lk`V1{(nOE93yhu9~n>qIAJb;Hg34A!sXcCjm zJ#Fowb^OFaJ}N9vBSt4P1>*evtp~U=c0h?uES#V15YCIR_OdYq`Ml-hlKtk;QckWL+RjyTyhw4Y#d z1lbm^aqN2O{1kDWV*Xcfg%DJ<8!w0pLolI=>0z)C;T_O}qvAObS1SQDADs>7k*D5# zBE*Md4d*5MQ}=Wjez;ju;RPKOI}b_N{C9NE2{FfcaF&K{pvLG_`RmGa4w`7xZmr^D zmWF;<3$4Jxm2UHtr^c-q*THDzf5Bze=x%|reT6c(?!EvUNj0gOt1y8ia z{m`q}3g0#2JqU6i7%DGN6h31U`Pq1{b#h#jW4-L0psd4q1U}u@{7>5NB46bmfrop` zKZ4_yF*X^?S>}eVyMkOZK5M+mA7RCU_ADBK+$T@oF!%jpz%mNgHQMpXY=gEGDx)b{ z)BKsct%W@TcOWoxY#4k-jgLK!^Dj3}eFX*&cV3A(O`lKm?P6kCj5y8&$^aQkIb(xw zV)=Zg@=cs_I+30>PiyPVg~E?^nHkZJEV#~|L|VJ`h;1JE4E{A>H(;Nmc)f}9&;Tuk zo9b^TJE5HDcX+1z)2cy(%;||O1ixbC=;4h56JPf_;)ICh1-AzN zM+~roZMhz~$~Tc+4ov#aJ2Sm4j*N6H8A zb3PZAE{$%v-_Chk-^t&!qw$E3JBIft%Li7dog0^>)d=G**SL+gtd zyJk!c7l`LT1q18cHyP~t03jlAUP+Q#0m`dGHk&^XhX6P)O>M{)G>7wWX--lhsE<0Z ze~JnquwEi^@Su%63|jHD96vJ|Sq{>%TWTiw#PWyr^~u;x@o+^f?;kvT!g^>dW7msT zQHoT|0{8^Vj}3`unG%9mL;nPe=>~MHPleK8y{=ldvXE71e)LEV&Gk?%Y_M`xNT9Ea z{YhnB9X;-Zpff+ixQ|rKWnVel$3{ySx$IJ{M>mdEIHMAC{`eY6u>v&fMBB#S@4KzBZU3*}3h@I#{(1+Cs28|8b+4HI zL!Q1IU@Oc8(!4b4NC{BwirL9!i|4PMjch6xpC6wPVbEm+gBe#?vFb(tLAM%N+KqCJ zz;T{pP8J5LQxDIvcF2J{pDKHHa!k)(Yd~5C_>WFz0XO z*pAX`_UKl7<2i?j>ePXmk=fqyb1f*o_~DT_xyv3*gv)aR+-mql+ys8G%#v6*wdrfe z!5D+to#XS3JiO>I_o+$jT6>feRINBY*A!$5!+YT3H1Um3ZfZ+slgi$%xFRk5NqC45 zex>|?li-~5K0)@!@bw=2wrYG z8_Ne$+Ek1~lM>ICg-3k21KQ}+g8~HXYkTs;>YE1FekhXz=gKc9pIG3PK!1WJxrMJh zb35V$lF0YuP&9(!M`uX@hl(MoI&@3Y%4ZTz`0mr0!4g-}Q5`LpZ?$q(J5Gr}2lD6n z1cRv@cWM8{4_Dthj`6N?PyN4)Yjt7Ksab1)TN`J)OHiuCbsfW16LlcJhT?U?jH3}O ziRQr<(s?+Sj~3L#JI#P1Mu;!>lRt?vKI96```}4{t5+u_m+O(eoFCze)LcXquc_v6 z;5#qz_6t-xhaSqq_QQM)on;L#1QjHWS;c>DaBV;_NX^RnazVBRIW@U2A?HA#N10HJEbGeSErI&Z>%^8Z z-48gT6)+M|)hOg%m-1q>=A(_L+$~W2M$Nql?gfo-Qb%R3Loq1T8#g7w;q29>Z`{3s zRg9CqgURdJJp?>NYk;fxCE>j>m!n_w0l(@7?3hr+u!_-kp!ho`;^HbchZt+!B^EtJ zw*%0_wZ7-wym*gUwN8QEKg@}=p=m&Cog4xy*yci<0P6*O$6kn|;&QKy0^jh#-imGA zwug_uoMqlw74RAP$}s?X2Q+|%-M_F5PcgKqM6!RO+g%d%~7bzM`f=s$t1cHzrZ*497WeCz$0ox&$`Gh}bz(AIjt5I&_( zcBi~$-s=e?b4e`o2-^AxJ%ERM(!T}{<(2hg0Q{SEKFvJDVE%h_k69VadvO?b ze4mgB^}es1YO)^!wW^AdpnotLTSc^$ByOYjy(Ne02C>*M$ z`th#mXt;XpPL>ATG#@T3b|9ayY!`62IhDWi2dJ~U$GTz+FU zeGGWIMwQ{LR z2}!kHIG4K|%v^yw4<*#gKg$TeXHAPF4ISvA46dKb#tcj!*wuqa&tfOoIUBQN%aK(H%7N_X19mt z#MBETL@)}~A(Xsd^){D8;)Otleyks&HPeQKPMo1u}nHV2C4JKA` znR5ug=FtT!LdwL*#^}0+-&&bTsT|S{#UjTiSg#pkI|od$IvBoKlP8WtEQ7J2tXO!K z!F4Pa#3aFpAAub!n?IYT5ATXY@%^&xdg{=R0Ercs)csK(sXUyhMC+IvMsIg*5}ZNH z$i9Kgo*=bS6R^BmY+E%G^$41hj}Qc89pM`;c7%#=hsXpW3%7mN?{`>&dGiafWpJ-^Sq@ z;rf_!NiRkCi{Gu#n7`?hqO*xsMjisE>5sElLS2-U6!$7yPw|NiN0)U`25@B^4U>a) zD3q5{4h5t)^-B}QAS}wtcZe7#f{`QswjHsO)p+28v3ZgZ;vU^AtkZ)z`xsT{s4DyH z@**0mc!3KZk%JW{a$#Eb(u367QW_^af_|gAmZKKEdYY5Fc}Hzj$58uKqO`WqDLS2y zl9f(+8%iyE@Z^)TbQKTj!C$l&ovNHXX`TWb|4i(Tufooqy!5g3qkci-WEa+cOsw}{ z`Dn=v*0ZrVp4*#c#7{q(lM?WQWI)FiJ6+%Xun&tCRnIH1%$rkQ&apY4Od(asbEgk& zj7#_85_zZH_~Oj@y;P5rx8zDW!2&n_P3yvU&bCL@ihdur{wgA~-oJ?_Z76A20UQtA zGsdZRa`Tk8b2=q@e9-vDbaa%9J0zQ{S^?z&9MA%DtYq?E;u}`|a5AG2Qs%^Z)>JXI zQ4T$KNF5~2Adwxt<@Y*aaXvMt2|Gu(eEJT|oS|!hV0|HzFMx=tKXU5DUkg@#CE_Zd zSdrw*Cd;uCw+{!R&eJN6>H6kD8=jmx6bW9w4GjF8E$gG2dJ^I{Meepce!Vxqs&D$& z8p7#0lXBpd-tfxM!z4KQGuQnDo7#=V5N~t)f$Zd><9u(NGP|b5(8wU~G!(Sws;?G$ z-aK#yd!BE!i3{gIPWzP5HBtv(BM=I$U;2ljXXQ?>;2Oo%H-djkrW@i`;va%?>(wSI z0=XVJb0}n>gEZrgR_oGaAw7HK$CsU`7tXiR#QogVCP9CSZl_0_x(o;8l2q= ziJY>}s@#`&i=*=81C2&(;ZL$M+`1dF9a=<8Yu;JEXyL+n(Mz1OEkOIt_8%W~r0S@7MC2ec#h68W~%OC9(66Zl|-i2O{s`;=q7y4=< z@lED6;RVcgyo3Zv|D~tYeda&?=mt;TZX7HnK6nUpk|v1t5-(z%9G4W00K~DIN6aCF z4EC*v&^5#>O5c$cdq`b;9BUg+$+?Dr17iLlwrCc6JHC)E=tV#MUA)##KWvMB?AATz z;}05nyf3vUB__QBHP?yx+aFRsNBsjYf@qMd!H*u5V}uke(a$ZZ5Pv2U)BQ3(C#G0| zTnBq^rPG*tB(aC??ZnF0dWKg(^U$ha*Knv4uSj9jE36i|IPH836+YK;7k<{?e$Ioi zIxr_cJY#-#c*ezPA`|WFJjlRltPJAO#*uGI9X%9}%?#;fu>90-dy=ka; zVENm&gTZngV^57rsQ`8LPp`D?M)Ifih*^haW_c8K8`87|ZI{Zk0^gdK}YTLNnPW#peTn6Qp z*FgR^VT!e2Pr6><^UAZ6)>{OnS0EqPa2U+QIM4oMsj~!+;2sj_UJ6%UV-_zgV#!M! zzhb!3U3k`?l$pcHtUxN}fgL8$bR8`sf`xLg%(Rd`SWcSHi?h&D`jM_YVdi{O}<-N8V;S*=8C@>cYlRey_B>f@+DFM zaR1?Eb54$9E^QYUzEaA``+VwL1h0G`-*mcI?}{c4?GuF;m*m)r#RnYaD@6$_ zZ_F}u$KswT(Vn|6e)6dP2*fFG<8)9=?(0DjpmBZHd$Wawl0(kc?X zsfAy$S(tRXR@uSTPki`2re^sIPWT2zXx8*mt15f?sZ8w`bFV16%&J$0unzPzHSy8& zsI`=ReA^CJtTvLpWQ4QlPh0y2uL9XaT)5h& zp2>?}X8#BnuvVi@u4vv~5PY(|Ii$MqmN6nO@d@oRL@S_}@u3mw0Tw(bJTcEcf!)*{ zTHgG*p=usIRDH5iyU>nRq~hjbnV;ESFnElfA6wItJE1w0o}t;gWNWvaqvWrequ8}q_+my`GXE=VH6*E(wpF@SDHZ`-{Mc~ z>8pnv&^6(rwR2&Iigk^>Mh8yjXKbY&n!tyf*7{t2L?^x!Kg`J*(-3Fk;VUOPs;lqOY^Vm41JY^n&o7y5B~+oWg>=|i$-9m{H zyvu%wDDO&!;IU(-^l=Lob@P%tvs2_QQ~NudGF~-yLX&|$&)ZhA{b;cZeB-&$K8pEL z{|&!r?OfQDE%ZI`COcW%xY93YvtI0v4LO{V$;O`0Z4L3a;G6XHO6yHd@4A;j?sk&t zxTeKDzTdBKzc0J*f72I>Ut{U&ikt8lC0=&BsjYjQZ*(O_(7hxpvZ4?Vz^$pv!^NKG z0LcjHKoiaKJ&T+aAzXB7be0mZ8Ln-6EujHVI<}rPqFv5gj<9eldFnQw^FUoFIw#>0 zFYNh^rRobO-XegVC%tybAH2AtEHL{Bls@@r2j}eY9}fn))uUA;?Ol2V+qSd;YXt8L zZGQo=_u1qvsi=Mc06+jqL_t(O?)sb81zkwq}ie1+>v?)%?6?F#)J@BKZGUCBvgl#WJiZmm{ zhN!4FkuuBf7L2!k<#6$eC%bcM4|H(VYSF>Q_F z=K$ub4eZvr_$?BxD9GQjvM_p9{H`w#2pG1jtn$YA7>xU8XLEp3n|Ki^SFbcM0h#+!{@t zbbLK{QMMfQ6_N^aa7?w~7^-HlN_c<-8tQO*mRpBeQ`uk|-Ne}!09Zh$zvS!8LDpZK zWVgKtFj<{E8ja6+s8nM4eA=J+1gxg&J^+kZPKpV)S*3#MNAf#DgP( zotOM}G}R$Xm@i8bubI7-=CV^moq)q%Yj%hJe6d|eI2ytI-X(2D*TA2i+E(9fb1tcw z%O5^*{;Xn~x(5Ez?+yD(@`nv?ySgL@6riu;o#Qug;eUfy4h481)CHg}yH&-gUWq`w zy0E0wmBG#stlyc)x(~S#NaU%t#MOD~EMc}&aMfkjH-z1gH>u*iQ%sSVhr~fDnYb3- z1w?L}$%Ra;<2{-uu!!QSFa`jAh?^UKP z5(Gg?cDX#&JstFXek_dBY3=v9>$KB6K5Q(wRr=%dk#b2(5245rsx+nxqrl!ejlxPD#b6;EW}YjV?Jj@_KT7Z$7- zf|}~ib9~q}lHWwYG~xSoW-W|^x&lq8UE=Hc!w(c{rHV{X|%&M^;_=A!_Qy|@omQu zA!h!Ul=xnaYq*5%=f^1Fsd?Yb2;Qej7uOaZBPYhrj*;ek_vU!;2Kf_!B z{IpxvPcGEtQ=676&c1kW=EPQw18>qIC!3S-}KJadXz!DTP=TE;VH z^SbCMM2$rlvyJh|*u++F{32ytP1ro_;f`T!c~{~`$%}|nz?1huyHqEw(bjl!p0va- z@qj%mc86~->}S8hU*~s;59$Z)1Nca}fPYAz+$-;Lv=0XVrktaH%%1d20*JKRG0)^dM=tZkfT?QhXm}J<%|8Ihd{) zjsUO!5-EK|c>kCm)e$^W7LngTX(Bp|5)niUl&`t{S5%-gi$qX=8Zm<$0AqxSZ$gF5 z^#P99^HzLut>!*bWQVtnRVVr^__2r59~JhqYlmY}=nPlm9 zfId0%;y3)6Rtaw2vV ztk%1d^%p}XwWIH%(^NP5YzDY%W?PzBS{(zMcoP78@mh@&xQ=LLkAbFk66xy-Vk7Gx9 zdL!k)mA5e0Z;k99g^drpjFB1R5DYo5_OVaNRh&L@O=6QX?c?;QGZXLbBkZMcBi@TG)Xh3ahtr3cikYfC zVw*ufm zat+bzXvr|owd%g(f~Q8fQ+ye@e*pc&TPeS7Qa{(hTT=S->1~1@ z0C{QhyYlon<~MoT;^yY59t^uv^D69}6WtdW4~gD0&HSH3@*?=SEs&dh^fkzHu4XRs z3_r2PH=Gzn5UJrCaqHH?#LE@`s8z+u)A}q?FA#9oHXqx;I`-2{A>`KIZt4xdt~L-o zG4!We#b6KpvOQ%TZIUMUVNTi8_wb~KE~0#qleGz$PIEJ410b2#d`*5p=Opn53Sw|L zjBmgr2eqd|_xrCE-T7cQp! zjdynUM5I^Py!2X0ojXY}oR-W2UF5FS&`LU{W3K7L1P(sXF&unxeaeY zwsNKu*vUiLlDEC-wslxoR0~^yHWzYH(r>iF%RIU<637g`?7hluC%x!9;b!GV9`rev zj`DR~FO{*45ncsjXRYB>FHKxI#KS!ty;iQ8_1Y}$vhy(Jn?azKuj!e?qh>}d=6sbp z$NGO&gj;jr2YdRCl*EvV)8O3Ks&?Nh`pvHP*AdYp(@gp5y&MO39D8D^EUxkPXMcqw zgI_s1<8Gw=PGVwsZf-Qli(Rb8G0B13XIiVQXn|cQ2|Xu97xYNu4Dja|E^p~|r{yii zgLGqk4F`W}#Q#-1Jk8&!RngQ3>ESN5)?0*S4)3}5!%-l%XAb(xb%wys?XY#h@iVp^ zEVE;M5&Xm}J|`_FE(*UtqyIbE{zo9l&I>_Lb^f`&q$}{Zt_VLVOSNtVdR){)56={= zehP8rKs3+~f{16pAMz)-LoE@~nklF#S|0dv^XVmaLFPc?^ww+Dsz#;}pV`Jc_t|5W zsv|;Z`I4DUqhM*k!paMFz1c3um^CtZyFb&MBjQU4Dw1?X1DXX4|m3g=e#!^ z0uTJ*I`y?+MLzd1cxDN{Y9@ZozsYRcZ?dlnug({tPxx7w>-Zk8=XF!I#I`p_c7EHz zf%`>IZ0=Qd&V2>F9jlv5ANebO4L?XV%G8ev!>&pkPtD{q*QgQh(FNA*zYM#1~Weo!^Y2jdNrs(5&&NDTnPh3cYpE0t|wGa)@KjiE+CCBt42H)_uFWz>Zwl=js;Htnk zjh%LF@#P#=u7!jA+WL!6{rm|YU9>O{cl<*SmdeDZgZW1x|1wse80Iwm%ba?lohFtb zQVfV$?Od@bOYsC{`pU~~hDgVRJ5`j*6bC@*^@7947Ef!d2a4<%B)F;7wkFG`C;X(W zx-qHT#nOVIlT)tw*0}_ggRjxAd{f*K>&>nb*O%}Iz1HM4ILR5U*n6=wTt^#W5wS?o zNo7A>tt1L}kh<_HfLYr5{I@mgcL$~h(dJT1BRQ2Po&d0G)XB1Tc#v#2m+8t|I29Sl zYz}tQmeE`VCXd`sWF_Q$%X6R;&0ECiQDI;lMgtp%fAtvB;$t$hF6ZDIjWJ#U%f+0& z9(W{{+6UB^rEyOANJun2IXHnfQWRHT6FwFCN_pt4_;>S7t=LyjEs#CqGJeh6V90O9 zJGS>^)2`I5xk!O)FY9%;!ZyPh8~||*$8@+k3N}zvlPg8XdVNlRkmjB-B=gF9=Jy-E zgT!`RwzLM(=CD8IyHH6c*L4>p^U1oS@uWCJ87?wa>srLs1yHDt82YMRZYOfB#RS7E zh%8V(yl{TjLqMaFN?Z26uJRf=%Y`4@iH zNv+LG?VRKI$ZY#5>)sxlfkwt3exL%-Rk-kq7ap$X)_O>u&?7L{;)Sc$@-hFS4;pY2 zZiJVGUL3ssbu~bmFaI#0yuM1H^Fyk9`quQ>700xb^r&+5s{KLvi z_iTI;N~76QqmI4=gXQ=AwU=t$;gzKna!D#puTQ@J=9@K4S?!-NpF;70o#nXCV%3sw zoP5W$U%{N?XmRcLej2I%NGz6{8*U6@QJK~ge3`=~G`S6W(xKgDwAlgwy~Y9n1&-C6 z=pQjLSB&`1J)Q$~5dR~EEN}weqGsIF7%X^m9D% zB`2zq0LW#y6!(;>*>1%k8L0bIF*+Ycv}{+3`$bz{r8-%)`XlKCs4i19*E1#<2s@#t zr%(-%QrCA!CDeP{(SW#Xz1eVPYeb0c+qE^N;lvZWdQT067;wq!9AmwhKz=`+6I5s& z_x0w?IV5+0HvS3z6ZfasRr5g{cZ}MC>>0T$Wc%q~`Z&Gsn7-UFUIseeMlOWc(fAH8 z`#MMDD>kR4^-Sl$mmBAO|G2h=>({_E+PwNXfO^P6D;ob&RUY*GLJ{a^K`nrV{-ICy zc-U|qlEC=FevHCSP4v%rc#toVj!WF1M#=Tfz?}UOrvLiuT<+f^goM|T%|Ju~EzQQ@ zI-MCjC(0ZbOR|D*qc*#0p1q7;YucPo4QF}J74zBcTe*6%E0}+Ye7?1lW*=Jg?kk3c zRcvyAz>Ig$6fg7$h1Z*u?I4-1IMyIfw)q=BQnAQL)}GzZCc$fhr;wBXE%p;Hl^2JS zsbhN%7^l}a54nd_<@^BdT1md>m(x{^oh!P~9oxulkK9$bbD4(Fc~5^+9vT<*a$4)l zbgr8%{)G(ugZ9_Z*T4^To}t$G9jRY&68GBYg>(u!9uiC5wrTfkv+fETyX{H`>%V9N z%nhXMx$moRm<-f?t~ZmmMb4MkzJ!TeGlpsPrKH^eVfYX0e#Op%TG>qL9GmP zEXb*IM;%&8MTnm4rs?`CsFzLgZb$lTEt<)mh)R)8@R5)TSM6FGcxC zpvA#66oKei-UkT7yknij)|rZLLwhEXHb>lazz=q{CjMt41BnCM)}bB% zmG9=XBfKo?=M3}=r0)$wtnb|F0@90@BT+}h;12nh;g=*sk- z_#iN|OgFRv=M;L(P5}0cPlkIgmv3dKFXCQ@l>gL!^=X)u&d*H&o>jXF0c#~>OzK^yK*>#Wy>oUg;wLrhhmby>vb`>0=ge_*Ew;wij8bFV$G6846FBr#;Hw$am|DQ{0E01<6J4zq)?|ij+Xv- zEdbQaPcNP6&;D%Uemg#F9CiF~GyvnoGwlucNQ^ zN1EN8`xe)=S$D+O;43&SjB(QpCwA3Wt>8*orUl9;p_2^A)}JSLIL=%-?e8_^K3GLs z+mmjHc|#c;8#**^=ECXY(lZ=xao&#U|CQ;W4(cWQlUtJc9Q5TMYm&jwuh)*$xg!kX z9L*jA{9ZwTVWBcFyCEiOqk%kW*o-YvSK8+enAiCT@w)tX|L^pyrGsaP(oHQeM%5y( zie@d{LXq|{dT5c~;yqa(dUPgLgwY&hqRT)D?V8Ej*VH05?;y@t??;IorRw>K$A8Yr zd*a*wwv-=pJ891Mi=fX_aQLgxXv^^a!&~vB{WM?n=(liUcID)%3!YlzcX|ISV8C1y ze(veuzx1kLQHc5+$>D{PlUudxv=ir3!Te2wnBxe}sJ49F5~Oen*fn7Nx)@anNW)sT z8kmWTjgAViM*$_eGfaFMw1^HZ>Tk0~)BSMJLzf={i&yZmt)YA#gQqK#5UL)qFvnw! z#z0Q5CQNQo>Ue`xt6qEmnreMfv;MvxR9k!Fs;nAn-L#JD(VZp^rk-=2iy}_eaaLB( zfWs|8Xd~T=EWhgHfp6qoVCNJN4d&QHwr!?>C-&+;K_}n2ckfNu6B>IfUNj6f4;#~^ zb>OtvHtBItfLQI4>?YRK&LidN!s5#sol=vI?K@}NFCu;kfvX9q=v^t7^9;(*2rrA; zDvGhjT&hXQ?DdmBxrwYfaptWZH@PoyL*mWaHqiK%tersk%a~2;bwNx0ozivudQHvD z&C9vRJ)shN`j@nVe8PX1jhA_6+&0=iAAOl5YK+VAyRHg*{T8b{jd^Oph)Q7hOt~}C| zmwtG=_s;<4!<~o{h(6@JD7dk3a={p$b>M@tdCqeI@r0Xs300nR>4X>}Q-H|1dGU`? z{Ls=5Z;7~%5S z#Eh77$@7TO{np>~qC!sFOyt|`BqrkeQ=hv!C|heGRbe9q`{y=Y#zDYCa%+OT3TZMs zIrY(0a$S@ii@tk^Ru_Zcy;-ZoD#PpW*{>dSq*yZP%e9Qx;l%DWfnTxhkSaeMb?9MA z^LiSQ@nODju6W7KF_&EOM&g+i-Hi`MmpgD=(20akk)RVaxFZ9YqQga<#)no$lWuNv ztZ^dWBw#xhYEFU!3F15k`kmu>=PfERU!rgE)I`fUV;qHW4)S3Q1!J9_!LN*WbSQcO zg^~3Ui*)QE4N#=y0y94R2k>x}p#=yGKHtLi!YsKCEcSC_>rU4py_R#YS&7U1%=dlF zH=L#orRyc8`3fyn_cg&Q@Nl$J>(z?$tzDpJy6^p6v#u#}#9C9t8?tMA0lp?ldla~M zIE?13^unLV#oyeg?e|%M*E!iF=|0@?ce_sx?Yv>Z9mHX5p+Y8%Mvb!AtAoX^*GTZ^ z9ECl@;fvDY@A$9m3w$13A%#TrgL+;%;!&@xxukF)}|#-Ut|z3T5G$y?Z%V=T#q z1-+o9_YF@T)U&rqJoAaQ(yQQBJGr)U9wx7hhxoyM?ZBhB*~et z;BkHq6Xi>rQ7@pYsb}ul^P|75i!bN$yV7}WB@>y`VDmtqet_Vfzcr7* z|Mgh4$4qm(_5?RrcFxZal+UC_$h}^>OJtdo?^*;_F!jOys)v*M)~+8d1o|Oom0^AL zD?s#!AcqF{)XyhJ{(N$TjjI0qi=;!bUH@=|0Lf?C_Sc(Y$(l-Ce)WrM2^mGb66*m? zAP;vM9MObB^Yb9aokt7)TbSb}KsELuH5)qa*m<$M};W z18%k4;x$F1mo_oD6H~6YF}l>TR$Xg`;dGqIeJmiR@x?RF!Frlyx3pO~edQ$By{$Z7 zIwti&F`u(`BVRfNlJ0df+c`%1+`SO>K)VI6y26teY6;(HN(~yIlf1WJO>h{S@!%Ht za$Na|);W`eVm{vlmfkXxa^}u~zj?9K-X%#;fnLT+T(3PvtFKl-e-cnbpkugJi_ctk z^-*@Bi8<}ci%#T{$E+_-sz>)W^`o4*X=|#;iO2Wc`?2Uhn3b7p_7vUyNAd3x|rV%_lT<(LiO;mZ#K0n%dM zK7Kluj~)^A@Adsf!r&uY%PRjD3mDMj+! z&pM}ttV^nIE_^##H7j44ZovvP?8+5uzO}Jy73Q1O0jAmL=Bb!}9glO0=Z7~;Vf8Re zO{wy{NAHe+)%vOCXHA~&t1WGSNmbA395nn8h#?~T$3#B*{a=Z&?uu}t^WaBjD`9Gg zW069uyIZq(!b};}+H3bwI>Q6&DwWd_^1HaFwux@P;H9zBhuc{6>?(0dc7GviPB6Uo z)8ou5Wt)kEMJo38C%8b&aoh0gF#<2MX_Exu9$!NVJOsYL7TwgnPJ(?EX+GzqRuje3 z*VZ|x*r8@F;X~Q@K|ierZ*;}nHk!le2gzS#CcC9(RR-(FCpgVc+j5V@qdSR zac~x}%+l;lI6n?jFe~YQ1j3uRo(p&|(BN%&1be6bmM;#jKNagLev${*)$bQU3E1YF zoY0zT1KT&X)-6Sn6h>$8%JPef=7e{9CPITz53OWZVxJz}zUl(wc7O(J`rDsyRgS+= z%{`8fGWnx)uiHmurGVGf+7#?wxIgAW5g3hbp>+y$3{%5vQFQ+n@JX_ONL329_;FZO z*&Iug{Z^kPs%Y8uOPZHXnmZd+4~wjOHe0r9X@}QCVC`U4Gq-ES_JhCsQdiK}8~pS{ zv#P;4;AmG+R$#MnY{!vM8`w3ve)Fp38>_^VGs{9iLPx9o(!KHFjG_3lC+7v*1$Ow# zci{9LJ?4vtzk?<`ftQ>sNzUb;{AaBdIi{?yJnKHh+kK!{4<9jC15G4zxAAa6FX(bQ z=cnm6_`gBC%v!xE0z6#hv=o_*H|!JPr0O4b@SoP>s7(#z0gk(4RZJ`2iQ7r z=iv|j$;IL|O|;MxBT-%e%-9Ai7HI2k8vjmv8Z(uxD@2^T!&&JhxEw z(sxmxj}AP=cHx&8I@h``=hQv>T!IhUf3ls^8Ew6dC;pQ^F&Se^blcQ;`ajiuu5q}C zba0syjxqTd?F?qp?S=Ce`p^up=1c8z4(SU#grDNCF+g1$c~(FuJU;+Nx&E&p`ixCG z#>19L{Sd+?@@X4q2O(m4Q};zLoG^jhz|P+x9U zaMXwHr5^BbAQ)^;+1|ZpE{s{QZ1$Z$>LCw|WS3$e^-x!PQ9U}&rejEp^HZnq^g#%f z`IfIkLM>Fu{?#)@G`kMk9dVM+zW6F3lxn>xRo_}F^DYNd6!Rx3|Yr1v;74(=hRFNoS@H|u5gLaSJ+km5l&N852}VaP5j_* zVB3#83w=2_?U8G0ux`1|`w`)F6H1IM@2qkdoroX7f`$Q{A<+7Zp3pT<@)(x)xj0Q+ zDI4DQMVjmPM&qq&fhOaMwR2%%3cT@=GCn`DB7W{fhatMOs&9oshAPe1j3!grtH|9BB7 zVRFU@c7S8GY6Bnm3ezX?aGrf97TyP0gnG|jqHWgZJg)B)8hQgvyEwkSIvU0L1dto0 z13LKqT;5!0-6;=*^)kz2U?~uvjU=tU;nMO=-U#4yuA>2`BE2Z=eJtB#F8XEGE=?b#Qz8 zfyug)3HdlKVOKpEKfx0#enoms%^h|d`XY++OA!A;)eAjSP8xpWfSp*jq|W18wA zvGV=iV4a#b2fwPd{nj z@ExCJjZx8ud)BYOiDBukegOBm-P9uK4G+fkmi=a}!IK}KdFmNF*KU%+o%J`c&pq74 z!_OQY*9O#A-qzDk{VQMvxM4a`2Ob6HnW0sTb&Qfbo)=jfsfWA>b}6maH3a8@p(_@_ zI1dk{LNB%&=b?#w|6)%Gz^hNkikIiTXy*TM95psOmsV&a$!jq`vPoBTEG z`dpkY9B$f=4~`-px$5cqbZeDbCQVj<>Ej9(cyvSBwGP$`GcYn^Y^~~VH9R73weAMr z`h6DZTB9mMl*785&HAt_C;X!@#23i1#^1y5=x9ET2mRqb*+2N-GW&cyGGEWdgL7Ud zE3nEe(}eP=ch`LKN=+OBrZ%6~2d`U?n*BPndA*f1hlyam7Hsq2WSXC*t}Ft?ITc6R`vh&*q$MT6CKi{~27{`w0Ca?XWjd_QM?> z_!ZmEikP=zF*BPg2Y;}s@{X`RP^DV zYe9h%D{Eh0Mh?MZ!5;95$r_HXO~35aeELt`bKXrQR^9I&gPeJ;Ym!n#=B0s?xMsT? z*6{xcByY0Zz#P}1|54~Df*bQ2E-&(W1O!k0*gV7djeiv~iGWD(GM+choCq|F7j^kA z&;q>!^o}h5ns@$jhsEoYO4_w$8E$rO!$RGtaD;gw zVHM|Ok@RgS-+wG3lALP@x9m~##U)<-ydQli0Zt|W1%0Z-v!Wj?OJjJBC~+S4T0{hA z=^X#b&jWc66!V{Y*m7#0gQ~4y{Ap%2R$bKcT8BOg;PcnIo;X7us_C-!mEgfEtA5Q; z5W;@Y^Zpmhu_g?!6}G?a+N_g=mF}1HD$s(OcF#dadyGVCKCl-s!GjChPG5rq?iktf zpU{ZLXu`*OI)35i{;W9BF(l;c3_*b#?;4JL!4KsJLWeF!PSg=N)4UOxz8K54s16S8_=6_`)ZBB49=~JJ;I*CCcd(}%1JJ@*>%%uN zZaR#rSogF-N~SbMZVYi+zS;MLoCde=Nx`sFv7hq4Nk4J?C)Vm0KAbVay7Q;k=!#!E zbGPnYOW@wZYl&2G$#9q6#M-!8i<247V-WH-%b0ByV9bZA-KMjXbFei35P!JId%)uo z_n?>9&zaZ??(6-=m&W2Fw_V#D8eFC;qv=p)qhPgW$AUdL4M#feHM{3aq{17T1i%iw z#p`DP>q)`HJW!EDyXSu+3KktExbR9JIX;en7@^*K7Gy%!!XIi;5BQdGJI+kNz4W< zv_SeOMvJfbRS%Jualvw;xv8TwSG5vA>7@R!*!l!%Td~K}022f#D%Y8S^c$X<6PRVq$?#~(y5JONS8g{a>wF`$fIh86-+C!#! z(~I@i;Y&O)%wt#mm3^6xHkoN^FAax}pg9|J-cp^Ij8q?vgGCB9H9cFu=xCuLInsq4Ha8qzQH^lM-=ILxl=W}`FXdqKl~Sb`Q&+5QI; znmvq5pf$LGa95to1Xn~fn=*#+y!R`^H`hw9i>VVRVQ$B8oYqY-@c`#<^I~)l^yj*Y zyJz!w7O&5o{EX9^$1lJ3r-<|}iTW0zX65Kl85C}fdJAx%W7vC$D0&S9V_WUu1pFWe z)Uke7^DYv0ZVCA33(Kqkajo~?T6euU$(K%VjdDfso>WOc==o_Gk*epNXG7;?H&>HO zN$fm$D5pOGhDF>Q94!ASUG}b*(j1u50yn$(#z+@R?;PEmlCd%>*4_ldp=N;-8sx+t zg2$b6P)WCjyaqNNtUD?J z9lP?$>7<(2|F)LcGVdY?Gd7{^K$$O2WnIVgae+&^bVjWsk3D=QZ$GJ-I~I55F(7d6 z9yL0C(adW>Pvm7=N+bNzbog=TT9a2{UnkOMF4a0tZ$`nW!0QoSX(i*-OfE=l&8F+7 z5$G7Y_cX}7%xN4&t09`vHc0w2l)~By?)!dYA*WN9 zf_o(7u>%0{HJ`HTHh5)SM~6E8qw{4~g~>#8EjAEsJ z`vQY!Hlv;N4|c^P6JC7JU3X(i&aBunhpAr#-L~fQp3V(Hc;8)ZLena3!X)pJhf zF6*hkZ7dCBo#@%!7uJo{uV_KkgjzIa9-#IDoANo4T-wC2B3Dl96TnPR_PnsBo-ppM z`gy+4(5xZEp8%E!9}aS^S;|T;sxS-qPDr83F|oh>S}j){zwv8NxuNGd>Tu zPBcny*bmZ@ABrH%=_KAcLq;t%L0 z_F$Cz+s7k#ERvu5`rCqEiAVpbU9X?7i3-%Gz~trY!S-wJsT5i2cifcPQSKj&YpSdZs8UeeR#wy;CwHxEIQKh;-LPyqNpq>o zF#@0Wh`RNCbaBa%a4EP}$vDovV=s z8}*rf=J-p9gutJ(`0jlYQ~GVd3gO{?+j5M;z9W4Q7A33vY->JUN2XE?!mbp^DaTH*ysJTnrBm0jx#8s6q4C)Wfq$EQyiH8yl? z)}S!}YdL48Vm=POSDQ%9oaHq}b7Pxxu@~u>VH~OK37m?CeCHCsM8_iEFQtK}s+O+;vb7+(V+%>2XBhVyQuMphx#tl>Rl&`IIEjne|d8Y7iz zYc`+liO(E6sqt0E_l@A0iTAY{NE*~j=CKMr(ZjejfVmlF9;NU*M!n(0Zm{#2N~?0} zF4r7Q-WNjVF=N#5YxlS#L$u{(G}j>RxsMVnUXdne=T~|)0ZZ6x*IrYp zHZlBYk59R9GB2#OPvGjmi@7CHnpJf>wx+_vdyvPq!J)2@N;=xTeD9Udo0(zN>}LuE zQP~_`qp1VF>j^Bmw%f12Jir6s zP-B@BbAC2OG&t1Fest=V88LG67!}^k#KyUeC+>d*d{J6>^)(IW47x$_a-&7m_oCgo zY!@@HPX_lT0Rp|`#U(bHT>;op=?e)>`4f%exUIuce4Et zU*R~119mQSJ>V%|NgcWs8#%#_Iig&K0B+no|M@Nj0Znd8mc;$Qd8QndSKNmNe;L9(+7M;*Rr7dC=j^*u?-uF*M*Cy zqq1MN%yILB&A0MG3(JxcDd zi#7EwjQ0`PQfppbqd(KP_O}Iq@7U_;!gr--&d%qxvfsXT-fj2Y z`hdBica-sLCcxt(C4kAwn=xsN7nd$>s^p_7*B=+47#+D9x>6%cO|J2=o76~KMI z6b6&Q`(omQE5|m6*cc&VYlPpl0)IL-F|RedE17le5)&GuYNkZ?A@jKi;h~gcQ^|e)DU$Ldr{G>7G{*G-t*QNaDaNLI#QA4iV{StY70CY;a zpL{ikpt?v1e>cSmp{I$*h9}$oK5_)lP-t=uegGX;;d$$aqhV?amv?Y16|al5)={UF zz!CW4f9kOzXUBXUkj3_JA^n39p_OT19?sx+pD_BRV=ZzkXS>lSJ&9i4)RVrO^3=`pX2?HGmSF%iK?fmE2l#i2G*@`B%aCqbm%i+jgZ|$t3;#nlT{TG1FamaIwPB3HT=K}K_eZ;IeM~I&}%fQ z;Hp^mq7|cogQvejc5X{v6MYwlPl(!mQW)W%QG&g4Yg5>b#$lh@X zCww_Wq^@5llc;`4I*F9}^cOU#A4#jnr=CT>AKcgX@Gm1%?lkwA^Mw>RsdbGeJ!t%F z4fr!w{+&lt{E=`o0S7H>Mu@nZg(Y3~w;p;^Biws3RNAHJ2*xUx+csp~&-FGw=zUjC9 zLRt`g;|?@NsciR~eUiz6b(mPR`#M(e$yp(*`N8c;l4vTugszg|0bwsQ56VcxLF{!>2Rc5wZ! z;kaynT8NVm!mQJW*}(FhpOBjsvcUS}v4Hy7!t@L8U;XP|R8tG_cWb?Sfin3WQJg~AWE66i7 z{%Y6M;I*deA#q)H#N@xTJf;cALp}rKK#>A6b>6J6~n`K^$vJyJ6*Ad zzBIOEb4Ifhle6)Sxo(17m>MI6p)YC~+x5Vj*lEuF>Cp6_D32H!k8XcMB$P+yS=URI zyUsH+3AqxEAM1188ra*1y?tz6V=sfvAL_h8S zaB5peH4Iw=o%TuDc1skwf|FO&s)}BPJEQuB>*b)?kpjv&IThuY`oO{iZM2Nr@TnAiXf2XLNF9u*PeQA0zX{vXe;aY=8DHX(Dajw*8&5=7E2G9j8Dv zHJh)QHFCGJFJ7q3e5D@F#A0U_?}~TsbC0s0#+4ht)0uKd+5g}fW)mo#^j`~f%;jhddu0HMXnzLQfOKz zV{Y8kd2$3eAF5*WX46UVo#F;t55P$*u>&pQMHkI^^{@xf1X))Ni_&nqw;H+YD5p5T%q&xM^4wld!mOB73M*-zNO1b z`fJwPl1L}bX6;L{PhR!Or;btTHIm=G5h>e-4~22e`fJ|2;y^#v_UbGUEgkmYIbNVA z<-?EON1*F~7YB>=ZXcVqJV*6d=b4!N)m+S->1)W;Q|;uJ1YrjGJ_Qfm30}fg&6kAC z)Q--kPH>Y#oSLpOhw7tT(mwPqVAB2?4w!vTs3sTs+Hz9a&hWBmgY){O6A;v(Kp;NrnkNjNP760 zOZ*T@Bj?!BD|zcjvstR~MDF~o6BOot9oi2Lfg$iiu|?{-s=YJkgIE&RadFbC@5#a^ zwCu#(N)xjFnWq4Wx$;NN(aptMJNW4VJO41C)kRbic^Uiq^1tmbt^#(GLNkH&IQsD2(6`N2nh z8{CcDMcO0(eh8fHsKtm!;q#D4eD->^3s@^-Ir=ZU?w9?N;V&KMgcsTkq9%q4G_UZT zNo)^v&p7tc*x0s7JpR&n15fzF%9=j{wdo74o{+B+$6urbi(_K0Cs>tP`@ixFw#;bf zBnepI!&zXc4(8DDdQfk0<%EWK!H?i_mpN%4O-&@%gn%Sw9u5ZU{~WK>O?yw@M+>9$c!P*t;p*+JTJd)LwzrOTDa_xLEfz&`swz15 z0DHWS>rb^oSH7XOs~GVai5WkMhU-w&@bD)8)IWNk^u&^uQo%hZC?}?QP5Na{k`{mV zp?iPRm^24FnI72l2`>B{9>Pu;`_mY{jfq#ueVx(zz864EYnyiohScE0eU?0_5N90c zI`s!O)3L^W;$<_rV*08%m7=K`^U?{+fjG=fF6#tHhTG%e-r9?I!hFKpWyifP|Bw} zFeeI|m@@n^qkNfD&-%&j04ZejiRdm@-HP)qPGWn|+4Sb-Dq2|WMdcJy+SsjQ*ww8Q zwOs={b#tve<6fkBpOK%C>gvh3*BEVj-u$vRa`HacQEQ}9W#H@UoMihs2k@?9%b$v4 zm|cfpnq#i$ZGItKJ=_`Z-sp_+%A4pIo3_ETkDGDXq3pCxaGXPkAHfEmah>C6PH2oR zV(na)71%uN`ik7?W%KGh-AH-l)f--X=Cb#(YV(>FT1msJ7EWGq<(I(W2`E+t#+G5E zV5k3E_m?~vhUZ&yiK_*)^q+HgViOkBNa?;fRjaS%UfY$9a{(=4d^Te%U;N$or1Vyz z`%QWWoOf5SXZ)d&j;!lL)p+)?<(gK|5u9 zIV-r#T|cmwz#jL&pJj~^jO(aC^AgY88a`zUTc+O*k6+g%X<0M2<4t19C6K*GR`a8N3b0%RI3Uqkt#xJOFkAP4CU$b~Jx`rrHRc(gX8Q!5B_0$Z;JECng`QwPJCZ9oy)gv`Pn%J8)_Z-zLD4|tR5}vP1vn9H+6Uja%tzN0vgekc9}X-_pF7gO>8#^002M$Nklq(m_}fc9`yTu7WVKxNGwwS#iL7Od$@lqD z+%TFk5?G4a!BY)73EhnA$Zri#li%VAcUFCxU(8A`p8J$(Wx`EaOk?Hi3?2Eo2CYY; zV%NF}2zGAgWeNEXLhZYBt3b+!R?<7Sc@?;iCxn$Gte0~e3KE^@jNFksKBtGE#~AW{ zWfR{V1n^6|e*X0t52tdgwaqCUR*l1}d&iR--gEwmSF!3+HZN2lf0d1S)>hcud^gV` z)mgT}TU-KlJ+*DcWv4{=trEC%g(@efE%T6Ubf=4#UITz{trf?|<+3AM4UNCtY*Bk?6)fci>v!JXDC2g~B~KWwV-z_tN}011SC< z{2X1Gdh_Xy`wA(%F>*u1)~JX;HFMrtgz`+}APL=vI6xd7Bcv}ct7s)yBn9(#fb$q2 zusA!ZbD5^3Hv)18-JjxeizjBU5rDkOB~7*Y^rjvTTL5H0o4*6h|CLUyFS$HO>H*Pp zwL%w?A{y4KgX>fS0xH6{eWO*7aC$O1$(*s~+rloPLW@^+`mMP-IJw14dN_l6kFKUq zsNgF5jk4G=cZXW5@~=hlJNpK}SH{+A48iFp+~!@e-qT1ihZb4QHsf#Z&?~sl z&!M+|~W$6#zuVokj?;IB87EAOeZ^B=L4(_EjN1V~QJr`Ah6_ZU%mo!eblls=)> zN{)z?O9nB0UFBZ}q6WxU*-x)o@lwUF5k<+dozE8rX=oCa&g~)E~T?aV&() zj>&1C=?Zl&6ME4!XAv>u(q-Z^XCnkyLw@+tW@ZErFJN#JlwZFHx`pc-YNmcYvFRam zvEOsvIGg`wlk@95mN83_sf?E-zp0|v#&;@$Fx)3G1YxZ8#XYD^vz5NhqCUwIN2R3*qVdMco0jhb_tYd(| z^JWN;UMjf%f?(awx$ObVppQol2Tt3Mgm#H%yybVyp*fia7Um6zg60yb;}$=ZiXFeK zJT`U121|Rce{c3@_N;q{mObVeh_`cLcPF6~`Zzl8CHXKhZ+GRnI0StS zPezt7uM6lysN6YjeA~%+VujbIf)RP+B){hm$_>!+L5@`wp1x2e)UAV9$8ENqy$R+S zwT?4SQQ3wQgU49+Q1-GpL6hPKP{O|FG|$0Oao(zRLMR;%cF`J}9JkV9Z_}+2#ygtm zJ^#p6@VbehZtI{Lpy%Ttu{elOt^c%~|DBRwISNc{jK)6v0-om` z)O*}~`!wD@W`?051Z5WZ;P1WI%**baq@HtK$g{812rqMYaP<&P*OT+~ga4HqeohDh z+W|CVBCw#bhmWyFxIo`*RO{2EBEj2Sa`$jdjnK1S^O|>Gn~Ob*Zc^p9KnMoK1qPGw zJWe!qZ?sA1p$^w}-f+o}pu@g7HA0fWs%4`Ctfd}3`!Nb>Vtn}_(?!VE5NI58;d$@_ z3JlLfhA?iFfk>r>|Mf4Rwfy)CQD5R}@+Wbr$v=+aSx&#sg%xw|c(~?G$-ZR}qgd%z z5&fDL`6A_D4sO26f`k@f9c^IC43Qb%Q`aXAWUa3erWy2@QI-<}t>{1>hPUa+e8dMp zx_O6wEH9$V8}&iJ+qw}lSBFD(Dd7IA!xS{dQ4Ynxdh&=Bw==T1CE$H0Ib+2-IgzKU zf}1Sb!=1!O;Dh#S;ET35?UeayQ9#^HZ)jTEvFN;EiCr^9z9PC46H5Z;WXBKgZz06J z`u)aF$!C1~*!dc98|k*tyfy#MCFx?21Hs>FZO-ZPgTvpvMB=iG1NSJvhgvW{!9S^tXK z9LgA5Kb4_wd)&a*`sqNQ+@9}qyox5dp{(nL5$4NWkErDAQn8N25ow(`l+z$X9XviL)6k2415zq|$7J6dkqf~Fr@9`xZZKcp#Wx5lS_8U9^de#i3 z3;1u262N6c^FC!8%nuTZD(2KCMjy=e9i&E`G(KHHyUPge8Up;@s=OJ21#5!Rr&dCUgFLx;UoJfLD+quWX&Q3qm5&W;5`kPRXY)?#K-o%H7bDKZ< z$=P`7f6M0%ub5vOnumrlPTNnPCc;Z>&A#TgOt`{kjjiFdidVw^O6B-I z>=gNt$vl7wI&?r2_lR|in^2g{Ge&QaSK}+q_r$l9(@*Wu8|Qx!TMgz)`A^mV+x*|H zOUu-%Q40u`InkWn@slNDZnLFu7_$xqd_5>M7}p3?oj<>1I<2tnw7sWip%u$ZrJ#3W z`b}DTI(uLIMTiLZR$Gm6_gauSvB`2d(MHS<>eZR|}=O1SYi=NXI7 z8LLl`Dl55(zxly3XRGl2_Rdb6V42yS;BzzeH8K}T_A8q;Z?KXCn@=ohFk09eet;8p z$~Qqk%3~Onu;-4Q$C74x3c2*134S$Yps_AapE8Gr(Nff`y2Y*ktsBj&19Hf%Z-m!c zO|BfrtOJ+2><9laghc#3NF=T|F8>Rh7UCb6=pk^fEz(G*L5$qlo6cluj9o&0Qxxby zuE>R-X!^E*A3%#=HIpmxlX6VAwF@tsi-oafOYEG)idikJI#*F^&EbT6QIeE@0j~ld z8m!xe%|nH8tx;a3b>HnZae3&cKxvL!qE7iZB&7pa&P5jS!F`4=-{hYXZuYyEHJ@k{ zClcUL&NWBOL=MT&?40-=ijL1c9}lhg*kJjR*>+OzoO<}HQcta|5glg6=9Z6!?``Y# z8nf6$JI~~@(^tiWl~5+c+m4DMA6l(}_Ov(Dorgf8A!hE36DYvp;b4qYr^Cp>MkdBf zsF$g{=YL*NSbgMyn>3_vrpGYEyc5&PxiCSAdyb~rWP!w3) z1pTXN$SYVtbM${Vv06Wj@ktYS@5mKY&o6+f@|#FM9a@hX}a9`@5ORvpvd-AmBToNXTJ)(!KK8JC%%T$}3o zWS4dPqSo;pz1KuTYoz9a-pn`J!FVlc=rA3~;PPj?z2z-xo@~El!6u;zYZ~stFu&ms z+N(=0C4VS8v2dS4Q-6sV(}A@nPTrzCW&VMGRJ@n%?m7`W%pkuxEAg3o9{Qe<<^q3) zeybq8`x;Qb?Uj{vMLO|~Czg4oUuJRvvH6;pB;aokDt)Q8;Q2=&F2mQM6fj5gmJKum`X^PxI=hdf{Tt;2XwDZW|J>Zi$ zZLa?tnQq#s>dH<3l==J;^0<4JV)xwrTEo2V$x1DFO1d9!GKIwVc~v|Vp&APM!G`{@ zO-`iZK6X}5xkgNkV5AIAs=G5Kyc3eOz(-y}tEJN)>!;Og02DY6f5;=?GIlzHe1nx^ zQ@lzSwqmkdwQx7oGL_v9nh_ws^{6v1@TNlJt7%it;b=66DG)jt%e0LA+Ln4G;vBun zk5+U-iq9M@b2cXXKKO&XHJ*0&>+MjC?)VQla{JNePKS|!U4E@_#l{S0fXOM9#J6VK ztZ~M+8%)E)p&RkQ_2sbB&e~4Du~u@gg+xlfRNQ3IRPCb{wL94jkn&V|`o#&o=1)%T z@uwQu8P07XuCHqgL(;rszCJ_jTvNBba-T7140kLi%dZolz$R?X<~q4KZlm$+KzcQ0 z^PJf7BJtqVVS{KTx2ZG18~ukpB#e-H9{r2-8&2m(?ma`-(-6iOsu2#Kq1oz?)8`Ad zC?as47@Na>1ptq`adNWJXz(NT^4mB`VyH)SJjy$;RPrN)o(7vG)B zy*-5zr1?o~n^<@=$51R<(a1a$8QcDd12iYR%*H$RnisGnrq1NAc+3;yBpi>pPxOLp z=Illw^Ao>(oL=|fEu2?dbedPSS5K37wEVy(Vm)N7eMLjGoIfhr=Zew^%Fo{IJZ_Tp z0M&(@k6pUeE%^<&YQ;_JgKI&N5xXq<>_HE9g5hlKT2ttR>fx{IRW4C@JpO-Jf=MIkED@Dlzq8spO&xO`S1YTODi6D^sTH#s|L{&;S=Cs0V9R#xZ@h39U%C7@ zqpxYUB&heyjt*C#8HtTZ(|TXMW#TmZXk7c=gw|(ohHu^D%{k0kmE$z|ku>{qBm$2z z!O@kEJD43|nk|nZQlEDB)D*H0&yEghbCZbep;&M8^t;26FourC^qt_+Z%UPJ?aCri zU!CKnBoLjZ1ZEB|bMnJUJ#z!@IoheaWB-92x%X6EC%F#Z3I7<~>q{~{4BmShKmGNk z;uQ0n5PURte%mCOuEQ*6@sc~W#DBwbvY)S>=qDea;eQ3}!sX8*c|m~ZD<4CiPuoty zGe1R=8r8%MMaG*`tCB`((&p?D6u86)J6OK| z_G;Jx$E=|~Ebnh+(;Gu|tz$LGNnTIT&W@v$V=?!yks_5-lwc6Bp}VRYbBZ2W{wzg`YbH0<=e3`$B@ zWCMQr8?4B_d{Q^pUolE^IqX;H0@Xco`lBTxv5ar)<1p)seeG>zLkm38(1bKMHUWY4Z6kv)*_{ zlwk9~#PLB;oqb#!z6d&?IpgVDAVJN^4RptEFPxrJGH`B$PU^ZTp9^^UOER;*;zp|$ z>e%_zRwQZLhc}u@+9KE)G{o1AC-#`#`;8@YS`tui)Q3Erow~roJcPQ*9{*R?QzI*U z;@%^PaRW>X!x9gY3KvPp}^Rk#=nWL_Fy+)>+MBFk5`kI%kY)gQP zxvvHLlU?zwyRI)kvMokyG_vzkV@~M~%C;*KbB1%`{4l@e1bb=(|3U7Tp-ThjS>%@r zzem{T;>Qf?|Cc>nYm(gDUZwkd)}fbOF1cW{9WrwL2TacJV<^wR`~%@0;o^>t?BGe= zer)H6fPeifU?=I2R5x z1A)YQ4mZ4}F!iX18XUOccW|aBzV(Lm3**+Gjz6-(OU=C(iS^FA-}>CB^b((3sn_2S z^Z*vnSmDLb<68DYT6IUOi%lf+D3Mp8G0^8jA-?#05{FfPWbe_vda9pAbke3^yH*Rp z4T)EP{XqEl`d}9+#6mdI-}`9YA)MTSrtngL24T+$2a6x##%*(8JObQpy136{k$m)x zz_B9i^LuE~6=K5CORbg{Vbwn3BQ?A+TJkj5+_!Vlb=P{5MiP>%)6!XW3iy6}Y4;*~ z=_>Fpc~^&<%lz)_qr+3f*JR?%d_^}n^c{=O%n0u}SM>Ebb+fYMKH2HziOcuqX?~_E z#aZAZ-=y(xy@8!bO!ouX`=y*ZQ!d;+SE|Jgub53G2QosrlYx*Gdd+r-NCDeSz+Z<(ycDbi!Oi*BWm(n@~QPAl{w;?zpg z%Zx1C%$xEkY2J=sz>|CtZzuI`^ywk^4@95o|G=l8jIm{;I@e5`#1kWLV`Ix;|MBw| z4ssGFZ+y7;0W{luk~@doN|-6GLkat500-%u`1K(106$&R(?`Ao7>&%t!wD8(<73Of zo)=Rm8N+U3Pvy$V{^TK*z^o%_UveW`Z>)I;no@*oD8D7_TR(->!HFFWhzBn_KJ{V~ zIria!ZJs}g6UhDque>_);JnuXT9GowZoD+AcICl`#lp(=P1A|NgnQkycr)vAW>;=K zYdIBMLJuuU8S0w$a<|hftkjxhqH6e+M=9afCJr;cVq5`k6#I-DLXg~w@7S?j;0XL= z{Y0Hu*TkoY{#5xi(Y-M3JGty;BmsdUdlUFq!1%$iuv55V7nVIkr7kKg4L4`2KH2lt zZoj})Wy*Dq{Hh`5#FE;;2i|e#Vm}BEH)i>DID1?k8Q!9YQA>8M|dWxAwcnT~djV4NhR_%Z|0AD= zz`wc35~DQs9tp#jZ3)@TjOSW?{t1MDy~gzkAh_$TqRX6qM|2WosKA92TO&GK-_5Jy z#AKk6UcnP9ZpDLNye4|mVb2|^ZrWiA9(!uQ?EiH|IF)>I@Ds}%&WV-cGrsqUSmInr zeAUpth?qDz=7sDFC5~bp2RSIX^w804j)L`@`}nE9szsIjjNs0t5Bzz{caWTXN(X>0 z`7+U?ob}-GwI9;pfP$}w6u)wuSSi-h!4O;nny@wc!$kd_8Da2QZz)-ii&8{8ws|S)pI<}`AYV<~d`kcn=UhXA8ZGO1E|L1m ztDHhh=T5Bi+bR#*(Vom>gu6-Za{;d$#jm1^|J!DS*JcHZ#tONu?faT)qTl_w@M`!{ zBf;CQgX33ns6Fo(HaVe;@xnbdSHcUgB%|p0DLVyEfbEEvt+^fp0!BDw{Mh1H2fuA% z4ky34<`oTvdFk5uc8Df?edV>{H`>;yJVr?<5AGe8`yps$$hl4 z$Um4XY4;x3y{MMYx!R+{#C(pyOln-V&qHSM{T)y7{4a!Q1(7{?I|b91{}Q6P-8qf9 zu1F(BNuOezHE{o8Z}!+Hl*By}o19H(dqX=H+p$G(qr$BRuCJb;dxXB{*t?I(lR=;1 zATstCr;Z^Vm=n%A-N3@}6C3UeDKYcs6tupA#KYNhaGx|e@iUiR6)cPg#_Xc_y7Jf) zV-m?e)PrU5c3$+N@0(uorB!(6#g}OP!;ti+xc(}_C%?H#R);$Jg7cxs^n@zH1UqCt z7=C6z)%>?!F{We7(o`g7Kcp9Lv>@aTNT&55J5h5DYhDg{-P-0jKSa$*L@wIlWQM+N z{5^KecEmzzKRjjzu*Sze7rc&1G+T#G?B+`@SeDc|zQDVF6jR^+G?C~%n|mePardD3 zPZTopLVINY@3<5{>o3i$>m_7@;*(ZfTC7I`{La7T;F+t^&3(q6oHswUh_&r0c;=lO zEOTO-XI*96g(kxZkI#y=*wW~1hyx~)Q%5NxOq)Bj*S+HjhBPJ0*S#}gS;=H#rlD>1iVMz#5V62 zH5c{j;c_4`zSXPfZy&RlRr{QO`(2C6%0o4aSMID^psDn<33B_gu7u~Y^X8gV{?ux5 zpUSQ~>EuyMBPHkm1zd19)Q+3;;Q+WBN?vAfOq|Dj=gF%-rPuZ&<+|vJd7%%kTn}oe zelP;TidFqP4nH6~Yz_+_j98DRln2+OL|X@!nBm&>dgCt4c;_+YtJ8F%^f1??kC-)2 zPU4<*xct^0-S+c|Pvz+5z|uH@cfZg&QpOLSt$~P(v<@sFPjDFW z0QPWb<#r5ss4~hoSx!g5NevgHDVFhqi(C0d>#%r^wO_nCF80r6m1tew8S0ubuwzl_ zT60cbIEI?X0%IaEXLhx@<0*5^-v}?Yue_g}H_h&qOB3n57VHQkB_(Zh*n?n`{1EsS zhu<7eI#^Q&W`E+1&2<8>N9%R^{f|K45%6`hh{;FGae$7$#U7zhoaESuR4DunyOw~& zMnnJ`^ThMBhl9(A?T5w@sAOV^I|N@}S!3=gAH1cr_X&9GIo4S4Jalbtcsm(>eVf*X zL)JJ#?iJTxI?!+Ji(Y*4c^ma?`}7um>K0eYT6p;U@8RlgIL9jFcs6Jlie=0VklJ+< zn1|keCDhG9B7DZ}W?Im{7Xcv}sVQfpy683d=0{Eso2|9r$~{17$VZz&DE6BVw#Sj$ z=VXM0-BpMnPy@8f6v63ZT>3tyLVY8#Dyy zKeh=SkG*5tCJldM+fM$k=WNH1*&>ZvOW8npfh;ZSnEK? zOC#2zdDGuIzDv1~4)C0)Tx~D+PxjwoYv7}&EX{ck^{>BDz~^1R>FRIg`oXUC+=ugM z%0d!B04+~0Os(Dx(-bz%96P7K`F14v9c$&YUg5-M{n(OVIHetI1}#mkg6e32upsIW zYqUrc6K+kvPes3De%2P1#$hw;nBCLI{3xV ze8|S}#UESloSe2N);Z{0`Eo4~d=dy8y};EPaUx z*DUn70|+ky0gdMQjwv-Xf%xiC=HKqF?0Uo`ylC>I|2l5gMfo9gcwWSDzgZWJz0rt% zV))p>;W(z=weZT?WT^2WYuGKJ`b$yU6>SYUt|9W=tx%WWwaY`Ss#bajakeSDm|dPQ zn7$4z)&(9R1l9=Kx)P&JpZmp$d16N-Smui>$GU(j1ZNr@yR_)T8q97=c!faprD0N; zg@NY_eB0q={#9)8pw9RyZ%8t(q!Y-(8u6pjV14$z-jbLlj?szD8JKc%?929b0M%Hr zic&VAPQf&<_Pe>QQHn(&{la>UybSV0<#;)#`?Aze0v825=hm`z)@~Rz-x0$E4BItN|=4yKdPE zc75}&=rm>D2JMQJiqd>-az-!zaM(UkB5+@d`Oe3*P^+cWp=uI{)*f*?q#%H^8wp1$=kN%F+0*)QK< z#y<~diSs~EdUaECo9d}{IhPV%Fc^iSQI(pfsjwS1&5e&H zhnyDe2cFW@j;vbCbQ*tYn&lGg|6do^KrR7@S6&Bla2NBg)Ye>! zjFP#E)4%U}Y6!a5qd7eE%q12ak``uM2j?i5cFY4eW|oty7SS5s2bp_6U=Kr%_m7zr z1tx~iaG*?%j)zZ}95|Xo%?vlTOpn($!J$gE)U zlNW!_v0o0pW9(e)Ho)^Tv_zKai*hg(q1^2=xua8zm#s*%eH1WrZz zR@NM0zS89ut$jHz(i+&}%^Tmn>rh|Dnm3l&t;2*Um-UfyqH8(s+Fm3r&ZxISI_^LT z7H`{=Rn?a3I+y>|>7FLG8-7<_9Vaat-j?+ zE}0V8hQo?GwW|llUYD>tyq|#%s+ht#lN5F#^;EXZTxT0>J94f=%dJ%~Bfok!Nqo zfv1D-7YgH|ox5E}EK`z&_$OS7SV-?V7|GxO*Z2|;1o|a%VXWJn)LIFcaXsr0pYqs#Wq0ux zp<*!4c;g71lyZ)L^02^nelSjkV*)--O!6RW?2m7J>+zYa^<$%x5zXNC7iaLs_?D_q zIKG1Z*%y*D4lc*Fa&f39^I>rT@}Kye4}9yiotSyM*Divv^AK=4iD!gHkQ+2QETVI2 z?^HkUd}R`$U|*o{fd!d0GKVD7qtGr8P_DSX$T-It-z>!rY~p!POkU6Mc&UZy z|H-{F{uFzQlK3aS_hPGyY)pq8!+u9}uNeDQ*JQ2f3KnGH7MqhJ-&77Kr%Lpr0?u$c z{~t}a=ATo#_S6!4+ay<0B@=1QLz6K!@%U}8qgsu7p0CD zgJ79WTX6lRgmgE7rC09}3Dg3t6+QT)DI@lfWK2(r?)^0<{V5Ui%5MP7wB{Nfuw&#- zG9OI(Q5z8lqFCo+PC!`TlMmMKD}oV`ZBqxsNfc#h%`Lx)M1vobE1Un5Mwz zuYpMg@k!z3v7EsYTk}V30a@sxk8}!|-o#0jf&Ka<2jkN614MHzoOnp>Q_uyuHDi)m(jFl>Y zyiSsFVr3manTQA_z*ukr>)5>NN(sXqqp+1SrVGQ{UtK7r;+W8j3Enlj5Fd1>0QSZ0c8=d|o8<6vz=GFz`Bt9 z_qt-$S4O)RAVzazd&PY%S*v-gm8v&Dw~4QjWvBO{t$OD5no7*6-YfRdb&GWL@M{?+ z*E$PW@O2xmb7T6Xx(ywAi7sZ$C$DM{+r#k+ZP=O@u$<%sdi~&g9*&Ik2j)GT;Ms`A_2%ZcfkgI*WbI=RRa0|vwQZ3Vl7JvkG*_jU0dng>AQ@UA>L+pmm=*PP8u4huoML zWBUpVklj=UW_Dj9`F5D|7R^^T9~drDDbe=NRipvmZKUW@=h3L{1zJOH3L?yh0hmri zt+ESfGopWr5^HpV-OJ;bO1jmIxj98BFg*o(?^fw-YmgJY`Dcmz+eQY&jM$nnA?RgZ zYt(xqyyO{;^XOI;x9PtvM7ZdV7UlF9r7A2hgbrM8JKwPAFkkT<_#d?Qwoos=Y+qf= z_i1cS{Y52x)OF}jZf}~Bl4qlwy&T`n4G(b@NB7{RE`JNSw6H@natwUo&;JJ%9TZM{Ot(Kw??yd9$OMkqV1i{F0 zl5lGD;47cWcMa#A>Z2h(ywZ>Yi>*W}WxeM3K)5Q^QJON!R?K^Ge2XC2gt}wk@Q?1! z$Qr!Yf};lm%>6cAS}4_ex-F>Ai;qTXunzl6xO!2bN$J5t-wqM`7He$D|AF;~Pz2KN zrgn@rLQC%eZm;vaUk2Da*yr3^as(71M}D!oAi0f!SW13L!i=r20OA1g%Ege)EGmpM z%)J7aGsF*6zy~Ha7%$gegy2b9p~_i+xt-9H7dv=&b@_7eGyFM+(_mtm!^6-1gueak zVfg4pBeV0`@kDVAY_#e`wJ$6WZEzsDS9q}tuKc!}S~oo<3 z!jnLy)*MNPI3Un>Iby4xWxdd7Cn%phT<2^4HCD>uZg3}-*pU>^{euMMcD-$S?~CPZ zmKfAfOed?d%bp80d)8W|xR3Nj{jQ~{OmumHFMiV+QmjYt5B~`~?$a{s|hXETy` zfm?48WX`!Cfi|FRjXTY;6PDHSZ1IUb!b=B{abrOLlDxx@V!1Eji^kWy4RRy#(5xp8 zJb&eBHN*#zKZe51g2lx=FgFaCG;%)Zk@quadG>H@>&*YkALwmhLu>?L!+tXFUO<~^b{x_4{9L1{O}afPQk4m=uGw{ z9NKeT0Y#h`<*liF4ELP8%n&k!*%i^>euTqoa~9!1=N3K9*rWJU0v@_Zam%!&m>>}TJV$5EQOT43@^W@lC+^`}jAgC8k;_m%i{v zC&9+zX0PD!0uRP@;+Jtn<(D3TwhKPj&7+Z~D$i*VNvM7X5JH`lGYgvGczbCO7hJu} zLa`YxnBV{oU5C+?LH+on37`=?Ho(S6PQDX#;P#R=CC~n&Ikh^m!|hd_IF2m>W?tEs z_{^{N=n&K}x9#y4{;p}( zSo1E9(z&`F(wxm3T^@8QFKUGRVPH-j97`M4=nnzed?1`55u!9tN$9V{-NI2=6H88r7^h1wC21I6-oXuzd zO>Lsj7sU;>W=Wp6E^!ybVBj#6geeh!)y)`wg)X;K+$Vf&sSS_|wwbPBLTI)suL!dLAkFnPaMLiXRWN85XZ2y(gg99Q}KTOf7S(v^na{eFbUsS7sZ&t0l+6o~fA`szxv zzp7w8CD$Fpi#|Cm%2Z&S{0g2+%#@#bBk*?v4aR4w!d+t(3O_mW9ZmkCp8ezM zsWWZSN4&j2+vF<9tJYW#CrBG-w!`6I z<=w~dvl*4=;}G#SGPVrz-(jfn9lr63aJ)DT1WznJwNlfV4vDd!`BpI)0k7|!iOtQd zZb;^L&g7K@=+qcHS8bZShdJuQy&W zQ#dC{uDR+v*!#r4@Ft0W)+obv=U|gR8U~88`z*L~-GFUNb)d|kddEx)ga+*Gfv?L5;tygGF74Y!yA z@SP0te`utK=-SsI@8y(PwU_z1hHQ{^Xg9)5)mrL3%los|)YMt~UhcJKa`hj4_S%*- zI6rrl@;KH%0+A)Y>&Tp?`6&dJG`3!^*?nMRSj^6RTbJvZ_au6R{mzw;eZEahT1_zP zUoS(P2Ix;dU%f+GPOY$fVjvMQhjgg$W%Oeu zwq9Ha`dvk7Y7G%{V^!F=h+7O=)6uONlPjrLJXg0<&LcO%|n>Y5CL7I_wxf! z+}Zab+{}0MuO4N0s@ou|4Pvb0Ph<8;yemI>0=)ak0sITY9dH!omgO-ZOXp*X9-T6d{CKe2{>Pa-z=bR2eKyCKN<9dqtFH`?FnrHy)k zF1{h>q(+y2Fh`w|+PMy@bb9t&(zA~4uDbl8JNYTZJdGRta#&)^{6d^9x?*W8V3vlD z-i{|097@~18#n~_|TlEe;DDutWKL%fIaknLR4*khk#Ff`Q&*W`+@6Y z)9YPDdKI_P2gHH1dVJaaaFM#{q3S8_9Ma0*=zdz}U;2=m?_>zGJkqA?pnjX$4@TLI zl16U+(FZj`RzvhOdhj6kKKP+}#o)J7 zIpH{82kIWKud+J#;tvi_K2O}$XFYu9992*;pS6c{g_|VoiV2>ZnquC=%1bth zwObg8bt7`?ih!ljTA(!`#7=zq%`*K9oG`P)I$X5vZ2M+yna5s9%X~=3{l@u*os3?8 zp98r2bS$1jJ3jWETRe^o#q@_Qo)4m}pFkxQ-+2aXjT`R?1^%2NuJO1&1y?W49ZU(% z3BZ-4hX`Eo%tdOTQ-*+F?v!!iFWTKOb0@g5Jw`v}^};EBm} zN)?2pQI3x}^uuVv-B#)J{luEQ|NStk0;@(#4wh3p6lu5=!02T+nk51p>-v6&?Om^H zD6tV$J_&kp-<&;GoHl2e4={-nieY+k$Var#f#IYQ6M$=+gZc7p_ua_0Rb0a9!WvFl z1GCq}TMI(=(6$a)6B-OOqdUPwnq&=Qe>g<&50sxFHQ;rJfEG<<4*p{f)#0ZPyCQhM zA!?-7k>?sZf4Oi@>-c(5PN%vhe|)0TxMOnaX8;9y2xyJC9q6g!o3janW3)5aA_m)w zN*IiIIN-(_;5}q>5iqUQ*!U!`VH|(+j$6zj4XyC!nBF(svXf{(wOV&LO5AI`xGRQ! z)@F$oi0xUY+7Fd-tl2ZUytDXQDm<=;-FM{@_%?VGJL?M8+nfS|eHFDRw&^nRjwRE) z=HTb*#AcA!b$mIiK|{#szmlv=-8S^*`{B?JfsJs3=5G!&tRyd(e9XWbPtJ~o>vRQ( z1qZ`~-wa{Fj@cpS?eRFMY3G9ZP z64~Ljf%fo(4O#o8nA2LT9O=gImd@0H*{{-eoX|A{yzeK+kNBi4y}_F6uO*(1NVIkOHh5A zTv$o^A#vvxspC#YfKmCj)Ns-#*PNowlSHSC3`yf8fq8>8d7z0bEScPQfNLBp2y@Wr zFc&7vU^AFP)?DWp1=;dBcM1FI#PNwUr4AwBS$oB{xp^D^ll|yfLfF6pwybduAK<|V zWu3NtxSPl=3ZCB!5&WXNwOUmr_{!^Ojm|l8e-k&&Tap(_GbI6zB zKfPK*1oucCaJ{@pVfjEC85z`by5H(8VnBH7;A(Lv9iVSW%6DepHRh`bc{jBpJ(OB& zSJA3XVB(VyW9EGeERg;uyo|2l7@T@L9|D0|16U+NH_(f%7{~5^)|IRhs1KoNu2|F? z%Bi5PNAI6$la@UaFj(_bA_-6Ya>p5?MV{#|;fH-(^>U|b7r34>mN~@PKV498R6KKpwXJ|IkF;#=V~AF`>aNO-YdEeA(}pctOD^O&?lmiP z$?cfz#87ZK_%dRHXN2qW?Yz9rNgi|UK_R(x@v<&oukZ|VP%L70Dz@tpj&ECsdg$JX zB=>ORWiNB;kmcV4II035rpTUCA{eqPW=3qyn9Cj8+>R%2^T6zf({ngi9FPqlWAVbx zymPP_(|6|;TE{=;Z6Z34kITmbBQ<6&xMJJx9>ODpF1}y!31}o{I~-<5D+g!#2;R9@ zUdN0rJEq^fbK<)~3W0CiCqsbV(K#nTLu>B%7?aa>Avi6)3vdG?z>V0+_Wg@eMKhCo zvKHRaX%9W8I>@cvdsZ(jdJ^#*vwh;N_b65hEL2k2fa3)P{1cf>eum4dEb)B zeNNXGXk{vD!b-wt^j7#f#1CExRWBmtI?JahJvZ!!Ky>QDoL)vlhCjfvPVz)21uNHf z^#l2SxFU_Ma?aFfPSH!NZB)^6-kcZlrI9roMw9ypGvXTN$e#vVC_HoEE)J$O93;fO z=k%9<(1tcdB)eSImE(|5_G02)qqHjn$n4Isn**2#^+l6nBAhjc){(eXyyS~ZB&6V9 zu`cKsL>{*_Fn6dSV(;1nIVa`tNoRoheBd-#JoYzG8%bJur0uaN8;4qg?AGqod1H+qBlC#d8VP64jUj$! zr_&3s27`se3}#M~HfLf@ytEYTl*u1{2jY|dZS1)1CdJ-!Uru5OCBVqVmAP@>+|+E{ z5)fpg3!)W!%MqtZILC(A7x zcHG*VgA;-N4;45tt!-vO#u{Gp6HX_9X z%gw=dr)e@SEcXy<`g9RPEK=mj+5Zyw3W`Tdb-8pBQ}3nIk6gwtZ{?|Diy=ktz<)qxo^cZ1=Dviw(63RT>N6 zPvQ#C@Xyjo%dsy6YYn?}aHH?dNu2eg!Apsn>TmHF;ea*8oYV&E98*t%&kf&t%K}bl zL<^!>#&^OOwCFqK7wN(;=V*-1AL2fbo$^Oog6s))*2cAk&5OO$HIa~MJFn{~js!m- zQF)#3JO!Kwsm-ZHl1Z*ryfRCf^R1EZ_jOM`kI^12cxGdewZ_72a^Mx7=9q4B9MQzH zTfNl3ennbft{2&sU1>HA))foCmfCeS5vi2U$G7YfYK^l`+GBs2|Fj==wNsk@t^k1* zv^IcSXr6qRXkPsSXYvFjS1vb7GQ0-x^hKctO75W26m{qx{7b;R+t3tz*U$dq_##CEhr#f@csoB>cOEuek=j4xi&yo9Nv95qlq zlD)sJU&6b8dgUK0_+7B6o0L`5>CPqfbHWXgc zEd1p#J#_M=5$V3wSZfnfS6J$x7n^zZiP``OqO-M#E9m#b8(R9&nEw@=^ZMX|mf5Ie zQ*^}w<>IlgL-0{}FyiJk9&KYJ1#deOJUE$yhd+LE@b^faxuQBabwh4oa5j0IBH7j9 zfsfy@E57)~x8FqG0A5e~Og43}ZKrKcYVh#L*D%)>H$DEVv2lIOLwlo*}!J{ z%8YWo8S5rkZ`xv=xP9;Cz8XQ{9LySm>I10o++6G2`SxtNQt$kc>Kpxn3(?V7W!0w8 zkVa3_iy*Vk!8C}S-Tu~6PMWVqv$EpuMA_TL!FL^sni$ceTwg~EfD zF*yLciO#R$ikVnhql+utoFdk{O!m-;6KlXzu0moZd1}j&zSpl9Oj5GPRx)rhN@Bmi zkB$0Nqi@~|E{UzKaJU|5g+A>=03gJ9t9#Q~1|*G~&`Jl;e{%YR+Y}DLZCSZc>z9lH z3Puy4T5ylKuhBy;U+aoLG4aV^st#-K{0~O}GYFbnta5}k?iOS-dzhvJ`v4B;Lua;a zZgQBzl~J8cC8t||IN~eE`ob(zC&#kap|!#I@k<7O2V!5+O6ALME&Bxdu*BiD$i7C@ zP}Us2DRQQjl_Q1ELEOn5TKpfdiJ?U>++1_smj;>4?TbRrV&P)ETxcKhmFqZpO$yiZ!W@?mRIpC1z@}I+wr3s2kMY#K zk~+o&Jt^6z_!DRj@#%d?0>Nwgv5hiv|D!`>Xz=Evui1lU|wz7M^m_SS2Omd>s3wOty%x7x0q*L z(Q4sLrYYZ*&`E%~$JFUCaLbz!JM)eQ%j|^b@H6%^aOz*@O}eD89FOH}Dd&h3USjsO zv)*qBG_PnP)y31Z!oG$`*7epJ!=3v4zax71&W{a};vMr8X6BAT9cYXWwr|d(xv%k^ z_O8E`t_i+)^?Ul{v~)c_5rch1eLZS_{IMh0d)PU|>f7ODB&UMq$ChO0c<*%{{Ln@z z0`q}SfyHgJly{(Q*2}r;Q9OFoOK^Qu>KNKkn^~mF1|mKj;N~@GZ$lRszQz9 zALgF**NX2R_vL*AVo897YtTya#|Qj2Hj(%j9+WTe4Zb?5m1Z(Ge(60iQ!YZU=^F;w z4c;Q(&h7u<{p2C;*0K%u;BYVAc7DX5JT(81?Z&9XxVUoOZ&@ZMvvcBT#*9|*yF5V0@KMf#o?!u|^qU~$>L4DO zXKW47aLvGZ-$p4EqUY6=Qv^;A(daABn!@G|b#g0I$3e$HC*9Odb6V?PdNdz6DuqgY zSUar_`N3Ix2=ieh-kdZ+g3Gl+3C)|P<5T!FS61f`-{44(*Q`TSiY1<}i=5;4SHA8w~Q%{>%G2BWTB3lvbO zjtk344kJ3@C|=i#iY;txFv}6=#o$4WIX)1i_BGi9^FF}cqu+~$_}8}H9D9yTPOiSv z^#j9c3DoFdG_K^>-dP*@Ci zK2}gR$!UJ#aace)uUH8{Ow-MCX4`r{@3N(-s=XIoxCJx8(qJvKXNl1#4Bj`4Vng1)QuDf&6KnV{LD!ayY7@H`hPicVH|Mm{uQURxKA1$NSNoti!!`eyu~D z;Um^RLXeb-*K(c0VS;p^5v}sBqv@M3AoMx^NQ9%{GOgv)0!Ocp({BcWCdB_WN1S+S z39FtGY_Hw&@~?oE7aAJaZg7FioW9@$M-V#;3ofWe1DF?loVIn56Yc z2zT4zW~d~J#NyFg_~#4wk3%1E_50ikTm>&ST~Z~NGniT*vG;v@vF4o-8buwFA>wa z*PSAJySGE#d%19ZS};CxYi)i29nmtbz7T!J6;Ez0`7ncnY&(ogB;cBzqr@N~3nUfVyc{K+EqD%>rVQUPB;6C&O`;-iGxnS8C0KAr!YB zVk&z+IIU4T?TGxd7i31kXQKV8<@zMK2j-*WEZX9ERL#4K*7lhaP(Qw#I|z5a=j-+jMe$a^v}#I$5pj2<{__OZ8P0Qz`fbemiovb5)busC#Yr_kIdTR|KtSygx^mbHCUP_ys=Nlh{!I`&JQ8D@vh|}^ z$~tO&i*FbXkJRcxGW1w$* zxJ?Kzn)Ne)PZCY}b@HZM5))4VJTI{DcHH&~gg>*43Af?cfL)_~KaasCG6~+M$gm>xN z39o`Ae;rW&G$tJ5ok z`VXzY^``!mno8={1o(hqWW%0zh z2;0F%gVDTvdgd4GZMucRS4v{kSn$E&bPdNRp_08f2g8lbT)P6oP?Gcfc(uV!%2)C1 za>j}Xr%`*Y+kHaQ*Es*$8<2*98Dg=yjR&rKG_Q*4O&o9~5%Y%koNEq>Yv^E3$8q9Q%b!64u)#eRC;pzP2Y2`m)?siN zS<4D9v!eVTFc`k)ei6JNIolswix^v4u`{Dj&wFpYZUVjVS(A9!Gqx>|yo`jdy;F5? zznV}tmSl5EQ59Q9)I0#^ZJi7Ec-xc<_XPYPom zXiB(12bz)pIpW^9!}?-z8=<$=-@|&(&oE`YF;aIt&R|Wr{LVRRgw&&nhhLVDKGa_# ziVaZlq11u-J|C0#OXSAqd`;e}Wb9jDacpL1f_F~$b*>J@O(ia4q-7Wf z3ur*Ne018aIBN$}_pVWOT_^7)bav27CFz|r27!ToM}SK2axZOgL36XsLC9h z_FP|O=jZnL(vhB^oKDH!3%8;}cSvUSjfe)uyn$`8-9)&xE zHm~84_>AV}t90G=^i^z$OrRxOGkLBd8ZcCs#RtIenDzSq=3=h!oD+NxCm-89+}21d z(S*LoP7iL4F5oFijm0&e6VW(+>eWKZUty=1*9T(B**t2v4(C__?+rO?q>tpW#$eEb zALEWkDmnFk0udSj!y6uE&%XGGwa^?hZHlzIz!$<4en79o3_|W;5^kBRH9jXrsZY3J%caZtohmHkrny2Ih+rIf7xb3=u z5%LWaV<+N!rFApBLO#89j=?A2IXZAPdy_gV$-uIYqDdq)KLQ0^S9~^*6!cc=WEs=J zC#i}1on@TdiZ#P@3r^lBmez7Hvz!NRyi{M#_!#3nHi9d*%nLVX1u>~QqhpIw`2Ys_ zV3Xm!3Fv?&2<<+id(iGn1s}wh5{T-Qk>Sg=;q4cjmI!VT*lRV z=L`pK5!K7pI1| z4^yFhWf3=eHvAVn2+gahib=p+@5jnRM8mDL7);KSF~wXPC(^xs^RzF??XvP^sg6rU zgdz~~%7<%2>sig=N|Cw@tCyVbt0i;#8~HZ8hvZR5YVWsrL9am`TyhfVdbrjj93I#Z zaR}zHLpx*JFZL}K&O6VqfgwOqzcvf3{mkaVZ=-NFpseT+ zW=x(8?D(5!tOJQVR}TJQ_~YF8+>1!m*t|mOxY9TL1i31T`SLGc&gDxbbvJH%fZD5Z zJ12QGvSaue;5)YMaF{nfHdm#cLVS^C)6VHTZ|X@T$T%c!0u#QjcA*)jJBg|US%9(-Qq#*u}mX*$Tug!%wLlBdEdGv zreo(0PyWa?XrIFb$lgxY1zzi&b!=MO8zSS3==@+Tc=~nnAB0!VsS}Ifx7=?@>8;im zg~>;0hb)nt-W5I(M*75#R;+KaB=!fCsp8E>5GOAWKjk~ibt^_1){HB5G~8(1kS&Ij z07?Tk>%ktkNze3XOitDUy&h?+`|$gHrzk1zMMiB&ko0OoA1c2h#XHg3-|}T!te=`f zO8NF@3-OWbbCO59RO73QbGka$J(E<;klZ3eXhS&nC`Ji3^BZ57F2?ICWJ%&5pCPlP z+U(vthODJ^_=B<0ma->VfwP7H#cF}=WPy!& z;*fFm38*0ZC!A2uZ|Wy4v(vq3^(g0K{U%s)T23yd2y;kF_GzJU8wNWo#CFL|*dZO< zN8&w)gF8Jw9J@{2eCLGw)(`&7_pgCjNokUK!DTlPyc(5Pf2IWSoRBij8T>MYV=IxEo_Ovc#CnK*c2oXxh)UHEWBX`1!mnXCD^ z#Eg6%DtqT``&^Yr_0rhyo-{H9fCl}JEO(T~AVF_lCJ$MpF$}g74dBQ&v2y!sC>?u5 zltqA7E;iZOcwmiOpQQ(gwP#ort-$wL6J2cto^|$t>kI|@% z`ebb0eX%#;YDyRd5Q%;Sc@JT)Sa?Fun%z{b+0w0#oL=4wOW-)MTCdFl(Aw)m+7AA+ zSGAo8TA*8^zwDDja?MM-v-WxbDsA?evo2C=@n~5~6e`m;VF}iGh@`J;5tw z{P0Q-{^_q2x>ThUtpono%B`VEqpt}Sw6?LzcQmJ`ai*-lTdGLb6yEY{i;7LRGa>-A zds>v*Hg-?o2i{7Jvo9$N^lJ~D6)h4v$?Iy34~_*zRUC8nz_~5fI^+%yyK}*3bc+4f z^d1aBHI^Rm;}%mO`j^~8{8rv#yH;#+HF_%NzPt+i%dvh25EZ>5X15*NOQbI90!-1N z=31KHK*)iw)jF?NXnvLKH_57nl`=wG`9NbG{FY zz^1uiW34+4&#s`glEaJCguXQ4KI&#&v{G{E$$#?39b+1FwuOi>rg*u1q#{2tb4Obb z@YRT~{kU^V@SGQEh+t0k?rTCf0#`40`|w6HOCbdgIi2na{{lKF&>yOfK_a)sbT=D) z(^G_*PnqUB_8hENa#y7B!T#n`>TaS%-^5mYuSZ~O=)m3iN^{`ETVii?_6(+zeUrdM zsL*=Y*usrZFX8eRo!G5s4X!ld`+~L{I;jDlv7TncL9epm@oQGH#8~ydDb!U;!&%i& zF}nxyy+(`6t1-)V9+(@9Y|m0M%pvtd$=Zo1W~zGEa$0E$k!jEpXN86@X3)?!wps4(OKk_cVBYQOFPgKCl}7dP{+~88tjU9o{PyQPdim+tzR~EtZ7F1 zEhmSh4rCIx_s-`UjCgZ*8n(v*M^f0tMcTTZbxoUl1#rFwr&7_kD}MbeU>W4{BF@al zW#D_r7+V0FX1~G2HooJKv-!a%hXTZ1=*<4*%neQ~#>3tD9r`&i zH~&{W#CN`Vk-2W9>R@g%q>EJXW+#c*mQ$~GxntFz$vY`4!E5UROg+ryFiD*w|LPhyB3SU|lvt7eaQvXX z!0Uf#iD1qmF7ty9kn3;&Qb`*O~n0^16 z1MlSc;R7DZ&LvMquean5zv`34mkF4O_4_HcnfpB=OVJEhQ%39M{V`nOCMTojcvX+? zE8lpPuPPyqF7WA*E{c+Tys}IC*lE-yybRF02jHm7N|J|Y8@jmt8xu{jBBY$vn;P$&&0v*r#uRfljl z=^K`~V;pwv1pmqWA^vxv>({`L&*pnx1^3CG8Zvk|8y~*?eDIe57iq@kzMApFVRkP8 z@DXZ1aOU7p7=xF4A6HLz;Fp(;T(^^_k7Vxkg6%$Rue^87-}umvM(yojV~|bh|7o`#k!S2M%65bnhq9VWnNZK1TqYksb!4|h-5}AEH7qV&e4y36b zHW6t7YAbg10eCUski-Ork(kWHF*Bg_SZ1J_cVOFLoo0lD&~x0ull1S-BlIP4#g=K} zEMJEDbeMgY<*@E?|IX>sdG?XzAZfUr@5k` zSl_Z;OXzx4%^jFrmNSy<_00d1x7VADEFW_2w63MV#AJ9IO0myyMf(cs%L8xDxY=g8 zS1cL&GnZRxI?kc%H1#xK;ygsbtLly84?whZ4yl7$ge?wLZiEa4U$HtTmi(yUwIG!| zXtGy&B?1e~r49&(G)AS9sNK^PoY?TTXoIZT-(E+f(x=8;LWuDq=hYD8p?D~8TK<3& zEP7-*`=j3re{vK1_vW`^XQRDF{UT@q#&ux!ONT59-?j{2G;)~1dDQ{qnC2C8A9JkKqp->lm8d5aoNiQqKiZXp!FR{+?=M4b|0a+u?LnQQd9NtKn z2hQj-e+PwE-hq#f)0|mt9VJ<&ovd7ol~Wo%mf1J$ik_@g=$Sx*%JW|e;zMbzX6JH> z`*q&wl>kygdEX@Qx{(Fcd^E`Gv64?bLCqV)UVfQND?#&~MSd)L)xfma5_kCZpPbZt z;je!BjOMrgk|<7SG5l#>;Q0Vw8ib~V9NRiLMe~jwr%z!AJ@I~#!Fh2_D6%=J`;#@T zW+s<`4pYGq zi2%PYhObmI*o_v*TJV8ri(G8|t6%ftD`45|nf%ca{S@`?8VQyM$I@0_3ALUbVbxQ4 zm2N}_^2(O+h1bPg&h2&1;3T6FT+i&`dCdx!e${fGb2^DQrS*bn9h(3e>Zz^r;Q%+k zz&;8iR)n5Al*xHGCTi}SsnNKnuEFGenjHROf}O1p#bv_*tuYUF*YM z`?=R_4O-A}`R)N|+Ua;tif}D^a`&>%x{@UFn9YTkkyw1@-OI-RnO)s|(|z;jAAvwl z0t>o)VqlFEB+g)t9mBp3ga6kAy`YN!XN#3uhTR&+PC;QxyGAqAjU z@OP$$v4_L@Csw9;zHh)KesRvFN1#KUIaK+)$xrlHH^*1)4k8~vO$1u86`I=LjFL*? z-TOCwVR!F`*Kf7~q#kKuX`3*%zY6wVU<5UWD}#@Qg^XF8j@dD}^Pe1}b*Q|yx3f4g zbN=mz%bZu6;a?YoW2=wkL*@jnwO5_RjbKANHKEz0^s-20lH4N;F*gZ`h4gEF_@-5b zUm5>C{_1`6zwFNxT5I+7!nIge&QRF%d=kwYq%~cRIBX7jr3L2+3dgx{08~e2J>0B3 zKM@dak$k)Gqb|vMMcaIScuYXBG9q&qy5+_LH z)cO|Rb&9Q{h=WID-sz+n1%qu_g!jfU?`22PyD<>3XlhhFH1bAmh=R zzHBTmlpK%RXG^$1P-!inrd&s1!#h?fAIE>n`$+8O$p0tf|M+L@nn@Ck?_}FxjZdt7 zQjKxw;4+Oh40T5Ic#n9<*gS8b0vm&8--kL2`yt0V7bnR7^vsDrow?U`52{|}ynZ?X zPb@RB3zw69*m>s)JegPC=;Z27_L}D+2D|riYb8c!uC^s@AEE5Y>FU(WZEqvT{$}k$ z6?b30BZM!ci+Spl;)PS^s?JdnI;Hm7ba} z|MElunqMRC>{%99fz#3um0b4uc!*v&%z7~)FkkJ0*FE?XCj`*WY3)h|V`z4N@xk(r z1LJ{cgIs&H!6SNOWFVQlL6L!dN#X}VqnctC;2 zi~g!q)CGE&vp!j?N*#Lv;^FrLk9Eo~1&-`fif^>-guGS+DyQ_9ww2^-F{>qua9>Of z6xJ2FT4R&ZX6zQR_i#S~ z8lP}-;U>1Yvrm&C9y#*U-#n0kp~G0ZrYF$3MG{TELmZOx+R8uUDyRcY7f1eob6j%c9uEx&Zxle@z0E!FpX#ovg!3yhxP-zX@ay{>aIImG$} z&zI%YC6EtEc&Wuo8D!R~iH;oCa)>{pQ%A4;cVWIZp47`#-Ur8fB^Ga{ zZ>4TMZ{HxCB{UI(+I{wHF@Qv_Ia(D#C zkuBeR9dviE_Bq>dcsbZ6Tw(qc$T`Co%{myocu+#Grn2RfTSo0QfErRG|f+yRt=sWs(s5OUt;=V*iTzKm< z=jZK)EzDu+67M{}N8&&>Nz=n4M2f>4bL({kx2#vJ?2n{&Pdikn^CnUHR+UA3ZLjxE7t)g?LR z7*)XT#w>fU>sr)Vd{Aedx-b{yKMax7}e+;C>^7khw?>hrjfT z#qnY^Q&E{SSuZ*hhn{d<#eVq7OZba) zLbI;yN4F@#nW0_|FyRd-M$XY6T6&+Kl%@?qleFJu{1~d)EM?%`!Kf-WVGrQv{Glo zPu^S^rh%VWWxoFCtw5R8|6avh14&8_vtDr>);qQM9ca#*iof%0H}Iqk&*52W?M-yw zxupi4v>>ZipeZE4;SUk1%x0ARmDhrm-jzKa!TR_-{`6o2oCFQmYmHzPxsTIV!&`dW zleNHQ?z0lu^QAAOz_}Jj)`4UOP5=0BEC_gbnT0)cBKHt7oX==+8_y@I!Cc`u*mY|+ zg=@I|IS-w4{Cv5m@~er|&(lZN6ny)#?RLyxef!2kpL@U?b3=|*Pl*@*e4Cdd=|`q% z)NcNyY0ZLbR}zDV-W~vo>(eurgg;2@pcpwFcUoy(4=ke@qd2+K`Ln~2R-Hbr+_ha; ztV*kr)M}qr@^4#$xs@*GxVJ=rL=2z95pq(wQ>ry8RQXpdy@_y9y)P};fjrzaItgA^ zl1IG5%g4<2%=V91^QGg{u}V7+eHm|=r1vt)4N0EOiPVHsM*)$^8bnXttMD{`p{5t{#S5sGJnCK zF>qdpjLqL{mTzbK*btQU-cCS?RUGfJ3liu*kuDxwz4n6et)*`#@GE?O4S4^~aE&L) zwIq`IRhOO$$xQ{5Y3!WvXuSM4@6NA%emU_oCnq!bwz+wiQlUO_xJi-w zI{%`AXW!n$oHgRSM#F|W(q>NX1docps-i63Sl)MWd~Tp%bG?$6+@9l_w&MUAJ6_0l zEHNj1Bz5Q05bSG}lWt@3+wfgU_K%dICmCRYwQ~(D9Kp*?zUMxCt*I<8Nr#W$1GSPP zo|$US6G!I1_Inl1#5y7SWjq-AxmvIZ@*=+RhBRH9F-5>1zBRymNVcmEFgtb!CZ5#O zR}e3v9Dm}rl67hgW74C}c`+*Xzy8<%mL&LkxN>*ISqCvD;@#YQ%Cw(vxr$N!fjh~_ zHVfb=T}oI&hkQznUs!!b8lr~k(0#ob3$n(1`ZXrdUv2C+rX>m4=wAcl+5oMcFgy`? z@HAZqGrC4yI_hG4Y$vsT+g91O)eM}6S|v)*y=D#54|i+jaK89QIBb8{K?!=^zKA-6 zTx<-Do+?iB`ro=`IHrRUT?W1cI{crtP~{6qinxaH7lxkq0KvvPz5K4>ejzi!n%h@d zQXNAIpePYls7*_>E?V;)f6_=^Jh&MnQK^{_{p8f;e2_Qv&gZR^ zZ&_z=-u0uJyrh9)le24Oec{a>ikE-0H8EkSRcff7k(viNRx}QBTh#qE&bNTYa1kAt z-+~eGB3sS8=BI%39?ZD}yi3x4;yZWIK6-#h{2BlaULSTB>ECxg>YOquH#6$hhHeB} zTv}r8C0|_l8L5*QJo({x78p+E;1jqK{%g*++NpPDty4wgr_%9j)yFT!_P4$B=VIOj zfm|~gn8WKGzOSjOAAV*_L?;5v-!;yeOZL(9hk+h`%y<5Y!H%Re?@+|fe31|QTBo-( z{=s;GAHMS46NOvrh~GKCdNbZZYjxT${#Jc!MeD-1(6+ab?8ylyGrTkw3_o`<;_nEr zaopaXLi&1d+7&WE$OYo)&QB};ZGrPYJV=Ei1EWp^2u^r7~e zRZr_lF}a+Rb{+(so-_!ZSC@(a_Vg6`v|2RUSr$Yu|3|XOm+W}e=Z6Nc< zC@|FQX`c7zK_$7A+#29hP|h9;U#1zK{z0(5jl=jBU8h&XeVHCM*SWkbR_3g?NjsiC z>hr$W32*0jo==5rKbWn!H(P$RCbar+Z2QYjBG>pkhGv1Y=5~j^ecL+tFCJpNu`gvt zhj%0KokQ?XIm8+MH84r8H%SR0wgqkL0B7*F<7Y$+w%`t z`C0NOBauhyr~9dJs5`c87~lL0lM|nL+c<+I(4uiOr&g`G&>bVb^)@fL=JbJFzjD{c z%Z1Ugm;WdKN^asue_H@sgyE=mE}MW8E9%8hEc5RDEwg>sAZZd;^ulrl73lq(22bot zX{m46*ZwZz+59OpttEEqPH2p929VL%+=W-c&mu$L3SYWc#s`(-aFQ7HrQ?>~S~qtL;yj6`6eo>vLsI+4ISn`;o%S z=fEqu2E|7Jn-Pv?zo&zT)42CUwqYI8^QK!bd3NdmH1+J1Pp*3LV;sGM(p$a+1md0? zsGOwBvn2VnSWfk~Vnu?x64N_S`cDqCsU1u_>G6jr!f4B5|%mQyZ(-EJ9|cw@!rtkw83P(@JL`N;8=OrF*q|<%sgZ_%is2F z8xddJ@Py@DRBlK~EY!TOgqv^P4IOXgXMHCq>kn~9g$rX9&oudaX8B?jzfvBJ_B9)fO=V^?NwbV9o z($lVU(8!yC1o?R=g^%0ArXJRO2Xfv1ekpYn6y&97wlB>2RE(Z}*0>pJfBi7i&c_uV?f| zC$RyVOA#lX-0EYhd+VJBPa{3#TAQtJog%H;$?5#nLa3g7NU*tJ+5LpTRv6cV>mUKg zmp{2NMA(Oq`hC?ybsXQwNsNu;{@cPB&@nlId#P zQ1u)1qoX+Z}XrrcU#9;Ud-hD`$E)ky=;9 z)QevG|CL>*IP4EY zmuBCAn(V?#p_kqlB3?$bMp_@J`NF7A2{OIjY=c$dS)>H2o-ka>FcUYqeYqJ^PXKlu zG>h*PKG*tg>=z3cQH!K$81B_{Zw1rR#?J* z*nMHeHy(SXsY=~cI@OE+z8~3_o)O`tcC!~-7rpJ9vw(Ud7O-IF-1W0Bk01qHyY|Z; z-CJnUfu9iBr|$`_#h3x?0)S}Bea5BLmcyg zlasy^Yg{nr$qzF?k!fXPj@yPY9R?4_fs+1+0S{R9 z#$B-s+bM7uO?Y_~{C4zKuD~BMpU~r;+A9z=PGE8a~^9?kRWiz@#>rpyp{H*dyTF#4vGC($4*tv&#>i`Puo*j6 zNF7H&?t4x)Z`<%P%C7SXhMzcJ)r(CGuj77jlI>3bF#71P0z!oM!2##JA6{!&GZ;F- z;j7}MllaSr`wvIjot_6!d(!9OQeUY&*Els9)MN+ZCy&{o+6KqNDy|vtr*G1mk3`)W z6>u!M&OR}S&e7DGW^~Rum*iKjL*#fb$(LF3wqqvjZBQimkV>vqD{k#7VA?Y6AJ!6V zohDp*ULS)pHGvNHcqprUJcju;yU?cgOlY zfNV~^J*b%mY_BG4{_wqV-O-{HBH+eYMb+DZo6}-23H%Bk+FvYc@~Xex?tXtI?z+|S z-Nx3K_Cy4apE)&lELg~!yT3YXyn{@`8{^b8)XiR8<;@xtnBKeJ^zthw@q3Qq>Zu9t zBldQ-!0uz)nQZdclHn(PBL!nevj_NH*Lp~Do$--*LF@c_5Sw)QLuUu+R9)v<@q?6fZoEl~d8q zXYC_2Yc6Kjj0oLas5VlrdZMq! zG0Lue7(8*$pRupJqFtHZ2^O*vmU*}r<*Sgms}DrJ3PmzOav1onn>W4jzZ@bnxrbk& zAt(@AvrP`EDcdI4dgZ)sj1oz`a6m@#AGjsWL-Xu89Pq|$>s<(9{-yu`KmbWZK~$l*-`V}ijt_%nRrO+9{CEJ zP4u|4x1MvqJ+Z3rVk_G{oYXaaiz7^(J*Hvc`5RNZ0qMqN@pIYT+s0@ojSNns`HveY_6=*+IdN| z?iP1m3vcm;G*zl%JA7`wPv5V03pf`I$JrljfM5WI&FN4BHF2ypDc^Z~2&~vKBPCv) zi-ZNX?3SZ%zlocMr98vfcaAyJ%b0J)OLg?!+x^feY9w%icxl z7eClHd&gR4aunOP!_goHux0~^ckHd5oXJC?a~w+^Gvkc`4bhA#QC_8Bo7Q_fcJ>;A z>uxjxK` zwx4d!HgxU!Ru=uClWt{ZbStIZpzA2$J$^YRc_ z>w>K@8kN!l4waV8+7`I|@-|^-gxq>@N$~bIcW*VRMXR^~}rz(*~S63#q%Z3Or40R#ici!J36%@~|j%5kK_bAdE@$AFsF(R(_v|Igdm zXi2WyNcwoz@BhX#UVH%r7-VKuw>^87z9|BMKmeqal3e|l+jr1o-FbMw#Xi{wx%6`oYFE>o6YvI)T*uL60*YG^l!r6m^$~tc6g->44B}4ed#M6NWYCsUN?KKsQ12lpR z?6!92fW4M*e|Qt|W&}|W zAiffNN9yeBC_abzlny`fI5O07{K_oYEXQjW7Jevw#?VuPA#4pG>o{zm+2fmSo;l3P zOZ+F>d(1qxB<$mi{XQ7BR2h0>fmgQh|1PXwJ2)@=uYWu>|5`|S&8rtaJo{ z-fl#!g465%I$YtpraDPc?>DV$ZN&KGfLU0l6|4OD!y21Yv6j}WUa!v*o7XY~^_O}N z&g9Xn>X${zsB-2PQKypG=d5fm%S+xRSOZS!jMNAhSVQ&AGofZ`Ggh-~VHGn?aSk33 zGS_&`)@x|~6g7?mh~kb$d($8I07G;5M_hzT(#w9YQrdgUr;gSl-dU^mxG=@O6to64 zkdc%Q;}EDk?On}!=7D*jJ-VbJp!C6*jEkqBlm9UPJKT`kzXnEyC&0<*OS&&jot%m# z2Ws;=X`64i7dCcIuf`ke8yd9^^H|9~_P6-#=^>Tnbr^Ks;r3UX+Q!Urj@ttFXJcb% zUm_8|^{mfDGJA{8!?m9DBi1UhGZhmD4cFdeZm4jZqrIV(Ad zn#QIbOb^?-I##356}kD&yJqs>@A`W0?@W=D=9-rV;0D@Q_acV#67aW&;GNP@W8$xd z(}Z{MlTrwEHh}T?>Z7l%CJskDCk7_5;ydI%1egbC+r;#ZIoZBBFK#{KKh12Q$8WY@ zc#5MJt;$(C1|QbQTwFgn%4@7S=UOZu?(*udS$SWA@~N)9A!pXDJp9tHNkhL+4`*;d zX;eQ-E1dBDem)V#C(yra++RMpb$6$pa?l#S#5n%~M*Fy33$DlTs+X24Ute(J@Yp-{ zm{?6$zx2@Dv;4xuA$M{Bw5QG|W*R$xw3XVDMW`4ri6u))D__`q>NZyOoT5h>UoU!?96X&Tut{2e8LLx~xzvktcVVu=@y(NoUw z2HG6^%+iZFV`-ZQcIwU&AW7--btKK z_b{S!9#n~ZIL{C?xoFroSNkil5-0AMYfAFvM4jbJA{IPfo}iYQ@jLQok6ebE!Tv!n zDbRl6DHexI&d!I}-NL39@1^!#t{4@NoHaM8joic)u^2NS&X#S`Y%?=5o-xPae8XSt zn@_HX;&KX)Naou-|&}L7EqvvSer8@{r4yz^a$L zU0dnyITE3H(tZwv8Tx&N^iV_fm}5P(E-n~0y<_zKXn%^ebtl1jtkW^&Zec`fgkMic zynWo_IE*oM`|X3=8rIi-0+dG8QFqRb*!HiUN>F`1b*GE2NBg`4PAy7!D7T!MDTjFt za|*ncKjdw3lI+V3G1?7xI&1{pZMk@=GkV75B5tlzEIN7c3}I_HZzCTJonoOG+B^$= z&M!qihZ_3nbIp=0OzQ+E7~?7_f#%FraF`Q=@6+#nU5zp}rp&$?^}<{J#UoytzPym1 z64G$L(3HQ)hX_OtBke}|_^}SbDF*PbdI7A-Vk}~9;&SeXw&395dx&m<0Uy`YYyO$j zH;jwC9sUJ6!ms{^Z@_bHj7`ltyWi`5gq&FP+)uJwt9ATxZJb!7UXE)p_bEK*#5ta= z=UH_^8QyZsSbxF55UH^tU7d6=50i=M-Vafu;??Nt8ZMx9<|2f%!Y08X-`v8@VIF(U zh)K)wnjMmXzcJTG&mjD>r*yOVmrZU)U`So9CCq3Y5OC5C0@g>x($) z`sG{lM@NEiYM`zC!YE8W0S0^hVu)B@g5{GmLqE=-ryA(8{+gSCZ6Yx^BGzFY69TFj zsmnFRIRyBnM|fq6N2~@(^)GR_jyiD~%NrVm&Yv7-%AH6AIRLY z)jQY;IjswTtM8~+bOvdR3Cjj^W#i48y+=>X;$1|e9rQ~IVq9K|ViPu1PWWjivG}Hv z?g3^gW6b>u)yTIzbDi59iqyv-qzY&qHH$-RY|)_O6WnW|>_=mLc#f5g>5|?{UuOIe z*u&?~x#l{)^XN+#5dYg4?VrN^t7VZGy#(4XfB*?8t8T6+LS-EM6sTUInoE^q&NpFYPj%SsW)lv-8c|u#M601ySn{`^vf} z*V_5Zp^i~c@!)pb{hP_(D%NtJ^uynGKj{Y!D{BS(NAuDw=Q@uQWRm{5@a|rWQ_X^C zId4FP1UAn-3nw>*vCVNz57gQV>kKX)eK5+A-(DS0gEzi}HV*9x99K7yUq!x1y}Fs7 z_9^o&;6#4nFT=$Su`Td#qoRj81b`Pz9#3Jv)S3IvNP#8K7+P=4`Q|WtIL6HI++H68 z3)46D=Hwo{HvV9`#vHF%Pb$Y}-Y>+wSeY)3!v5jk`$wRDe<1s?x`pW_i;~3Q({z2N z)<5+B-oUKS-5w468qU}L7AD^dXU`{3WcY(gACOuTq%Z0#HX3ECB~h$P3cXLhVEdz$ zlj0ndFp=`*R)1x3SL-Op;PMyW(vN~7whaZ)bm!Q&g#DrWbO9@cxyIa1x{QL;h3XVR zzYntZqI%if;7Mc-g6puUV+$`(t?7Vn`9svUkH%u<(;K;q;W!T)SGwhdZ=3j(Xv1q5 zg4T{k5=TdgXwT&arT>&W*2p1l{(!0nR>rPNAcTU4uPO7x7JYnc2qV8ffxYZ1kyRQd31XK-)YqwWvflXh`|si$7bzJjQmuGteZCg;1z)R zZw%*pzEWcyUjN18>^jK|hJa;ihgb1#${%A7GhyYF7sd&4J*6ej18AV!IE} zBiWjQNMMv>b6mmNV_B!xxTmoK;LWyOwFuQ`t7i>#9IRO;#Fqmv21~Y{+B>J~=mj5B zk}A-FT$aTYu7l<&fDIs5fzH=4{j?uSxIgx14l-xx%DZw@=C@iE+rP{lAq&<5Yyx}# zda)oq%-OgDHD?SvIgUY+UBQf7hJ7a>P95NInXdmON$2Vt?jA<7Yc%nKD)9Qvy#x0z z0Z+_CH8{?(IYGxemb1?MTkNoABNBM*?>cAEy`_hBtVd{E#e-ziGc=vFP0uw~-3b0k z>(X4kd(Ej~zV3137*ktg-#k#9U>o?i{gRgkzoL)7%e)`iSNLTqJUhfX;?wbhi^ zw(AQ)bV`XRo^SG##B}9XBm4Ui-6u17MHDpn>X(0O+=YXF_oJ@n04a$Xb4c-Ad6ELx zU7*OT*Rgd;`$6k)dcEQuFblRu#?ro-(aRQp8SQH$OX$+VPvG?}WgM>gIb-vLtB+u8 zV`VBfeD|T30kA)O;IqxCfm?a~f2KxvFin@8@e{o$eT(lh3aDUNGi&1Dmo>*r+t>ZR z6cOV?T|T_n8LL?@amFfa4yMvLFyOF{jKWp}*K0cZ`UWXq3F80DFI-*+wJfi?=(fD( zNmVU)&R0%yQ->r7oDZzBkk*Z_JTy;ky-KS^L7t210BRQ-3Y-EU=0a>iBL zg6LSZ?BzKw2@@Km@69P__d{I!Cr2%WwtVth?mFscyAUE6=I+n08c*=;_bM2rvaBWG zW_|p*OfY+YlMo^o9C#d35@|$%ZM{`m-_6=JCcX(mOrBUmwl5`k`nMq+^;|67A=~eB5}9ERqt<7zW?lS#87anY zesI_jx$rRZV+{4dSJS+RVeSiG{U(R)MS(hGjhAUwNyOn3;2zt(sTOr4$$@^&$1h&~I${&0QHP>VL8#6f zj{dqM;OdVO-ky71Q_Jbn!HJ;~1cFPr++Dgut}{BCl;3(`UTRVw4PVB|?d+qW+EYV9 z5~!AH9(fDu z9{xivicXFqW&10eu=9SJzy1>NE0F$c&n?Y8RMW}$EbFLeG1!O;=ye;?Mp%jst3YDr znL_l&+Dj~L=lKG#@A(_<3l2`I%dUg zU$b@yfA+J?9_DC=?-w{Y;_1K{SaRSiQ`m4C+N1YVGZNC9@Y?jdj`Z#NW^|&hp=%M+ z1j20Wgs#qx&YS~U2@Tr@*|Wwl7(A#n)nS9f>7u8`v7}LSuWJ$ztPwg(1dm!S51eCC zqtd5b2C@CIPR0}SLMMJ`W$i+YdcFkg)coe~u;*iZY-4Uxb%-&{p_Xm%(Wu{Bb$+r3 z$2>R;e1>DTJv(ln`A;KH4EFI`&DhKWvH8OaIA!DNfL|{=y6C{h-=|Q#2#KS_lj4BIBzgxIp0=r}G6?_9rpmOymkn<0iNVjsEe9x8?r}G7= zcM_;YFg|k==odrS&Fgic0XD-o4DylC+AtVys7&$t41o8ut!D4x%as@sthYw}{&Z8d zWnk{3<~@ZjO?+%hYpB2Bf=y2Yul}%mId+OKp2?F=SW=!VzW(GO%(iUm7)*e@{}U&< zE+ef`u@>Ha+QnBMT#w>vof7RH6w>ur7F=TVF}k9bZwmZ#`kJJ=3LJ^KSR>xzp?2SB zPr6u>Y|d(wVP5|dunSJIiJADD{Zq_3e>0~B{PaKU>i)X09{!t;&ydcDz4^^J$B&vP zB&*}xEX?dJwXRY7PkLyawf2{+GdU{PLLp$t@%7<^gDJNT+s9l$9aFTgsWzA2QnMzU z8lnuZed6E&${((x=VT>o`w{0poI2#T{^sJ_VfJTCE5R|%nC1Z;lh$Hg&js=i+H@V( z>&&CN{T%36wcooxnQj@+`&BpK87U`nvnt#n&!<{jP~O<G$)3HE;~;Z= z)Naj!b(kdVcuA8!m_NjLL8)nZgPEgP^0BRHydeGLsC>`Pzh>%?!-(9km^mW<#eq#= zFx#ev{hZC?N|~EJ-&5V?-IrhVX07}C1&I^$Y#Ux_0Be7!#~@wk z>RZpV$u)~#^XK0KI3x%r4W!AK=Zv-8EB}mtBAL4z_J#HV74Txe`*SwP+bcS&x1Ab4 z*_$OT`iL`Ki}1ggq5Krt#M8UOo}pNeo6b8DvCY2qlGfOVKOFPEX}z(FKSBE0Ju~Jd z*E8mNN%~e#IiX?BXmwxFJ3z%wnA`!I+;L&-_hII#-7f&)`iM35k?}$*PIAP>7xAvq z-|Q3Z^L6|#gl=}$zU#utUKiK3#9r|5en<52$cgC|e$+0OIV4yku-!8W{^em85<;75 z%=5gwC~l0|c-eyOdmfHzVf&Nu!hq}0-$9%wzIo190!cMq%zj7vge8CQuM?YF!%yCJ zbnJ~M?hi0FFJSabC*1N2^9j+52DRZhul#)pBmqQd-~e;)+oMXnoBTZTAO>Ha)h`4v32ScFsYL`df#t6zb@{}@ELir z!!x%P#o(~K<&$M(j!YVFW*+3QkoL_NDk`p5Q~VYSu@2mz&DWjKlE z!|hCtH5{urrc!xMMXpQ^^Kpo8WAAApj-xRy=E%o;R%h$DL70`68fs=R1x2ZYlkA^s z%Sg^$t&lY`I=1T$=c1-#UZkzs6BF)S#h$(utAoyyiK|wIl4`EJdXVlaU+U%$UsICG z*2emz60_}DNvGzX2;=;z-{4OCy!@FLob8_&!=Lf|s$z`BP=AF4Ndu`iC+p*C8)Arxkr)hGZ8 zf%oYKyuD-2I?R)cU>W^i*C<33-4t=QXv?`4`LdZ20HBZhCcmMD%wbr3$#L>$<#o$`x;fm`p-nv8jV}6s$e`AbsX_+1^J-uO9YH zsfq4m?}ClB#(UJ65_q+7InHVB6~egyxC3}$j@N8xIhNiu$WACrC5;)kAIZBJj{P$0 zr&NyfO~mHOgl*sPiHXy8U-ic6!8x9tOU(AnOuIhEz;gVACkLC&;gh2uUX3_ro_#op zQLnyt^&;5+dIsw-hnVd$>0K{y*bH=t4^Jdq} z?8>=#MTVMBGl23rU;W->&ScMot0c`93>!Q65)&e0m46>-kc)}31B zHl7Vs3kCXAk}i%8!!sSMY`J5b?-w5YSnfA>*L)Qvtu);S_O3tei&s1A7&D{h_lLoR zE^QHur>{t#ok>-FFBh#jjb}+yM|DSMr)|D8SL7^1dPP>K4kOj+IFYlOgPZF)<6CQj z`=@{*Wde5kEArq!an#_K;3xELC0*@)jfsBPkVi=FgSqE7c4%`^h)5q%u}JU^*J?d4 zzDD4}=3;TY8ny}Z!yX`U^AfZDF&mI}uO;&x_Uu^CJ_o1AR5PWBs~1dD&gRNIK8HYU>6odA^JuiZ$-Ue%UJmH)Q^^AYAnAkH-4o6T2yI z-YkUt%>l!`GX;V#4`lK!^F2kp)w}Z1$g!*hx6HOAjVY$d4LEILn^19YjzdLNwQE5H zhal7bV2XvkFM8B1e6`?ka+$~8mp`BMiH}DA#4mHcXslkvu3A+_G0)___CTv)|4%b} z%f|!l@O@1S%NMQUh{k~rF?PJ{dco^&BKY*G2MKob&icxS)(4DA5zvs*$zkti)*sp^ zpBG6D$I5Y?DLYTZZR3;~!txNJcL|nR#(Zbd>}#nhix*#=`r7k4(wAKU>5aIa<|217 zVm11{RR$sFxuNPo8KQD1&viOd*o@4V4L&tQnLTf)vdduK#uvpdApvt3$5h8?#dgxg zBQOav!-wlUC~9N4#ByYA=D?9(higk-9nNE6&Rs)=r_$u`6Iq#GVppCUMAX;g6mT8& zw2qsFKgk;_W9^A~DlQ?X82+4#^%E(z%bv&1sfpO+b}fz&r^>7Q2b}PAK1N1UYFQ`B z%vYk24(gYHiDw@6>%;NLm@&`4#mxC>{>+_=WfPjQiy!D{VIrFgVJu0;SQyaSWAsWN>nB`si zidA60*#PV>qxZN?FvKR-#f2#DaMsHJc*MeN$qP{8-yg1AocRc!;7p&Q1Y%8ESNZI* zZSxT2>NH5HzqTA&Vm1vm_1*=Mk!*>j>WLyMEc&9OV-m!1pk%vx4TS5Dp*e)O|2g3an7Sb+4~EMc$ycmw zxHw+BaA9q6J;PBRxQB`84W>3ESb*mWdMjPq5;^;P37d_!gn9J>=m)kT>NM>o!}x~% zh*zWVuSOup_|V&x-?f_8L1~Ug_DVGM(uSUX+8;3me{F=6ztWS`7PF?(rEtd^H{CNR zHXmO+uI`Hr4&%=0bKA)s$+-EwZ{1t6uwOnoea(318}U(mU!9dLzYf;vTE(7kW%j?h zgd@-z+)%9op(`#@dRJVOt!8@7XSL_cRoG~2I)Tn}5##H358sYZPW5k$!XR1eqRd({ z_Hc30Uk!7Umv-v2NPQaY)IMJQ^kz&Z4=>88Y8m)0Fu9i>vE{bH$>Z+(>P+6&j(A`{ z|6V^dOG7uE$lcz+-ag#_i#PKey(SQ!-EXrqT+6=mW)G!-{eIxpgOBTt5M}+-Isde- z0)nBg0ht#h>XyBE<;nrzQ*p)2A#aBEj{JDha!g4$m8|o|!=5#>$F6DsQfejK&t~ zH4~~|0`40LPSlazexjvNXW?1^i8GREjCmK8VAx;tXtn|w`)&`h=|A!*_dTCT55T6-3xlVhZUQu&S)%&HZZ(7AN zQL~+s^?}ryyw4x8lh(RHkV*Rt?TZY#I=tNS57g@pAcLQ^d>6?C#E#&pyTvIO1U=F0 zGtXyFO8S;7EaPkQ)bYoh@D*#lUtj#_!7r53Mx*n3wogBa+XiQ(kIk4pRxEwvIXlkG zAm)K>-}XDhr7kalo~!qL354$#J-9X0rZHa3SgY~klcEFo@bu#z5{K7k`GH zHgFMAvFYu>%$x7_KBXk%ypa)RIW^eQ>K(s6kz)G3O*Lcs*l44Yt7PSmHq+=y<66sb zB-8ii4wF!^2(P(XN($|))3&MJ+SRLoW23Sm497IvnFg{Chn%CB!6E8Wa*>@^<*ae; zKSV46J#QO+A(y5limdgKw}}q6*hnK6_1f*^QbuPW86|P_%$pGAI1Sjrgd|H|(jbXRXq`ajvoXH4Y=*xy4kJ-E)Bllg1Y z+Bz-JE-wlmqgcSlg`VleC#7f3a&$AnOJj1DzY4D1^Q5Z2?PM79+%o572X5AFo*zgA zQ!VX#gV0ziM*90r@!s`A&V0>WXza-ajwYCJIM^l)oNehFbm9&De#QtvG8_ zPuPq~(jBh+f%N|pKT9?JIew=-=#+g@Ra#6A(N6Eluq~A{_WJ2$1rvh1;fiUmor}-8 z3xDk|_~iDLPTZWwmZoDAx1Dvs7>U{LNXK3q4&!fUZ!kHp&G&+V7P0&|Mx0)qTeIlq z68HB2+suix7f#g+AIYgl9kBZN+$`UF^xqX{m@@?P^rD6aJcICO5YoWlQyiW?%#LN6 zo@^7)0|ROhWsX02?bTYAhEbpY>c6D=Zfi)^hNpfi1$)AHy;r5HIu+ng>tg>8S0P+{ zeotl%@?_w=!=ghVRi~Ic1sX3u zJ*0`Bj`gF!xd%c%V=0q!A|A87kcimiW+SWK!!^$O)bf^PmI7C3(2 z>_RJfW#{j|Yu0nqQ?jR zd?Zsm%>`@N$=R_jFgb8$s4wio)(-yiCdV%d#x=WU%lJvk<)qd0o5Jc#-6h^ME7Ji))I}hJnYIJ{PP%mqht+eG#v6&p(E!(%7!&|vA_VkCwX?R+ITc=#D z)02n$6Gl_@Urp~zP%pWkXQDcvd2%o}M!nf5pDW^8PQ|>1!ot^WLLzkl|CUp@dL+4q z^j)}OJF19dz+RInTV??DRJM9V#Kh`ie+e1960L>H*gdP5(&~VoZ8)k2*AATe-_`@4 zyfNFysbQXUBywaK|uc;V$8pK`~8?qSpo*>{}z8}==39&_5g zl}6s!Q96uI?2X|YaITc#J48EuPT8FdOWy4d!R4ThL!J7oJIp8_0 zH{qiXsR~d-BNDG1YMDby`MZ`$^|Uc-RUWChijDoABl7zjSN)(5FvC)~iT4HsX@caF zlb64H$Q(HCcT_rYopLMjt(kja>aQ<=DWJxjRWm;0#!p7a?VEja+B(OZad0fhP{Z~@ zxWE<*9-OYstmhaqO3>;W`I`Q&XA+s_b-#D30+bt{KXY=mYK zC+!!=n6y{54SmTHi=GXqhU+`_F?%T_U5RE!fiUlV9xide=Ky`v`?jb_|Cqkz52-^* zuv0c;>K=|Znl{{wjC;P2!-*eVB zM(tyxysv8?Wz6&3?9;vV9rt_~&iLFXb3MCw`h6jJujsR*$#I3mj_nS=*FU_jPQAw7 z$ceXQU3cX8J@-D87XO9hSyzBh<>queSzRI4Q^Ab8vk%@ID1v&rl8YpNKushvaAtp! z;}DEV+jSG$;RaeS{}S!*{7PKC75N5r@C#P~aL3$&{fwpUa^_j6^8dl#UVav8<|(o{ zDQNqr85zgQ)ZNyYXX3Vbso~?Cvac6J$KKg|X2-1QSo+uuVvL&g6tF*-Vm^42?dLo( zJrTjt0b``*t3j_|=HhePHjmu;=)5FWaN+$e<*$kHQ`>b%Q|@S}58G8of9;0(=)GgO z>DbF_ieAg5xVrG(ueJ-^wy5JP4uiiyVZ@*2ajHA z5816b*SP(iP4qpr10VD*v02*wmxOP*VagqzUp@%ka!t4~So}*(v!tT1H6CjgLHA%2 zD?rSyeh;MH9BO?9di$LwQ(2IIxkhjshyarEci!p4n~-#KqB`zPw0qYWoV z?~{8znaOGUse7a=>@{`1zbr??5pMfJnAqP?KvOu6?b`8pI;LdVx9b>zur-iGKRF8$EqL_=J11MuK2*V&o>zadK?K z|82ly9oDr^4o_ysG7g6i!}iSVp`OeS4liSR`j~@``-E3^KHU{_9PSL#{gf6Ypo3u! zdnW52cS|o3PC2Q)dKir9XYqm*s)O@PB~Tcyves};%?yIh$>kD*%bDZl{PmZ=x;bN)w?NyFbe5fb#H1SXz65 z6z)1jmu4L{2Z?Q{O>y83&;HU1Feak{ih-9f`_jJz3_4^ds7X5%ukpA)Vha4tL3P#A zvbzSy!s{y6$=&E@5AMk`RNI~-z06aO6VMzrBARnN1Ewuf9Nt*_^j>+fiOEab`d;V8 z)DnlR-!D1lXcmuJ$?J7xeFlRo_oaBxa@j6LuEy3an>y=SoOdtpao5}Tysi5*bAIaw*xd6>8ZX@ckX4@Z1Os~wd{J9hWX64A-wkbWyqd$qVqTlNWta1nrHIo6OhdoC;9oTHXAjY zHQ2f0$*I`&lRxW_!>~Wx%Lij5r)=>{_h_3by!hFI){z=hW;tWHEa8SI z@Y&NKy`YM_G~C|XdA2y0gbtj33sUbRrnO+NM%yh>eGI`p3b!+PtW!7#$68|FoIys1cspXO%JzV^9MEuvh0FIXRSLDHoXY8Yh1^!}Q9XEF60J>H_zz=Ej zmsk8wbK)U~^(~LEPQ>)moIHj=nAY+fA)Uy^-4xNoJXWHq(6)K~^1;QOH}=CZ4+L8m zxWHM|;EpphoY!-42VmD7Yi1t3re@@q$t?O!1u@-9IlUgx23x7K+djy#_6OwWi&7~a z=T95Idvh{RU);S4r|B#F_Tgqt8=o9Z#+45+oSMGv$;BTkSvf9AJ3nw&&pd?6-r8?o z^0MgUY08|mU%rYX_*+3I4NtD^UuHt3`|)@F?ZTW(gFffX;GWBrFEN}N6H7=OV%EHZ z1Zuq4>o=>9-!={G9i`zLmfk2FcfNC|^$jzhIG@k;9$MvaP}7)j)H2-_QANRe_}Q=B>+jn*Vp zxy9|jdS`qE2&$BqAfK0Y{@0p}wWp$v1ulii2dKq1&hZR;J-0@lBF8&p;wQcP6kLZ)T+aPP z?;Y$OPxmIzy5*XQLjlHgvrQGwH;)@!O=_cwzZ{1Z8eM5>4yV+#y4(iK?&b?e&zaL4b}^npZqbt^<_@) z;rRx@a;UgzV6v+~*Jz&}Rj0W8em*$MMPG|(tP=qz2can-Q^Ji+n(pP~Ib^;x zl+-czMqE8Xn4x|wkoAa2MefFSShS(8{Tgqr-P|I6 z#txP-a*pp6cVFNq7WM?b#S)|6p<>E$++Ug-&t9OrAF)hb$65=>IGg+#NB^K}&1qPF z1&gH_s0fDs^U-5<93`fcc}urMx^`#)VvQ3C>mdc z43RX6o4++pDiL94Z@Lfn;so=@*OW1u362V8{KWdq+s{1KZ2V6%d5q#+wFX-qk>Y?Z z!?W%5Mfh@fIq#mm@$`#JpL&`kp0;~o_W9?9aOx-@et-D>>`wu}GA>zT=rKC)^wH># z$E#mo55q=kp>gCd*yZd(VQBpZ1qj{)-@^@;v3XNt{mnSWP!155^MI^x%zn@@9oBPb zeC@aI70%1LVY7W2%PV8;ieL{%)A*8jW342*B%U7fm!gNdm)fgM;g*+D^GGU9$#Us+ zNVD?QRC9>=(zs&MnA{5JUz7s#7!B=9H*o5hQ?oR~KZ|Z~gtgYi$u$Hr5wBTNxz{}K7+*>hZf6*c6i%`O^PG@INjU?~bUBD^_ z|IAm-5pSNGgKGs>ziXzhzfqatxaY2Q^xaLyUrz6hA4<;f`kLKcIcCr2v(@h!{VHIl zXLCFoXMVBQZ!UeE_2piiuZZKJ&?mhmzSQb~`IRrT4)K5U?piB#r#`S;%i>_yXQ4I3 zJWDWl;GHI4K5f4FOB{o(fb<)2HBy}X4UAaEZF}w)yz>`78~2=giH)>3M()I!K5+9r zi)3f`;eMxs}cWm&>&lquY!Zc;q4kw@7<$7>ld9rDEcJRw= z%GOxp3pt_Tk-sTx4Ds>B<-o^3{T%Ao$@!kYk_xOilFXu-uY#RqsJ%W$c()eba3!h0 zdG%Ie2ks?YIW00!Ry=mp)+sZY`_kIJ(u%zIosR44i#goYaBmx!dva*10RG6Tsqv{T ziTcU1Bt}nDXjpzE3kDp zP;E}3D~7`*IWg8JP4Z3|sVJW~ULCv__C?}A-s<_;I8pG?a6c+zU1-CZ3{Bz;Fw)}b z1&|=%28QT~HA|3i=FBJVlSKR9L+`N zWL-7Kxp-1NRqoi8y(F!PP~C5D{!-TH_&L$qy+`(&hB1WtU%P0_FBlo$Vq>`GopD&7 zx%79V=^eYi4fUHu^d$hS&pE#=%KLFL1ojoyrb2btJ!oSy#^|Xvt=dT~1GYJZ;7gifQ`#+Fk<4R?=((=o2a(E=O7sq!Kl3ioIX~f}C7QX}Q|6tzw(dFe@5t{SdA>eh=BxSe zl$spJQ`2!~<74l?r)y5uH=mb5zOVL~UB{C6ftC0B_*?$)R(g$+pT0ioJ~?hzPtweH z;HOT_{S&Y9ld|^o@soVu`2&M}9kkAV2_vDT^);sbc8&1a{Q@cc5x-lhw=G9nE^g@ZE3wg|w{YZVhrG?){cd zWw7VmM|SVgub#=-HAPRDIYN52p2Vjndi6C@ZfMPGh~(6d4)jz5nJ>lEXW{N`ii)qi zO3i(ec=17td*|iG8pLq`jrhFzuYcBv;49i} zOCQ~v=Xh#2c6iB2n;h?b+o^K)=0@#VpSkU$?bwD)akA#qXPs}p<#~6wnBz#6L+hV< zFS+B5`dUg(#uK0YKv?2g;inw%h($`@G%Qw}h<(@@i=g0)VcYl25~78TgEQ1fk{gzg zV8@vKF^Ac4+vUd{@w{GxJ8zB2x9>T5g$d@6A28pgzT|nHVm6+PuQQ)fz5L@yFLM zE%OH)T7>Xro7;hik-uOY_IvJruHMZz5xL#dv-Zswf7az(<#1>~Q|JXvloLY#`%sS+ zf@{8KGK}X8zGT^bzP{!a$SLt@NgZtdx>o&_t?104C+8?{e6B0?`_xAO06+jqL_t)) zC!AjbCW-Z-cBT*ejfpUaNuBTJb3r6=`J2(m5A_wC*pqSPIp$dx^wd&Qw4`8*?L+2^ z_R**u;xT-(4K?>BfvvuYF<<)PMvxOx|GCaLoj0FsV>-FCQ$S;Ny!^(^@5+7gMMlHV z(Kn^vd!iV6Ty{O~T2z^aOjsT`zl~o?S@@7 zwtAtT+Ha23pm`e>h&o~3r9yu+`g$NClJtLNUEo%bw{%46tgSyXA(gUMZgL2`zQ}XX zm*rbOT|cR9kC-p^AuRjHS_CqfHX`N6^)Rwe&Owh>>ZG0A|HQTyE6b67+HlGzP4G|o z)>>i%k9)wfHul!DR?e;qwuwn78y$b1(64Ug?EgWtwsn|2UMyqgF#m>EOks08J3oDF z`!jEQUt*Ggz)$su?{vlbpnJ@$cYi9DytGFLRfhO7>hM00fD}WZK9i(UD^PIQ{z;SD z^-B~Ara2~QYEE$D1QuTnEyz-skyzs@l`k;wJ*q5f^5Fs3tB+Kqt^cif$CYk=dUJ|t)Db$ORPukR_kGJOW zzrA=#NIA(%Gg4^!}%08(j#f`asS=wc7TpWVU z+snedimd4z=)1`q1+9^L*gXwALV*z=J+*F3w*ZF3n%~ zuH#wMaW2dnUqJ_FhV$|gOPiGBPAs8O{qw{*`S#-a=ghxnP=iknntid1m;IIU6^z7+ zb1i&G8z7(cmXE3NjZeS?ax)*C?+hbx^E^AA9Ou0;`^-6<3r5}Y`E@sjT;hXoF9ajc z;l$S7AW3ILy7c*;3cCWs4-J{cSt$60`RjgAtm7#URiGk^KVeP#mK8bhb}*7Jrx4%(x9UKaYRP z9f{pej7z_Ma=Cjuy|%tHdsge@;?_ZRO(}n0=nK1l$S^s>m5%eKp51)ON8hy^_iPRQ z^7e5QMnh07Qu&i)nl*?~g=q;95UNaQRSh)!i%6hAL8-2bq@s9uO(f`!{Ptu>( zucf@PY~qc{H(0aHV`TPU+APS6TEV}_bedioHc*Rr=5#>IT3^yWX`{+ zU<}9G`~4U?SMhJPll!Wg&paPJh3zLF%v#BXgYRM6bKy=i#e7jX1lJtFKg7&oR_d4h zOEcm&H_w2zTD)5(Rv#RXpc~RWw0v2(*FA|d>GWe;d+%w54QJng>{E#QQvJ7ET1HFM zi-pb|q!`v;(TZ7bMa-W-;y>9+vCx-1;*q=Sz4GMjA?S;xamB;IWZbV-jVV@#-?m2G zKYBWkxvYvy%S+yBLQk$@euC;fA_v^B? zm_tuy9lpE-UcAau-Q56p(Y1&gx$~k{wlMa|aqtJeiC_Di-Yl_mX(_J`$npam>oAY4 zY5l1`v6Z@vA9_sq&Cl4Ym9e{-VQzEnzuH30`5L?`-sk5D{jc0y$p1>{|6}r>_ABG8 zkIzrT@o$`On01_IpPIqHaIdKd zUeC4f(T?@L_7UY&s}9V1>HIe|q}_>X&sy(gsuw_l!Bql>-!M1-jbnlR1r;}5WSiDE z7oBT-0H6J=ekCUTC;QSL=Vxwq3b~mtAOB@SHILtz>9{e^-2%}Y0XOnBcY@};bLL|+ z;Fu?%y!35*Zq9vlEPFC`Gv8W7D+}@_e6J64DL5V!tAQbE3an*8ZLKbCjM!<8m)2B!VC4G5-`l%&rapTh5EyH}|Lh zO73e2kU{>w(Tr_P;x#hgA-xF^Bo`1;ef$DZ-d_#rWr4_Yt$@Cpe@&e9!`C}pxq6BC z*2aV3GFHKc0^=B)`I6Xzt>d36$t&WwKK8|?^n5$=TaQjd){6$Oye{W5;l)~nmY6ll zce_sX%a%{|B{YuPajahu?cMdV$HVx-3DI0L`D(Y~K@q6lqo-Zg7_3ER9W+ZIQ~=8j zq6|NSni3+0Daw&y3>E7?gB<1zdi|nOB3e4 zJp;N&3#4!RN5LNgZ(jP?_B|tG+?Z#_m>G%V)3-6t;NM2Zy4YxFH_Dn8Q|(KE?^fI=jPTzGu7da0OL;06z7 zNL$1IQ6_ZlV~bs7_^!j7WW{8+ZXY{O987^e$DO+HP(8Vp{Y$UFj(@4;gqhXSgW>*! zJH~w1JlAXDe(W6niT-H~Z>^WV{xpj+=6{{PDx;fP;&g$3KBV;*N*A0??D4_+L-Lp5 z^|Z_v!hzIB@m$-H*EhcNd?A&;U>UAmrnM6@b)UxuCa=F>-FW|P;vqQu;JtCG>!A6e z>po`Qe!Il-7avjl)gA1fqOak8)99Q&U%fd~IMTD{w0qxz7!90S9l!D}Ud3bI6tbjd zJG0&;6z&b65oo4LFN)Yq4w#y9l1VcQp4hkM&jKr9c$+i6aU`#v9G_b72D)Sw4&>61 zD8ikqJO1ch{UZE>xTHgW&CwjWDX`vUjP!;5>SO|T`k#qs$uG~jIZytsKVxZU9dL$c z+xBzDwh!;8k-X%;_)jr(Uv6T~GskoGW31-0FZsl7~%dj81;EeoEH4;bo4ClAk zb!`(iuWZ)ub0+O4HhZej)($P=7hZc~y`*8oGq>h__Nj-PeEomZ$=OsH(Wg^QP??O= zBmR7X=hSa=($fCM{f=c1-x=2R{IbCB*!^tXJ@nc};L6eYj`hDq!gswZ|C?syr0Kl= zJ%CkHKyAJQkY&?PfW43-rSlc>h#WJmcdsk=Yr1pj?F&Ir^p+HT=@XDv0gslh=ise5 zy6d}_nvM0kA*z@+F zaB_aL$#v#$>xY**kv6zgIJkG{35Dib_zg&YPwR)aq!)%s1z! zn9fvQN0aD0+`P^bSF8@gI6OsgmtO{ZYJYzg5Ey!lBXh6+{5^n98a0cO%vvV zfci^#lx#IK`PKsaz~>Af{8+KY{Vbm)icts6zCvmN+Tuy?*c3FEM(SiYr8jEm+u89U zQ-jUHn8@@nK{c^CEvb+fy0H?G?Ttp#S~8ls{EewZYx>BVQCl(ruWLYYM&#O<;t7Ul zotfn$YmL_3wd3mdAQ2zVObW%}2Y49Mm%L(%+!@;M#A#OTrK0c8DMR)G55ao^{BkHz@xozgNX|Stqfd1FW)5!sh$&r%VUEqD9?DQ! z;9`!yvF7Q%RCyCcGVW*^l=88UN(au`yS0eVc|fl>C|(AG*5U3+8s-n@+`DEC zr$Lx!@8!AErvSXk`;1JYrV~})g&ib$xlcEa*SRP2Sf4TY#9a?R$7k--)2u7=GY73V z*8X8-{eynyxv%|Gz!I8_ysu}$Usq>ESFOY=*YP|J=6Yct2{&+iEtpu^Stc7X$1|rO z{{mrD9rG-#dd+>Yeq!c(7DwOO?)4*w^^X9w)S8U##lCJFCXz#73$_{VrsacFEtyo` zRNZpNH{7x`*p~KbgKfACQTWCSxc75YTIl+QWUPB~JufL4#L7Pux#y-*VgFwsrTx%{ z^HbWQyd=}7V{r91+yiudg+4SoM(Xb)G=3*m^woU*qU^Qhh7m0u=K&~T+16lY02&kU z!vRj_l$+Wc`$^0BPO|^bE?>CT)(?u#N-jM6UW0S}BMn1k93OlA&@k7tIHOOU%mdE#tRAp6#}*ep1D&>R9-$8K)i7nP z159#H`;$AlkiHQM^JQ5z+Wf{t!auup|1L`914P zi4pOdf6_d9KWjX>C*=v;?qBQOY2lqhXytf)GqdLT31DR^VOaTazl4Yf5N6iab&?u) z@YCDhtMMUt0AEYW9(beQ`uf9KHkZq6@{Ot1EWnsK)Him`-+G9pcK>c_0_F1e&`Brr z!Kvc{m(B!haNqH}QSRTI@@|qK9}TPs!2gFPW;F2BZHI ztOJFoZiC|}hr{>*t3PXcFO|IDxo_pdy1*RiFAG=h*`TRgn0`WuZgP=G4131@M6VA|nPJ?v=Zu3f%yldVX<&8_G@ZuInN+&pI6#L~CzxP8B1+5e2+FMp})959Cccm7jM z$$e1yH-CKHQ!++L`%$B?-pz=~vNV9XJ_d{ zgj-*D#)ji*>lSd;wiv{;UtYwA=HBF<1H>3je)o4IhIf1JH|O^>wHMSB@QP>b7KX=8ZkLUE){m z0%p}W{-5eqo@%%e7Y;qw&tC4I01nv;+>785>q^gpoSWRNRJa>R%7+~}zQ~i4|GZe@ zvMX0LqL57Pn`JoW^}P-K!@S8q59_EzjoBFMT>CWrkHlMIg-)CVKK*x#7>AfPevUUr zuLrwdWt2zX7>AT{1$X0K6TGE%sQKu4qvj`W*ZN2G>|LqUzKVmOKjOLPt<*KM-lV8K zaDF0p{WUC=YyLK0JimAmgOE*{H~qs<2U^!9-rCZiBFcp=VP_&y(A04)=K*(xDb)0H zw3bBb@cgoDA=iFd>j?Z{d0*AY4;*9G@==J!1P)<_>evOkHz5Z$cTyX4XC% z`=5&PFS*!fwk|f~8|FUYnkVv?gY&Ix%A5E4=6QbOuMZE*pY&fFpEV>mImVg2!o)H+ z@#Z_@^QC0srb*ou62zX5zDu*uqL}BosPAd0(C)TqCeZhc{ntJq)JHtW9{&o$DLuZE zX!s2!^Pwm{Ak)Ufky-bujn(yNJv5ZG!4!GwhNjb)8CNLQuh?jNv!Z9d6Q}aAq`8Mn zJWj*Qf9giQORF8>ckYSP&mCKtGH%|99K5yy=aRUbI1inFM;p8JwhYYrJPG0scAeJE zyEUJ5>A9ZrzliwS$z12S%ttJMFhzH6;;sQ9aeVW!bNrJpfS*?cnplr3EBug2oRDZ` z{6M=lXZ4G0c`%QyIe_#>`|!sy5QQ<7Q!&4!UD~5%OifJwOv;xABx*P?Npfe;#0w4& zdAonq_>lI?P#5a5qf+09&vP^ljgI!Nle!Bx0`+8S3a83Ml^67VjkKwoFOU3O%R_? z0X4N1XLt3B;$n~({_=YhkZ`OSecZiv(4zKD_WmUfmjUL_V0%I-Yz}h{=Ol)0U1m6* ziLoz!IhHWsJ$6loD}OPx{?kwEbvLg@)RMk?G@j?v*l%-Jna%r+_(P2R96$NF4)YWH z$!0yDv434Jiso3C`7@`Z;2y~VOFwK~}3Q8f?f6K?~}n*IC=_k zF!zXXfAI?`Q7`S(9bKjgiZ^O!9ca#25d&xTOQ$tXLy`GI&V?1X`n6|_o#VAhQP!C=Z-KWO^Sh)hb<5u zb^_%mVM2!j0Hp-1A-@jm52t`{*Ew|6SXw1cosG%xdMo%%=*sELqf0a7fx9s$Ff)ep zF%vfzp843LwPDAY$5yY#fy>qg1}3gw&cL6~=D^9HHkNyF@fp@KztKLT{k|9yaX;_= zbXFhXIPTfK;%D4?#(wirC+-hg^lraQ*v}55 zLB`~yhU^J0uZ-2APeuy7F8twa-f+tIl?g{zCETp5R0&{doM%qqSLkv~?|DM5helT? zaPl0_q!T@ox-H<&8sKEEZRX9#NT=-PEqKC3{WdPWhv0pY=8;^@u62@@vVEMGt*n>% z`pTG8b6-=f5IL>gL8^P6W z+Q(6ve(^yR^&FeiwH;}>dg=bn>uKc>-Xlh~zUD{Md zk2nD}(u|u|1Oaux#O6cZf7iqAAC*}CUAtmMP(`>Nx~Y)Zt8QKEmj-KMKyfi_!Q7N5 zPuK>UTgM)dB~Y{Vde$$MYu`p^GMaDhq{}UxfuS~3$6YLF)RI{Tep%eTLiskJ=%Qg= zDASV!Y6AN|4U1Rq4uIGTawbg_q;#DW=!+6xHVnwmNAZX)AKr_rK!Nmt5`MQTL;kEs z>1C@n&fuDJ4dAZzlililG&eD9;PT{b`_rA%6LMBj2pzzVym*dDr?zaxb6hT?gG<^3l32>wsST6`ngu?N2~QWWfXZ zmiC5JYrr>lvSp)AKArd<|S*dDOAY?Y^H5l060|>ASiK=0$+WKYK z_6&id*Yj#BHRmt|Z}%=ft9Z=BaJ{)!5|9ufKkVcNxak#v!+c^)l8rgf1Yt(d-&^#K`(%OOpdbCy7~J z7Ym-y)L5YT*NfH%4~`$xGNqsEkcw&-&;8OkHba`$D9|;C@9#exqBjv&MQRp5^tcPc z10OBbg71wcpCCRQ4f>;K4Ch1g3#2Lf#!=S-6Yw`tZXH&mbT4l6RdQ0hvh~W-3#EgD z|0^#fG91S)j;?n&g=g)x%`ZU33Dn2&T_-?|?KQDjgvtNA7v+4NE zt5fl<^^KESZ=75PxOugA(gv&HIxTc&{_ zF#Q%+-A6}qm9*Nv0tQpuy5nq}Z~nuDqJbWU4qY$Y-CuJvRyo{S^ws?z>m*??r1@~D z|Mpa^L8xQNTYFNM?sH-QZ9X#^PCZ9FHyNHsOCFJpjm&9!GDLm&=B{WNL(x7N|7l*i zc`l`%V>PQc#Q?X{R&^Y2IUVAtM*(RyW(uQmD?09aSI#)Z;JrD7J+2o(gU)iI@hw({ zntcgHOwN^O=chS49nK|RaX)u7hYmb*JuCc06I{Ks$RYQG#F_oYA!bBc&WqyS1M#TE zn4~M#k?U-1j*CpMc6|Or^IlwkGF^Al zN@AbLmDGqt-znF2aYUFEmoMWjT7saKlaF2+JkM*m)Pe0l5dW5(5TO9l2;>r zL4!M&SsZqK`WSx%Lc@9z-n=sEzp3p@X*I0xx|6G%(1ZVxL);wVE8YP~4!$-9*yPIS zJnk1Nk=&H5lqIkg8X`aTVCvbS!Y*n!UYBS0S39nrMxy(+c7ZEV2KM-FS!t_@XHqaG zhtO3kaOv!!U!WXrIJ~V_HP)Wwpk2Lw!K2)o(eOr`CJM1kXe0sG~CrFR} zG2U@;EBN{ab^e=pe8q9U#SMUW}dGiR5 zvzP&>j@O)Z3H3_{R*jR~c>2wFY328Y+2MX^QCj3GrrHNQmL#se_8Hrv-PWu@FP+$o z5|K`7hj8kc=QZ}aNo=W+YfH!cmaYTm;{RhK{S71m}(ym%(e2saRRtP67KMn%vwIq&14Co-90i4l@g?IFwz-;9yP_ktfpZ zO-cdf1z7IUvH%HuRH)3-x_VO*hZ@7BAL-&VY8FNx=umjL*IclCe(xK+uE~wKUoh|) zuZFqJ@3^_0(MM_;PdhobiT^Y*_S*KD{Xyp&4#rx|^UOZk_6+6^*lQ>DEk>MSUd@6y zgsp1{9~_+;n6feasht#Vzve4f!R8A`V}?^y*Lf8a{^kwYFcRqLW4+->Z{ib@sB*t> z7AGh25_gZa72HR!rG#YHDd5TtP50xz#hbWoIF7HKLBJW)NMG^AabwVJFE@;e>l;9d z;cFgrgKH@7maf2l)%z5i&%tUd}o8Uk7oi#c$lT1jCO-{Ib|ITM>(Y_CN zQv#{+lKpORNS(Mj>Z!b%dB#{ab(T9|KEK|W^Mp(L_x`$KSJg{GJe;M$#Z|_>FSv&& zv^|WmzBu=aR0Di^vkbHHocz@7hvCa^a^|I-?A_T~pG&Oq?$i2Z$gYf<-#yTafs07= zc^NBge;;8cuNH;{YUW>YDT#(=1Kcm50&3_a@p3`{eZ?IrUYyHWh=Vmxo^sKgK@KtW z1oH@}Jp<<3E*$Op=w+$`#Im^Z0?G>(>NTQ|`B!Z8MN}U}l(rM>JO$L##7rR(nraW< zy%U4CT9e{dO&;bSv8<`=^Ky`5T1=E0@zF68mw znEA{M=Xni{em^GXwegL8voluxvyZ!Xtj9jKeb0{N>{!jZ{vAWgF=IJbd~0EQz;T{2 z&lPjOo*mkGYFzQy+r>jmx#W4IU6>?wXhMenFM02xB}sDY*v>hl|NrArUv3ydhnZVM zX0@cV=B_a*+(-Zf=^ihytVheQ>qh6i0BdzEE;s^dT9`3%{EcNVb8Y!-p_j%7nfT@0 z^2U^P-9S7CxlX=0&TDGGA|YgEF27>|j2x#pRD^?0n( zYt7^)H2m-`EQw!1XtoL`dY+u1s+vj%nV^V{?U|Gc&qL_Xmq1GKd%T_q&Gg#gd1|6? zS(eT<0xHkm>UDTow+!khfCKbo`rlC(jK>S!by~o25N3 zXxyyqZJ+Zn?h8}q=}*kV^qha=Dlc+fr=?o;t2apcq0f9f|M8LQrhEF@(fiWgj_Q-m zZX#pujV;S{wQI)4)|I%$x(6nUwwrp^6R-ALUcxsnoKjwTpvu4jHVfY*fkPlH0Sm8z& zo-ekLty!rD^dMU?WUb&hKlGl<&+n8GFpqD_q81<3W0AUy{e|F}GC$61oY> z&(#0L7oXyVY-j3NFpB%YY))>3(=)4@?_QWz~Ru(_^BZl)MbI0DTVFx=O$y@UU z({pCN>{x?U%yT(;>)2*i*IEac>#Tt@MonmWdNLQ4TF0)beAAQnVv}!Ls}RXt!v#H(tlym5u=Q-7#WL@0HkWVCr7cF+IbJN|Ih(N| zm-IQdfNiwvoi(X~It=hs&y0c)1ai^eJY?)&4C6C(1e3r_8eJBCJ7(#{YLzU}PkzJS ze6kOwollKtOP%A|H{F?spKYE$1Blqw?6LfruVIQydSVYTz%n?}1)?p&ocCzCxYoUJ z0A83Bvb90_WIXkU-<(&8t^c&+VQ&0{`6dMO)+p?s0tsD*sgId|yrxy8KZ~Yf_bR{h zT-+zTyJQX3*DGh3Gt#_eK(F*69utxh)|<=M8${P%K^>;Ji5+;XtefYs05H#CzXG;f zdia;lVAtCl5BmvQx}?RY-$r6kD?RjKSQr-|+DfMbHh38(^{DeAmVp4_ze z(I&~5{3Nf*oq9Yl+qhN0bE#;hkNzaKS{JQ%+bXT&4Ds+im0mOavS%&tX7_zs4~#cS zzxJF8%0v>-S#PhQ6bvu_om<&Xj6S6yxxHk3+EW{PY{0b|*LG;&r+%sLb*-BlK$&A! zfj+O<+aNb{V8iDS_89W1-k_{0V&k5YnI)hnbg$n1s=UrPRjZTxN!#3f*O4RW8KreW zYb{ag7qm6C>nCSLuHTLl5S0~rc2GY5sP*?8SS{NrLC-_~g|L!XpEM*ZcWBu#yj@&BfPN5!)q|t7N?uP*66j}9C&h`3n{ZYr(ebE zQwe<0s2<%4x0&Q4QIn3BpEC6z>VD+Lw1)|yQZ(VAaxel`bL4|{GFS!TbXc*t#7&YNJ^rWO#xIi$HwWh{pWl{OP)0y`yHH=N7}vm-Cn|_?TRSWM_?75FSYR@xam`1 zzV?2_Y&DkZt>+|n*B2&DkF_PB?x`Ao=T%e(hx_=d}k`JV~}Ru9_m8o7eeF^2~%#u$wVh>*$NmNs;dy zNImq0yXxJ_d!Zt9E-RTC*9Bdm^lH$eiuGsasHO#bi5}hRAm0@}1Cvw0D#24TP<=KQ z3K3deJ2hIm`B0ESVf^zpu4#$3e3P$k!!FPIAXZRtpNK4HM&wSqw63Y!cG0qstPUoX zTWh>X;pOEEq#1kuj-PX<4#V1~E*peDrunhpuN|mQ%dEQl}Wc9=eA09CA}e;p7FKH*<5+)Yei94%D-bn?GU9 z4sMOWI)L+FId(m>^j{XK=g#N**1J}N$Z2VMKKVLsTATacxWvww+!$Bid1HF*5p%A| zotXLFb%RFi$64F?=nj7R()R3Cm}eQ?QIAB+eQFUpAhp;h?tp(k#jRTw- zQ^G&^sg7C)9Xn^Yk0g~iKl|BYcxpp$-g|PY=|b0|V@)4oA=^REUTR=ZUFMFxTiiJx zN48U=(RJI%rEU17E!|IimJ+XX36x$vOh1DnHA2qOGSx@3fq{t zFBoB7n>okUY@Ea#So=+uzKp^?zkt^ao@76-wp!<_$H`B#Rg>v@{wXX}M8)!1DqY|4wrM+9 zUxn*=C;&|L%TjU6{pQ7GJ2`(5Scl2!p&||tEo76fF+V}Vn)F3Hb=F8$i7e|NoIbJS zTjvNTUG0=8ZgAru0qP+fAptiS++;b2uZOg7;CZuV9URNNy}*3a24*}x9DApRWv{a@ zxUq`sx!He9*tO_*u;}ZYm__bbKp#%rwW+FOa-dkukbEqjn@4&z01>1#Kz>APO#Jrg=Vb=%B`_vs`5Dxg1{mt#Y@ zo3qxtJ*2IJYv3d1BVsH9w~fT$^>{vdD0&pH2rVV4aU8oZ&CAOgj62qxXCt`O-uT2q zyY&t{<+q;Hv2-nJpVA2~oGO;s^@hfv>!05O1}L=)+;9pz@b{4MO&9gz%hP^p9KU@z zxQ*B~!_MqkYijcx!}t8l1GBZvdk0l)ee0;Rr=hj?jhjK~(k;%hG;=+Wprvk?cgg^@ zj=m%1)m#JdKkFQlTjyOEN!yYm@^AZ&kBB;?&X{-guEgfb`Qkkm9@ao9uY+!cmR8p^ zb&hqRy4aXXNNQ=T!|_|W*{&PzGpr$&hkWoL;6NNbl`mL4Gco(jM&7kuPWC=$p>;r9 zLe&JOmNtN|*Oai z6C8|(F$ycj+VWP^cC79-9^|YjRBl{JAB=t4k-@Foz7_jCfZ?1wUV7I(H*V;XBRBSc zf-6kEpZp4+zV-_*bK}t(}#7~@YecVmAa;Obk^EJemzf1 zmxctr1WVnJlG8`tOQw1*i9u^ZRk6NH2oHRD6lmOg*RhENuLtj>&7 zcT3yRY}2EG~j(Y4Ch|8YZb9>-T+3W+Q@3e)mw8$Egq@! zb+xy6S%<1y4N|#c4*#qtk3BA!I!8}w< z8h^;FD?eGb0b93tym{mCf-MrxpI(Y9*NUP(uV(~)E()I-iuyI7{}M@Y^6g&S#QEIO zalRT6kJij5JvV3Q@nm(NKjVnjt8l*#IG=gLT0>nv=;a)by?$9)1B;gB9gaor*g1Qy zcy=Bl>D;PwA? z)u?sv+Or1AwSxnRXfASVpfj#?^>iITt(Sj;#_=Fl&OX74l{Utv#{`&ZJ!Qq&b1|)` zO(JSL_Ul#zy&4tE%ddRc&=Vou?$~%czAK{T(?sF1vFm*Wxd~ov#5ST4q+(l!rm)0gxGxG&z z8M{0@tBKGqz6tPYx-e3$;^rrS01)~NAH~8X=5RFWcl^)_N;9APJM(1Wb9zMUM_-No z;j9_W;G=>G=DY338NvhY^nI*O>qkRv>D*)8sM(>2dILY48`W+}Lzyb3cXEK5M+YVI z{IpheV>H2B2m5WkZ3n3rQrFcs{zYZ{Jol@yD%_6q#fwAFMY>iuyK#l74q?tgZbE)_ zIO~;LM14K_rhK%f<$-DVh^vD+@`(xH&`Y@D849mjs&P^0)(ED)aDVu#fBR8S?hkuX z_j(4AM29J>fVrrfCrHh3Xk3BHR{ze~JfCVSrBr?G;l2B)FJI)`a1|$--h9b(!2w*; zygA)WbR9PZnz`gGUEBVzhxn!k8};)Oi66aGPzP`&0Ko+|8ZbYoV_xU%k?ZEuTv4rC zH@&>J*9~yL%9}@*Yh8nN#DQx6?!j_;)Tr_SCAyUq!l(CPU=Z_ImP zqjUYS&peGgSKXmC<{d2(?d}B@4`{ukCLTpi>ppt9b`Ac<*DZ# z3-c@1vxk(Ii0WFS^J!vcXij%31*0dxLb&@Rv{q&Aq*YNo(4ernz2*;h%K*oVEq!I7FPQ@1cSeICoDw@@zz z&s(6q(l=t4Nmz+;)il%fPv11`S(y{~F)O=yOVZ5)t+<97sqJVmaRvDSh#aHAQ;b2J zJ4x%=^(Cu<6%U7w<@xZVZejY5%d01n?j^+Mb`9_l867|iay=u?bOT}2N=hK=s?0V&`FO2o>0$<#-Q|yIS zZnK+N*Ut61qagRWn`3sCIpei&H*^=Bo~PE27JqvX*CTavLkVszJBzx&UB{mBXceq7 zLg^HA9ChZKUL(?vMbD1iOKI1eQ_-qey_yGd9U5wRuv9zAqiclQwzu{AhqU2!I=+&(C5(>Y+B+X zahdVVE%OY{-E(pWwc7_sUdxbo@cSRH-u3GjX%yBv=Q#7FT1RuP%iOxews<9T1DE>L z8PDB(@7p=fHEaK>%cn#q==$;ei@ycDGR*vWteD&d1B?WAeSw!IZ{S40IlyBQg9lWv zZ!~<@<(l+|IhZqRRma(n!Q;wz)}svpJvx z(;u>addD^|2$EXbIMhR2$BS4v5Web-juVMBuZO;Y(~Sr(N_$xgU$vvhGzUhHM$Kwx zxp``%2AZ{N~b?wl5n85mi!fTj0V0QT-Oety2dEk$(4_uz>At8x-9saq4Znac}V9y zu5(}htArli&mQc4G<83Z=wpvDGdILDBanOH?^rlMugNPQ*6Mh2$|FJJ+_3gKIF|+; z0Shj8a6LHmGB$Z~86SF6+B-3Z)UkK_`|YfkThyI8>k}t-?j4=tIwa=$;Ty>7(U3ka zDz;6-_YG0@$(V}D{fTr^*SeQz_h?JDy>F%UTfqBIR{Xsou@BuqL-k}HP!jV6a&4AJ zD9!nuD07 zq<5#GLt?4oO8&cQG(zjl+lm6uK#i}P>-7c9jZziFjNG)Wo4~4XYX$RX_u9+-Bq~fd zW;AaN_4u)Dmiz+!2ac+-NEwW~rv0 z*V_M@bA(tJk;HAY^whV3@Qyuma$Uak`P#zP9<}SWhPW2ExyivvSnWeDt-zwGYivO# z0H1nkpa`DL>B3UqzvOY9%8ptUg%|mD4i>aVUg6Q9R3GCc!pGK0XAD1i1&-Mjb3Gfp z&1~9r_RAcMbz;u_)LR2?&KSE_a$ug}{01JDzVc?7bpdnu@3rm6Exo+G(E*%W=O3(rgjx&s<;luw8yC%-$sBBAT`abbKxSy z#kOwS53i|rVBW7diox>4ly?C!-v#{Ogym+0n{FjBp5!_}d3MKXRP5N=Q@S9WW5vqm z!7U#Hl{sXGth(1vBk{A2SgQa&h?n6&3g|7)ri&gA!RBhWhi@Xtp;`Kni9W^=C~nR= zFn-Hf9voN_7FKzOizhK4;iJ(x6s8(9^l7cOIt*7Y0R64s_R!WZ3P0igu+&`bv+;qSrfTKT44Qq!4vq9~;kt|4@Yv5f2=A50Cdvcy*sh+wM zH-GNvQk%Ks+^Oe$jFA&Jrt2N~=-~aJBsGO^b=IYZI3LusPH-K@!*Ti|BCk!$8i0;n z&+f;jT~a}+A+naR<0aVhqGmo~miDeuZ?MiKa87dE{88(gWz@BsBH?Pqpg`GL5mq%dY7d|(C?g8gDbp=f9ATh_qK}!-he+4}_Nv*J1 zoPpXMT1U>gbE@XNTf@#uTzLVB5uZ6a)(sa{hZ`sG!ddIx-kGamA5NUyn0Gz*fm3RZ z__or=eAZ+PzvYocm>T^AkUD0Yg}8tXYf{+3kIqd1q=}y{j(PjG2if)oeR%l$#^w6X znuZJA()Jy!@`;g05@EtUyE|?r1$w~d>q}lfX$D1Ku$I3xp6jTa)Ioh%WUarmmwEY* zj;6K9>1iCSmQrv&d`Jd>WevFMd87I}8CLoV(i<=SFfcl=N+sbyM4e-VA`8o!O8ZY> zRa8rwZm8M?zit9svh*#~O;_p7$!Y!7fHf^<+#r}Jc*hNQr|aWEMz!1Il_=d25(pC*QU zv|O}WI)^IMy!4^Ac69nlBBEOI=70vibi!)q#$=lvLgcg4$B+X0crnXaW1fB|H%4uM z<~J*K#D2KedG2t`2gVA{H)M%TOpWWRM%S`2KL?{N-k5i4Ylf8$CmFidi0&HVoKLX?>yY{AsNw(V;d5Tx@(dppsA%QEd}l~u`l$EL)7b4SNL!Go%QJhck{Sm_VI2X zpTBeS?1AZ}WiD_-v%_8Zf9Ui0{G2Q8`MrWs%FGK(0%12Ac!I}6kaVXQgYJ(Ay7sUr zEN&S$qIK7r<+J&@_2E&<)vtJc-?Yv{Am{mkTYv5jz(s49rLdUQK1gIz0juNfyUp6r z$y0}_(E#kLe0eN#^Twa$x|OYYJ6?Jlh1CBg5ZB~xKjz@Q=DdPAkMkUO(V*ioTqVSb zRXTz(Gt?f^fKlkx+=d0GCeGRI)gH`Y43Duc!nrj_duaWP(OSPS*tJZIyz$P-?8&(* zt_!L^SnJyM@_G51Opi7(zD!mF&4cao%0Gun)q?5UJ&?^jHHUf@xXMGvjT3cj9MJa7 zl(eo5UgFZ|rmlFIc3*!pYF>PJps8hvu8(H{MB~BO!D{z)GNaF+Qq zcFz8r<$=)>-*V&TI9Fq?OAL^A~*H)X5i3*Loj6*bMo}_(DmkgUDT#~4cA&uVHQ0}xS=6-4ba0a+<9}9v8Kkgu@i1Sswhl_ zog5lbB~WckCyPQMqTGx*Wl*`C%z8WvGe|C zPfT$GwV8SXn^HGy2p6xHs->2Bx7p-)bzNc~>rFg$s&}n-n_512)WL!C9I^Z1=d7U3 zCOzPCxfbjv2&GnF002M$NklS|78IPdLl2d%QTOG`?v%2_NXU(RwfvVq!rmucayY)io-f6N! zKlIANYhT|cAZ+JPmM0#0gwG3jPOz*INCa4czSz5^i*qkZtK}0{VA&D?;K#0pf~8Sf zk#WXr*es8ttdrBDRjOVkz&54EEtj|t_*typNft0K_9i_qMf#v+NIW_xL4#cP zLtQ7lFtjZ6S_V2*Va0}#X@&|Ew@w#_xIs2z%~Xw5FRm8WhlF17If)+Y81U+p?K zIAaxRl}>y@#wPrFXKNyoYSyp54NX79(`s2SsC z)iL(ORV$r6oWmO{-KiO$_S5Sl^y2YwKXz8+s&T$p@qVqjWNIi6J#psfRMU9+7}p5a zwV$}?zf8(Hb)j`%o>FR6A6l%kcl!yGzO|}DTr2T~EKv9W(GR+PpzY<|m~(bN2t1#4 zxBbMZ=PA|-5BsvSyszxZtsA_B#=Xm9z$oA;Bb@`Xj#n9Y7a(fTPy1_k+Hs zr}oURMFsA<9*k{>2|ihT$Kzao?c^Hozbt%Y+X?LRJ)#}IWv9(`o>O!)TG*@g<`+H@ zZf+;8`~c4;(6bIL_^BW5C8%=A&l-Io6zE>?Ze^|Wi|s(J2XLLpE>6r^^=g6}9zt$b z8dAA#gbK(Sh%=Wsa0L8C5&yFI{OkABPoD{vi+d__?{0WVzs@l?Uevl_?G8PFbM+-b zL!;Wk9P1mY@bT?$sQD>j+ytry3ouq`Rp%2hPCsMab8Z6Bn70Nm;`4!yWe>*!zZ|G@ zt#{0tnB!BdkQo_a4`BVX3U8ifhDh884nifs(5(;lXTWMPM^en<0-sb&D2j>@-bgh>z z{4kkwM98B~f=!E{%_po}vK9$P)4BE3=Z96{`soC7>HjK3RjXp(=#ZW-L~j0k)1x-s zi?%G+rcT6~Yn`H=B%vC>?Y)bMq{6@S7dL$K1VFqz*Nl}?qU&Cq=B_@vk!#K`fVqLC zo(I>t`;p3{ws}72#mxA!w^nsG0PLx024 z!1Bd0b-W6dAgm?*K8pw5=54uZkgHDFK9_aU zRI>GoK3%F_hnK0vg<%eqHC-Tg$?Kq``-MeblXVglA9Inq2Aa6P?`K}{Q|H`s>K%W0 zQIL6TonxzZiGvkb z-j8hM`O;8f_nD7!_toB>xQtN+ngKs<(jc1GUrOkC=0>dYRZLJJ^?h@p^Ye{f?ZffJ z^W|OJ_U9uppzqog>*Nd5w;OvcT~j=2seTFo1n;#C4M%RBx!aDfm*d+G)(_1_OTjkbC&?mbusU~>!bri(^~pkKRg(Gtt;2QXkNT)R9xIU0foPT!|R*GpeS?H|oT&b~}E=Htet3Px5 zfaB%dyK#0_;M)zL=4jI2Md&>rG3(418aN&$N?pbp0N|VM!nu#@$kR9D)UI<`Cnn7b zqj*(ve0h{Muf_E2`QCjBdHFBZ^qwY5_@wV<4_6*e+JELEFHUsF>bU7TS)mMQD!~C_HGR75j~*lx|od>V<FS{QmMNo2BIDz5_J#JR7Uyg~45bxNqUOK?nnYOFxXu_oC`$i{MK1fAL#5*Q zbjOdIuhz_l7d$soLFznu2I2mOXb;~I!ucnHy4mR)vZ-MTP13sdQH}f3nmKCMU*KR4 zd;rkc@*ukZ$}ME8AJa^_Moe7vbd0;ztNJ z4Bpp?+IWyyOL@kVD|qT;fVLi7LM?nM@XH1tFNGZH(VHmsYEkMXLVl@Ph3x}htGDG{ z33<&SSpW5+#ssM1sX+yP<-kpZE}-S+8>`d%@XcN?k3%b-Lkm+MFdcJ5@>#9{DADLV z#|YsgiCCfYd9GXAxan|Mp^0;cHI{K;&#bKtj*?j??%cbDnMXV~fV^&5+FQW)!MO&q z$pE|3-<2QebpeXBZm(Y1m80*aPJJ#jC9YV9@<3aU|I&ZfYZaz;T?l_ct$8@Q{6PZ4 zF9p0{+G5}dibIbP2S(6t&{z~$Q+o@y0A{z%iz>STPe+xsBZy&f_zhU z&VhFNq7PI1d54mp3k2ZsER`3Jga>~fjZjceFh8=gsXo;`&ZPyG=V8M@9%=T65j@b;VT6LishUc75;tG()`lwcCrNb2Pm z*^%s03#I3<72;d#C(OL}Rkcbl*vk*iO&31!OA^8ekxoi5Nt&GhC6MG?5Fe%yK1y^& zBscNJV-+rizH148@)*Oewl8UM2R+}>iD$fAx~_X0+xPy-NcY>mD?EdYm%EOqU**?2 zM)y#zL0h=fl{DzVnsjNO#bT%MF`1cMpAFEn{6w7fi(N<8N#BI(>!2oeuwT}NK0h?p zxvOy1@f|_xhs|`eQ25PTA1+lujd@}ceL)d>6-HC*fTeBzhJ*1ym)8goYwZZad~(NzHyChR3;gh+4f%ou{pbDJ;V!4RqF!sIgSSbK1n3d+(uLL zVQspqRlb3%FrkcJwm!#;NPmu{3q+siQO~HpFXkD1oA~>6KmTRA*+t@ejhQt#VVM)N z-1_9ePYwE)j^DCr6MLciv^LKzdHT8blOOM-bpiE8-DD)<*(=$|Hg;Q5=^OXQz(t{OgZVwmyy2P;J&A%kQ}fEQ-1Glj-7o4c4GN zd(SIx;?nE61HiBLc`hX?yq9%ccT?0)Lf9S&OT!_(5!BL*8oJ`%!99nr6F93ptk(^k z>!66~!A)K*-53(6`LQ>qS<$#QwCY3d2Rg^z!C0M-U-HDc&OA9^)N@C}wFA$GuZum* z6~1ZF!S%jziCfp$=;2=V`D+ zZ=K2BB?v5E-nxdx9hz-KC)Rk!GGn&@OZ<|{@maXfqYPH6uxe(T=>Y=L!SN>C;n zz9p@6$KWDdA~XT6o2v!r`=PmzwE2D8bcc6VY&wXWwlL{J{BfqOz7jrA`ul2`Px6dG z4UdD0c1xSy6>l>ohdOh#FSBJix=(z|)`n>rchbJEht-aWv~2L|NS*OikOZvDMt3{o4_T`d*`5~R>An{URCAE)_x!&!m)W)l1)m%KbzG$s+UHe$aCG@b? zimQV)#*wm|r%pKB^LT#R2U$yX2#EVZ(9qxtjzemox_)5K6r3E4TbR2!3EOk(TZo3x zb%c(!cVdis7I|X!X)dYJ4Oqc6IefaFjg_(m2z~XJ_4rG<&)3jwt(Cv)ypM?f0TMXxz|R@5b4Uc@NIe`ZIvec)$D$Yd-%!dC+I;5dd#axQ%b4mffgU zytk_H_xziD+We8Hjbdy;TQ5EU*NMFPN1ghTvu;D&u&qzk$*)c5=^Ej3ehw`YkU9Y8 z#95m$TrO(t>3ZqwpBbnxY(Y2P9-V3|;(OQ)~NXNk4P57u>`vk-RXyM$M0= z^%AXkdZnf)`C3QLN=?P41#{Sd&a(y&R-K&sDi*S8Pmj~DrQ4^BFI0YFfGMwCo*32Z zRa&?<5?3)h%eWJ8as68N8-M$W9=_a+vC04s)wSu&0pSM4=>p)}H*)&3g7EEUDK$Pv z8FM2@kJ7D1z2jBBKF5vgS%j(hsr7t?Xl=a=-gXaIyF%w^iT(JJt2a8%#roRw#w>B& z#Gz$%jXcPyYY*?P#qY%6^q!(F>pNyk&n<@PUYpK1VDsp#RUZ{J*0P4SP38SM$@;b( ztvGzTk9z1ZBdqg7(~kj;Tznn698cX0oOP$JY{uL34Ay3@0Y|J{$vV)>se{xE)`4?s z9P1j`BydCM(DY@Ux|7e`F}vz}uOv_P>UFENPwtQ9Q{i(;U15Tgdn%smkTnr+^M0tC zXTd$ZhtHHYmlAOX*nO>CWX?HzV>im&?2mjoT#K3tZvGO;qTWY;M2d0Y2CkZc&`k37 z)4&`5Q$hQGl6}C{;uCkn!B{!lO}A9rF-tb$Om00+jq^{vPu%%8Z)@ZdmHZOgD(7A5OtCAoNcO<hfQ#NYgxXcK zsL{2iscu$vZK|77ZW2qN=MO(G7kT#}-b**Hm%v=U?RtSUf*%joZ8smBo(to6b^Hm3 zpBuyOquep|PflKl(AV`p z`?|g@*|c28sV?KSwbjxzwRzA->^g)VOZ~+bW9+;nGI#M{1igfHe&Ka$C0%cs60~&u zv6;H|1aP7CL5+uNgIhPU)EDSl@2~T6VQ7K6_Vp98kdL?ZH}CS9){fC-jpK!?z%_g~kS!@BbF?}8!FeWpk|LiQ zK-I&BQG{sMIy8V+UCVEqUfh3BG}23N`8PhgThkM(8h?)ug%2x@KJ{G6=eX%^MlJn9 zJ!YZJSuDt2!#9|m^|$>eojy>?9RJk*Dn?Yx7r4{yy29JbJD8Vi$TdR&_OmAU)El2` zW8m1`*R{Mbvxj(#y7oxtBnBs7Rr9=t3+&^FH*`M4Yliu7VkTL}$>bZz@BF8rJbMOn zDm{DRTZC;@U&;7j16ew0nqy+Y0?9h>T|ge_V~@g#xgpVY#)F$O^xULW?&}Yx^Ax%G z88&)TDg&_AsurAYe(>h>sq0$%qRZuC-*85~WahKRF`OS@*0Sp^1hAKN;KXdkj(x+e zZ@=L%C~R)@>}NeZzG&yEUnpv zE-<-rS=NEtzDyz9wekaULo2Cwy!ItIe!_*wrP6oNV4Y(j>;qqLC@T&C!VmkfYeiLr zL!B5zVw}{Lt8yK{lQU&JxUV;Vu48u%`}{kO3pa%(<4FMhP&lfmz>xRSz3LBW<5O>4 z^n|`H_p9CE=nQxtqJqRCj&Nxofo?lh{O8^8qp5t-O6{-~qVM{;+v%=^y1 zvyZw@JwM@Z>nrlDpEwSAWwYR4?5%M!72s_Yb+mwTI}a@A4^Y8BW56=Y?oPv2j3D5B-!4xU>_eVRQ3S zJp9}ME|%uRlP942BAwsj%~_a@MNvQIdNiav0dv&iTbq{aNDShshK-%E^V^OOIE&p6 z0q=ZXl&N#Y zp8Z@~!BLMk`Sd^V%{IA>Xgl-XLnG*dZ*y3W?xt;idk$RV{ivJt@YGKL{g$LQV|(59 z-|EiVtjqY+{c+BT{aX#c+g)4zJ7(}Rb#3s6SLM?@pK$Cyai4J4u%9!ZHD_+UaqoD2 zSV%mh%Fi0-=k7Xo_f2eY7XsW?@p*HBB>m13?7ULPyVpPMGVh%h^}qR>#QG^<6?^9b zj8_Nlv;A}suh}QKT#xe9f?=_NmrlXx-p}!c%RF7bRW-}8qI(|zO8c` z=@#6-4^|1^7QP8Af%-P4eqF2?^2X3+@I1^>TRAlQTr)H**Ewc~OFTIlHJ`X+^W-dY zW~g2Bo6o&9!*{OQiY09idD+)Hf_}&Ytrxg!!K~|;o9^igR!b7=VwY}7*0DHf*6d)D zEP_-}axUuU#wEbH@Y16|G~<25)TD>BfVHwNHOj7%rbjH<3sX+FaPY zwfQo%#GHL?Y1}&Vez`iYeLp7v$X@nw?p>dCMOsVf7|p~yXOp-(_=Z}twjS~kh+Y!W}s6mo6oaOUHeGBfkM{d#E*PZf=Qyj!`Jn&q-(CF7tfFX42=D* zJ4RfOPwNBs0siFj=XlTctB*YA_<{}k@|&eJe{n*)wjHNF>Ez;O)S z!R%@3+&Aa>hS|v)=icp;JvOWh!RorZyqQ-dMzVj1i3a@uYJ`84p2=O%Al z7!88VG-EoEv*xCfxE}gssX(!L_Qq5Q$r_Ut8eZf&rk{|i(FJvb6g$SZZr0}dfOEr= zH-TX8pRsjt=RhadGi*;VSk~Fcd-fv!v^*QTV{04B->wy9?QLgv9<_8$tpOv>W$w0@ z?vzt1&)&x$qOZ{ux!B%l8uRNjAW`;HiR*HIEGX41o<}(tK`iC=Xgq5|I-xyO)`_tZ z9YK1k?%TaS3 zJ1^~aZPSaAGdGra#^%{sa3?R~g8x?6^(AW&TIY*pgn%IyHS2l z{;Kf*6%iNc|G|s%(`oy4!^^hWyPPwE!D zj;ZZFBK*_7)WUPalr`|=r#`(Lv-9|ArN(jAW{j6L;d_DBoF>@Mn?EofoR7KI>Dm+L zLYJ6pQu86^`MP>?9m_|*u(;LIla+lt)@I+O(s3ITQ9TmNILiK3*rQBef)mR;V>i5E z=1xE3oCAwmo(3;_`5aScjXCG8ai04(E_IH>dn?@%i+|Xu`8#zn!@I+AL2lYV?RoP! z8-McrgrD`_ay_fL_;-ag{hx09FZSaF zw^>wjV#zx`HD$AY^U{LfT*F5@_Xt4aU4d^9u!D2SXbN~?h%bwpS}M&NK;;Ho1kM5u zN?3ad{}fAjIcR{!9m}H*eIv&8n31fpm9&*0$e4ud^}?+yetx2tW>tU>bx*Ja_FviJ z=Wp*esah4c%0)Q{)Tt-8mayXabAMGkzeP(et9azX6$o8}llw-7n~|#5wO|GwEY~;( zs(&|6*W9|`riS3eMaBVdFURahtkk%i~v+dKV?MZbZ*=}yk|iB~-71Qynw*ryoTjpIEhJjvxfa8jS* z?X?~wr5@WO-)35EUmC%x;|W>ou(^VpMoA#|aPq(2YBpIrN0!AI*V-#Pq#=Q)MD!D%?BvB^m2 zbG9nn_fu1N(Y)#qZw;pU36h_ffOR%0XfzVM5B{>G^wdtC{@r6ZESnc*zA>eZNmsaZ zISPD(8|Q?*mmup6R?d0!O|a3mN3Cx3TuV*e@TtZcZk*tGoIl}PZtJKaD)jCe_FUxl zPCVn}9kV+obZk6-z@vcPP?KgeUFniocsz$|KPu%Bc*c$mXn4Y7nQZ0ab zqy}7YTszmbT&32zr}9r;?Ky=X0^N*uv+Sj~@h;u712n0+gPYST(mEuLy?5E*&b^;H zaAWL_6DQ_5JFoZoG`c1|RNM8KCwIh|PT4I;;is6o7stS?hj^mJ{H-GQXE2)=!}{MNB` zKb(hO2#;(v2-pXG!$^XX7+u}rCmb8DLeQpO>_0u{|V^k)+do~0o<{U0`2}Aw7s`$Kanyn7HuHhIVzLQ4(>372zR7G7m z2CM2xyZ8adR>9!-O(O41p8=~XWLz-*{nNGj#RG4R_g37u_1z;*wV#VVGJTqN|Al_6 z?V``T&+m6WsPxYPweNMSW*_^R@GigIB+eLqzeK2DVQ6Kmp`}|4WPuklc zU{UASl?d+#4=P47h?z5gzOy)F^Ek`CgUf!vnm9(6Q)P6GM? z;h6nACmW$-S>xEdb-I~ARI4||;|q8Y&kN${Uq!>Yf!y}PcmtCd*j^NcS6@-tpBh%y zHSceskrSX}8LV8o$_*_+9eqb*Ld^?5cM8CGoEB z?1fJ(&Q<4o;FhSZIVEOlXIOIqTei`uv!H8+>OgcAGuP%3J^n3Wn9mIVigEab&DDCq zd(A3`V~u#F*W=QDzFGLz=V~bM-TAjZp1r2`F9_adpBw87APXw~MeD3s=Fc2?9pAbb zWF!vM^Ckhi;R9Yt*?yWm&rd>I)c)c;;JK^Dg(rFB$Wof|A>Gs83G=yo zPM~YKk+IF6o!mYO+0@(cE!mOK5l%Y6E`J2k>yS)(dYt(P??KAzy!b#|zo2MhyQsFv zB4fROq4Ko0s=1zxZuyp!Aai1tn?{~8XQ?nSQrA8|)>wD;!pYpZ2e*9!r;eCM`$~7a`LoWR&W~O7V5xKLz4%RMymsC6*KP|a zmfJWM=)~9Lyq@rhbG5P8`~p86bKZ>a`m6O;wvwwZEw`E^eu%s7>VJ4% zHQ1wLeH0XTcu9Z5APS$S>Vsz807Ay1zoCo;nkY?j*YC0LR2a3U#-q52P4<3zZ#q23 zcO@Htcs<(aH}$9ZLw@Qj|Ju_wN8P>V5V`i#em9A0aw(h^6Fj1XKE;Uyl;8T3oia!qW&IX6aA^&yCoL<<^^VPk`2kV&GbCl%m zb=z;c8@8Ea6rug(Qt3xRz{12aIdT1@P_>D} zd9}u=_HWu5bgTHDq+iAJDeNlq>=8?6EO*zj8#i|5iCcfesH^2mI5U3oTk`k0fVY<< zHf;Uh-qQ02lOJ2&1Pl9Jm#F_%5VGx(oa4W4qO!2XKs@||=UZQRmNU4!CjjZQxxm0ZO?1HOWFGx`gc3SvFExvY_geuNB6Af z*}=}vSwCq%;TO}NrWTJM!;@UR{~@qA^T=O|LK(f71$^UN5}H@9^LKY#!`^jIjg4w2 zbXp-AR({_sUGvAjN+okMicuCJ9@&gkT*v#^lUK+gYt{Q{s zZS1%EZ))?#OuiJc;{2X>;tnri99_dFv}4ou?OZpK=Dd4gYw@_n*0ZB=KjO3RH;?4- z`m{U)e8#Cy+%a=GKDFk|v*!c7xvc%|%vnQBKUUTs{ia=OO|QcL9~}GK*u3VP4D@bI z@>h&sfUFC#q}}7No78?cnYbd(8=ra2y4W+8)-{4i>VY@Q9Da%myY-bg4p)s$@d&?4 z`G}b1J^+05Lh9vG#Odog*O2p&-bv+Jh>qX%M&jBfntb4!W-gG6a$l8GZweo;B8TT3 z{nj!6X}``=Ub;?IG^U>n0{`GO3iIBZpw+DGH*pp4oJ~IJ737osNprit(lQK>PfK@l z7I{Zpai&=hUh6tbaPFV;ugW@>ZmaLQud`-P>oMdUuIEuVFTPVn?*}!kTfUfeglAb- zUVpideV3xo#RXkc8|Ucj(9-2MNeA|&S$c=1=5Sr(a}B8hOFh~xM`KaP=DpiQ`GD@) zehYt}7kE89RHsLA%(Q&ma_NqumOLK6j9fQ%2C9BAyaNBF^{-^#Y<+!hM&G!b{wr2y z`eOTFdd|3Amo%n6ACa(>&*OL#fB#yWDx-ftK4 zyx`WlUMAmPl83Y_{^oX@=Y!Ssz0?f%p;jebchin#2mXvQt{NxqQMo@SMV)-0|NIe^qy9+k_Vl=zUZ6En6LUR7NEqoB(^OoGT<>AB z&f1n*a`$WY)TUV8DG*Te^lq&ri3xbVpQUR)Wi`UQ1Xsz7yamO5df8bwJ_gwB>7E6B z{WE}5&?cBhZKL~UjrJeJ++wNc@c5_XQ;Zp0@;%NAn>UeX_*U1xCE2fU zG^%iBRnOp*r+;&&g#5%@>wV+Tg333({W#aeGq&$081O$IiyK&`N*ArV5NBvaq z2MxN9lIruCcYoF?f3KX+F)A8my*Ury{O$NgLOZ{`YLz*5KdQ&}lN95w`IFuL)HwdZ z&!_$;ZO)oA{}Zp5)^opz9{`46UFvzQ2(H6x)&{1maz7uZHhuENx#{=?e*fWn;Z3H- z@$faa;+{|E;ZrHX^MJe7!Q{yi7jgUPxj#5xugx~ckLBx;y}`{}<7?u6;9fb~hP8>k z&RW-*_bhmbYr?wCJH)PsH*75PjP0cwiz}I4#xA=duJO4Hxfgt6l3(z#Xil4b*l#t7 zjX?*lElvF`;I)jA>9vu-MdP8H+BSX?#sBcW*eq@R?9p86e9g?Iv2^`2%h%kuf-2Uz zqzSRL-p!wRi5&Bn33)G2b^7o^yFz z?^$lX?mxx`{?7ht@Y&=Kq@PXx9n5Wz!hrcQS;60EL~XBWF@c%djky<;YvG7*zgJ@p zeR`0yjIHc`bRXD^Q+@VsUA9m8#OOYGjwpgOblurI7EXnTk}ebEg-D@;MX$MxFmT74LI{8M|kR1df3Go!Dy@H+TrOtv8=9IO-3o&~-D zQH_ajoZ`s~ldg6ae`H73G&GBWtVi@n4>Zc_;A=t7HOiL|7#6b=^zw5#oblQ%>-J)F z6WAIy-*}?6hxN{-tHii-c9w9H-WN5Vr1%|6YU3n4oTIg!G3RjWD`ROAheMxV_FydG zE1cXZTwZtKWqj6vgXKEdf;=G^`mq*|1}{jl1a0d*6KXsxQIonj&F|Zj;TcINNA153h!P^N`+6x8hE2+<_hGD!hSP)2ErFAGk;L zizs?-c23MY56c^MkwwK3B4+VPiP_B%o^>;JJ#~)JrVsgVR@OUa_ro69%ba&K6{o~y z+k6AAfbx&4%>2cA(_MSD*-d{RZtp&IAIyiR%=4jTL0Zt5ZY)}73Hz+5Ral3ArpJn* zjIPtT)cK~(=ShLz>%PG;=l(WEXN{~oSKMNKp7a#*2Dc93Ot`|AClVXB_DG+3@h**R zrK^Mc)~s@P)l=8H4plUtg;g~k2zqH&C$;MayL0qv7Ca%n2d^Y^*PGwCu1jqE+K1e0 z^B|$H*Xd#W8SIYO!rrKixx!rH#!{bH*KSXe4fJG05T*seqDQ3@8X0{r`!dpbL>5uWv|!yhR(JLDYmEg0=MTO@Tmp6 z;hSNrPo2ygOpe%(F8#Pk*Tua_n=xkO#X#a_o4Rl3jAA`eLaiy z;$Fj;efIQt(Bp%kiP7TgbvDkPj;$X97x!-60l!k~>{kNcY>hU!!3e-l&RFe?CYpd7 z+{7wnjb^3yW1r(|u29>@yD8--2noj0fGeE*(DNG0o1!dvaix`YiAL90dbs0g3{c#l zz5N;&%po<%Pyfp4CE1|`H0L;5tH>i9bD+b{%W=!}*(2}hiB=O$ij6~hK1f9d`EuFvfWT%0zcv> z9>3(i=%Lm+4Fk5sdwRR9vHjW?nA%%Cm^IotG+^9ysZETSC+mL)_^K@c%(!=z1QB7l zJ%t-zi7z;~mp?29tAKdRCvnxYo7!rMb}y9HJVDo6G=j!^o7sxrBwMoAT(dvbw~5Ew zoA0yOn%%MLD)AS_5ZB?Jx)1aQyT=B0^5W(MO5m8Ch1i&YKHRY69ovVzWA|5T|J1p* zcGCfU0GEI2ZJF5Sb0n!FW{pPyit8|31&$%b8$c(ZaIlW?utPPzi=TRrXNF+_-)LWG%g{?Dm}eCk^&pz2&Y`=QKUrlfU2``xy@ zsfAB3=j@wRC+_v)3pjnye8QrBEdBc5`j*A%F$HCEXtBLwRg+~eO_2Gr{m1-1wVWRl z`da82yd$-rUdLU#;b`jS@2tsOWd-16+`e%9E!pI(XSZ(ZDsU_vhXObU@KbNi=8wJ! zYP1L@SqYC8*WZ1jwZh7j_olmT5YoC_K z;FDTVo`eh}yR$Ez>f40krJvc+uu?}p&CCJTvIns>ZLc95!+Y^*_unVsKfuwVr151L z+jb|Xpzw{#JbjlKcDsMB*(I=wLZTK}SKE+X3h z)cWe37nlK@|EGqrZ}(xgt>p`F!DTP4R?`ZCF>4Q+h6+Uvx@MIfIT=R>QqDA z$>eZ&)y`YR_3q(3JxVs~>esAi@^6ph!SYTI`G$Ffn@)x2mwx|f&o%5UpWDjT=P#IX z>j5UVxOQXSgId?`^s;f+S`VBa#JQquJJ)Zztj}0~7Bc{QxW9Wj4=LgLxonG4L(GE( zZ65)BX#GhY-*Q>;#P&Rkr|Bboq8{k1*>Vs4RILbHFWQxEHK+DdE{``kUeSB7Q{Eo% zFHO|zIz+C2a58e)cE0(5rS4OlbESsjxK3BE*83c`{`hWwZgd3~31!+l%)}Ki6S=XB z(Rzt*ku{xKqCIsRaVAG`rg@zx`^G_<_wE{UKftz?;*D5|Fa8g*S7pww+Fu&Dp9~{O zzmwaV-} zd(mFz?i&>i`0cq&f7^fwH;|_p1)~f8EV11C8Yl_~Z$`jd(bByz>T~he6>GV4vu@B_ zmMJd6+)uSZm_(7iv^p9P5}l zl1DRM!AEGX^*jWzJu!jfr?d{9ZKETx&P`^P_6X@slJXU2!JFM)3*QW};fvh!r*?bM z$3>WP>Apc-CZU1;|8UM_^uUVX0-vyF)J;c&*8SK&Ta4j*CiiET>=(vimtFq-F|+*X zVz{%;Sm6$_^?CS|dG58&`qm0A4bKPh$SUxSp|G1zVAj$LJ=D}GfT=aa7S7yAkZW$& zMGgG9Owa2`2B+%jhn^+-^>0?Je@C@|gOkYE)KoA%+lSu%X&k!b$yxN%j1?#bj5^l{ z?!-FwT+p))kHIULy3+VLhHrcA>#*iG-Wrt{(>YQ*rs3b7){X?AId-m*HMJ{5+cG3t z!V0vHdrn@ejJs?wa+&w;2ClJwG(kk@vhlUv_3U6Q>KqH`!#6+cTxYFw^X%f9V6!$g zSr>ekN?ySGpMmLO#OY&y|8&dTOV>YBJaOeNDzlTvfBTL~P1K<~SJo*$^z`z{n410u zO0xZp+rV9m&D0T>#-BHEEHKuTPq1)~ue#D`#;Tfs9J=NC+vwT*Y0!S?>E(Xj+ebuV zsV$9Wver89;HlSd8?^YNrfXXE40d?I`{&Tx38JeT?ebTP>`x7gIgEQ>4CIP>Q{vb= zAiXn}un){5J_MSv2L=u*OZCDKcM}Ar7f|G55|}>tBDY3RUo<}_V8SP8K;Ys!l+DBw z>>A*qCMdA_GP|I}<$6E7-W)A^mE#N8MDiJ{ynq)50hmO_D%=l0(7Tw-1zi6>SSqVS z-Y9J42u{xf)3vee)M6HT(*ZrSN!M6({I(tRYh`VdetvU)X7#zcgf_l@V7kL-kKCj) zP(s%`&~K>$o_~X&AouXi27v18kTdC87FM(Cm-RXa|4mpAKrKBw_l*dn0m-*_eJ0_@ z1D;yz2zu%LTAt=KU-R8&DV-EYs4)oYAvuTUBv@4(=Pz@#eCbJ8D&9j~i{{yM4xtlP zxFoHERv0>Ch5y$-*AGipBRtU;p}h`%ZQudMlHUrKu3~Xbn3spSN{oAlw+1_6mU-e0 z3xd$~=vb!Z>B2=#pIhBo+a>ZlY=j*io5a^HJshXdv-YmboP5tzH-PI$;O1NhZ_NJU z>Tu%XyKt*Nu&je3*J}=g)>@;q4w+9pMHH?zUR~36BTZBI~0@%EX6z&%bF^6NL`@J`An;y2v~`4@fN&l{nO1hsit6=VHv^ENn{`0uMF8 z5>W%BIXZ^1Z1&(*Wgijv;m}1P+@LLq^6+_vdQ7%5pLl{@FQ|CEVY=McrX{;+d+1tp z{JH>DAC__LVKKZZ(0f0xv4J}zR85ch7YhZ(T6&Sn-kaa ze5!9w8#To%t^+%NhL0WGOZ`^zmwUL*uN!%k#yoOsFtq3Rb})JA%fS#OuK)Wfdi5#&NU0?` zds$hyjvaTZmc+KsLn)o$QQ zPJBG-l`?VG9bVFWnCbMMvqF#0+CI)EP3e5={L!xz+Z>ul2Ti`!J@9i@jh(tZFHzP; z?DG(xI3>zCpz39ez2BVcAN5ZDiLd@VKUFU)q!S#mIrFt|e()^ubzsj}$j~vbOF;ddbMOLBk_|J zWoxDa)V~Wq)%*1`^IJ%L^e0S>VgweM@7(7yv;*%hB@e7Jb?17*BvYU!8K}KG~cP4__90Y;|g~W^2p! z9&izS^pZzOj%$puC;xw_r4U*v2n|%uNCu| zP=Gyrd7P`b!1D*ar_T9!JLuhhN-LS?y8!j*z2%l=I#~5mJJ&&^f5vGL_|%_#p9de! z*A=*a*>#==MWK;L=JO-_)BfZ?gH>Q3 zu=KaaJbjp5q6W>mHgcU?=^Tki%g!y8eHTh=uOz!8LnyDvglL#$cdlAWH?7_iU z$vH8%6#J2S&P|#)N!M(Cd+FRfS-VU^6n=reL+ff7uHX2*mCp%=Zm#)uGOPIIiTuxvoSAf5rj3 za%N%{9FO`oldKM=6ikA6Ep#tf#Vv?$#?iso!+*P0$|0k7VYUi-fe?Ubn)HVm?!M_7 z1N!mFQraF#avkuBIkP9vm+U#z!<^;h_RyCdx&l3ubyEl}!{w{jL*)&v29>B!9ehJ0 zpz!jWma6GqK6lNa;?+muHTrt(RngQHjvKk33(bRGqQd)qr@S!xsnoU97w2<5J@`u; z>OpZWd#$XFjVtfI=2S;w58~Dg*O2xugj`+5~eGMu2RD-WPqQPLxST6%Y=@zDWG6z2Dqzv1sH&*oy+x6{1kMlf6 zTtOMUJg5PT`R306X0759g>IvHABd|%`epp84l~z#Kq%FQ#tp5>VI*s<_==~r0(rH; zy3y%mL@U=#s0`}IsP)1g`t;z1=Rt~Fx)rF`0=B+%(0Mkeju{K6!(bDb32y1~yr#}& zwJ*K`V>mfxcMMLlAd}))Vyf8H=uy2cUhtk1#lgT_kBYNV#KEFUuET<5fu= zOKs|~$(?v#(seY(?njyVIkVK1bM`6q&|nt!ZjI`!YtE@S*O62_b%{6kkW2e|N26m= z>n7~KS#E5-J*rmcR=BB|1Hg6k$h^g}35~+yc*8x06xV8OqcU-99X;^sUh?ong;`FZ zZ^O{qVmYiM7)!G$P^ts?@*uY$L1^V4bIH_&)GV zi`MzB17cOqxp;p2>AEe+l<0%txoKJd%vt$hrFmi~Lgq2Y&hmGWaSHwXsAkFL{Q_4w z=VIBs2j$Vmy=e}`nANhU&rdalTQ5-!<>#Qw1dq1G=7e`LJ{7nZ#i`9)#&x)QL>)SN z+Y3N-kjJvtuxsYET13p3uu7tyKl(MjA?-zc_WzWJA7w8OtkPE^zz)ngH*dW2xd8;9 zSz6@UD|Z;-XI)M!S!yGme)MiUXe`$XaMu+PT*f)OOi~BX`SSBm!yX(y=d+$t;o+CM ziQx~A;V@y@!#d|hG1sIMtlqqVfi?|(wKfb2*#`jjw~mPY-M8Ar7G9;TAL>iZ2~Nu9a^ysit*~eGvr*_Y9Jz za~TB6W2aSSsO_8%=bkU306z~W=U(#{Mzt2&DD#Zrv#{c!8&@xbjkzYdiO)J- zmAUL;Ec1#X!{o}S&|&b5?$5P|NqCgYq&vz0ufV>jGCD% zc}#@_0g$TpQuh-P`FfdXe$lU$S{GiA%>VL1n>>3Z{-p)8&UlsC37Q7nc{8q15?;Q8DWh&aL zaCuJ6zj0sc!_)h&t@k{ZOE7#0zI-Bh9tf;q7&iDyh0`>##3gYg{Xu<_O#;tmg%s<@&^eT@#@X`CLl#yg8Pd+KiVl z!9UerE;)Q(=e)qo;hVtmwDt7~KN{64w$=Jpftv6!*t|f_e>KI+<(n3;)i?$ikiWjf zg3j_VO`a1wyneaiZqgJ)cN1!{(!5 z;tdI&+%s%H42py0-UN}%GKNm)HFr>D-8X?tte`mC`=9V4&1l`&T<@4yyt5KVjWBB} zEuo3&zj2j(-mu~{mDu9K+wROeBy;ND7XEW(Ur4@|#GkSOQ}@?Q<{;Up#AJF!55sTI zMk?>E`tWHVu4xD8n|oVJSrDdv0v1}tF(Uy z$hTGMCQWPT;=G{!tE`fJBq#|Vl5@kieW#|`;8$HYX68{(AB@Rs_sv3oD2xt%Esr+T z2J85fKi<}DPxs576^l1DSxhY41K4|Nz&W$V;U5#CP>bMy6_?%TL?c~~s`Gl36&N`p z9cmwp=TSX^0~a1RbaEc{tFWK`0*!+abFhX~?R4lG7?gta3jl6Fk-rq5OwIr&dy%*K z_?`6P@p;G$Jbc|M)BY=7m%X3U zM*jBu@fZNV^t8|HE6bZ$bEdf0;=z@^-sE1^lY5S=xgMJS{{kL?hr4LmYByDEoDs)Gy3>X0nHQ&etz{WpR}97(8Rj>z}cQV-Fo~ zqCVvTtBjtbezT-_&T%M*`OzziIfrcK+Fp3_EAEtI|D+z}nWVPzkq5;gY;Kltc${BV z>0N*P`A95^`Q8K6%_=z`F8{bfw623?>Gk-jHSlwjjBc)-?4kK0ULKJUrUnl*tfB2S zQ$FBq7qOG)coB~&u lFGUWY;O*_f<~eJl51r1BKCZDl#&Tlwl$#T^ts{wg#?taa zaQ(~QSa9U=;?vvnQQq}WHAt?HfYi_HK)>5dcszauV``qBkej8x*SBtHVkpjEZ@Tf~ zz4(rU^YW(6a!MyV&rthvsa3Ah`0pEBrgebNro))mW)I2gV4Z2I!wY|N=!dDe;|~OG zy@CN3d+Rc4kUp%-qjKf|Wd8N}(4ozq%IlDR*01Miz>BC;H3x{LT8B!ab)yE%d3Kl6 z$1_1y97SK_oa1_~#{bLLt?i$jjl(!GYvfVMelZh|aY+4Kxa8LRx&oNf@+n!fTnFOS zp@?p)(vNuy{(!6Bc(^gXFL^NvB&;B{#cye-|8y>LS^u)lm^QBmSgrlHfIGd$kw~xC zDfZZX17O4PwOqU2FK#Gges59Od+MvtMx|LEnjx_*j_-;a2V(v53VFDZ9#6n}xQEU| zj?W=Ds-#%~snbmmq=%zEbI#YPixHQ@GfOl^dL$%@DMTKX2^DLIi1Aq;uPAF(lP3 zXr3~KSFzx!3w~<8s0BL|eI)&*6!tIy!N*2Ju-t!6k^-pqTZ;9bvM;Op_FckkIvxpuss^#R2*TVx1zvAAA; zE*C${B&Y7$#ACbuTc;3Qu7&JVC*Yn&JacMaO6jrFw+{io@r$+oU?uwNW~xn&P@dy0 z=`<7$Fu|M4fj+}wt~Va5<1r@Sd7kzfEAcPCDd?Qkq_2za)}rQqcykTZ$EH(UEO3=d zGuBjAJhHwFm6(&7ofTaXs3nhhpSP@qU%?WkPLLX@dQ6+zVAQkkUvrF8_ZqD&+*`Yo z74&(LMyY>AQCNCtjze+_UwsH^d#$R~Ujg^8ShCh%fK5ez)yM}3Z;=JhZ){w%HqUu$RouASUB{e*0$lrj z1S;B(y7=DH`J?Youj167ozHTgJGnL2HAF)Jf6JKH%bdjk=6T&(8SADhE=WGd;(Kflk=!!c)I6Iro8l?VcKK5mUI&bZ zqusGMCy}06G!L3ngQ}I-M_C&5O|Bz8kxsZ9T&|rtDx5^4Tv+(6_h7a8LuMT|kjcm4 zKM~@I74=NiV^uDk!|Mf?W!xN}@PjKgCw9M)WEK5Wu0DCFqMobp**VOk=2^hL3p%km3(KP8d?5f5M6(Mo6D^bnQv^G%t1`#JSr&lXW15S5!Ed+@5Bs~{z_rz?qU#Nu-% zP>aa}Ze1OXi6^wj;TpO|u<>wqOQBx6XAiPJULNtMv9Tf!)|Y zUbNzcujJXw9=02=l_VE&@a5%$1?Jc8n+#K2Qmz;8Z~(HHvBl30g*D?U=F1o#$vuxM zbFj!*aD2V5Z#DBmryH@t-8U?nt>zZ?EM)!?5dT9QEyUe9zWfT?dU-Ru^4g)ZTqpmW zv2Z;slD|m|}^13!GV{grlJL)s7%*g2r$*`}FfanlIjz zuKx!Tu<-W?0t0W(seYc*WM;O}?fsZ6%?lqy@$r{jcZg=@#OL*W!W6aJ>EU zk&eT~o7Thi9NWX9Z8G{V9PIHnO`i~WtPeyt9o%)^UmM#24*2NSXS8@3^N!R$j&moz zhG?LVF#|yQEY0%_@N#kvc`$n|ZX9@Y?*S(_z8u~-dh^^jsWN&F+pi=We{kA+3T|KN zKWWlNywGX%BshkXJmc3Mq&iQZ|G73{5Fx(zyrs?h)gux(x~7ADYG#hP?wTceiU(kG z%{zd448WlGu)n!9k5~4ead*R7_8V;JGni4jmdQI9jI5{IU%md~r}nFl>!H6|IPq?N z?H^E7D}4JQU|HxrFiHO6z5LJ-{w(ufzaL@&=1_BNJs+KZ7&9-qV7ZbD?%bN>MqTCP zIIi8HrEhNhb02bQ_9+6)!jor7yt(0|Pd;bjUF0*#_Bzma^y=R{R9V{hYScHph=pdp zq!VnJpdRv`a>hX74sR&hUS8ISt@GUG3m-C=bMFG2c(-30Uzgex_VjBi$6n^y-*Zvj z+7r7bZ<1PH+{Au3QB0qgN3PYRpYN%ix9YOA8M)&!P;IPoEBxoW1^4s2?bYD7nhDqz zi-v<;Jum&k{qhLP6$aP-`)>goupqdG_CioIUvVAGPkh1PQ*XT$Yu`9t^|*Y7!o^0F zH9rC1S_G4vUQ;`z<1wFEe&M9|8XdW!o6|-0a^Kn~T%~6L==hN2SE=@@uhzlToXT{P z^yR{>$3>Rn=U^@c(a)g~=i}w;FQdT}Ux%mQ)VsM?ekINDiK$cvcD-T$;X0iw=PqX- z?Ogo0$WX@LZ1o!47s(iVzUatzIjP;@PptrIp69DBEDacf7wW-07Sw~1c?If!KES0P zg)jCJ{vp8kc|T}^ixsT@ZZx^*Vx|u-@ z!cSa-lc?V`bZ_tGXRhny0=tK;&^&e)V>q5%I0tb#)PuK~ev3_EG`98i>{8b`N+00l zmc4c1ujcZhSZlUCt;N@TgXR0_6W2aL1M25_87HWo)+5;)KryQ5*TGTzbJYKxzdn~lal*TgldgybQ0gMxXZ$70QGHU!lpmebfTDTV!&-bs`b+&G>^PXV5 zX5*hB<>lB7VMVViJ`UzI^Aaa1;`B6ZjNP$o-v5WSYZPnQeS^d9UakW=~zm)`A^N<%d4nRBwpA#OY5S#Y$ z#F^q)h`ezT{DI*&sM?LWYuli3&PV0pY(8^Pq~!DVpu(~6RV z%wn$h;%)DW?Unt5>Pz@#>|=XIx|^kf}GmQko$J2 zYxV^jPr`(EuEO^QP}g9LLx*;KvhNn6E{sDFzdR^ukf<+@AaJ;+cD`WqoPAQu8x305 zaG~CZU%Y?wcY67~ar9C9^Z`8U%%ZLm`}H-5usn~W?uZwcxi8Oism{T~Flo-mH5=~h z=??_q!NL2ok6MR)RKE(9HKb{_4_H0KQ#hpAT3_=j=THdSJQ;aC3Vqg?fLb$9_mBFc z{7gk}P4|8ElRt3x@({5~c!9s?_-{?%@xbAarRyJl=Oq6U6mH+q zgYm8OBt|K>c`gHLO>SN9%i&ap6 z&JBcnKKt_VnK^jQ=;7yh`wi}v+A)|V`S|Nvx!}FHd6S}RK0QUj%YAGADA`FTx5?|zr+9bumn%NoY2@y4GNf=xZ&M{j6;WiGTl}K+>enBd-PGJ+%sC{$ZL;GCtzd zMD_7HXhdqbT~*K=0c{UHAKw)`mvq5D@N2%Rx9=gUFD3)2Uh!c(wcrwJ1=)Vu{UJ9r z*GM;hwV78OX{q|B8Dn~`oTTT~fMk}qsu{&=aU2gol zZ*eXfNdTB}eFT%R%o(0jP27y-?2E;u(b#5trI$Im6ZdMCTcL z=Z3C-#3ZkW`d9~KtV0~M#3OPLJ0Z(AHcA#$rUNZkf8ZH<0Fi<>K6^u0Ind6jB+P~n zB2CsOHl&>c%Y7@N|eK!8u(&Ur?g)H^8%X{(5qn0(^#=OtV;(!p zn(aFnHS4!FHyYOXd|--GhpmksA20L$-UcVu8g0k;^$ircy@}-yF#NX$N0@@X;RDz{ zg?mOQhg>*3fj+eU)nbqs>~muk4m4ur4Vuaihcuyz|LYRTr4Lo>`9m;ex6^DM5YRV3 z!E?FI)Nrb`sR91|9Gp%kx&~flPqwM87WmR9w!|k$PR2v~dEz{WFFYFSsIi=P=Bw&V zWqql=JZt~LeX*%muYNKrE_`EZ)_c~jdhz}~2EO)bQz9{R1HG4I)AFhO-#UvtamS^YACI|a0>lTno@)0i-#0S;ak%AZziI$KVBM|HR%6)hww?1g?dEp z_UIPg;9%=z4+)DHTzh$^iXPer6CZ?yKd-q74ZM_@H&sxur&Yr`ZOFy8_f8NCX&unxdHHrt2M_ea| zXq#tcU%QiO+`69UrneD41C<4t-=g(Xl4sN$omUT1z}=UcY&a;W{RDbGH8Xl!PcNq^ zj>#nBwVcs>as}FchZr=sto_E_D{*W8!nl^_b!hhA`<_ivzC2S&Jvo^>#*bxQ?&eh4 zZS_PHZrTRsX3f4)GbCN&8ADLx`m;Ar=IuGkbbKk+nysJ5 z0i^S6V$Ffi1@IC1u0?4b{8|vZm_yTPIM#sne7tO-vISfN$E^d|YvYnYCsidBR)>ux z+`N5;x6&c+@Y`v`w+C7GTDLRqKxdY;@KF7|^*JNnwlzI0RJ!mc|KcTrS8M$`{W#V< zm**enKgze)-T>mk$ItZD?%Wt27|@Wf8{=S(;joP93%wz6G(hFz*P*?dV9n64%{Bf% zqtQxV`>%c~wOze%1GBIag?@A31!opD#e~V3t`Z@o{ z+Z+$)9lP?eRYsmqGcRERwtAe}00oDclG}d>ve5xxR)0tw^h6?@W){?bb3}>izX|`J zX#UxkneMp`KWmO>mqdp{SM>0%3;NX5_b&{yziQyD+7+6|kHk^iSmdaYTk~~A?P1-^ zA^&Tk&H9@&qu1OFzLa?9^_>5|62wevAJ|XNk%-G-xawsCB_1XO>FcsJ-i@;--}Uh3 z{VdqE)C6XmfVPWj;c3o(Rtyl7b2Dt0C@Rdn;=Nh2`J5WBVb-g8&)at9aT8da+qN+C zWNP2pjj`*xd6p7cr@e8F=J{R?JVaw*C(!oY$0f4o7`qnpY|mGl9BO~A@unW3=zcAC->H&J z$fjBa1GP@aJ{UL8CF2O&zbcOXLDG;V;-T|g>j5?_)gzv8z2Wg&`Mw>SyZI$i)SpDw z8*n~HmLxw!vpR=pq<7C}G){5Os|Dsga>?xN^9O7m$M+`aT$95i0L7G ziOrQY2ls@?a_+s+K7L^G&n7S{Xffc#dY$C83w?dC z^0~CXf)N+b!u+8tt7)>fp+R4NdRE$2FZ0Srznv>sq~$@V2RTdpO4$2A&}(NRZGmXQ z3*vc@uh5Z?v7V!rb#;2E?6@lSpapBK#s`e+0S+`Fu-0H5k1xspsbC z#Z%9|zIoVQ@c+;*?7%}+4rCY${Nx=R;}G1e?WEwEFZgC%(7uNM!Cb)6N%f2^NKa$zKf`D7D;^{JrT*=kx#Bvo z$Em7+^6(?~jf8W5foDIga-muN6xLgfPix#fhjZ3Kpb1hZqYWAJcp6zmJtAc*fl#O?pU;m%T zMLGRm2l5xQ=ZjBXX1*S+E&QS$-Y3pHDN%A6cz_(d&Y_-@ixx?Qak9t9kuJnsjqRIa z6TkKk9s_A8YHvOBiq&?o>qH8>Jgj5S2Q$4lf38zwQO{*Bu;eCg{)@f&TsNJF{jBwF zj&t+Cz2XMNkY@W&9Fv(V`@D0)b3HxHOU$0uI5+pjUH@zMY+rSIPXEs_hNIdCVIlJj zOkbzZ^;~$z8a_F%J$*|DCf<`TZ%nq#=UaBzLciox0?Sq41yzza9o6fHEYaC-Bl|=>cj^d5>GqJx#R6a5JkeRL5@Z3=idVUB8T6~|H*hs zyjVV#&?(uQ)bT6Pch3t>o|=riJWXn&Hreh!{D)^^^6X=*PqCeidH2XyK0Q>Mfo8kU zpEq@pq_xJxF?M?SSM9~`+p`vw97;Ny?X)se9Z-M8aC(Q=a>!jlCP4Q8EM&G>0tmf&DqqgX39ZmDeX@9}i z?1utn^C{`msX6lVNe>Ooj>G!*+y7W-0ed}u-v7QK^9aM!gw|5~!UwyaJM+FYu6^z9 zZ=G|vUVp`||EC>&JQ@Fq{*U#qo4^$K1wl`KMdut2n9s$y=kkot?r%WJ>LB{7N$=;k zg_M4J3XB7O_6+z6tG8}+G{}G8!}-H+<-v(>^?q+stMf>1++=mZ{zclk3R_#_J_(zV zH&4Cv88*L4m1Xe!4KE3PEw%pqm1!3|(SE)dPHVwk__)Ss-*mV-M2)~TE>-p@l@b&&j0e5#MsXbpkA9}GCkK)gB5u2YBC9%O*1~?-{|-p zty%Uk$KI~9`@4Wz-sG5TkJP-e{lTqkPFJ#S?LR%?&wFjJRnKULv%9C~cMijvoFVJ$ zQUr6lK5l^ZNR4;NHjp4|sc=-Vd#2@)^_MyjYWWdNz7;G{5WZZN|~z zlO4?PwZ3cUSm!r{SwFFP;!5$)hci#|j$fnXgUy@LeO_j|v?drO@_Q7XD&GUdlLgC< zbT=lKEIjrB zw{OlK{q^E~`%q^+z5L;;61C)2tedOa`4&})&z{ zerqLddignN>N(DQ2dHQ~k?Y2@i~hV*7I;@VdY03-Bk-)9`oZmzHDg>A>%9+;^qll{ z^;&Jduk5$~=`_3}yMSB$Pgy#;_l=$T&iBzWbY5ipirG>I|5UxFJE|N1=zXYjJ#U4} zi|(whe4j7;pBq3V6!Ln5c^&V+7{mOdEd5`#z&*pBln3x0+^=cX$K2WN`M^re@12_y zKM_{VB=aHT_Mh{)IF0P>zRvga$c5k=di~eB0!_An6*D(@)Er7<>h7-kg>rIJK&;)q z1^VVfijQk!Cu`f!Xzz1>b4o#uP<3*a9Xk6xu5M=Pd{kRZU0=7`cjlXJTlUF?)`ffU2C7$e?6y-tzZ01(br4==`?-$-R^hRPcK^g zd3PWC8h4(W#5(qC;kWWny07Q(`ey)b=i%~XTx0J`a8Am6*K}P{FtK^w?JvJNbgoPa z*V$RtZ9LQ$7x|9^UiLk@F3=;#L z^A1o>=Wr~Vvps$!2Uw1p4L+cH%D(U;ISmK=^jOv{?DM!WnJ07%*TunIx-)aMZz+wb zJh{{5kIRLV82Io&`vDJnHd)v!{62Blb0^M+Z_>>15Xs3});-p6MN97BrfJXmRXB;S zh34Gk)HnJUUgC0&{%x6`r0~@jDqewY4+pOO!BhEDqDjI?k`dxlv6Av;Nk3#xIp??egP+> z^P$$dMluF@bL;w*#7`~xI8{gJ-^W{X&Ms~p*z*@O%EA6xKZF1(><fFbcbNZp^<{k#`+t>j#V|4CB4{l-G}SFg4F zB7pfkOnmdi9p?_;H;drTjin#)|1})AEO`IA9!0Lm_)CI&tV?l|M%&(|9@}w4-S1U|MOn|;Tn9FzrZgn z#{G|j-FoQ%QSxwZK7Q{b=J^+){qD(H_|9kUU$$9)wP>>bm&bp``+WT!;_tk39oiv# zW&EH0|C#Z1omTPDNPh*4C~G!JY)w9bmyga^)9=g{|Hj`O92{H!x&O3Epr4jLzUt=X z>{f2yC`LHvdi1Ze^VHZARpM}6^HqHRs`%8+I2!xm!|(adt*y_73X9s`tF_Kj>8*%RL#+~;S?LJ>MpWoIN7=&EmcsREp zZ-C|m1=;7w&q%|Q@%p%2!a8yNMiwaR#O_aRdh7^QH=S~?U*z&I?Q8cr$bv&X-u_$r zG5{Oh?#YulfR~&3msi#uCvU9xg#?G?y|a_QIQ6^;73()U=J{ff`|jH{dw=crq-OqK z7^}SR#uh*LQM3Qr?0ooj*Vl7r+2_s7V|+Nr`BZ=TckNs=`*=@Y#y{62 zieFk|=XEmIFLZZE2VaxiVYQn*Z=I_L{fh@<{~179@R87C^`1FoFAS5Hx#P2+FH!8`F zPmk;+|NRmw(g_oC?K&-0PArZs)rAK{?2MQ z*L##U+}ikWVS=r{g~;KsuDJ(@>vy+dkJ{DeOB-AbYM2Om1Az-RH%qd)8vkMZJ`re)#S_4F*gm$3y3Wfwd%!cN!i1GjA8>2Ir>sSh^-)`0 z1^$L#42`va>CsX9THo691zMW_*eeLKtAqOe*|bf46R5Eyj9!0eqt!W^(Jt`bVtk3L z`J>OyH1)I)lzlexVbWA^A3 zacbPdGi9yMx_#ie_Qkc2cQ{9n6nBU-dhXno_CH-nD665+Q@-?Ng9x>4$3Z0_!_?&{(a5k zq8~-|$a{q!OU-rYSM*oy$K+Do$#OU7I^L{>3EsyL^d>U#<@{5Q-m7?iGaA}{3ryf% zFaDLojSHolg~%nzlQrL7u95qOksnjR$sJd?3lGl-kH_P?ws`peN-jAWFS)p1D|)$| zXyEqo3>5y8pTwgLzHb^`{@MLm;(53>EYDy(`@7c6bKS^2vpLRPYfXROB=*&(xn~yV zUwiA%lqWj#-B@Rdy}mw&#_vmcYJWTUoJRlg9Ikc)YZj3B&VZVCaO=7k&x32;U7_%U zZPBlXm-7#PrTyFQspSXfqdOfQ&BNPKCpf*|YjFECFF9Y=@c;at3$$tCUi%wB4`U95 zY~gyM=AK$d-@5I6(f{(eNJ{z%h2NT6sf;Iu;E$CG$A8g%kINgWnWdY2BR)8V`y- z2SKBUupu0XwGt!WYcUmgH|Km9Y@tZv=-!q3-3#9w%Dovv{}mJ0%jBxLF(9$>AWf)l z7K$Uo7L4|1rq>gRwXW4pn0P)vly+TOKDM4~fKXPp#fSqhqw`q3QeAH3t!)DT=@ zdZRhT6CJOc@n}o%t!ebT*50R9o+ruhn(dzBr}XG9%OXE>|H_5L7?q#(^K@6~FD|OA zDb~U7q3}JSB4|H1fDdPheM)@~Uxe!BzqGev= zopEfLBXToGIGa)Xe&tzf-{Zmc_kVlOwZlKxOgv=!M7rlp>etnL+)_WkM1SxFAa0nAC0F& zvArWqUE(s0!#~x6_8a;nsPru7#LR}1kHm@Xk-Pcke($N?cf1+B#F5B_8=H1OV9y0>zGu|9( z`$1rTiqpe9dwBTXX$6!?oDO=SF-= z7sq+Bmad?CZGD4e&F4||+VXzUH1;!b5u3|*)v9FbkzdW>7j5-DhdZO;8r#u3g03~6 zqiZkjnsM`tvwyARQGfH)WX*k~se<$5WNaQg+@BhSS-zH?+PO2=?14|+06wGwK}cSdtS5k7=dU4ACJ+=>zTz^55JBYxIbqa)3JOSYZaJ! zDsA4$n?wG)4wo9|&v_~Ct&aox#cXfyhkDL;Y)(l}O4VJ6UXa?$#gI+Nzi`1~Th=C1 ztNPZ&_My-jmW|ctIyeAA7Xu#IslmM#!tb@(?{cBVi1Q+qTUuhmO01Fp;c*Of&1~kK zCd^Vl!5UJq$ojH2IB689* ztFqNG@4HSDMRmCD9af9ZS8hCxR6y$TX>VE{Wz}Ob($%A9OzVtklulX8`0&p8ymdIN z8~=x_N_VyOK6b61has8k-8^<-9Hz*XUET(*c+$h`@*d%tyT1Vh;F9{MtNbi*Z5^H< zo|{woCy{FX1k%+JVoF|rS*RbyAuubLebNIj+FXjALN z!0UC zV|{YLolg(bz~w(U)PK9yN2=yM)o2&?WlgEIBe*EY;cUJHl zsN-Cpw_H@Qec8UGs~L~vTw*u#94l0zKc7>a{KBJjxE{=0_Jf5a^wjyBor`ah_rLU5 z@AFl5d?~DE16acS6!kpx?DgOO9VS3C?!uD~z56(sUAH{hGU5o2N?^~>ub)%m9QIlS zOqgC7KeRqyoybq+^0*!E?4SIzcCM>?#kDo0y{=LUvsU<9Gj(qO&8I+%)5euQb_@O} zH~i)Hg&h-DJ?N?YbHo$g+ED6_rgGi6oO27tx9JSQ_RY=8kc&vW$+TZu5>qRlkqWwh zGHaTNNAo@Ci@JNaa(~dT7`6LbsTYisuzx*JHn%5sgT5i_hCWAZ`ooN1qB0z%hV^`9 z%b&4hIx@+$>i{R(Hp7~r6-V8Mpv_Ia+Z)d#RiqEUYUCO2GVE65HT&@x(YfUf7r$Ue z#7HcqN-FY2tbDIw(^T_ym#iViW~Re8Z2nuhyJ|3(}P~+rIEt8p#RS6dzWH7gsek2kp_T&sIq6FC?rR1Ut@ZkXCoi)7sIlzgywS$32XkzmePH_9nPa}Z3e4+Z zoi)uVbPD^TJ;W~AM1txWzV2fWy`a~!uea^Qox`~vAAU((;{bgj7U~Xr4K{!fGkB1z zz9tH`v_aST5Rlv+$|`}!GG4i)NpGzvfL>D6{eT_4)1?Oz4u1@Xw2N?8#9MmVvgJC9N}l} z$+P6x`!TtrxBlj^!M<=isqR@SF_+M>x!(7669i$Ao6D{b_P6HiH+XJ}J(CQ|qrm4E zR{b1~5L(WV9zlVYx>KrtN(RvuGaO=D?3=67t<5>jg%fO_=VIPz^e+C|5m-;?g7=x^ zcbhqCMsDZ+qMw`D?t}kw6?AstG+R=4&YP!32LCgOa~X~;nTc3uP=RqRp_I=Sf%>JOJJ36>&d{!W5c3#)!=; zV@RTm@3HS+uOwHzF*&>j#H)io=geWS`t#PTH4f*#-o9pL_O%ngytxkaIo0V=wZ=}x z8b&(koHJmp=4AD7sZqIK>~-bmMCTN-86Sl@$gv2^DZoB@txU`R_FwgJUiiF!^C!G2 z!^ga5?m%9EwS>D^1-<$=Hv#5cV>Kij^V&>z!);4}2Mq^2+=VbdYY1EeuLuqGp4>F9 zYM$eY^g0Hz36e@dH0M_P%U5v@f7V>U?|lNP)k7Dd_MelP`u4F0ILkA> zysq8@TjSch+Y6kS<-N1^`#0DJhc~id&*6Q%bq!wK)S!NqUd*|z$^Ed0Ib;2~S>qj2 z=oH%T$6$!5H8(sY`zxQdc@C^O?(>tv@Rt7b1H>qb0B3m{Q2#v#{Wfx> z@0QYxFJ2YCo`;wJzajB?nFYqV?%c;2&KVW3Gc~I4uJr)f4!n-vd6wiL{F-|dl)M~o^&kArX$={X(Ko9KUNkbLg=c>1Rofc~>cfo?2Q5l| zJ_eemDQdTiH)g}qObw-O9G}Lzxhxv6mLvnzMylEp3J|BZ!UT&qU==-^v=9{3CQ9?H zQ%@z$Tg^0iUxR8`q;@%8ilSE&W)_-2sQNX7`P5ZwKhj)2pFUalZiYT{!{>4^Ub{jU zNmw7bdQtkQwTYB-;oAd^=p52J-Pfy8Nz6 z%!1K24bqEM{^tiqavggQ%g>AE`pai{FKTa2%_ry@JihRq!||%xCq8vcw8I7G;DULB z=}kGkOv(MvUd+g2e8#pn-)KCurmy+N$X}~JY7NtSmS*%U2A^G`;5e5}C2iUwV%N1# zv9?ZMpO0Q5HgD8%xkgXHRzq4YmXY*#^g}|+(v3(Zbsfa8uJ#V86;DYc$WG*B467g~ z6K2<@!}wuR%d~u5g2}Cdd#7N&4vqd zG?i5%e5l0wxe2_mfn`8ULqCVENiRkp$XTv;)<@UKUY!^wgxHXGl`7#25iF>(;IQ}x zg-vWeDJv))2TzhQr=m_!XYyqbu4_^w%xm)0~$T(RB^HAN-l=>1&z z9NVC4d!5ipFxBx_mN5W1OFdd-ic3=#Z84GDge!Hgov(PBs|I3cQBzn4*>GSLq4O$G z3!duBQ}%n1xL}{WnvmCHnwuhVCT|Sk(pSEm4P>)8@Givl7!RF`{gyL)Uxfy z6?~m9dTZ?E+?2)_50Z5^WsnG0<8JeBs9Ip*JV;nN=PUZ~pNgrNu+_kDVIJ z_0H}iwWE*c-OIhLSH1j3x%zjS8Exa$k0*%V<;*Qhja-GWXG)nbGvtvOV zlhg|l&-9mD>J)SEPzuh?j7nF%&SP>*eBGSyP0S4N$Unz|lh?Xa z=4jW;qZ0T0)u5b7QdCf;zIgWO*UWjN;_|LbUpk>xHGmu>owM^V|L&sW z#SOeqc6{Yg&jp^-%l0Wz{8@OO^L;@azaJk1>Q@I{ND_W^Q9n}ZKLg`tGZdSjDe+wg zkM#%KT8dwU7t8#wIC`$<%&O8G7r5sD;iE3y$3eQk@F@1TeiQXZ(XWCkhZ7Ig^1OAy z*<=6!KmbWZK~%yc!n@R%~9kTl|;d%rv&K6$cn|sbOs8Fp_ON_T^u7R<MSAul(g4tBw3#a8Gl=iGNN8++XKDC3>?)ydFSND}3$7z9n#~IGb&7 z1e8Ye__fj%`0F>2Ow`{)bYZg%jMH=$wO>P5?~;64E7{C0cx&~8Ma4?j@Y|r=m5~%+xxc@Z+ z`8MIm#&X7Ju@hUv;boIt$1iRzyK8X!jnq|qthDV4v$|m@cyB~B$9XQT^)3(i z19)c^;-2ph{g9e-JTlUJxsQuJu})% zyK4y=%OR%Mo-a-P=^~y97}e{)(nNGNd-36v{u*+yRCx|HC0PLS+n}-kM@J_0wDe#( z@9h8C5fA%44xjKR_z3?>(f%9#%kg;@epwVQYVzUosgc;sW368k1OIHx`>FiTfsZj{ z;>%9mr}vlpUmpH&{7d(P-!}_C?O301<*>eboC$&eD!+CZa zo_`4>o|K_u^1nE|9#em}rEbsz`v&NXuQPhS5NLI28ih1CHVgf#JJ{60~-nlYQ4?dMt-xZjJ z^vHPCMfTIUFLH=1YHZ5Sjb)!h+-N->L!YOs%`_8-PH{i6?mnt8^`rC$wPDfpK5Se zSSD{U*R=Zp@8wc6=J?J1@=Uy5L!DkA4!s1=>ns}tU18)&Q|uZxj@j$sk!ZHH?%c=W z8IoLwHd7cyefCD3(wA@RuI_UA@w4~tXzCMVh}tZw-FdT4-e+pU;Olt@_7JM1__O14 zV(U!$_O+j9vac=i>-b`r*87mH0nAt=V^86v_>T@yg;Vu;9Ypl&d@o5Q7xzkdT?bI% z`L}?-^ma5TBHd=Ks_#S{(+8puKkB@gaxHlD3Y_ z0B=B$zeOy3jT#WAiQB_^JmfMOW>?K-))naQW7XY{#2k5bDozt644NA3wWxw<_NYXm zo8c)!m;=ERr(aLfm^WUQM%pF=`1K&3`;u6IU&Y!u_@|n|q2`mCFrqz2@x*TLi-<=( z=6p31RA#{AlqR8Aivr8Dc6M?J3;gncOWo(=TyLDN`SnDp-*^g?_5p)2VI!+qb{sGz z4r=!WH`J;ozFfp>h@e*H*M(A1ls;f~HJREM7P9|OLie5#K0V>QKa+nD=d?d6H}s!) zu5-E$@=^rFq#?PsoY zdm69TtG;A6FM{J&qt`YDRfyX8zOv9w#w%cj&TDV&0D;RvdCm7v=hbi4ZP*rdB$#cB z5%j-7+w6-s5Y({<6(R2dYKQ3Y;vIBehKD9yYdN;hf;fI~mp?T)FYQ;?-z}>}f#?+; z0?}DR&-1ypRSCbm7RTg7IiF;qJ*2UVKdxdDVYcWeH9-GPV9chfQIOFkuC ze#cl5qhAlA0`d0RTJ`;}`VvB857BI5LG6~CM=9e&9p>W!`g)M-f>fY*^1S!3Z}&Ri znD*NG+ph>e^Szvzh#BNJ8q>h!VZhC}Zg54Ynb>0q9*s)G_9%dGSDE;HeJw6O>kugJ zX6jLp_Ti{fF{w{TFFXN>kJs`DW|fI3m2BJdpKE>&CG90S-~TSb5p(Yr8{ts+F635W^l@# zl5koE;q%Bm(w=)v&8d280IDW^eT3Bs>iX#rHTc$!Re$i*AjaXKt25WTn?xSr+JfoaeG@o3;VB4Qwa6<> zNEO~>0@)qcHP-VvTJ@cpxVMqsD}88z-?%(g&$v5)pHlm|m3CfR6sDM*ifw;M%*oyH zMeO7%X?E~JuY!jh*fn;?gc}ck^T#sq*1(5T`*Xg>6N2kEP2+~=zBdZHZc4~69(DV& zpW=xw7}De6*;S${m#a^hMQA~EMc$v+F7{1ttMbyQK4xrJKZ|ESwR1z*rBaRuxx>R> z))viy{POrvzA@OXSe=msx{Z#8y}P8hPk{Fg;IMcqf@7_)d73mJUt-RiG#TQ%upVi0 z(U=U)YvDm2T;D6WZl4MsE@iE&Q6Ud+%NyLXzH6RhXlbn{YG-I2N7V>|Pr8dYY5!Rd zY0QT>CPQs$)w%A62I;KJ!=)nI!;lmODzAh5I8+SgTrr1Qy5`l~wIx=4q$7kZNok7j zfd^Bi1i&n5Wm+*9H4N&{z~VI?m?#MP=8i}j8CL8aa8{o~Cw}g_+8(L^tQMqz%6Hzs zYT#Z-bTS3lkC3>4eS=SJ;HNJh@M|TnFu@Xa&0!a)!x*$SMfSq4R*u(zj@wJwWn9VS zF-3Fsf)=Ubrk>YWj?^bsLf;sqhvEV7)RTrASi9~ET6tkA+hoqe^HB7YH>I;lXhH4v zcyM1V_df<75!!!R)cr`_i&d_30B4cUo^vc_4uC*_v)1dYRy6y(a&%G4FVnk?h322u zhu54P1&X|57dBpBHR`OlHj*x$qk5VDa_r%{Wr;tv^;`QN|cl;@A(yS zSk45sz0lDT%~}%t=ej}BtWA2K23xq%T1{~Bxz;Nv+bV9|(E)_$qwnI4!SD`!{4Z|3 zDn#I%4pR=pd(bXD;Q!7asA#jF$N0`X;KceICh-cw`L%U_gv#g3qqNlcZ)dJ=VPR!= z?ZzSGXZYgyg#z69#fd_MI|CM)CyVlJw?4nP6)YaF9cjcnefwgC-_-rSu*TP@I}C}f zynU{WL+)Nm0gE7?DrjF*7_-DXbIFU6f)ezf&MOw2nu;eC*T0e5^Po=OcOj}p$-fDD zd8&=M;^BKXUem3|q+*hfCEnDmk`V2^!^7G>nYOY= z);?$NwtZCd>0_Ls-(Efu;dO8`^HNJ(IM0n_$q`To28%`JQa6WVuy$fe>Ok+>NdIen z3eyKkfm?(JALcBHh%3lg<>Cw6g3$Kpu#e`E!DSg^XT3OB)*OTXf3@7xJH8oDp9>=K z!~Du$j;{0II#p{-^gbRc*TK)v<}pKf>gG=tXlA4sN1*DXS8ccm%FC_9cs)Y4=a!tT z%exN$P~To(95Anpjd_pS?f3E8$UdXfW{Rd8CF}GXIL97#}|Qxc}<)pB}1M~yf==#!*h<=D`R}%!emLup$&xTka@+MZqQVF1M>+_&VyTOcOg=2 za%GM6uJ34Z=1@h|O*-)EPGI3a11cdEVz2P9f*szrspsnFx=&1$+{dDQ#MyNVQeSM~?IR#W0#35D{Pc5>+@q zDyohL&1#>mKfy>?;8WO(YhsuCWJT@+?JN&iUZ+V_AbL5rFijl49Bbd*Jn*mBSniJP zRk_X=+>fd06W&nElf1jWq7&pL6KV~+W51@H*Y0qg00#U%f3D>biaLDj*e~sx zcW`Nd#OHbBoyv1LyxBX0$7fuC=9%D9?M-XXe(u-yynktBjXh@9XTTIid3e?>OfZQy z9q2!+1XKR)>B6B}RT{4Mrg2`t6zVbcpluJ&DTkMLq^ALqKIiOT`*}*1C#!5I-IhJl znfL0|=XB)ve|z(qnQ_MU{1q^WuWcCb=lGdJYR+fxNzv8=F5&tR3m~Xv|ITjBlr<CUJ$dw;}zoov(w{%N6~OPikAXs$WAIB`9NxrcY;6X$a> z9s5OFiL}G@HAmLks#YRRhlekYDnz}Uj%MCt#|sv<@M`nM^+E9Ep@CYbX)0gulJ3oA z+tl$a?3&w6eU831+D#Yv9yjaP^D;9@iZwY8JnF&bmDk^XeXeby_pSX9Iwr(x^9p?N zFjtep^ao;V_1itgU?bLmXbKw$3p70+Abg?C(F+oc8ZS70ii1EtCVX=84-6akg^-Q0=s0lfrf7nSI2}Gk6!%8m&z_D>OZKkI^?BY-YPpVPFC^SByNc@cAsxzFVD2Z z%?DG=`Bjj3>Wq7L&AIkGQH*O9-ajl4G5897O@}KDG8Mu|lY<~*p~c=y&#e-+LRVB_wg zp)6$g^G2+k1{G{xI2W2+15K?`Ee%o!G_2WL zc@NB1UyYijUj+Id`fIk)$qJSg8j{ue@NP}lHYTmXBo)|F<@nU{wZ{`% zz38tvnps#-zB&ASP7C>7LsmiFRPe4`&*unKvx%4ta%`;iK9xhjzltH*`TBWb-u|)U zr!Ow(+3^??`Pp!4Y`f4%bTm4*I;fZDF|T&)a!&QVJSLeY=K6Z+b>#t|+LN$y@hYCu z>BS7zee9l#QobH~U<>MFOg{5^D)_(La60N{5wrSl6RDq1z!tkRZ1yUVo|q+cpcAGx zc=_=G#031W|9_w7hEKhUsF`N(DM~yBIsu!ZW7QYZo^;jpACd;A&ROsPug!~I7eE1w zl|*uLy@UOyWe@N0iJecZv<^OJ*-p(d=Z4Pv`aJksS1yy*W<6qudR3?mzM*q(wVRqL zh=upHCgq0$d14`+4inq=*^_Ji`*h%q<=D0N_^f_%IKf+u=~LU6zq#vEol;bF-%RaT z)~Hs(Dg1aQZ(d8HT31-Nn)jUXZRGb%4-Z$C9C**ooH;Ji=27n?=SnX1&ZW{zkujxL zqwXu-gnSaKR8PCKVJQ3$9df#GT08?> zr;Y(?N)0!Ch=F_S%vA*O>Tr38 z*Dq+FBhXhby@|?4y^1u_(;r|4Q7D2jOzYtVukxIQvilPMm;a3>c{aa}(?gLC(j+eN z02>dVe3oDAq9!ME#e4$9W`H-*}d|d9CsaYJ?xKQV)Nd<+Xt?DU{kSD^i$i@eR=R}Ew5tw znWmx%!}SF)hy9unKHMr;LbT5_C2AJI_bOa|DT(DLDkM}cc&o^RAz(D13Px91XJdTu<|Qq#4zOBKsj zhpNU}?O-k2#AWqQdBvM;+_lX~Tx=JmYAQll2zqEF1~W3BVI z@sRa?H-@=pt3!pNe4VIxs;+r|0rX!Fr9>v})B~wFZ|=HL)4wTBMXhzH7;hGPadiRu z{h$l4p`+eI1Jv>boL%Pwju#2N%gZe)yX55dP@IP~3owm^994cw0(?06kIcQAXm4}%IXx(P@3d0Ou4 zz39s;?7;Zp)kuVgbI6MYbOxD7{|_WV(AC`LLBGz+6Re4Xwb{VDp8I`HmsY{XZW+La z4r+G@-SPkS-1}Mjn$;ZsAcV_jus_%_QF+|(V6hq3KDdfLlt%ihZMgtq*;OOehp$+L z0!HIhl$Q*+#$vR$Me^WHGemPMmz8tM)(n-6C7upWX3qiB2T?8SEbTAxEUVncdVt{TrIPd7m5-PE$qSB6XZP=%7KR{$_MdReuK9fJck%2|yF&YI&j~E9RPUv? z4h|-hDOS9_HkjI>jBvPm!&b4Le7Ee^0S0LZ$6pDDE87w3eNwSfCF3Dd+noU$#8GaZ zL$G^4dWriJ^S|e(oYM<`GJm4_#tn~JA`(!qL?1*|lV&)x>B@-DVL`-`f>9F*^sEo) z6p8FNyEbF4lYc#;zPc|S=UDhY2OqI&!*j3U?-vTWANHf2Vm2kG7wKT~h`cIWQ@hKL znizeUo@uZ8ayDq4)7n>qlX1sy-rb59&$BsrS+~4;#$7K=W5NndROjp&kI&DH4@c>v zU5$!0ZvmeAs#Sd};`R*USX&I26p+kAcpdsZ2`pqLZ<>+|jvGtxdhAT3V18eWPBSWA zK(;=q)l;s=FLlm-_<;ZFP57#{iDslj2S-p5 zkl?5G)n~EdUi2s5+6Jd(dVntF@!0@x|;e; zr6;b4@AZa+=HL@CafP#Oi#?MgIJJnR`w=&Ri=!8TJlZJFpBSm}mtO(s!DI`+);_USFrFM@EevbTwq$du9d0N1^|hJ4MKE8zICxbo z{T%j9Z$a%2k%(5ieVFU*71m80p`Qx;EOEuP zJM4-Ldl1#saPWPBjn8gXhsS_>0r5vitvAvA1e5qzwB`HXh5r}ty#M~cf{Ydq7B&Ay zklgshx;VtSl9TvX4A&R2Vx^IPNsRfNCCZ+}?*oxJxew3ROrJu9ZBE@cdh8j$+WEp$ zE3Vtr=}Sz?xhkHTHfob6cQqy3G66Z74tHPeQ-de21)(!ketY9e*|Ds0n6rKy*HScfT`OB?*B@VzGr*7J8ZF%$B^M@xq^x@H;ZwPGCyC}m$GvNsgcrO{N z{kt#E0lBi;mr5{+w){+x!IXzL)YYgDhg`h>H?L?C?8Z`6;Ln*xJF?Nwc}PQy*_2Eq zciap)4g0F8z(F3zyYu~~A?-Cm=8nCKeDT`%n9RI#EMot0cKWR0f$Twv2hR6j0UK@2 zP-?STDHPU0-vLotN!9fFT%bw5sOWS`v)ix1GnnKQ&99J;H)-iXtfT@jnN^awvEj6a zpK1WYoK&U+RjJq%a+ieF0UyOvq^19Z#~o8>pN>d6vKN`Jiz@5M&EI(gc$V!+e@x~V zA$aJ#Y6m7(D-s^_9eMRC*z*v=lSdsabKmPSRnhNn_2o(VU%IuBO%G5UOc;WlrGWy% zr2gbg12vTzy7AdrjIp!ubuSqT6;6p-&I?8VzsuA_7>?7zJd?{%WnF+U4c2W{GI8f< z4_!|P%)ma&bob9|^`#N^Y0!q~?Fmis3sk{3fwDqV99y0v=#W>4Y?S65%*C9;=*NZuPe%@V+T~FX}MVnaKzhd-N(>!%fiU-rivprfk z<|z&yq1JH3BQ8*XH%EXx>J9aEwx2OH8;_iYz zUJ_jt%{=eC{&^qN^L2D#x4gkBH_toch{hrL8~eS`uSC5q5wYTBqK|||`?&f^^?oI8 zAHVJC`7;Zw!rfU8@D%jnXgL27u$?elv?yu-$78&w!TIOxcz!MI!0$*`&$z`*j1TLLK-_jIZ=|c#aq{tiKnoGDg=k5Y?*je0s>G zjmG#Y3g{j=b+s`jJl%I9&~Ts7OvatIq2)33kO>ijK)QxC4kp0^B+R@AH)^;%Wa z*QAJbsGLym(b^S{UNK@gB!pR;3p|i`JD13HSd)p3liCxEHAb)BT2#T$srh(#CSl{V z9wQd7YPxo{Q{SaIFsjG!sVU?zOZgZtZ5tJ-V$r9l9!sp6iqm_Z*nJ~TZReZ(tGBS| z<@0|eeU2KU6jfB6yn@wORJcl!H!u?nE)IuU+UlV5;yy{m-iHFMm-KbW!g^X*p9XxP zfZI>%7WI)IS_&kw4352YVw39PPT?XCUxsz?lc0;w$0wgkDi+ZL(WI7oPL03;@` z`e4=ur~5&HQ+>A9vX<8QOFLL?TEfs(#zTvo#MdrLGOLog?CK}s=q5HzoP#O4^ivDW z;iW2&R(d8O1Zl^$AZmg#uUM%>BLFaG>rtCKNy3>4&6Ze07aoB#jgBo7A! zC`vPSwsO0Q1VNB0snv3iJ*n$3I=X%b!#VK*N97mX;c~j7Ut8E z*anu`%tymD*!k9&){5#xJXGUFTaV{m3S#{8v2Mp?6EdRR+2Q z$21M!8!2P$p*Wu8v2U?KJOeYl2dq~=IZdSow|Q2NvjMB4z}Ghaf+SZIQ}))yCcZ@; zt|bn)J)3^`<^gs9MAWs4pB&8YC1LyFmDXIJ!)SUx=!yKC_#Thb;qmGa(R#vqEjX;{ zy$3_Qzx>=1@MMtVay9}$u=p=Nv5w}*-(!+(UCN$#Q(nhVFpVtzHyQ~n`&ThUClZV2`!93ixAWi1UvL~kr77O29 zOzKl(tf9gC`qbb>)2eaflQc2g>SHfNfcvzY12B*23ZefUt$XqC{E*iij=ebCFD`%i z#PGA48y`sie5;f=ymABiZe#n#u8mCm)`ibtwO&^H>;vB-&GjJ1!+pH+8qiuCsI{;q zRrwbO$F(47)b1(RqzNy_c~cBZ>6WO*gh%tFzs%*xz($C5@t7Aw;KXt9mvUk?eUC6_ zI`v`Y*x+pca1IcPOFRWqOFZW_XIQiCwxcQ$Bt78DxSs{%_d#yrVK-&m75TdSWscl4 zZlY}70UetjHqiq!JoY6xZ20|^h+N=?Aq0?)?znaQL;ohJDo;` zKs-qn4;EfA(%@XZ`!{lxr_KmZZC_iF_GVHg3&u}coV%Wrrz2sP}6Ng~Fg zX=46Zu;be^s(DlWt9;nJjSZ z#@yI^^KHxnw}h*Tn!l;JGim>5or3eQ6r4jYRK*}FQ5Dlf$$;q zLHmSarZ8Ncz|nSAa<%b*K%5hw2OK8|*V=Olp{Bm%3aX=c@o7xYt{!o6Mq4XF{XW|uI+wyyo?4x9I z)_(zLB)1P`hIrsZD|(?2G9TS)-`EEq%5eQly`||7DZVj%<%{!b9nnkC2Rt%7#82o6 zhFH07i(w|l=8U^D=d_6n1_E#1p2MRBKk?G+*Xeq6Z3=g&an@tM+Bx`g(u;W~Ub8js zx?CUb!)z@hObHdY2B(UeH|~I-FD5?{FTUwFhFo*$$pr4BV|gBPPmj-k>arv}h<=pU zho4vPB3)i%*}_M=dL~EfB-;G?Q~9kA22Zai2R+{1Mz*1NWNaU{jm$*9<#j#bjbY3q zF!#~?=sgKHugCwY^9#>$G=GWBkD?#d#~OZp|057@bP+kxf29gVAbAwZ? zuHVPifGhIEwCys=^F1apU)0~65UJH1-BNy$b6oddUEY|;?0&1 zHEW*cHw8V_c#cta@+s{U0dB*<^mI8Suovc#gIz~90KW0|bmEx4IEsnre&qKvt(t!0 zzQn_&j)o;PnLp6ZJw~4^_2Hi2iroI3xET>7F4K9n6C%)Bdkh7l;}4PWdI7awKVX{T z8qH%>fEc4W;~9C1%XNKtClvD$fd{Bj9(Hp9x8D*WXi(ont3yn|{=tXw{a3MWJh!Rl zm7ZiTD~c4i-679x#x&;(ti`fM=f}qA0MO~)PSep+J*@eE1vxtY3zv#GI2rE98#B3K zlbj6@;v!tsM0ryZ~q7kg>LgRhr)$$Qzzaej$mGqEq& zn)(8^&5DC2tA_Tu4+rCuXKN;Ga#=bVGxSX1RNwBTO=j(`oG#f-v(R{|eCvWo?%RO0n#QH7$@`TMdfI6RC zQru5{X?YTmfx87y457N^)OTu}<*gB67O;*F-yu!hmrH{}FMF>}E^&Vz5Xb&#g*Gu9 zlZws?RD8oSxF%K`JG|ux*q+K4r#Vi5oMFA%TCIm)!Ek-t%_}LKQa7jhtZ=Ue*c~6u z_TGMXzpJ6#rr5~CuO%Be{Q=d5gC6(8ANm9}-0m;6j4z?YS-&~-)raz%_u}Dbv}KHP zyAIj0k*!9MOs*QbL?ER6JnLVAk#{K8=@ z595r*!)UlI4wai$z6k{Iw?teJ!=9OVvb|_R#P%8isy;W}`F|xTCW;4%)$o-x8|MRq zz(WYXOHiT;z`H46(==V>jVmM;?-DPa^#E*#v^D`uDM6w3HC`&?vr*U z#zp{@t6ja5mnN1rb#>Li@j+>|O>*Sov$S6a&$Q|3!`GSZku$ZrTG5%>i4!}+F1*F& z9d~>deTMZaw#^soQJ6#PZ{NVS-Oglh?y@f5y*oB|iTM zgp3GqUi`Wr@}uibw0gPV$)!mKEBPJ;<9cZf=f;Z%i|nMxF|4Wh-JE_1I>w}7yZXV> zolh8{?URJdg|FkcMtIov3$orpez9^I|M=7eGTb~Lgd9LdS4`P%ui?hx`#2zg^SbA* zT)}sr3XMEm$g%!1*HQ0Z4>i*ut#hP0gEtd{6>@ z=-|_6Y?dqj@f{tl9;`1~sLe`c z)@<{H!E7mHV|?cgPRFZSwfa6*U}NH5 z$GsObDc5Uqi1)J%n#U2toF2IbuoEn&?)7EYjiLd+V+c4tdN`Hb+RJ%#0?pfads_9U zMu2J%`SPIV4y&C5JD`3dn zM)H&)DRDCkoTo>TB+BZH>v92=fTxU~`R{*e!fxEAwcRL?vT;VvmT$=$l}GX%QfSl0TuWYzy+6F#}i=NmirM=#Ex!a%fUt+)3Fn9zo{jY#soBRej zr*eIYipBT66kB*X?2oy^0gVT^8p|PH4!*e&%7V%S#u_(#heTX08Ji~q+s{bF0W!+# zwZ}1dgo}NTiz3ajLA>1NI!V0v3QrC^Vf9VJ>1cikxZM*3x~J~(x4i0n*5{{E8On*>-U>r;-QRL16%|c&HMTjojJvpvc~Uv zE5F9!p%^`jAFcJ1*K5i+Y2x;Jsm3?`rGb-L4^QI8ia29=zL0_FLBtOWaJLM*J^7&z zw(^o1<6Up`%pl!k{zY*AOxxJ3gEn?9p8atx62ki@7c26R#6mt+P0_GK_`qzR9RB&dEV?^k%W!$@OrC zwGwe(dB!H;hMQW+^_M^Lv@|0|eb$9!TtB$;YG?J*iS-8#HlP~eb=za3Y_c^)b+=QMQl)>gXh0IxoDf4T4M7B=;pH!Z*Bt95I*rEMD_s(flyNr`FA$l4#= znkT1b*PA#02m}GurVn0jHhz<++&D(E0U%r>ix+T>o_e){@h3us;UrNsJZ z@bBhWS1&>POo_2N#B}hRw{|Jw-o084;>5yZWpIpMH7yp~4|lRdf%b4BQ;M_*; z-|3s?75w&U{-+j&87(%R=ecz#;JUhvu*$jD<)J@jFGO*@pENtk4@Z{uU6&hF+kLE( z2hq&M@ISp^C%SA3?S9@rNx;aU7T-MmkK(=9Zp>6JLO@Ob7LNx)d|#9@c%Vds6>ArA@>1BEKY+vi;f%Tg_uW}vdTR!rW z2VCCG@i%#?LmqO@i!H!9ly&gNlV`oy=9P+AY-^$rT|yietMjwkm%SqZOLMX8hZJpl z!s&PazF=#Fx=UnT|L9i3wJzRz=vSl~_yK9fmyXsz?$vLpaz6R@Sk{Ky7bd5XJWb}< z0T|zPYiso-0~dk@tKatpz_85xD#9_ zT;;ek;U_f0AH5Q|=b4=x?+wUDm5>5lz|X?=>Uab(}fV5B(5&Ocd@-fH$fy_5|;7 zp++gER|8PCdjP}DYHXlaj#Ye6qvfD@{*aT?Ub-Qci>7)jA|@Ej}6LnF>>;9D1>14!b{|(F}+7~b7U;J`U80W#*$7>TbiC8qVdPI z{)^id;FPCzIl#r?mItS?6R$~5^Nclsh6ZQS13WSFYbX4~^mk}4p>bB_Y%T1@Z1etE zmjlllE(#>#oWer__^kbe>}2YkB2V&%M_fPG!pP3afTG&GcKQ&fx)-yK9Zc z@b$XdzCRk^59B8S!H&R%%w!F@u!QrB)j4YW{k`*IZD-)EKfKEsJT+a*m>@YfY}tCyH0??(#U!YRoaaMtJk^R&9<~HZgK`d$3xxx(JN0USxbpgN^U^zo zNw)?@nr1PksrFr=I$jXq*f!%IxbjcErip|eTnzf|+Wr$_@mO6aDVIDc%mpV(bbS4d z>jL#D=9;ITHM@yKxgSE(a7=c}6@Fs2CcZyW+r$YX<$O(R6H1LKl3L&{dRDNG#^T#$ z`rt_WCvD)27H-WPV_nl;j#A{aEzKodp6zIxM~&-W`!BUtfAjTNA@P6fgi(VRlX>-{ zO{iwyC+jx`fXE5>IukVF7#fO~I)MDmn_enGynQv#$$IW_A0I92Iw5TcX#QSyt*(GE zG;%>rDk==T`CzwoHs3$iR`NXbnLJ$O%tI^~C!-I6qlG4a*YBy*2e@*{)9`~Hth{*8 z1H;#U`v<#YvxoYRmLKl3v6Jh3X}wM|NeHp9S_M$UpjNQjthHs@KC44a8q{$u{JyHi z@emKs$A@1Yb~(ZNaOb@8#8D3a_`|>Mr8TQ#Uo|)%jp35c2xj{2$G_zH^tw7Z!zn+% zVn&YriXyA4BOI3zVQOSI8+Q}*5o7Bd-=+xVBy?eGEAF$`Lg9O{?)*`r>04?DbC$7_ z2QQ(f_!zt^3i$H?j_p}*ZVwoZwnY5e@+O5--R({_^GMdf#%yh4Od7H8#MFmj}t30vunG8AChRa%9-tdnj$gW^Zw>*H;Ia~f zG^RtquhBjQI`+wf+nj_ZJs@>#GP$9L-`o=lX(G#bqKmEq&xA%%Y zUI(L-K1N}s9|P`ZY){JVen2^`%x9x8m%8ggu2P zxBqxyV^`?d$J}gV8^{M4zUuwbVh`XIOlzxo_s%`7z9`XNGRCcUNH z^FEO6G&g_91}Bb2jx@(O51EQO*{SGp;(G%S6AAlz5ZEu;6rX($R}UR9|FJ(pcH5I@ zVMiro2SvsBQ6%bm`9W{q(EeAueRG?r96$Kskk5-e_&iMD^G=YL&6sM@o+D5czauw~ zx*Lo3j}3=N?6*<8E1cL~m>Q$c_I!B6U6YlQ(464-;MO@fO9*YDIna zqgv4>;2h%OwWRghmqSD$r6qZ*AIuB-BMEgbSS?N^$KbA&oTT#bLS)6P`xujQV$LZ~ zYt0_t`pDIZVOP`Qv?=H9M-v`#Mr`v6o+Qk7ENO?cI?YG6cJrsygU5G$&RP7XJq?al z@$CiON!!(0!4?c@`=L$~oB#1Qm$+iDaGbA(c`xFK7h1jmV-2K-tpi@pjTK9tm)NDT z4$gh!xdM$J?#(?gH1Ew~YYgtVSyN|^DfgnGXKrrRy5D14{OHa>1kkd-2F4KYX&oQ; z`?;OwHYp{<_H#fs4YCy%v(E)*L+c$D7@flXyMtftHVMu^&I3bWq&D!X8|srZIl$Hv zc|YpVig=cgE?4|pQ#u^;<$KR4Km~p6MVwl^%ClVu>e(m9LS|u5(?dC~AOH2)2aj5c z5%#&j*2^~a8Y4cgjjOp$5~m(q1Usscm_xR66I3yBj5Epc1uUCq0QZ6xetGzDd=3%= zW{_hIC7}+-(pQ6ghA2WZb>5C z{e<^A=EhUcHDdcbVJped<)oe$>K~qM0?DH$!@c2%>pe3%)9la`m}3}G@V;k$=s0x* z9h0cP2}GZ7i?SJ39hx#w>>D88{M}~EBc9*uXRdh0rQ}Uf*bj=+?>wD=iPR_4NdQzm z?r3oHN}2#6s&zLVusmhH$4Pt#e(}hi{6|HWYc-a22{+!pim@k1;>T|9)fB!DU#^|p z<}6R=z&3i-EH@YdaV7;)1~r@{-?>>Get6R&8aHl|G!kJJBlSdfjnVxuIBPI+F zGwy`aZLuCVB>pRIa&vRs7Ypz8BWvQ|=-3Xa_%G`oZt^zwlkdJFcY7TB^e4{7vC(0C zb8qa%W6v&aHfWB?rk#y`wcrvgA!}VLd@=bOUn4pxS;B^I4xFz)P=x2by4QJQaH@1B#?S&IK!DG6>i#sJ}7V&a_<%Qto+DB(K);PK+XZ{h0fZo=+^7iC{ z;Ktt%G&Onw`Uhr0RAk`AzGIY&jdC}K3K=;_u(d3 zecbRIiRL$aWv8Lbh-Md&eXh0sdYr*;S*Pkk@9`h3?+f4i5W+*7PUOig?x0a!G#E&I5{lvdzb6OrXctCT~p5~ zOur2{cX0olkJSeir#CD&K~8#e-NwPOiH$ui$bu(~|?wFZQH%R{OwG4$u3J zO-!$W;mb8Y{e;pF*Z!h#_vqMYdZ#v>{dlCR>2kuUO)A579RQK6jm;poacUWTu=*m+ zF+HKl8-im~V0?o27=PoUyV?*;V!44g#}vZu#dGY*x8A@H?gq1K zjb%+}xYlg_(KFNoA;%{&J;`1f8K!A9wt+VXJ&*G0mfscpa)N)tM|{jZkMsul=AC56 z+;Av2mfBwafGUkbHgwG&k%y7&e-e@>#jH*e8}ic?$VHdvlCw;tK*2SA%?l8hs$dHl_(4 z`m8&eAYl8D{W{p>G>;Vj9Tj~5G@Y391@ss;2)}V`IdF+%kKSkAHcT!tDXmHaQwe8zDJXVA5XM4fuZ3oFOJ)R7j9EbwPR~qbq?H3NZy4MYhKrzm#{;PORuK;o01fArpqm6 zsG-@L#ID9|7`z(hT%zpP;h6l?SSlKUS*quL(GbR^;xAG|WLchUSP9vyb2)2c%zxI{ z%g`z_`O-rvJnN-E(usNmHn-T;2WVb`?Zb7SaH7xRG)>j-S_V44jK2Xii)F3bT-JLW zzsBJtfwlVtSpCHnZ!en@!{?41G_oRleQbugTI;(OfdCgjFs6s&OiO%Be*@S8UCZ;W zRgQgv(TKUejZf@q?4~NQx9i4z(-4lonCyQEqYnJyGIulnW)mZad9c#Tu+_EHX?N7eR+|2`F^cLncfR=KRa?mkfm>`&vjm~#loxcPxz z*ouqTIJK^gj}BAc7y|%iCoS-Pf@kK}xzOQcc1L;W=Py{J;PAzqy$GE(i;8 z@ky~zd;>oldF}mw?r#On2KfjjR!x73(h~!G7Q0h)OmN3&q@-U~Adebd0cCd|_t=L$ zDUIv6!kdrr_?D{8v1>$U79PZe`%l-z%$OBIxW?^5!00jtbL)F;E_){1GH@6sXOZ0! z4vpM$%ui0zHfCQ_ch}tJH*u2!#AhL|V`&k4^;?ow^NvQ31xhuxp8_XV(!Q5CH6(W& z=k{Ru#twhA5+`qS!HU=X#lL%jwDaL9V0vo7GsfeN5phJWZiz zXY%3SQO!p^Q6r>2+WwMIg9E$I9&PyU<}DXN$`Paz)!E_x>3jegW) zMPm~Vp_*;Xf@ta`+c5Sg*LzX!k;9}F%buLoDc3-q)WIc3Z-~(tp_ksKL>wK43y#Tr zbAC`-`&@`~ZcoE2xa4^N(esw|MBNWHkUpFcq&S%6H2vdWx^{R_8~wd5&o_npU@g{^ zp7-;dfXbn%R}Ri)c$XL>kr587{(HuCYIhZj*8b}#No&nD0_foQ-wq!vzFuqN9^W|c zc4eA6wq?Te-%%sR5H{cF09`<$zg>;NU1p|JBQfXJuEyg#%{9=4oKc&)K<n9GJj!Kz|#KS3d{RKp^ttnVryS*1H)dg?@EH1+~1Pmq4 z=T*=Kwc0!@DO{}cjj&Va+6|{Y3@>qBTla+pFLrA$wz+%OLEItk26xS-ka0N)eL?}~lp z$jSYhR1f0Tj^STq4^T~5iV+4gcT5oDJ!r?8CvZLs^1zTBxb$FdY;?HI7TY?+DI87A zA46a%U6*t6y8raVSikn=LO@rqp0Bk(MT`fl_WkjCqWxq5tK!R7C^xHhfZ23!yg9Dn2kzurLln7Ndz|*3|>zqHY1$KAst zZ%*?N=_PK8Ci~@=nB#OS$|-CyP8mX)SWW%d4a{`|StA^B9B0+2zqJC^w`nlJ`d4yVnfOVP-F(a4CqX$mB z-1z(V{u}f0!5dbvb0>r}7;@e*e_}ap*pLN*! zoo@Vnwdjg9HMB+zNJE|)HBFP(3Ct`_u#UDeeN7&*YvEgm+>`vi$`qh33kj*huVe96 zdqb?Em^N8|67V_Hw|nzD1i_SLo&_e)cS{s0t{027+XxSYl#@Sy8F7-`2!VOc#|$|= z!Lmt=j2{u#C#U1u#s0EJ@A*&#D45mh#c;SA9^acRU#rpe*&ruR4!B=n1jP3e98ADG z#04WB?&N}lnYy77Dt>a|x`;E9I|6&m?und)O}!2hlhan(L#fR)&D7yH4c_M7RKh-*0;5eq*aeVE&u60WjMG{5e0oa4k0})~oiBYD>>45@P*);5Hqi z@f81ouM)&5S12iUf7aT_+n9QTjRsZcs@eK$JT(m++zRqvQ2b(D|F6BjjwxEV`;Gr4 z=9(#-WhGv*6FjC5==#_G?U)^B((B88`Eg#D(q6v^+RqwdaJw_H_dPlI-0XqoW-TMb zv2um6QFagZqdQ_GW>ljPp8=+5V&&Cg+zIU~5n+L6714h2D?)&w5109NV1m8>`(z9H zrtD`^VwTYaz7HgOU_S-mTazg{e&7TzCVLC>rtRky_zK`?$ak8i-S>&??9a?EFSSg< z)~NJ`0PYB{MDxs<2gaE1eosz5yGK!E-u4sjw=>g&39T&xX7_z-+E8o+MpJg1RD+BFmpT(GW7(yBRC!C$yP5cak3iF#8LQ2 z3jBTDO&P_}ObRjAlW$(DvX1S=JoRa)F|Ec~`HzWX8Gl#nj{g3-mHxkd2p%3eQm~%E z;4CLbNbcmYOszgNCAbR)l=8+QU&A_CObRxV~msB0rB@%otva9{WhRRUjl|IlL6k&c5v@@QG`@8SWtPku9 zz0V?u6Z2<**7bX$6W6khTrJz5I%qJ;>*rIoZ_LC_A$ZY59)006x}xjjVg-Z)$WD7@ z3SXu*SdC7=+99EZ#`4fSqkSMi$Te%rZ&`jMY7IDOGL*3Y64Ff$oY2D?>hzfUQ`Z$| zFP_w~Uc3`b?a7R=7T~1JaWv%y+%N%wd?smG9e4}@J`}BmiWlf!8i(YX=uOSw1<6qPujNkr@Zn|d0!U-uHLEJ zYjVR^=HgF4f$ zr*8%IAZI*O|C$p8=lAwegg_o1-E1E?b+TOxA?lhqTzpx+o(OXhF!E-6{eKrb#1xKs zOn)9vzgT+dKeF-W;WfF`1N4MpXM%RwD;avgn_urj$IyhD%1Yd1=lfe_$HGIQ9Iel{ z&KIZhqfJQ=>v{oDWtP^`Y7;8Mu{l1p@?ZGEiHA0^;eeMv@xigZXUTi?h)m3w<5t)j z!=N<5=tU=VQ-1WH#KBMQs90(eV}?SBrVstJDYXN0S@He|h=1E?{2B)@UUT&yrX`QQIfm7{8nwHYcgfX0F{BMAwsZnSjN7qtXs^@vL`APa ziMQJl6Z7#9_k}EZ;*H6k4=@?QSF*f6;dDxjf&5r=9T^iMyw_^NQ~ImfU=wtqOdnCL zxOIt)wyz_e!E)04BV9sJu7*>X^y&qQi;j5``L`}gU!Z2``c)78JAvjhRb201?WgY> zzF5Ki*d-0w@bsEAxN;d?74Q|@bFw!?-Wbk$ah;d)7DXqtxlzaw=7&uBcC8Y$V!F>@ z*frtW|Cb<($mQ-w|L`DYZO(ohI0rNjf8;>bPddo4D}|(2!?E@sUOFb(|4q3Tv+Cg1 zM{{DHLrZ8Rtgk>~@S790SxiZf7SQz48^<$~UV}`!XKPdMJ$mie8vI?P zK7LVzQSob6{9r)s)i(Y%IwJkRaUX(KS_ypSxHs8OBgjiW`;I2QbFnr0nMrW%2{ly# z1^G~fLylgq1&pcvjycop0NBVd|EMDo|&;tq&_oq1T4E!?s2_S-%adwe~K94A5?2n64uylTrMAwZYAlj{s{OImNH2*b&+yj6~lVnBs$2e?=@ zx?W0n)iC9id&w2J?d5?bw1=^6$zb1}v4;<&ygn?I;qsma8U6s9`y-ByFN$d5S21UCiObY3$ITJV=r!< zU*hxs1foFiLEIy2&+YUnlzXxPTI-Ki_&}hr^H|YHcVITbVzV~RdjTI(Qt(XZhhMo@ z0PfAhzFLlfl_y|r8EY%fXfA)so{!x5VB7Pw>5^4Ln6Fql ztd&g(|7c1%){LHQ@m3?+PPRRQUtWESwU)qpe3Quxn?WHhPR`KEeEi`mZu#(dsIiGwYK>tDgP~5n zft^&o`ye;@U9Qe2ZF^Yl5R?P7bq%MtPy&r7vdc`?^iZB-Ruh8LK-PtN><|88Zchi@ z++bXT2mAHVr_pIcT#u|?$Pb5DH4b!YK=ywlg8;8*@x91!1-|i+17{y4GfAV>;D_sA zCvi$^Zv7D{G1`y2d28_2S-sDBA#Y=kh-)$BZ8trfcnIBwjkK2IgRUtfY1>+B7hjzi z+(N#!n**hJUO&mVH^_TS)eGZ(mivxy}D4za|wj4-t$$v|#tM z4q?{~Z|x-V89+WfM*Z58JQ~>K^J2jDy&2oc=*;JeHbJQIh&vZs#@4%e(YZ0(n!Y`P z7jr!Uw-?97VfB#VUZ{<2XW}u`wl)$Dk9$;O{1sd1dxaq2PfwJARn$?{sVY)^LrmE4wT`AC6TnOf&wa>_M2NH8eK8^)X%Bb2%X5F`%r!`!`_S6=h5d+hkKti6 z2*vbq7!#0`R}a;M(_x;bJzvU2kDc|^bPBZ2YEwrC0k1jFLm9EDV(n40_bM(G$-P#HU%;odTwzN>xVx5zYLo-gX8~RMWlLu=xyvdm?1QRmlDFmAZ2S@Nm-u zA=fcYNI6f2v?gWje$(hMIlfMFkHKeD(}@E;bHxXl9e$!sfz=D4*fb^Y0m3-|2b>GY z`xx7pW38{KV-Me5_(A2Xhve{g@A2K^(}H{U{?q%($)WiCSK7UxIolm67UvRxI{T0s z4ib-umis`|aQDYFQy+dgm2k0!(G#INxi_Z1W5U z>^^w6E#IwLiU{F!6tKN=O1GATtCEOxGy|`8*dZkb#?A< zdcnL%=xW(!x_Ag#5?k+4EAO+G@XfgX?YXu8$v+PB2^5nb|8f7=`!W|>mAeAu%0bZI z-Uu)(+*+bI7G6c{iU_wwoM!+~qd79CVFf=oWYd%5P;-O@ULE`mC&*t1T3(Fxsk;fo zYk7rc+#I+!8OGJeCvIL1z(Ak;)}EV+I7)GrH$!il|Jk#1M8a`-Pa9LGIV~tcYuTtqc?d8* zzW3~i?{SI8Lz{grye3A&h$jD{VPd^lr#sCpBn|f84{UQH<_0kJ1+ z%38?$8H;)as4goZiJ zjXyT~@-sIry)@_la&IEeAMpTPqPGGv%DZ*2H!$@}Yid{HOe)IxC~xtU@NqP$tMk%= zn;yFw(7t)0RpD7zYmCdgdNla*U1aJ!Vq@hJwX-?Dfmplz#s7{!#l)d{=hG< zbyzp&FIsc#Fo(T46`I@2YHd6Q%VO8QV6=dK{0Nv>f7Hw7a!=&td>Qs5#s|p^0rQ{Y z`d{&2aDd!NXTfNqwijemv`cYcCEGm_8zw{_V1B8L^yICW70|P zUr{gyRYo(63GyJ3k+?s%AqY;I!?iiTuY9Nq7E9_}OC)Ld8j9_uWQoo7rE@CGwM7VZ z^ICIrWmp1WwUmd3D{4yYQXGQtdfuwoTXPq3{XR_-bEVH;smN6? z4Hfr(&v~RbH>`(6pRb7B{hByEMn(Fz_CV33DXXD4qar;ygq>ruoB^EGjbmkKnFrl* z-?KA@^bQys1q(c!$fkk8)!*y_+-NQa1w4sap9iWFUyiUjz*&S_pVczxmGbCrtmy#Z zO@HJBd+9@~PIYJ9J{^8Ik1Go&p<_(1iz~9c0e4=U>_NLoc_c4vyTGi4o*K?f(UGX8 zIX8TOV>&5S#=b!UdbMukf=$+oUjBrJE}P>mWWKQt`^ttuYEg)IfV9M-QN?2^j&nho3g&@cJ$PH7Z9p8bi>QgInIQ(|MqM`Yoj z{E;nfJSDH55Npk?$bqNoqg$D+8-wLH4F2N1T^+D7{VU+!n&&|WZeMI@ZE}5Y6hJa~ zjf&xy&uUzTx%J@)U<1m*uQsyaz8_;?>ouF=kCzwMHJFCf<@H%$nbr+ei@AO%ZGNz+ z{U1N*%zb$pNeLep4?(@)9M#0?T&rS(v2qA$T+Dg{PfS41O?3&}o?HSf1ZzadZ*XiEAycDv z*Ttgr*=NGMH^^&>nbn<;IrP=NF_~nI=8vPfS{52z$G%f)^w=6snq9{za5TB5NM+=d zx}C^PAjtGA$O#d_mEUXAG5NFaswks$5;^ASgG8QcIpk^Ekb=b^cQgmp1?_GQ!rL_Q(=Y!Nkb92B+WyJVntVFNW zMKj4P;B}WfyJ6TI7bw&^f-65c}xqZYcInA5vZ$!2}aq^Ca(@BzXdCr7uLH5~( z0RNXM`sgY@mx`HTH*1LSVwqd5;O-@H{VU)p3Ao>wC;@+_FuO!7zvj!8wwRKzDQdmu zSZo}dXp}412QQxoj(nc14q4sExw*{0)7_0%-fC7$>%EWrnZ!a&kDhHK;?uZ>H`vDW zh1%T**Mb+$#*$Aw<{rxfkTm`Fm<=d_zl+&#Bew=Z>m*OU;TAyvOg_{e2k`$gX_#7_ zftHWkoINLKiQi|r-Am!tipDO{-V!}wB5dtwHiv$p`IuwV)O-sxtUVX#SV#s%;_w0A zQobG>8_uE4ehKy$qlK-IA@fku2xmWwZg37eq;CvJ$yi&YR&hdQYmwq~=u-nSG%1zoMj&M`G~0X^D*<8Wxd2ljQfJr(?PNL1EoW9Ixk3O)YV0<+E;2?iIT^HE=xU)H{2|g?<@uQ97zhcfwJvi%A=k34iv`1<^ zE#TmK9GnMq^LjoZ9HLE4e(!Ba009R{ka_I+G5O#QoY?mm3HhwaKx3)&8&P8kTpKq2 z#X=kKHl@JEZfgb29j9q{*ri}hY>=jKDS|W)`7mra#zD$3Zb0_ET!}UQWKRP6$w_E7 ztvVFU=vgLo>!tjwz9|X3&#&aExdJ18d$2xm^4A~gYu@9^d$>Byv4kAs%}kKx;)dbE z^Hh7Ba$m<&ezbkZ5VmzI6}`}Y)*t{!FTRMw$l(`;;ZZ62=pD*f0xZoX;l^-6TP=KE z{t>XzU#8bVE6z!zNDCo=&FDJb%#F8Ld0#HR&!voRID+K)0b%6q!({_l8P2mY{Nnxb z^^hjkenMY8bAFko4j;gi(fqzaTdO#$|51$sjtS_VUHRo>Fe2o7 zZfd;-J|Xu94a0xpm5I-5kDVlwMALdT6xknVgPST&=<=JaZ-a&2J%sb{P?`b9c!GOf zD|~G?2qvDd`S4xwDeD8VOB_REAMb(z&jV6w;6rSO(Kb|6gsrRi+REJP9g*bPlwGO$ zupzOk54V_)jj+Xs_v)QcPLy?-wy$w|y`$kD$(kshnw*?zz@9kN91&eL>jR5(8^Yl~=fP{y!Jk;` zCy^z!rY`ZsYAP_u)CYc1tZ^{;=4+x0yhnR@j!$T{z?z4F-S>v64q|EOMt)smIpiFU zp}yhEy|LM=MpW-HUp^m-E=vt|rIvvVj~6 zb%g=@b@zA5dv@C4J>a8b4uKfE-yd>$e_Ok+yFRj3WBTR;fDPVgKi4PiiI2}*X4fxf zTvN{v&q3b-RM@`=x@3q1d|hhwk0k*$${~J#tOs7cZFWI7$?9NWGgd=J?TMr=sR5e5 z_qPo|s`K>wAV&a`fKsZrzHsLdfO34>#R*zt0KO^kk4B5Lp5epCcTVb7`|wUjM(>49 zs$WbUJpiw9wB$WM#}YmZ3~Vz(#zU>)#eb6ULS8nBaC zsaL!98}??L@5x-qbayEHI0CLpJ8)AE5~yd-gDzt1DWyTCXwoVmEkbBf1Gs4SF(HF^99l z=w@S6!*x;wE(xsQuMyl>VnCSXTIS*HgNr%g!4ZE_DsVJZ{O5yXG+W0mqKwAIGXk$% zpR00s7*hjsr;YZ}+>alP$%%$5%9euPkK$~p$lzPwy}@ePRMC!SW#=fD`wX9{mMfXMu{cE*odMzguHQ^FeT=k8Bp{*@G{ zgy>%5UM{lK0viK_w`d+ra63#?R4eB6J3;Er@hBoKyM2Lei*jm{=$L@k9WnWHQX(z_|3TKsGS4sg zN}hN0#LzEiixo&MbUNnOrV!A7B)ib~ElLH3Wtd(Zx99k1q*(4`)<+J1bE6iH^%U-L zK=d9%b7_Ln#s6`GDo-5q>uY7Km~6-0h(mv#QqP2IPsTokRbVMHPCfHB2Kk8_E|>N4 z?9YcPa}R&=+XHeWH8%o*z^zc9W4HbAe688lbYjkIZ!MGb;mPR;Z)Bn~m3J#9mIPB& z;TL@~z@0Gs(z-tN;SJGqa+Wt@yG5z~NS9BbI>8_r>di^cpZaY|WkyOU4|+F9nWxm# zhb(wKJzM+B7l-^_;^xUWNQ_`dxVXR@TGAlbwH@N}$(4i8t3B2x*qFi|t0}KGYjc}G z9;2M`23Sm_@-WtRV*G&4IfR;z*3Vv7P-OVcd5j0!*tBR$&xK=}UL1L@*x=Rw*qe9+ znzsEbr-RF~RPU>t^<$Iw{3~Fhx{J&Q-t%C=ha!WpDXdcO-`xS*Z^UHp)#t8s%T_*| z4%1(1+_Bj-&%__`KQ148W2?UII6j)fDt({MJ{$E;SF1sMgYiy`zqBALf0i zD2YTg;K+n$JxvbTflL5raMsFMTVZ~s#xSzib^2(;2jyZYXpmRf1qc4lggh>%U^N|^ z2MLEXxn-?AeyAI>J;lNN;Z%YFz)7$>ROeemA%^#in85N}Z^G6<<{qo_HDybuKa+;H z52V6gTG8}%aq}n5HG0hLofJQ#xM&3K!nMZ9Y<*1XvYwn{PE7Gz1J?r`k#|3{F+4o^ zTr2KU;`rEblJf*mGRw6dFQ`J^cL#KPa&r{rhv3m|l4Cf}7-e|m=>4yCG!$Vk$Pv(Q z<1E3{4RPA2_~z)MQQeEP@Bhm}_J*k0-Xjx$0*?8b-4Mtcuke3&k~arE zDu#|;{8_#@r7z}Pn0|^A_N%dUOMFvf2y2>qPu>zqDWSQ$5_Hz1VSoO{()2L#ok^)4 zVDcMZw?@`El66d9nQ|qz7}AT&xt|k`J;3rRzktg;Egn6a<-=$UGq1^ZF{Ys$D)C!t zZ5cl`ri9CQBAbz&NzEIo-m?--AI=@k?u~QNNsMK4jZN^zm#Xc&c=I+ssfR-!`d^c} zQj?_kg;_6tD5LQSUe`AHHAv2Q@e;qZ$r+^F8(*D(t#LWU;1>6K_N@4Fob*0d8^h4J zx`UiOI)caC`WWChX3Yx4`KKRxbYJ8q$?M;$%6+we+NKF`guF6g2gmInxW720;Z0IC z;2}0&4UaB1SIQ}36uOAM}9M{CGabicU0!lH_SXp4g3SrW(*9m2zBvfV=C)?t;;f8Y>o+Wv`3x30AD*jKjc@KB{GKa^ zZ*A%b^zMMC&TJM%G!CDzU2`W4aL=Pd6f!ZKQeEqbnTDpg-B0HcV1UnJ*Ungu-C8eR zITyS(@%mbABE|_j4}sk`=pLKn%I{;`n3#nBG|Id2-!R8hC)^)2h4-9Xy_YSLPSBpC zZ4R}JBRqQC3+6pDj2zImb8@R^jR-A|?Bhhnnw3b()X`l0ZvM?%;^AKGZ}zV`0kzno zuE&Gp`u5+@0A?j?Y(4aj1_|$c2ZTKmvX%^gat87|_YMVK4{1l*Nkfg6g66YoB<5B| zc<|1`+U7%UaPnViOFqYe1}V?MIrw$lBHW((B(GiWf&DwW>916At(0 zxVUBLV)`JZoUTCFd)?0GCRBz$qj3%&{OP64)F7x)^p*G3fM;UZpSXo07KWkLwxhmB z;>CD)2VPUg+G4I9V|`TQ-0O8?;I5)+dnj;X<%PUCNFT@h|G}zO-mV04zL2m?wAQ|U zga%@c6%OInH&u9R**{b9u7n=NhiK`mPl%ow!RPM);;@0b$o-)y<^Bmh$LJjAhTCub zXu1y(<+7TaHIGV|C|4*w!NqT!XC?edRA0L>DI{Hl99Nk0sMB*cGQ>>@(?T4Ch;5KavKRhJO!O$?h zd^zor{?KmqxiF?;kA4 z(=g8kaMCjQVED3|9_YEAEHE1M25;)lxlee{um3<+u?DsF`rK=kLg8W3NYnnU0vxON zMqqn_&~rW+is--5PB1F&QBe1{;!~@o>y55C)pLkRA{ssBa=<2n zRi5jDM>1t2zn=Zpa%Tyl#s|C85B+km$tAqkLokC1&i`QMyoOKQc?4`X5KR@{+7Nkp zps4ZCCw6=@(%5b(NfKls)P6ZeFa~%XW14=Ag_mXYtS}nQA#n8(+gR(JyqLoY@jhHR zADoTpxSF+_3&-~K(G;(ja{}Ij_(^^BT*tgUL7(Hgdf41}HBxeoM`NKkPZ`be^G`I2 zHP}8|!+vV|oC|mz*9y2?Wvt$cTp!Su8i&P)-PjTYWQ1CGHD1)0lR9^wROII%X4jE+XOXCm}D% zDI0z4KHQ9e=eOw^f<(3izKwm~xF!GN9x{oYoN^8O0O!$nwMdcEUW^m9NIhtiEJOeO~%&MyeBU);!QqW%*C(X z3hIwW-s~p5MW9h@FAV?=&NPe2oOj}QGovhDZchy}D+bPvOH5MudnG526wy@d{kEGK#wgILYcQ-bF zV`XW*ec-m24?esEZ|s3q^zRy>eKaC74V^yFYOHI4bNe3X05@-X-}YXHe~UqcSz5#E z0gl<{+DAu0^MhRb23~k;0cOJ-*R;O|2EaE^RylK{oZsSKVIF$+23n5z17c`!L5bAQ zlL4nL4}q=YB%BTl%L#_ta6b$Iz`ojpJL1?_Bh0bj?~w4u*O)`_ITdzm|EPr!93RX5 zZgcSN#gDoQ?~lq;11>xUHwu3+Qk)?iJ}#VvgE@_c^;yYcox>-AkI~DMI|HzS#kA(y znDdvK9KSV4kx`p`B%Je$jcjAsP9))u)ZqLQ_Y#hmQ!kWcA5zShK23U4o??3(#7@rQ zQ0YN2C`_gTkYI;^h6!2;!PAQQ;vCEC@w*lnqj z`;c=}d_W`fzBae`OL_Zk_-ehFU#AHN{{BW6q;et7#`%Zr938VQa#6hD2taQrM;$ zl%uhxjB6jyxMLx(@akzm2O!~HjoW*l@6As_^S(Nky+PTJn`1L+aANbmxIEcU(&WcK zuoKp|@#y3Jrm_5Q5AeaxApc@xe?ak7-kj+f9Aex>9^Z{~t(!hp8?JZ<*o|zh>uJ`8h$gQsx4&#RwJw(%#@HThS ze$L5hUoPcI)W#Y_vl#W{wvV;N?KMR)Y(E#80HP6%3q3rF=*1EqDOVHU0}i7?XFaLy zez@QHH;r;`57$oo2UI|-ue0!cJ$Vyy9N@RX>M5`1Fwiec4>F;3V_bhPmg#5yFtmjC zz8Kcz9GvNeL&_TkYfp>MhmlMsKEM+nt&Mzmi~l#nG9RtxXw%a1v#-mi;6`g^ef0KQ zqk94r9%X5Oo8BDO!6zkn_pda1Y)FO=Up_hgqwJFp5l#N{MD{ZZLEFLoYn>66Tm23F zmdm}8)GGk*B>4}??ld5A=P-T7iG>~V(M+HmD%B|$IF+FS>RN9g9wX$!$=$j%6NiY&zjmy7!n6TNa+?FV!Hy?74y)P3nx ztNIb^|>>i|%fSAt!O8?NTihul6OkaRSF8165)b(QnQ2MO+A@?^XB5S+huJQcY3 zw+CX~qY|s>JQGApUy(1>?()#OgdG1I<3?8NAm>NG5uk~FV6^u0pp%C{k%;-lBt=Bc z*JL|YF8<=l@&8R%>RLWtvklkz8e3;(z*bi6hN2YeD(@aaWWb3e6I7{MNi}-7_$P0W9VYPIPMr->ZMULU+ z36tISR<&h(@#W(&ddoR^8)~tv;F#Vwt(HTeJnYZ#o+i<>isLXUTHBzeuV#HVB6pX8 z9)BgO$?6fHc;T*p!WExyvpHr}6K}SV1cG|?qQTEe$~FVcVVI}M4JQ|Vjsx?RYXD5I zL%;roFW%Ju)4C#ihk4Qx^YTomAHX5aEU(6HROFT#{;xcN<@p@PUy1sVG_p+5^8rHN65)4|}Yw9gekc zo!~3MMIr~E*E}H40|&X?qv}{*M91I*NTa_7XL;cewzdLZ<(tz$eS!U^bH3UVn*_*O zId1c&Q?V)0CvYssf-r-OOie8M>8+R}`B?z&O zbwhHJaurybNs1?zI>dV{%ZtSBLG!4C-JFpcy~JFWsT{5I5kRrQ9bEB&nJvu(b-5Gw zHz{s7+LbarA2P(LOHJ}S{1-gqpnptXX$O0HEGz5j=SFUsIj$QW`<|yDFVdF(8aGj~ zew2EnP-suio8&n^E2N~&a!vOO2Boy`nt)-5COh5J;3vOA)hU%!Vh8_7jYugcX!GQ? z2SZGWJ(L3|x%iQst{lkmr_XYoB`qmC;o+qo8>ih>z4;!75kGr+ogF{R& zV0uEV@vg@5@N2A`C1Z@-OR{8QZrZfbcfzT8xv>{oBRbA~&PN58w#K7>%1;xTP0RGy z6Yg=8eB-tos1CjY%`2yVJ1KtqF_yp&ySl7r{HC)tRJ8G@{v;Q_^@%Lr8UikMb-?#F zA!qI8Ci9!)@DU|mcmELxfN#`VZI|J@%v9)C@czdFiuWE))E_=Wo6fM0hBbj=%*{)_ zjM_H^5Nf~0YQB5Kxx)evFnJ~E!-#m?rA8lru_xsb!wSx_$1KM_SO|XL!B=2)BMui@ zb8!2BhV29ghtzLJd;G+a^2x)7tAPeMFVy*tcI*M~AF>@tp6Q*M@Qr~V?4B#W9o*i~ zIU42d-{WeXYE}2-e0zhs=UP1bkj8lRb!(4Kgs*;kxY*ZDe=R|Z_Y+<~FNeVSsLa$3 zwK<5CAg)v8_xv>n+IKt>ry!)GXH%2kR|-|%#z&BvelJ+#I+C=;r%v*zK_u$7-qYm0 zc)bXcX8l*vJI9`;?N0~9A2@qUB|d{Hvjq?K?eB>^Jx%tX=AXPr!#Q$4NTd#`=G}i! zMvK`GZwNYHCl4NOA+I^|%Zp9e=aLISPWNc?XMe_qX|abFR{_UX{)Iba#?5!eBbU%k zl+Ax%$bP_Y%%WT6DO{10R%jYifd8)ElRY;^Qx3s?vI}ROJ$wioUSq^@4Ye>1ry;zq zRIx35v~_JvVgzO>Kj{XSSBBVQijpoN~&YmaphMLqt4O=;>7~&2d*FwMsc1RWhGu-Ymhk4 zOnv)7$WZOt58>rafm;3yV+1`zdO{wcuJdCN;dznu*R;$&XOZFHN8EUw*8-?#v?fwK z{ZqX3{N{}|IPtbtoL?fQl$t3%Y@r$FuzecMGKK_4gT40oYhQsZ)gkVjv&R6+o;aG# z3k56|j<>grd>_~#>o{x3eGq>BrkR8^375d3El6vOa>cP2bMa;D;h*>1~l&)a1*=*WdVn;uR1&cYESCnF&>S zz$hN4QhXni-1RP*n9bRk*o;M%R79UFqssnpzxjvA9Zmz0r<0DugA42*`sq! zMUN~q1qS)}{SYrrQL_&b9zwi4r<^{Td&|5gII~u2&Ci3X@9(y@uH&YCXu(sf1}D$D zK#19EM*4T!wZ_M6`B z*VGoTXxMm=Ml=5}U~@RgrKgV#1gIuvH%|{dt%=T69r(WTFG13loY{xUNv+Z0FFg$r zpRY4f1?(>m^M%D{tV)>g$LRrFnu<93m$41%5Q2=Vwjcqs_HM*vN$a8kq~=Ey?W}(i z*k9JugP!e^&<}rTg>$Zcm651&bAw)+V*kXg>y)xSc=iyM7%m)MvlJ)QM{qsBHC9B> z<5Af;(mHE0Dy^@NW-kjbKUFRs9Kl(ibvoFGSwgfXF*~WrI`qO4?|Nje<%z%b)G~nP zJ`#_$pvj12I12px*A|a!!*H(=2CFE6+JOZNG5JzwaFgU4PfQO15!M->Y$z z(!xEIko!7x9NZpVvob<0s;*N#2xBnUpMJwjET9)$JaTG&XV}`yMCY5g{A=y1#Lvu1 z&F`EkP8XHrB?`JYh+m*{Pj3zWj8$~FnynHI_{Sr7=HL{C8TKYM;ht0vsrdG^wuz1l z1uE_oh^K3wM7|Nc1c0uJ>{!0Q6w>n|f=`@&eG z+WDyu8(t477{~ zp`Fceu@0-(pfss(;ei~$4S)9v2C1b$jC@&mea%Dqb)T%T%F(wL*A^OF@`Jge&dmfJmmy{V_M+w^5&W*CU+KtDNYd92O|ZTU1T!6 zYvc4S_y^*Y*Ww4mFCWVdX1X}VyB3zZ<~VqD!CP|n($)3ZV4=VzxWd#+XWFV?Yw2E7 z?jX7EM>+*)zMX{)EW(LhokMASE?pk^_@$tE&f4*`@dt`&jk`BMoA^B4Y-wKZuDgaoTP$vY<+Io5xFnAbP%quq zt9&I}8;)lV0TOoZlH)~yv(hOmSnwTpVYu>O9G`W4mQVaLN3(NdeE?4_GbKiye=#oJ zLv*Uc15ZA9I0M`o!(BU+xx0qUx>Dy;iP(8S7T+VaU8=ta5JYdX`M@L zFUnlQJh0dZ4#XZ`?}ZYEe)x?e_1cy1-tqLDCL*qIC}Sl9$2P2TzJgg>u8BRwC3oCT z#P!qDGVq&5;j){a2uB~2MGS;s_pSxD4J7FMIZk!aSS6V3Tu8YSJv zFne5qj>K-S`29;;Lr1VCffQR!gF z>_DL5spExw)P}NkOFwn6orGgY4!)DRadDw%ONmE5!NRCFo-%VVg*9C4UV$FnMO6|% z@GB1RCk%WSwmG+nV+= z7owY4arQ@8dbf4)iq-&JK%>9pPGU+rH|w|ytOi4SZ-%y6%cye#7kB=2wR5@YWa<%~ zxIre3oM$CIf)383srNA#NsF5E^8%xB>(cF0>GGk!PP z4rv;JoO54wq|3ydlsSpn2RjsZ*Bizr9}uUHuq88x^NL<`?%AsCrBG}=Q)|4h3+Fng zc6m5K*TUsd=i9x&UDL6Bt?(fxHDh)8b=ecO84$HhrB2t25BCuh-zEzPb1MU~IbAApor2XRG=p1lns| z6s)hBbE6b0V9gohBM9_V!aaVe^Q_=CKYZ%`s6+Y~#qmTPKMk*5n!qjO=Zeo z&y|l9>j?Z5GTE%vWnlVrdBO>*>|Yw!qQ|A{k*5`K`8le^b}_#UKR36;)~{ZF>tz4Z z1}(^b>{&Zb;5;5#!1NDroZen$q&((AO>8|eBb)9UMtN}8cCP!RJ(*%ZL3AoiO+3Fb zRLgln%fsT{FMdj8P7!LU9q%<=_Y93RpfRX95ipnwjk7YHXHI$FK91q`u(b~Se|N*5 z-V=zNo)%P!Mf$rQKpcB*E^F<4L_1H6$Bf!RAE{5XET=_T_@e9&P}}KT_UX)erZ6)q4U1Gjc8%FqptJ*Q8)D0;OGZQb-*s>%}(Au*8Si z_iEK-h*d7h6)U;&hg%9!Zk{C^q8$K%lKS`5Lp5&l)H?GyC$1YGFVV7Zl@@P^4XUAO z;9Ya5LvM8vMf!$Y;sg2$=-Xjgrk)nb)xc}yMs(b*n8b;PQ)^1dacTuk-suqb9z-+x zkkeavon`m03D9G7Wabv0qiNx~8Hw&`Vm4EQFlkc@*Aa?kJ-4LVH#r*C8Lkb`Bxrq7 z_e`>93AToWoL7Ag)owTk@A_URcKIBEm*H54skPR1Vw=zlCa*Kn2V_@oRu?t7M~d=I zxP9!^g)ImJrqxfIQ2Mi7WGK<( zhgsxH>eyd!0)t!ELgL`8Cm)y_GtNQ7csKDzq@ia2@{@i0(Q=vizYNNv{(rL6#LbP- zrJ7bP7H#VVuph=Hj^2_c=S!7z?=>Dx@xHlk3s;bIfwiNi?E~_4d1^wt0FK+a?QpP2Kj`Es?_ZM^m2# zO-%lpy(iHhAf@s`OJShB_GCW11M*qm^V=F+I?qo`W9;{X6A{Kn4#b_$+z@-Pu}QNY zfQ+_{6*|9L0lGHpe>Cm`W*&mR>=in9xa#o=ZjuhYwJA5;M%F{}zpnWq&esR53ukJ5 z^YbGQnDNLAQ*kaeVeEzs_u*eWYm5*b?tzTC=4RFM5KFVQ@n?^{HxxD2sn{tzYG32N zNaa!I4;Rx~o{s!W;${{5GpS0Zx5RPQgM{I^lhRcZUSFo`Jf;?Xj3jNVS`WB}`RPG! zv;yMz(SK^q$$!`{Ns&YxE&*C*9hhCy8_n|)H)Ym0br){W>|^AZ?X`ki|7yV@u4^(L z1bv>Pg%8f*%N_tvUw9hM+aHboBItbdDr*z!UbH61K6D>mw9_h~ggAQ%K9*XK>_`|PVv!b%UBWp?)tTWi&ZA=dIa$ zVqC=QPuuRks#SkJxRsDo*FoVqPsQ}IpJsmF$H6~Y zn!=fS2Qi91^LW<7I&A#*LpGT2H*Ma(w8@c7-vG^<*6EQsyqKb6Dv`c8T%|3g%3k(fyMm7Hif;J;`ScpVTwA2`R62&WGE5 zRIY{uJ)|k8`m$W`ITeBCxOcHHpYafn527N+%5$JBpFD93&V-)@m&Kg>c%|Ij;E2(0 zk1Jj}G*w$BZ@6+xCE%Y7^!5mkyo;IZ^SM;U;G`(-6{GFiP?C%2J@$ue(^Bi6)(SJs zf!Ik1UF$Z!WmMwg}Op+r1X0ESu%p=}PsJV}hf1#jOz$67GzDs zRZ!g)tVx4)*I(aKxnU9PF~X6ym^XsO7KP>+^9Fo-x!KuYYT?C$JP(xF56;v7XA|3r zfsbCkK1%)YXpVTA@v<+Z3I?$jOeKaV!aQyd>)&gVd7@bJbJ{Nk=;h2}eN@FO0_qCVQ|A@QkgLD?3eVpSJE zdo)l7$ur|waUYqw=&)n+=1&rliFVZr8(hUHD@gp4rgY7Mzcdjak3{$u(MZFIJB@s; zS1J{!-hrnbuX8+n5&Ulx`?RV1eTT*;(}j+~Htu*+1Qd4O-RZfxU^7ND$OM}=@x?zz zj;>nSgpqp8|0r*Aak)z6R>$_=iJ;pr+~*UYFx_TQNd z+HNt9KK{&`M?8NDnD4dzDmE!!y4*Psa|1C0@P$A;Jn$yfPoJonO~oGh=~Q^e+XsTz zKr@Y6PsJ7|RKs%{iYI=4X?Z+sP(2B~inA0KXfu!k=e`>o?Wu5FYD8CGn#)7wtUqh7 zhm)*UhUtTqj6U{I_5V}Jt<$KvHOWgN|8$bNh9CIwZ9hNARY@(H-(H?NHiftcKkb@_ zK(O#KH%7XDI?CRUO#-cvf1D16!5ZLf0K;)l&F5j<4+34=Jjbmo-tm~4>+U za}tY4`1Ez^HL27!PaHCq&SCRhR_ruwqKoGBAWtnCuz1FAfU5mR7suQB#eeQkd^BR4 z`@~jN(lL!X%uR=RyoXD`f>ev?TkD*6!&k~T{#rtnAEoOYczuo!`6orv@7kNH9h&>2 z`6HXak`FtVZ_c&c5gg7fIryccTT0_`uX^eOOAyTosycYm%?+k`@v7|yP?W&fBv!>? z=fN{q7g`{?dk*K6+P8>PZxf^Ohz3&P@OG{^V?XSIS(^IN?7nq&+$(V@-E}VQ6;IEL zU}@_U$L{j&7PYQh5WXo&xOL5orkYlHk>hVDU+g4!Y;8dYeDe6TnR7}k+Os;l?mt+6nqpHZ=Go|!(OirLtKjFeV&carI>x$}QbQtgNCvbXtpbya(sUEVZ2M;$o`pkD>7k7>2 zZB4T5EwzsaE*8@|zHfaYmE+4RBl}2$JdA}<`y-}m(U?yzzAag)WJT6s;l=3+eCu)rB`}mGrjVz4A4C)T@Rp7-Ly8WzD3A6QBObWHFQs` zMVcGmCUH;99=cX**tF}u!B`q!ml5{)Nd(s?`)w|%IsU(J^j`RXmFt_QwVEa{J8BOqzr(b)O;bFh^ z^xSR!F+O%p4WM;%(f4?B)y%kPO0GO4jHv1L(?VbW*T)ukDA*?t&H$epK@a)5tu#R` z@1*VpaZ~It*DSF2gQN@gRGxYQ@WJp((zsI&y!t%M>AFzY%uDQqL!HaisB5fp_by&1 zr{3K3vsl&f>mYvSv2Po9L;Oc|*AHyp-3!eskIt60m^ycn{NC-tX;pnMkEJsm?Is9J zZn$fqctt0%oB3Ru;0b@pErho|+t821ai9NyQ5A3C393Hp-?-wP!VJ&xRL`Eh_q5m7 zCfmzCFTQez9A2y%bDWViE&8cVG**R(Y+YZ2ZZqeX-0T19(fjOLoj;-fBIvoUxR7X9 z@)&62xKqn$EH`D#T=fUJy&^2Xznbh)yhsda4)*lO7lUDOq36iAhI1X}VF;j;6UvkAfTBL** zI_Kd5a>44~!);#Khg`Gu92%a`1@L;Hx%QeiLnP6w2k)Jfuv{fC&F38Qo;R^|Uear_ zHLC4(*jo$r3cLsr&^NC`FDkdV>*)<4u>yyje`D^|{f9qF zcb~$@HwbkKCoYI%-yaWWQUw#kB|pFucVXAN|JDfdaOW-{c{$EiD7)&7(0PIO0Z6*9 zTX?Bi+X>#)4}j#F$``0h2dKz&6`4IAUU^UHoZGq`>%nmxK6|w_P51%HVXDwcu+wj? zDf*txiQrg#cs;UOJ3750ulZb)4-G)bcR19nXVFG-&S&VV!R*dUbkO3)m+Wh;XxDM< z6r}g7O>a!Ye`lKtT$j1Ho7nLOBp}#c+?;pUUydID`}?wVP4pK?zKq+Elbi2wKCp%7 zivf!B{vhwq`&L%f4>d;mrzuN=7)^A0P4lOqy1tji8==0Q^~U*R^gwF6!MB$6`0$()v(24~0ID-RrZ(Ij75`*VT(lPtwcc zO19>=7}0+@*odEoN>y#nPgHrhqyzIgrxxtu)vE=!s64<1Cs<>pL#Y)M>DxIi4W!aF zxM~wBAg=dypPvw052@Ng1gf^D=!n{ZF3u-j3mcv7OI!~>RR@kXv#EQ1x(L*!^^SYN zt`DIdIuGnw#G3I;Wv!v4KBinO9SJfOIBQ4H&<0(K=u2?CRk+sO z`tV{mbM!rf6FOa3_){C=A)Tn$yXRHQn?~S;r*C_I>_OLkg(O@yTY0Vh^`B>rE->-J zYq+Z>*dynX-hjg|%H+l$kNK_?9$n@E+7vvs%ph4qw*wj8U`Jr6{$IcX^JPgr4;FQ! z)E9zr?LwZbXyz|K_;J^4UUDVmA@HYzlh%XM@~)ECVNPqk@!cSOY_qUB&H6&h!;Kr^ zDPA5(jOmcyGuSO>(eYH9wbz*(ef zqakf>mtc8KVyk3L36wR^q<+ByJME+)oI+_s*NA82{P# z)}pC}5$quXg{66`$$2mHu;_7akV3Sc>B$11=_GNFq!O!-W{QQ+5j|@k;0}5fKh|&d zn=RJ~6?D&GyH!lGpuFpWLHuUhW+$NVEnfd-i&qPqV6%UfP{o zUjnxwue3Decrz%ZKK+W#itG1-79stt1uB|tY~{Sq(?D^;pFXX)^lm}F7P1f9qcsIq zZR^7|4XpuXnpapZ3v+SrMfZswt@Ru>uRUCA%{z^*3pC?N8ras?C9dnNQ+>BO7@_|z0k9FJhk5u~Ph_8F{Sz>IV)&pH;a z+DVH`o;_7~{uHnZuBAA_qab2&eBOJFU2-hULl_(|ULNo?l6%3;@s~)~S?u9dObN_i zWSC?`(>}fWn&50B^5zrzAz*YM8tE;3QMG~n#ayiW7-D+04=~WIIo`rj<5SeJHfzgs z^M_|2yaf2hP+V8F{+C)@i+2X@ z@-o3!I_p>4ZG^_cUMn@{N9SC4N|sB6&X^ANAWy7?RBhc)0zi!r=K|9Ja!jrqVtaIb zdcb1{N1o&RhrKA~Pp%j5UX!Ko!9;|oP+HnFxN5~3#u5E#G|~xfCGb@`iQgZ?7QVTM z)_UGq8O=?a`8EuC=HKeOpBB=0fwVvL8rMrWsL$nOYY&>=wk+wJgR#BdMIv;mgUNTl zj!R~SHDf6#alD3G!MIU3#DUleAxY7gf)BQ82P@D=2`*hc3?5&iJP12>PNX5O*Js0l zCMdWJhoZnp1J;+K3S}GQoEJzmZak^ET^i8&fMa*}4jkW$f07f`8m=4&-~j^}?wWaT z&*VO*bLSWQ=GE(JrDXR&cl9AJGatR*3s|9aJNwjOuo;OhOVYiz)s!Z9d_>NfF3PO8 zg3?S~LE`!eU^n*XYl_#0ZPDk8MEv>c6;v=~{@NJwhABAxEZ7KfYfCaT6EXQM4Zn)m&wJOZVBKE|6G^$wEZFEPg#4f!1bE%d<-=BulT!*X!qQe@#o=`g{9aG>m_E&emVW7j7XRG8 zB-x{I&VpCN2=Ua&8i`%9xcQAyWAFh4r-mYEW1!l^Vz8Lb16%7uJl?teBcR-TCf^4w zfdY0>JE_{KliYMQ_wzPP3&R+1h_@O0e=kRIW= zZ!|@^^rAa&y{CBE>N%(Ft9tH<@w~K;H*3MOZ;k2&Q0L&h7_%m@!-ISBsSVgQvlK&^ z1vaQ@bP9+W(B_T}SS25U46oV>T}_?)aMxyU>{LbS;lO7kfBC_SRm{Vw>$5puPIg4DD z1-yv#qL_z=Z^C@3!1aKXtJsiJ;r=2NHa=aiyHhfmrIy7SXunvSvx)7Qw%#~jxggz0 zn)SU?V0^NcN3s_LwH_gQozecF0p4H0Zt-%{*WSH1@*Q33)!Z59XPY0q>ik>SYqVc` zcwH)om%R2`S!-yrYq@^@JMBVSYq7mawLha}Dc!p#FYc-b*#t0=;4${&MImc_28y{Y zh#7uhRWjHA6viK(VGg;m7mxZs4c6#Y*rVC;AU!8@;+RGgKHQF7TDg6~YrQ$N5HE4` z#v1hf69O|YMs$-msq@axx`$VCd@fGvU8Z_NoX{CpO^GkTK4(!cj`Dm!`wOe>;%Y93 z_BdMBak8_5#~+F|>w{^$RM+x8h^62DS8VC2`!{N)|-RV;5 zCKoY~3Be8OQ2!3maQw4RbEDN7DCct~v2!P?@U7K~ImuHYI$4)Cu$*r1N?7lseg=15EU!V)Xc>(=Ea{-TC-*F0HdEw{L#5(J$e_K1;?U^{& zK6UWxe+9?=%tN0AI&dS>AcMy96Cl;SkzMpc5H5jzs3+)JXokJ2Dufn^J(nEZBSaA< z>|ogqH9oCAngt+#&xbO8=bTRBb~>QRFxJU}-7n9j;do7LlHb!u8r{WPxb0Q+@B4z? zBKuKPK5K%9woRLQZsN#8Kn{s{Yudz<4*5wTyrS{dlIVC`C)0jR_Cc(`cU0H1*XA^- zAFDtA!I84t<%c`!BXzC|>bgHt{*9XRJe&i0ts&G-9a9{fgeYx+B4s z)bMuv#eakfyoLpk=cHMay;E;5QeWP9x5V1T9q(+wMQHDAMm*%1z1Y1kX%|xW7m^6M zuET}UV}*e}W-l{n3(_NS_Qo4G;12=fX4>pTDUY0UwG#`?k8NV zfnCyp+3mV#9)#@;uQ}w@;4}OVXpK24*c*a^`3N9yk-um<21}UWstfdKw|ur>>!`&9 zylX&Ss{-B!4FB&EDQK9d*vr=p?2-z(@8>7<)SGa4c4>|3GAcdziqQh3P7T0~Nmkv& zuB!wweXXYspO^IPZ|a^);(o3RG#4FQG{hQA9XhvfW7#(f<_U-nL+f;K&B-0lTFd$4 zXx#@|fZgrceSp(L>-SL3d69N0aMk-rEfOH|&G&gy(BLy9T=O=uD3`W0U9i5q^ZENx zZ)$9(SAbOq%DK6$!$UKBV?V_aQqTLKTaD@3>G5TM|7nC1Dl@Nt)5#~O!~V_v7$P!J zH8|!O=`YI0@`iF9LF4$5M(Z21Ow7sQKY#zNU%vaxH$5lLLnyRabo;>111h!r(qk`- z^3kn6-c0d<40o-UY8?ype{iZnc$p!<<;4eSzPyYVNO%Sqqx&!!YTOcmoC^j2mq+(4 zVoBk#hu1H2w+GVk7v>KPgWXFpRBLAeM*}rh*>f-t6?93wK%^OCgHXx5DNPcXMYO1< zP9(|wWaPlM-)Yw61*XtFvuJZxZCW=k_r`eTB$%U97~2i{z7q!;ujC5Tp0I`triaMm z2aZ_7bsc=Yo5TB#y7}~mU$>9Mf-i^w+c zL(Dz@tudy0<$6}q9v=-Met<In{@2-|ipHOoOeT$f8tj(FG z&zQ8Y@}r+CZk9D)u3aoH&rUWr>k*i>?)paz?^$U)@{th@Gq0>2f4>%n_SFgUu%5$= zO6YH$aJ>B;-JFXq%z1;UWp0T%=O=)hEO#1=K*7YWu@nUZwq--n&Iv9Y4fPqF{GE4> zKFPdU!iTr|umLFm!-W?vAB23ZHTbVC^WnzOjn+H2X9fzg)Y#57H@fdB*uH`>vmk!C&O|`Efy! z|2$)q&3;*_F=qkQ_>q`c>aNGivY-5$WJx$mKF)^P2PpB=D?L3^<090*H@9^)?d18Y z>k@v1dDtLN@1ev-^X9G7vc^8!3qa=v&s=gw=T23q*>IHs;4t;FK;DRj=>tIeDT7_8rq`Z(Ol^4 z<+XR=ZfdYJ=^09Bo?jl<{^C}4K0nSi+15FSjS*YD-Yd>^DAzSNka~RRw&aFKyEW;> zyl}$s2@-qmgefnDH3U@oIbWFBtdSDqQoNFJrgvtoFk=r5Uhlp^)r0lnzxQRqwceM{7pSI>h(xc z+RA4c?pZCQP(Yt>*!b$(4}mIBHYJUe=h~uoulBh7HoqHq57G3=@9S*3eDF4&zCF)- zOSxkNd$0zynr1l)95-l*42hl_B+yO!+qr4QM% zzqT~Z;LJTn+$T9}Q4m+K!~`c72i}NlJ=8sx&KmNMKIO-P!z|N+kUKp zLX|vsK3M7^PDz1d<_3E@{&)t2*J?vusMr$Pd5nah6Q4U(}l#P z;K%WP2#iQPZqEE<&+AYPEc>PK4ArpmeV_n;G+vj$Wm_7^26foQ#MBw&@iTA^rnHYI zct~`Z8ua#@hm~Vdk;P5&k24p+wesV<&uD(Iq{_3m-ZKPU+c&oNrOje-cqN$+ZFnM? zmp+Zz0<2A@l?w$^0#EG(s&~=%QsSkxwGXZDxG8CCOD{o(Ln*_Px5|J&0emkR19Dd>tg$dni)5fS2J7Mt5_=(u(G*Oaa-j@J5_&+nUZ_kDi zmpVMn4ml9_9Ny(SNokTsXP@|Epz$C5=!Jo1Wt3f!w98FB+v8)9WETsTNht z;5i43f{p0{2v>S25BQ{`*?mfU@4;t%S{#o#$!9IyG`*RxILTNR!*JKW^&go6;^djJ zLwDuVql2#3F99p@XKsIh=kwS9Ur{AC;y|G}*qEnIf9ulr}AgtRZDKF8Ct^HCv;EJQ`e`cMyM4_|(ck zvmUDWT|D)HtvzgSC|?J?y05*ak=QntANA(tK@Lso_9bU*ULnS~pXZmF6R8Os4MWLCxHC>dA2zFaMW`4Kk=uIaaIRUPcojD&b1EAn-o4)1|DONQ?JK;%6<)o6 z!Xdf#13|Fwbj{w|%k(5sd)Jbj@()pciOo*`sG~U+hdCyzK^hNh{IFDBOj3D&^FzXwWl z{LGo8$dU2kSYAco&7FrEnC7WOwRokUS_ioS&1*iT=!hAYhm!rF>|WwnqlDQ*L23li zq)sglWAOc;Vd3$@j5D=H2JaWAJyeXRKjf@w%mjI8_CuTIoOAskOn+f?b7+m;>u3+w zZ5|v(H}dnIFxEq<;rbv@f(NUve-LUck7#`UD&dp0o4XEp&%FgNdB^CYPYcUUl-4{F z#(E$vpbcH>C9Ve<8T!70OCM$(=<~5&fw{)e7%wmX;bD*X!OQZ95iuI`WK27n4OjW0 zRWEP^U3A#_zzVYOVpf}efXChg4ng}cr9|MoYul{v)D3AptzIU9+^Y}eU!+*?dg83( zH%_>jqe*_|wWyrzDOU6+jV?}-%(7YG*ayozg%wcytv*GO7BAt)d28cSn;^iD1sJPB z?nh^E2=tnJwsTe;?oY8j&_d97`Ob9+K6B9rcmMYB84<@6-@F`@-zrys0T-`L&1-Tz zI~^U%NsZw4DPP-VPem|4Mk>}nBD7ITPJ5rbWdAypcW|#`4&Ar&_@N`7ocbEBrP#A4 z4$nH4%rz)`EpEaoUBpfVUR+=kDJYK4q%An<`9mO(^QGaqH;~J; z2Tj4?aM7mj)l@bg9L@8W0VYExX&;Ojs<|(*f{L{{`oTd9yJN!+deG6m(va z4VLw}(J#by;iAcHi`3nd#}}2r$-bOFc6l9y+05jTEfo zP&zhGhdkg8Up=a(pzo7t%}LU0*$cC-jePGkC+En1!>RiU|MZ&f6*LZ6p~t=#w>O;K zx9J5gEk<}{ueQgl|L8TQ9lYyX28138=vN;_=l!v$Lxcx=v|X8#=tBN#qhc4yC7XV# zPuFo8=Wju+<5WH!sRhk^_*Zn5ujJ4MCYa=|f4~iBde@6b=%2N;;8USkKXHTCLX<6F z-y5z^?ctrXD1CT)Zi%7B@y{TvT7eY{n?f@M%%5FWjk>uh&#e9F0#jnjTa%v*zWAHN zo1bE~2OP%so7}x?0SUbh6FBs`i&7pPS4D~c9dP;>;h+!ER0oUiRK!t{*B+$7uF^_Y zSX=|=zO$dO_xz_1wMl5$`2`+=*Yi;WXi(G1I%#>%<+!Z~D#9=00}g;j{G>=v+{FeD z{%9zy;tDrx&O`mEr+;~H4HWTj0hBKdxJ#=ZPVjHqp(`MsyraoG_;-Hk)#myn;=_m+ z=ALzkh@3&5FG}L`;KXU^qkIYM(Hd^}csQ6Ork}m?=j!q8e=T(j9pW#CV=mnFlH8nr za>+w#mcY!qgWE5bHY+5)WWE3b^f%ae*u#a&d8pbWb^2UCb!v}1RH1=ue+7P!bmJ~S z(4fvkQA+Rc^}_?q>(FdZ{17Z1UowB`#Ai)5hl4_+`3cE=%3a=dI0ef!I?Z4_6!U$(sQQN z_8N%OH}&wlG`+!_>q&ehvo8W2!_z=F){Y^7qtYN|=0GVox#A3abp9{h9ObWFw_oXo zd%6|WzNfCpn429=2+XT@V6O`u~B`T)oA4UA$^{bYF+-U zot5rdVsuC+H@(e1@ba4KXHW!=Q)@`Mp~3xiHN4cAheA~U-g6T?t^IA-df-*+MU?l; zqgY-9wXSd4ti?6+e&Eu(tlGHq7^I(O27c+6+y(P{pWyY2Yqd4tv39NNzzjQ>)ECxDbLn^r6Z9bhf{^b0*`ld!+|1jq?an zf9h=epE`cqKTEpUFPJ`Agl1EMM;x4X%Y$$~lr0+@#U^;p1=~E^(2xf>eC7*XIrYoC zdGyE6Ljvu^XpGGtZ8v!0l(A$H9u)aJxx2{bC)eoEG>!2@de|sTydml==LIJ1I z;1hJKSzPB#a2S%iZEFhFIdmQAyNAe{KJA?^&FHHI5)b@R3+CA;uSg!|0JdK((5&m= zo*VIrY~aK{^__he_52ccy-%>)qqw~&-)Ot~#>Mj==6a1@>W_Ig;3vW_C;XGd_z%9o zUrP! z6dyQ0g&VyB`!H8mvG|mR?0>sY^XySYbnw1yd1@5>(?28{!R>FLJlty;rM{r)b7R9C zZ#SaX>SzC44;5T%j)i(JWpB)F6ME%8;4O-#ubtP@ewOs&@UMM5MPpe5W#|@FiW$yKDhp|l%nesrJpP1U+HjI$(c~RW9!)#^n>oc?kFFU9%a@gTI(+-w z&qAvPbKL>0!Pg!H8feT~)alh0luA=SJMwYW<^jlt95j|6sr5Rrwv6c$O!fCmck*~> zhR&;(ph&SBIJ|m=vsx4hjb5xFYsybz$@e*-b*)Y4_1jP1{2+(9hNs7`Dt#2e=ZI%` ziodM^uRL6$Ca;}vPzQndd3_!CvLhG?xc5x~UYnPkb?_)j{%x2?Lyexsr)nyUF{C@E zWbcLho@|X{aTxwS6OT1nBP{x+n>RHD-dm$}pf>j%kN|7(OkC7z(#Gh_g{QFLVhS+U z9)R^9ITg)%MM5|F%S1T!5Rhujn!uZH3MO`9u7~{?`#QKzt%lbVgMiQMed!)gX*#`l z(a*>1u0KoICB;8fW$1ORGGVR1z+Ar=R=pfq&zwSg^c4CZ&)NI6>I7F%I>wy%uELIjj~iF={=XDS7L~YMyAh2dvOx&lUR^ znd-GqIY$?uG%ak;I%FOL1*7dcoLYz3ZB?DJKI)#RS6Jj6Rrs;iZ9=8N z%gs3izjDA7?(kT4^iZcx;A?mBVyg9|7zln|3if)yCl6n9LRt{>GH=!1Gf&%SzRmyM z4;v70j(K0{$!W;2aVKygkY+&y{E`k|4NaR3@|O&n9(eJg$}gi@-*~+6kA@SBCpv0~ z%u&dLM^5@^Ak}a$g{gt&13g~FEKeSI!1u$2^QFrPX1(a~_c}Bi2V_X>T4i{KZQh0R$uK~PBh-8=dYP-f!x$=s=Ba)`zoBrUc&BRbDm=<>%|?{NeE0TIcPFFg}~NF*qg#B;BzI zHx>yxs2BfADE4ddO2d(%{ZTlyen?DCE$3%U2WE!z4mL)?wI-xiqPlKV$45!lU`{Z( zSW7(xYW}aj4O9#VAJ~oy_Hk>r7sQLp`TL&|mtV)rFFK&ncd(b|m4JU4ra!f|IBWrX z4JkzCxs&?;QG`+JA`5o{0r8yLkzLW$C%DQV$NO`jzUV+trQ>zu)ZYULGw;3*E!s-eNr(2-u$a06 zc)ls~Z3#hxlO7KR#Z!SdMCazM_&Ni9vDITBERE^49(;u9-x@UNF}<{i>kpTN5K(K` zCx^k|bq$En-?IvmL-9FM6qtuGaF1_ZEw*2Hny0^FYWU?r;{SyBArM?e9txS^`N5S~ z7{GBuH}{?Jl&sypOB*>qc3lYDFB4gD{wH;LbLWxE>c@&dE>o zD*xLYC!gt9PHHlxYtmas+$D>wQS{HeQu(MuWv6dN?L#7C zICIZ$4RIUvbo@4s2i%yK?PSLLLcV^G2J2w^V0z{7Gf1N4V0V zY|!dZVA)IVCU1k*!-*9oTB4`?k6Cwt|-s?FM)$7B!9XyTUyy{`?uniy|u zl{gQteX%+>!s$#bMnH_h^6TI(*xYcp=Mr;4|XoH5Wu9kDergSg_ma5S@v+ zAxh@8&$2L%5o;I6A4GxUD=@@5WL zLA06OzmnJH+GkUK;Nd*yK?1M1WFFf0P_9cL5TQy-_={;$-C&OH=na0=iv9(;s7&TuW;5s z=b>UtnxUL?;hz?M(}%n{j@e`jN*`_J(Ln?3!qgSS)BD|m)R}YN1O z=z=Kd%+g_j!-thYxLsgG`m-%l|*XnPwj zoRT(xmp_}I;@fNIj&)#N#C4bn#L(=okyGE-#`@-e=(-qA+tl9!=;WzZ_)BSKT$cyBJGzbRc)EAm`caQ)^DN znWM|P(6J`tB<)X#S#F4rJu~4P(EHpJ5c5L6*T)*>!ODc@Xu>}lKiu{IT^#-YQ+*G7 z>|Kf}p|gjPj@CK&3&^k@Q#AX!Vy4(r$H>o@mADJHbsx3{TkoR-B|0JMwN7&V`}pkZ z-&7_KY#4rUNMgY7b@2M+oj=W;zK|@{!5Dc5Oo`!To$&pIquIYK-!&$#gXPb9f(0h` zUT6mMJz!Gl$%_jZl|qf^>P9i5LkY}oA1c5}Yq#rK*)g>y^wk)Vy=+p@7-<3HX(QEr z0?aMY90=sv$ENJb*Js3Ckq7tuACL6jf(s+*wFhtiX%ifeT9kLcl){=w9?iejegvl$ z4RM_Zy+PM_(o<2PYePxUb9$6UVCpehIbqgI?9!@RqTIDPC=aLS`$4PD$JbVM%P>;l zUX9sXhrM2W{od;d!LgGt<#@nJvQlw*jgRz8}rvtTA-A-Rj6RD3)l}PoBJ(BACLGuS3>UlJ_Y6eUq*E;I($O` zOAO91PX~XQq{xNtnjaoEPOR7bY2GmNO&Tu7HaDUF%i`&?IN28-XsSW$@DsGH(&7S} z-fCO?RB!5;B(moipAyk{E;v}`uRMx-5s$y$v+ZfB;!s=**e>t=jx>B?#$JzeT}yt# z$;i)6_xl+A)_kj#wuvMfeTyinpK8u&#?Y)jsDb%UtyZ;(bw1#}4VaIGqtmwv@%8=N zCQI z`=m|gaQD1x<=t!Dq!nimY3Q}D+BYxCYzZT4tE^7bvG=Ud@i2L^L%X3^`JSPaUQ_rb zh}AbuYCp+Sw^m8=@X2|7^A2b3y#PILulT$Tf^Yx7pAFvrJKpWmD}Jfr3x@9HP~%me zVHOsR${zck8mxmT><_Y@V~{xp$@fexBcAoP>Z`4qVC`>@U ze1bvpn_2+;c(m=O2fT+EO~~=12h@!8|L~4qh?yVUX)w)%Ie(Hmx455kfo7QnrGdo_ zz|1Qph1Zyx4RX_z#y_=dcDzO$Lku+bz0Ep(V|A?-SG>f0fz3YKpx3L-^_qG;t?~)* z_tgPsE#|e>q9*4$q}O;T*tVA*(f|q-=M+cN0h534BpMC>q!q1(DIAD}HC(xH-#e)b zbzKMc;^KB~-_M-atPzb<9Yr#)J-`{}YfkP!i=A~LHM2=xM?VCp5w&=P##|4Kyjyz_ z27CRSM4MW#1YY3R&m0x&m*rcCUk}&UCWK);q-XwC%l-MShJ5?RuFvok&3hh_n*5;` zFrR0Ri@5h8nyTDc+j?DSYJqapiTJ%EAYS2m7Kqc=8aAsE%wI z;5xSkdwuxhZ8ZF@&G}OgKO76!0eo{5|3+QPA#Ogg`!nO)#c(p)hopNOzlvr=p6zxX ze;8>o(k_;tj>~^I((OIMC$)H&o=Oe!yf#K0ZQ*=oD0=&bqRmokHk3n1PZ%0aQi@cHIskQ zn2d?W-r&(xsp=-(>!qI`9J=w=<-;u&vp>D~tTpH590Lv3;;?gPV9Me7Fg1W0_Rt}3 zlI@WPL32dU92_7zyLGSpRLfp1;^8en=>!MP;Fn-?t-m?k}aKaUiBR`JcMuk#oo%Sl`^NnUq2Asdw(eit$9}byf&s-K@Qv z*3|DAG|l%tWFt!(7tg=ue|QwGd&7OiL#q?&HhX(4u64i@v7g9?%NjcI)a$~Gd@V~^ zVVPIQszL7GD`=n(+voBl(W@RPx8lTJQ_&1=udwPXSmzg@XKQuX=l7MPGc7#b&Up_1 zlzv`!0y{L7VFi ztC?w>LV@CrPG*6{jU+|zYV#-4h#UNHM1AX=YK zlEznhh?sOCdkFL~BF+p!@lH$giJ0_H@RxelFzfol`2u<0xUTPjJAC%5_iT77ZqD?D z(6tV)YaWc5ae7p~k5dyX{xgTTdI3d~+1O45{JU6v8*54(Bn=R9ryB#;YyM;jL-z=V~#UnU*db!rb&GQ>81~g+p5O(nzrkoL(d99h6avlJ@51PZBx`O?C z%&6ysF8#rB+T}>z4%U zI(rQWG<Vj54;}$8{^EUx zU(7y9jlgaGnr8dA?zL6^TwXiXeNn>HFX^L$Lp_}2IQZdn)#F$0twSiHCxx4{z2c9S z*m(!3;bOgjZ`#pB&un5jaJ+N{UzjM)btIg1SeraEpVyFjcx@f$oe`H^+nT(Eg6;K< zZvti!%L_$R6(!rfB26v%PxCkJPh9Z2vb~afNx#Xi+O@VTxoGQbAG|e@X1-a0NJtP46FwEgFflCYhZhA)Kc&N69}o6))Rs(beMn) z3K}e$@Y};zYSHFP72S-ip#8wz^9ydj;31At2W#z9`l5Mze8^s4d&t=OXU*xisnch1 z!}IJueE1h(YaQ!weF580Ulr}=R7SSZ{61TyKs`U5qp!WMK#9!kr=s^-jol{Z@HOho zs=3PDGn`&nu03ga)S9sdXP{VAbUCfhe$!U4!pe{Hfc3pvRb2 zKIcH%+%4hy*bXqhi|6a7e3#4l507g-UQ2s#_3`dUi3YM9xZ%|KDC<4kKCE?rNLb}f z467WkJxR&4eAjyao5z~VCSJ_T@00T<2xtDk4)*DP(bk7_?UwXyGx>+*pEmh39;|tw z%>KPn;l9>hR2LV=wUx7EQbUa=?i5O$>lEsNi*$4Fu2-S1gSDQC>uyfpf5S1!jI|#6 z#Grh(S7PS<&{;0khd8{6g=}B``^q&F7k}p>Ylkyj+e1?Z<>%P@49^5s2F}jb}waA2E#?c6fKdFbX zNK6c_8QmVkTVTAY`J!0#DwlxJJW!e?q|+PBn2iq3v$;Ay5efpg7m3+iEi9ne$E z1G4kxFm>58xpf4Lov7hxyKgANRgiOtFSQ+q3&x-Y!+C@C8{B!Iqh4V4$>ep|`2I_- zt;+f}&t9WN)V|eW9vRBH*RlPoP%6KdHjubarq1*BV2lVal9J@ii531gUH+J3~l zmd3%t{oq{-IUeCtzG5YKZtSv9f%jIfAH2lj%>y7n2n75WPrfum_C_XYzEkn1rXVqX z8UE9Q{p~n?RNS24qZg1bRBBUK;JAsz9tsTUFqjJ4ZxRIXUytxr%NKt1E%C0RqfVdv z5;b-F;ZOe#;$;p8{WUG-y&ixXJsqEd#~WKXyr!4391pI~jI$B?`;L&@zy^i{} z0V!TDu>gD&(S~MTqmwFA^XNYA8!U5^EYpE4bUflF8jMKuG%m~^^lS9T>Ql2 zrND7L(7C0Bf}3N^Mh)PLk2a!e!~i{7U!Z)Io0s~R*>aKQu`qd!51Ga!)sc#!h0tdG2z!aU`#a!%DhSy@|3|a;XCU)TCzF* z5oy@7u7j*-c@eI3kt&>8&cp2IIxLm>BdUk2RX+E|;;hir_x_4LJbntC_^pv!FT%^2 z8XOW0<{gtH?_UBwA1*1t$Zso(iNA}Q;144mh7XAWAUyBa%tn@WzIcVTWK(Qqt&0AF zFtYj~;-y8M9*YF1v1^8;sowqd#6?$u9@ynRFUZ#Ynx$;#91I*|gf5YU7`@V%= zHGJADJQqqpcz8<4yIwdzad7c_{_!hOe4N>{ZCZb?AsXi45l^pEsCpGHZc}p4x~2np z_NLZ*h~>XsRO5Ue=t?_bx^Sc!yP!CqktzS89Ll!%xzW)7yP(al9=|zo4o|)IC}_>e zpiZn{;;$YBX3wwd7oW#t`(+)$GUGb20(g_ZwVgllB~oo302P0J2+?7EGNoZ|JePC; zpBhGwE)a7zgqUFu@kb({-{(c(sA9g1;Gsfi-Uz>Y7vCZu+)wJr#)E1VhwO{d>ltup zDzphx{9Yb-#_8Q(d@34itMKTX^DXRrWtguzZ$ifrWzM^^J$Yz{mvtm|58?UgAN!C2 zC)dEgi~+E^{a>#;4`uyBs@j8YtyLuRR=w@bYr083?Jlw| zYUe7O{&|3}m-kWv%XL8OSTlbhqpsG%aDvbp_!;%fw<@*4_=M2&eSJ?)dr4#+y?tSX z(yOK_E@Q%6i?qq!`eXu%X#bTH*8jIV;9;C-=>XHaCBsXQ`r9upGWXv4eHKh}Y!)=( zm-bWp8uVKJ7u{Y*PU-5g&hK0O>Z!!{qfR#0F`CT-OJBzeNXX3CyvbEe-6SR9oxqhL zdjE%{S{n>bu9snExXb_s7bb|&aD7p29_OFB0zB-~qSQQ71K0TA7&s4J5UnYCX{?Jw zd6*MOvvVE24rkqqg3fdL;*N1lDs{wxN4d z7Y=Rygy|!(g${YsMh0H%&!ZB+85ghN^v#?3u={*vdVT4;ul~vvh+QM(`JuYj7&+Zi{bMabau=kjF!x02eLuU)1=bgbVv2nOXN^M2cdYIc9~fd*wkWROBr|LO7O~Jc`2KFF7Ov!C zujHHkXkXnb{H9y>t++mUjBU~8m3cUq!#7PlsX5kxcyf3CJop;!i`JC!OJKZ` zp^4*bzdE$+-KCoDYw&q z@|UwjD{Q0Jtz7mw#P?6 z#wKn&`OM%+R^JWn`h`!^3O4Wj)qngoFfm5mpGG~UG>hO%l);-IU-XtO!LpeLij?;P z{Xmg|{6-g&YQX{l)EfLzcYPpYH9W=9l$x{CwyE_-y|+j)DRE8 zA3}vwvc79&(qPwp&Q0_eT|Ir47x)@pJBGYA4^I0%5^-k*`Yj4tnbL0Oy>QP^RLGqI zw7nd=-gs+RQ{)aFA&=4g66of{mw6ukMF^hYvSOq57;^QWy%8r5+-d4Q(JFDyy|B58 z$?I>b*FKT((qIcaETE5GyNai#C>jfu=EM&v%PN=XT`#>Q(TTOB-T9t!zUxw(@amT3 zkDkA2Fn#MkVRco!j6XiGzVauk)sko3iFbaR-x{*L-Zw98TyH0umfM3TeTvuKN821v z!CDU%9LRb&UwB@N$)(x7fL-d-xE}u6tEJ;TIgNYlzVU~5`H{ES4^4Ux#S5Fu!vKd2 zG5L4&tz8C$sYk_JxQ_Mj)iYT5a2fV#ej(-ajh}l2t@SZkInc#xPB3~bnPO!dfbh%s zBkF%=`AavI-iE(=AF|J@osD+sFh1K(jX77YW7y8vep{aNkhYiDX`jE-y3`8)Txt=fFxrnHf&| z1v`tm`QRVx?Y5fIdU}A7%omV>=DFGV;wRmGv+kD6d6b&!8R2@iQLVGXCf*viKNe4P zb6spfbn#9OC+i^oTiJGjSI=ZZwIS9iG$$sS2Pf`2e>WogZvDfdR~q?xZ%>u*%dnpS zdV({5Jb|=-NYP|2?Wj-h_-W2Mu%{7gp9h_%jxPeQrH{r07p6c1PoKX)Vv4(-6J0AS z0>H=Mp;Kj(buAu_?{Q&)(P%T4(fw#=N-rGbN*R>xHsqRNiK#KG5fv+#Cv41 z;7{$k$CT`HYQ}W%EHD4Wt%>Gz%@7B3;FZR6$6i)q)V{d{|q*8Z8tL7UW*=kI!PR7mam zj&O%MP>099=bo?1(dJs1n_@f1fA<b;tW@#c~{r(A{lU7>P#u2Wx zPE5eoSSnyX*ae(=e_^%B<@Ge6hVG|Pp5?b6?5tDK-a4eWy^_e(`48r)<)Y?Gy{=%3 zmKPr;?zga5pFMMl;Q4`@ z^Y*~onkM-tY*zPLRfL1z3}M!QE67h80sVJpY2ItL4na&5d+qQ76Ts;S-vv4Gn^{6= z%gSp2Uq_bw?+)KIlz)%7^?0Ai7;~~d0aC#?y=a;|h(PlN|-}vCE?HI4%r7ZR4q|VGpugZ2_yZwn5 z@=Zsj-VF*waCaTti^KpdMkm3Z`lPOhbScY4rK#$M{dfTEPJZj55Sh=Ra;so(H`83%6Z#Q%oNoIyf)(N2}++ zX~6e<-$ZrmC}}c$QHF=XdQ`24=XS%OHTW>cKm9~DJlmSr@H})((HwcWd3j+iJKEF> zf0rG=VbgJSRG(b1hD+FKV2+7#0uy617LOziGgm_xRr2tW!%3Z9C^!TA6(6-fo?7R@Yb^CvH!_ zf4gS(`!S%g4*ra{D{60hc@5O6dXUs@@~+i>gjvG^Se%HJ4^FJlDC+adAJyeN?Nw*D z0^^PK@vXjmOaSAL%CNForZ_3ga;2!?Yv)uj=Hb&>ft9y+puuJOasp4MCLe2GR;v2^`ts!{Aj@T=T`}NRHU7znGp5>t3Gc2cqtRdP5KoW@lpvaio zv0+ri-?`5No6W!Zf*)HDv(Le)By0L0DIlbx`#;xqaL34fztxOG&to3>F7`2i?qiO^ z(hu&NPI!o|5mdYWG9RxgrqA{s4?d*q;i1I2MKqqx9w_&`7GGXf9P9NpzdsP?K?tuR z`dQ_;`9|OeyfyRyZjkc?*75?5lQHDr5uV;c3hINvhfR`6NBO{NfbG?DeJsE$)_MCR-eT2GAm3P)LsNTIMzrx03ro>CFdydfSiHo9l0S zYDZs-ZgTLT+@AK>S^+u#VK=qq62xY&e*AH#AXJ!s55Eik_tjSUtzY06o?n*dF}fkW z);C5v@JRT8i^sTC>`i`~%^cD}nxUXcQ-NUeano-XSF+DbBcsmCKN;}g*|It8;dRA6 zWW4$qVANLB^SbuW>pT+_`1@Pf0JGuMoo24djk9`#*FPI8l%6gOS==tErd*n5-qnnj z^N>2hI;oF2bsgXIJRVr7)yusOsVwSTjNtA~S>EE!E{!U7YRX=Z(dt1UNzr8C4cbLB z8iQZ2O!wY!Qz-CE8l2SauF^1`@We0}gIKC)*4}rsZoGX420qFsdfNR8yO?mD3LV2wJoRZFmfrKLmB_%EjBzBFwO}LJ+ji!E3Ep+dKgIFwopLmfc+&t zu#TzkSj2@w8vXL;JSm43byD}hlak7{a}NhCtE*fm(sLmHpCPjFo`l!j@>mm?v(+a= zK7PQl-=T$0ZFTujG960D`;Pxvn;$^ddbO2TT`Ss@_#4N**08=FR}fw`QI|*U;IVln zW)5D){xv^;dz;T3*E099>2oqp3LNu%kCGF!y1(_#ttrZGV8%Ve7OA-SfCnVKI1kaI zs#dzZH)JzZ)oaJftl~vY+}erfgq%O5He1$&3aFj#QL~gjbBox%FqqdfKZ>bSOK{@E zh?N`k3O+IC*05veDpaz0Ma0fIH}+XD>aI1vmDaje^uu#*$+Uygxy8-524vQeKa@V_01Ur*+&DOKQ%^8`n#poO_0> z-81D``hS|J?p_N%KQNwwsQE_M8+&xA(VJep{_xM5h8!Sqn)4uVV4B*9*XK}fFXsQ8 z>72pGhzpL=kj%#H{o(sv2i4kC>-CeZG*!%3bf5dQ5hf2mJ{G5PJruyNmpSN;Yxmp$4^gBM5yvJUa`lVjrXTna z+|v*%n{j5-`5uhgJ`fbiJUwtyWE+7WRPJ6r<|dEF4s5h=4f^D2wrO>qde87AE$0i7JlYaq4TMGwX;Zx6Ve$1(} z5vo_Gh7CqZlFN4IhPT?bIsog;fuG(l5<|0E*(q6je&Uz#kJ5C>7_r|%ifib%V|{*g zf2&IsP=wfhZZCv|CSdVkvSf1KH z{=OHe!4pTxw3`KpO{!$dugrRkr$c#+!8VS zWV~gmO4Gd_A-Y{t`;BioTXjmS z^h438cDZQ6jrk`hto{`{1kYp>9~*gU71z$kl6>6&Biv&uBHY8T^gd7Ec*=Loh}m4b zi}v$RAM{Xk_bC(e+HHDV_&pa*!SulvMehIc zva{pSf?oT-gdy~SJ_^!2tM0(;%p!#E7_Et*1p#^AGC)gNu4Bw&e~P@YrXFD;kSUs&z3raDdWxNG2p zp<(nljy=4NY#X6{bbao?yd66FO;Ng?cJ2CD;gx}?#0u;fHFKt9-mZ@%W(2G`A>HSN z%JgC-YY&5EU&d=K0usyaH5`^paP$1h#L^N6ka|f#lGQ$e0IV)lF=3pXwpvl^WB$j_u6fXkzM9fM;@F zc@7bka%PD*xyHML`IU`_^r(jU#JuK7iFglzSQ~HaXHILyojT_6oV34{>9Vc3 zYd4;6X!#9@hw@sNhsh*8UnR<6J{$M45v`TyOlF$n952}w@ElWP^O(9+0-XyB8c^N7 zTG&(v_md~1BnV!cgSXN0{%#SwJc7qJ2D zN3+u#3{8Y?kzJn{lOiXdPexsX0a@}ISuDH~|FIU~Z<@ifk7u{X<4Nz{?i#2ut?UBp z_}}_P<{Xy1>?iW@iBG)Ev>#vb9eWknJMMkp^_iS1ICXD#yd`S}u%~qOMmqB0ifUaE z^PfGTrn>Ns_*LIDW-D215X)XD496i5t)oO>fJwMME9BvZcWc$HV=J;E* zy=+n|TpsjXQ!Y`}%Fqvic+9g|dzP&<;YBO9<=KoLh3h6BZxL&^9>w9exuwOkwpp4) z4p6T=FXEN%c>tI%X!X&qj}hW*JKqB1J$d@uM!j9Pu2$C>O!G2dqhcMs@?AV0)O*SS zNXCde?C~cmM78D~I-mjeJT-0i^wN}?apBUn(AK0NGe!_QY<9#603)o|`iVNA;@Fke zyg+>@@5LhC8s~4LaN4QgwL4e;0#E#T2r&N9%LN%cyX5(S04npadZsV(bB-dv^4#QU zJNHNz*ee>|ECLF*=i&{r-|{4$NwZIJIm7>V4D6cvI5DqQZ`7k~c(5+s zb>#^*ZM6=P0`{RZ@qfD>C-Ls~nEHAP`A&NTe-XXfUEq~|jG=n%-guA?yq?xG&ls-n z6XJWjxv%viz1{-XPS3wz*^%njP%^=^nf{qI{(H?Ozb(nX3c@>P@zAjk;o~KH6 zY34XAsAu)_DjVEYzX3eQR!4!^q;LUB1+#mcb z{1Bu0=J$i_wdDS{r*TA2ul`_n?iJ3Pp4-Xq3pi{CPX-|MiUJ{9K+2DPCKU@j-(MoL zTh1aUPr~MjIt>(CTdP9?$MjP?9_qivet=VI-ZO$`Fcp|Tle%~8@U2zPAzS0)CEr(^ zfC#%@Bw;&iJN3Rz)<*+1A8aJ!vkK+xggo%@FzM}?rSF}f?zMnJA2#ZG1<|2aC*nQH z6SV<3_uhezcP-jfy9ifm>baVfLpxT-N_^m6Plx|nwr$IivB*81npAS+!%^+p-Mq~w z*t~QZ+eTRJvX-$6V18M9tRuQPg6n*8N{6ztu663#{yTsGK2aI3n&2wfq)UEen=h;3 znq%)58z61{G4(JVaWIN&XTL}D%&n*h;*8iH@WGuwam_o4Yxef~aMPoY(;QawSlRGX z>_Q<9%~>G16TdwKR!Q6K)4gi%!cDB)Uo`&bW}t{Z8hNBXW4M*~OemvQ;RjWpDpiLP z8aT&RMgBs|p@o2^7GC;ojq>B}TKxviLE_E-l0DjOK7K&pmTx?D9>&=Gq3H942#v~d zK;}slJMgh;opXc5wVymlybWimsy*lFqRB{JCD6)Fnpz5z&tU)91G38y3)j1M(jC5N zI|mZeC)|6%Iyh{RORs}`oE$;hkqR^}4|X5G3lzOpH^D96d2eFmX_tEAiG}PLb%^G9 zH8*Eat@!pfhgIhVLKS`IE4|1=S*biXYdyn#;BYQ4$qEBDpW8h*<-+)qX)?!@G~z=y zJd@0AUO)6?4`NG%7ZFzK@~1(5&$})?9^sR}jZ7iAe8%j&8IOnkyh;mi>dJ#_p88BN zIgZ7vq;vMqF}mipt9@M@t0ooEY*nP*+vR8UAqYu70It0$dtSu+eJ7p8&?kOy7i;}u z?tAa|Zq4|O?~e8(Uu*+cd(HbR&xcuu>`0oCP{wK;K!h5~Ijdv$+%*ajHh+M`(Pf_T zJ^-5JlgSC-w*!yO#RPGyPk_6$Up`fa!YlnGD~zpU9BvntwY&L%W?Rq7<_}MDUPs>o z{2@GFdq_m|Prpdw9N!qpJ7J+&vgeaSuJU9$%`FI?>8+#0yX%rVBQtq4AT zL#+1DgO*K(fS2pMXW#Vlpf(y^|KXyM&If4@zBVk5HXBr;=Z1m#DD%HnH&8F;TQ9Uf z_*BB5vs($d9`XuO+zv`$`C&v>wcBw4Ho-&;t5J453yBV^QSIF~Ae~d3LRP{8s+T*s z)?ad+y`BG$k*1M-NPDJ4hD42yW#12i?)uCD^X~ht=c+4Ew`Zqg%?UO(cg}`9wwQB1 z@%Axv0V)6HXX&4<=NBp(x6EGP21=+V~w%ag`)LaBAY!HJJln4Ia~Emho$1@{Wf;>+r5^ zc@@}4g_-Zb!~vO&Tv+E@nLvx`+*4bPXmsK{9*=JN%+jZ_eIB=mTGz5Gel;4rq3gMxaipY@JZY{qS~UV9kMqUv+?h}(nFrJYentL&|lK&ed>x=&GdkV zur`gR-7#h-g^LSu_y~;Y-Mq2_F@etR>VjtPpj)x%MFCxuu zBzx@nASZ1($%|yj_;hVdoZ+x*UI5AeEm;e)^2 zc4n{Wh4=y;1M5tcxSiHmfj*q-BE8j;>AKgf^%1=I@5ye4=6o{3Y<8|;T?H$j=;-s5PZMQT?EjxNW2>DBH*Y$rzsPos z0)2@^ubtN9PPZE;$IrNCn?y_0+;`W*zs_gqTriHdubs^FTv)B~^B z%H z5QC4QPqgdKtNd&)#ZQP2kmn19y1mTB(AZ<%kvR1vlJhP%%+kw#+4s#CA6fWGM^p5J zX5&SeX4?}ZHyh9?rF%E6dSwVwPTxPW-@r>2eni8ls1ixAB zx3%%rU(6V;9?Tp^Uup53T9q`PQ$NrFx(^(-yG9)y+Y{H-E>O5mUgdbntacPeWXO6} zZFQio9p}G_!Y>cmZJ~k!Na;DP+IRM%8sVf4;Nz37FkpX}s&)uz(!l<}l4b|zBkiuo zP<_78wY2wqxa@hnJlll*+{0+?`NI8x%pD`@f(D<%nrbhWd~gp|aHr`<@1m^7i}}@_j?Omz7_!FcHmFq_v6m{lxDUEAkthF z5Tj+)Hi2+}Ei_M1VZeKAlj|&$nIzgZZ$c%+eox4YU2PwD0oG|gCvYV;Qn$Mb?{ub?>oI{@FBop-3lNwWs7hwuXRzRBWfIa5BLg2IgOme@0B<5bH5K8ZaZ zXgZ1c>aZ9`nrzA#=}=0IJtiF+kF6rWG=a2)&+|<)WnFzrC7ry z-8^IBO=4_&jrU_v3<-9jLvJg7`gslrl8ts0wpxM9VRamIxFWM73GTT_2aS6d*I6}kIOYyYVPIZckbDj?;(pI-`e?0T<3I! z;|Z@g`5?AlZpI9l6*uJb@21ra4_-Uho&aI%YOl?I#?4$-DB3C!y>^zVR=6KG{#}27 zljE>XJSX;H1*=VUnP^vet~jx~ zK5V^LcqHmeeVVzanDPsH6;;=TdGO~Nm%u(Y8jtDR%M4=*nt>#D>={_OPyg+Ym*UR| zg~mMq5%GuroOkMMM}r+X-v3QI_A}$o{AuGuKV-D}Nwef4ns<#S%2Vq|m%qa1R?z?7 z!-w_ev;8Lccb!=C=9W4ruF-&)7v9GP@BtQflixUF^jy!Lg8adrZpQAfJmWC^FP&_= z37jX_&aO#+@r9WwEYzVoN)zTvC9x+!D82QV5o9jkc*qL~InN31WX8q&uu$@obJFn(_0 zUOIoN?`5vv&wB@AXI0qta)=&2__~5k~q5zeKmy7ur|Yy$&CP zp#p;QoUJGd_pb35i=*&XPmJ?)O{)8~7xUzr`5eTXMVh`OuS`w;SN; z@2-7N&YpUANWW*&XR@SLQyN8okx3F7J{p55U5f z$Ei1d`0ESCgr@ILj4YJTc%~mS2`)V=FCLoMgxAgwYKbW>4Q)A31d1ulwvTkwYfB&U zJPvZUp>{I+9GK3M|X1I5}LS{%-?6_tim`7Il9nRPb@{g0cB09X>{{Djvx*kLIdf&LsZJ zPTa!1Lcx|?_ETWFIR$AmPCv(9?WMeS$&r6KP%{rhuABHIwNZPxu6%ywBoE!gd_0V8 zad`Gm91k{WR@m5$Z@B`;S|=y=Jx;8Ateo!=0mSAyP{w(lgx8LhyGr-qIzkZYSo z!N%Z~kPDk&^TGXjRO#VE-W#)&s{j9RC=SNCKYU4I3dPBE3kWGlIFmlbIxOQ4iML%&r81&td z|IQ%`g7L^G7#$q)6Gc-03sl5rk?L*W89Y{~8W9$byV}g8B)xaE+ zj!T6Rw9N{2-X1$uR|mdNj7@Uw@s;G+&65>%X5>!R^^W$cQLY;x;OAx=H=hG>EUJ}| zd(2yeWk|Kjy)USa0nWp#sD_fynD{;?_5C@ek44vX%pcDW+5-I6tG9EG&wrZ5b^FrB z7#@2}Hl$u)e#u!YN+s6YE2I;)YkJ$mm{;Qn>1ljF3~XKnxLY@_weC%{!#PT5R@A|h z4>Rsb7)z&IiSwg28kSGLR%qS|!~XC}T&>)w+aAU$vAg`#AMtEM***kd-nJf~L$Av% z0L*yK>tlA^#|rN2L~Zf#0b}FyTJf0JOU2qbZw?vTe3n+^dF-dH?C^ zIq<>%Z+dvfoZ$`2`d*MC-o1X+mQl_t-w;Lk+45Vlm@2WWSNh))-#3T(BU z{Vm5&oFTHX+2hO`ZED8j(b7HVpB_erSj)5(pf|)&)VFp@=L-Xp9aNX9G5a*GufD?@ zYHCK>i@xo6v)H}3V+dlMV|~vJwN;&1b9j@aL8bOlboCiqS)}Z%x0taTKYRNjV;MFr zV86%<6MQv)tonn52fCz?=ms87{TaH6>BnP`6?voYET#8fB+~Isp&vf_i^|;YTYG}( zq4^>w?OKEb;VZ)cUhs89V7$*XF4Z}@?+;E&CG zdpW;}u7mIUX2@EK0OzO`;LEi7!0sM#Kp&+AqNn<)(AR|0_E~{W>47J2>@IetNpkg* zyw`*S)v=q)I>)-C8TjVe7F_S8@p$D8Xw7=RXxeWIUetr69kgfHsTUnfz>9}XhoghQ z?A!D98=*X{dD^xv@ruQDL)NG-ENsr&)OUuF+&&|bh2!N2Xm?+W2YRCH|AOwQStHK; z8DQQ14s-Jso$ z2S6YO*GZi-3;#aJnYRtXhZv#C&sTXXw_bt2I~H5R4Ek67Qjf;fZ#wXO=$L`OaYe0N z`&X|DMnb7i=p~lFHN|$BFQoSAz`V+|iC4S+Xo4PGJU`)hbo7$vnsja~ zeb75M-N$KM*S|pf+6TU4YW!*sKk+J7ZA3nQVBAp6du9frexhXBakHT(#NEKH-@F~`%H($fpxIpl&86WLl z`7ftv)lCoa49?0i8)6n>cz$v0dtN4%&vx%XI(D@w zCMZL=&ZkUeH`fg~cMoa3OQXwdQwOv1+xQ$88;i?MUh@Sd+XpAlW|O5ks8tVI)6B3^ zY6iq>@1Z`494dvIngy|1Y z-uxwgWDm>H>k2p*94#-OYx8HIBD!~1*e^%b-sS!CQ{9peP5=>_{;|5>UAS?3d3_yz zOi~M<+?eybU*>SOPZl=*yslgN63DN1`HR@>k+Ccc)EZ%xCJP+CInrhxg^ve7&I)y( z9E*Ex)DJmt9BaMy)6^&PsaL-$e=^+psjQ|-#B5ZJCq{*wH$eUkO>=H7`M>8kPW2&I z#><_+xQE?3;@UFLhmx*7d-3M4_IZ9+eY9T1orL(GZa#v>IuW-*&-vv2K%x(m@zPQR zb9^HA!3e?@r&(b@{++S(Qz7}qRS#^y^?Q<50@f=w()F{Dx!F$K|Pa@u7slL+|Ki z4*5LdM{#jQ8Qw`hGv7-Xxxz#7w+)W|IKWL9@p??%`9Uvxa9&?Ky$TPPKT6!=TOV+@ zVl`jp21qIE9RKzy4C^@9FsAk z@9nv>jL2H8Bi-YrL2b9kYHVhp={nxj9D+X&YK^kTi_MYT`6cH!YUj_>m6W8al( zD2xXYk3T#0TpJ?MYPa)@PV_Y!pS+OvHD`3Bhjs=Nc58f6urGps#xfl7b+X;y@lBhf z*HAe>4`+UIBmX8mH5zwz_>jzI99FTq1NhxsRwec<-A89aTqo&vzy z_!6_0^&aP60hlLY?6Cb-3)&vHu|Lt6`$r9i?899D0Y32J=j`zBFLn1d@594DXfV7&a<@dep^E+#ace@xi$O z(hE9)D#lw?-22?q`)&L1eIxysFz)@_{;KyMk$)$BV+fz(Hx9G!z4Jn9DE7f2jP!`* z%Wk%P03_E*V|SmuA?M--rjkD~U+w+nuA9S!G?@6*wMTnD4+_cQXq1Pi>zuIugZgJ9 z{dOhujmG?D*{E07^1B}_H<rYs-sH?-_!+vVLa zw!xN~5AG9Fp?kuz#4Ff;y8W$}kN0o;zUuzA`In~He6^Z_IXQ`9njUi4;i;{i!i|Kv^FH{j^t>MulCH@NI5R&L0? z11|t^K#spL6Qi&|xabvjG4Esbl#%X?ZPWedw{`9LxZz%p^)V+%Z|%e}5}lepuI#0m@i{S7dF2vp3u>J!L$t%RGa3g-p4rpq51J^T%4saH$ z^$e_dIj7yw6cG1k=sa*uv2ob7RpMOb$-6eX;oT3d^p#e^j$5a_YAtO7ZtF4HW(Hq| ziAJr$Jl31#d2amA^Er?|7yQcnbj)|m`TjZ0K9y(v&oZ6PU#wjAYUlf0%WI0sH81P- zV0C?O2(Te|-3LGkYUk4g!SQHTY}_W!+k>y-2Qi1*gZ3b2o~rKnrqx_7l))3W8@V`b zp*@xSX;*9dYdB{JNk6z$@vY8(;lV$BN)2)H)knKJHvM?32|&Ey^3sK>z}iPQgsnWB zs_368(L+WFd4r?pW$y|VvvQ~DB5dr_S51u5J;yZZc>Hl!P6ne3NZ=q&Y5wVcc9NS+x4YuDaS zcnYY3@Y?&Vz&*ce(mP*=nYO_(SPvgKYk_@cF%P2+QOytb#Jy-}+D1HCv_yICfK_sz zIFSn>IP{S~s+SRK7C>7Yb#nwPQQ312JAL+tXgn_MLw58KQoiv9=ASF-56XUCpYFg>uwe<@G(wTUU(sid;5hrkd`dR8{)3@Pk@tL z-6}PYwX40~+6?9Q^)q8XL=D?wl|6=jLih-teucp?4~iej@YD5LW663~Sl$|<)Q;6J z1>;f67Q`Ju+yRV#&LeW`BW!-(2lAoen9OqIiETW7A4?J7{KWgLeIg&eH}H#u`+K)a zexd9AV3xILe$#D_--5q1O1k0z@}8q@l#VI-{c=E?9G+o7=$FY~9{?dh_6f7##_iuc z_WdjF)Y-?Yy`H?;&b3a$k{ir}r{bvxvd(;f{PJx@@y2X6@OVT+bh(*lYz+XcgER%8*&hD^ zrq-%X6u)TwP-QPx`5hjv_SYc);PI5j7K-SwJs7G9~gW>yUJwAP!&*K$WeXV(0i|hMf+BVCH`&53+ek9%Kw_dJm z*8AepZwP8xJB?sGX17!$h?K>Ot(jVWxB}ghP#>ZC{4j^fGqzK$#0=*%^ zgOGEh*-7eM^Y%}fxNdK#d(xEjM;T`PHo5sK)oy120NF=$vDLC$AdDo?h*1^}QyKdxFh=iVGW9wX7e!sebFH_gfix!u6cs_R4Ft zjf*QE0C{bt1DkrCGAaJwW*gea@*CeXix+D53ux!HhG96y3VPFC|s$a8aTAE2rzjY*;5 zcN?1DF4{+(n*Cb-yubADXV2-OboBD7&Qf%8%qnl|rq9sSlvw$Ka@Rat1Dbkb-Se5X zl}lA1S?!p^*FQb*CAYsloFCjDc+&YK%5a@J7|bQlaQu5_gU&H z{yN9S`>C&MDFNGj0xb)6JyP*Aw}Bu2vgX*QTr&)~wQC09wflGgd^-&`$rF@VfBp4G zdH#78IByyTY`pjOdT^q-SRL+uxfSTbmc{d>+cb0B+c{N!tKgqAq;c^oxqbGe+i0dB zmG&^`;zAYtqkf;*`ADDh!KXep}i#Yvngyt*ZTy zUXRy8{=|9yrx1`)n@u!)>gC@KcW)@%s677M$B~?UI8AU*K$+}2w~rK>$D@Z51+`0$ zAsO1W0^Oz5>jmD_Nj9%wwxM=bg7rEITV6u*>K_(@cWgC56@l%QWw4_bq>mcHoujJ5 zwZvZs&PDb~&!)r=NtI12P&~&$JfV0LRsXc;`p(zs?nl&%9k!}-v{`vH9J z!|LuJW#%cy zoW=e#beebS;<2k2XRvkUJftZNyXplrr^z4rdYn8xu&&D!;H4|K{nq^L+n7wI$&+rJQhQu93^&v^sf{?1uHG@rKrd*nLrw~^<#aq_vWQ+k-U z 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

      SrD1ud%hvFwoI87l-X^L~#G7uM*x)>UCt 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 Date: Thu, 26 Feb 2015 03:42:27 -0800 Subject: [PATCH 06/12] fixed location, working on tags --- DailyGood.xcodeproj/project.pbxproj | 10 +-- .../UserInterfaceState.xcuserstate | Bin 21583 -> 27868 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 18 +++++ DailyGood/Base.lproj/Main.storyboard | 48 ++++++++++++- DailyGood/Common.swift | 8 +++ DailyGood/FeedViewController.swift | 63 +++++++++++++----- DailyGood/Info.plist | 8 +-- DailyGood/ProfileViewController.swift | 11 +++ 8 files changed, 139 insertions(+), 27 deletions(-) diff --git a/DailyGood.xcodeproj/project.pbxproj b/DailyGood.xcodeproj/project.pbxproj index 72ece31..b2c1c6e 100644 --- a/DailyGood.xcodeproj/project.pbxproj +++ b/DailyGood.xcodeproj/project.pbxproj @@ -122,18 +122,18 @@ B8C5B8671A916D3C00A1909F /* DailyGood */ = { isa = PBXGroup; children = ( + B8C5B86E1A916D3C00A1909F /* Main.storyboard */, B8C5B88C1A91738100A1909F /* Common.swift */, B8C5B86A1A916D3C00A1909F /* AppDelegate.swift */, B8C5B86C1A916D3C00A1909F /* ViewController.swift */, - B8C5B86E1A916D3C00A1909F /* Main.storyboard */, - B8DB0C411A930484007EFD14 /* MoreViewController.swift */, - B8DB0C3F1A92B67F007EFD14 /* ProfileViewController.swift */, - B8C5B88E1A9178DA00A1909F /* FeedDetail1ViewController.swift */, B8C5B88A1A916DC500A1909F /* FeedViewController.swift */, + 283825551A9BD2D7001EE5A2 /* VolCell.swift */, + B8C5B88E1A9178DA00A1909F /* FeedDetail1ViewController.swift */, + B8DB0C3F1A92B67F007EFD14 /* ProfileViewController.swift */, + B8DB0C411A930484007EFD14 /* MoreViewController.swift */, B8C5B8711A916D3C00A1909F /* Images.xcassets */, B8C5B8731A916D3C00A1909F /* LaunchScreen.xib */, B8C5B8681A916D3C00A1909F /* Supporting Files */, - 283825551A9BD2D7001EE5A2 /* VolCell.swift */, 2838255A1A9C859E001EE5A2 /* dummy.m */, 283825591A9C859E001EE5A2 /* DailyGood-Bridging-Header.h */, ); diff --git a/DailyGood.xcworkspace/xcuserdata/fil.xcuserdatad/UserInterfaceState.xcuserstate b/DailyGood.xcworkspace/xcuserdata/fil.xcuserdatad/UserInterfaceState.xcuserstate index 6f6797fc46de2b92ac5592a46a61c432e474c560..f407be2a9220c503f62b02fedf343385accfefd0 100644 GIT binary patch literal 27868 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 literal 21583 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 diff --git a/DailyGood.xcworkspace/xcuserdata/fil.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/DailyGood.xcworkspace/xcuserdata/fil.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index ed9a9b4..c0e084c 100644 --- a/DailyGood.xcworkspace/xcuserdata/fil.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/DailyGood.xcworkspace/xcuserdata/fil.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -2,4 +2,22 @@ + + + + + + diff --git a/DailyGood/Base.lproj/Main.storyboard b/DailyGood/Base.lproj/Main.storyboard index ea7aad3..fc5cfde 100644 --- a/DailyGood/Base.lproj/Main.storyboard +++ b/DailyGood/Base.lproj/Main.storyboard @@ -149,6 +149,50 @@ + + + + @@ -197,7 +241,7 @@ - + - + @@ -367,6 +367,7 @@ + diff --git a/DailyGood/FeedDetailViewController.swift b/DailyGood/FeedDetailViewController.swift index c3f07c8..146af19 100644 --- a/DailyGood/FeedDetailViewController.swift +++ b/DailyGood/FeedDetailViewController.swift @@ -1,5 +1,5 @@ // -// FeedDetail1ViewController.swift +// FeedDetailViewController.swift // DailyGood // // Created by Kelly Xu on 2/15/15. @@ -13,16 +13,16 @@ class FeedDetailViewController: UIViewController, UIActionSheetDelegate { @IBOutlet weak var scrollView: UIScrollView! @IBOutlet weak var checkBtn1: UIButton! - + var selection = NSDictionary() override func viewDidLoad() { super.viewDidLoad() - scrollView.contentSize = CGSize(width: 320, height: 1284) checkBtn1.enabled = true + println(selection["imageURL"]!) } override func didReceiveMemoryWarning() { diff --git a/DailyGood/FeedViewController.swift b/DailyGood/FeedViewController.swift index 6290310..d5bf300 100644 --- a/DailyGood/FeedViewController.swift +++ b/DailyGood/FeedViewController.swift @@ -119,18 +119,19 @@ class FeedViewController: UIViewController, UITableViewDataSource, UITableViewDe } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { var cell = tableView.dequeueReusableCellWithIdentifier("VolCell") as VolCell - cell.volOppCharity.text = opportunities[indexPath.row]["sponsoringOrganizationName"] as? String - cell.volOppLocation.text = opportunities[indexPath.row]["location_name"] as? String - var tag = opportunities[indexPath.row]["categoryTags"] as [String] + var thisOpp: NSMutableDictionary = opportunities[indexPath.row].mutableCopy() as NSMutableDictionary + cell.volOppCharity.text = thisOpp["sponsoringOrganizationName"] as? String + cell.volOppLocation.text = thisOpp["location_name"] as? String + var tag: [String] = thisOpp["categoryTags"] as [String]! if tag.count > 0 { cell.volOppTag.text = tag[0] as String } else { //cell.volOppTag.hidden = true cell.volOppTag.text = "no tag" } - cell.volOppTitle.text = opportunities[indexPath.row]["title"] as? String - cell.volOppDescription.text = opportunities[indexPath.row]["description"] as? String - let startDate = opportunities[indexPath.row]["startDate"] as String + cell.volOppTitle.text = thisOpp["title"] as? String + cell.volOppDescription.text = thisOpp["description"] as? String + let startDate = thisOpp["startDate"] as String let when = startDate.componentsSeparatedByString(" ") cell.volOppTime.text = when[0] + " at " + when[1] @@ -145,9 +146,8 @@ class FeedViewController: UIViewController, UITableViewDataSource, UITableViewDe } else { return cell } - // license = 7 (no copyright) does not return much, will deal with this later - // var flickrUrl = "https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=fc0877fa484b0b38e2d299a5c491c764&tag_mode=any&license=7&safe_search=1&content_type=1&media=photos&format=json&nojsoncallback=1&sort=interestingness&per_page=1" var flickrUrl = "https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=fc0877fa484b0b38e2d299a5c491c764&safe_search=1&content_type=1&media=photos&format=json&nojsoncallback=1&sort=interestingness-desc&per_page=1" + // flickrUrl += "&license=7" // SHOULD ONLY CONSIDER PUBLIC DOMAIN IMAGES!!! BUT NOT MANY RESULTS... DEAL W/THIS LATER... flickrUrl += query let request = NSURLRequest(URL: NSURL(string: flickrUrl)!) NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) { (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in @@ -163,13 +163,15 @@ class FeedViewController: UIViewController, UITableViewDataSource, UITableViewDe picUrl += "_" + toString(pic["secret"]!) picUrl += "_n.jpg" cell.volOppImage.setImageWithURL(NSURL(string: picUrl)) + thisOpp["imageURL"] = picUrl } } } // would be nice to get/set these too... - // cell.volOppSponsor = ..... + // cell.volOppSponsor = ..... FROM YAHOO? // cell.volOppWhoJoined = ..... + cell.volOpp = thisOpp as NSDictionary return cell } @@ -250,14 +252,20 @@ class FeedViewController: UIViewController, UITableViewDataSource, UITableViewDe // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { - let profileVC = segue.destinationViewController as ProfileViewController - profileVC.profileTag = categoryTag + if segue.identifier == "detailSegue" { + let detailVC = segue.destinationViewController as FeedDetailViewController + let cell = sender as VolCell + detailVC.selection = cell.volOpp + } else if segue.identifier == "ProfileSegue" { + let profileVC = segue.destinationViewController as ProfileViewController + profileVC.profileTag = categoryTag + } } @IBAction func profileUnwind(segue: UIStoryboardSegue) { - let profileVC = segue.sourceViewController as ProfileViewController - categoryTag = profileVC.profileTag - getVolOpps() + let profileVC = segue.sourceViewController as ProfileViewController + categoryTag = profileVC.profileTag + getVolOpps() } } diff --git a/DailyGood/ViewController.swift b/DailyGood/ViewController.swift deleted file mode 100644 index c52850c..0000000 --- a/DailyGood/ViewController.swift +++ /dev/null @@ -1,25 +0,0 @@ -// -// ViewController.swift -// DailyGood -// -// Created by Kelly Xu on 2/15/15. -// Copyright (c) 2015 kelly. All rights reserved. -// - -import UIKit - -class ViewController: UIViewController { - - override func viewDidLoad() { - super.viewDidLoad() - // Do any additional setup after loading the view, typically from a nib. - } - - override func didReceiveMemoryWarning() { - super.didReceiveMemoryWarning() - // Dispose of any resources that can be recreated. - } - - -} - diff --git a/DailyGood/VolCell.swift b/DailyGood/VolCell.swift index 8d4cb6e..80421e1 100644 --- a/DailyGood/VolCell.swift +++ b/DailyGood/VolCell.swift @@ -20,6 +20,7 @@ class VolCell: UITableViewCell { @IBOutlet weak var volOppSponsor: UILabel! @IBOutlet weak var volOppTime: UILabel! @IBOutlet weak var volOppWhoJoined: UILabel! + var volOpp: NSDictionary! // all data including imageURL override func awakeFromNib() { super.awakeFromNib() From 2e3203ef70b2677d6d7b8a4936e55e3e41df8062 Mon Sep 17 00:00:00 2001 From: filmenczer Date: Tue, 3 Mar 2015 02:14:52 -0800 Subject: [PATCH 10/12] progress on detail view --- .../UserInterfaceState.xcuserstate | Bin 34367 -> 35003 bytes DailyGood/Base.lproj/Main.storyboard | 126 +++++++++++++++--- DailyGood/FeedDetailViewController.swift | 45 +++++-- DailyGood/FeedViewController.swift | 3 +- .../AppIcon.appiconset/Contents.json | 3 +- .../AppIcon.appiconset/hand-shake-love.png | Bin 0 -> 9070 bytes DailyGood/VolCell.swift | 2 +- 7 files changed, 145 insertions(+), 34 deletions(-) create mode 100644 DailyGood/Images.xcassets/AppIcon.appiconset/hand-shake-love.png diff --git a/DailyGood.xcworkspace/xcuserdata/fil.xcuserdatad/UserInterfaceState.xcuserstate b/DailyGood.xcworkspace/xcuserdata/fil.xcuserdatad/UserInterfaceState.xcuserstate index c84a4180729eae9c4277fbba78336aa229d054ad..8c47729efbd8dec1203183988b37d4c10166617f 100644 GIT binary patch delta 18300 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/lr?>~MBe*XRnM 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 delta 18134 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 - - - - - - - v3vAPXvWSB4~gdhx5W0wc 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 SUHyAdC5}_HqPpmR?fNfJjpH`} diff --git a/DailyGood/Base.lproj/Main.storyboard b/DailyGood/Base.lproj/Main.storyboard index 8e31f42..8660b7e 100644 --- a/DailyGood/Base.lproj/Main.storyboard +++ b/DailyGood/Base.lproj/Main.storyboard @@ -439,6 +439,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -564,13 +643,24 @@ + + + @@ -589,7 +679,7 @@ - + diff --git a/DailyGood/FeedDetailViewController.swift b/DailyGood/FeedDetailViewController.swift index 00b1dcf..994442f 100644 --- a/DailyGood/FeedDetailViewController.swift +++ b/DailyGood/FeedDetailViewController.swift @@ -120,8 +120,6 @@ class FeedDetailViewController: UIViewController, UIActionSheetDelegate { } } - // TO-DO: Could add WebView for selection["detailUrl"] - // finally we can size the scrollview scrollView.contentSize = CGSize(width: 320, height: position) } @@ -140,7 +138,7 @@ class FeedDetailViewController: UIViewController, UIActionSheetDelegate { mapView.showAnnotations([opp], animated: false) } } - + @IBAction func onTapBackBtn(sender: AnyObject) { navigationController!.popViewControllerAnimated(true) } @@ -150,7 +148,6 @@ class FeedDetailViewController: UIViewController, UIActionSheetDelegate { var actionSheet = UIActionSheet(title: nil, delegate: self, cancelButtonTitle: "Cancel", destructiveButtonTitle: "CONFIRMED") actionSheet.showInView(view) } - func actionSheet(actionSheet: UIActionSheet!, clickedButtonAtIndex buttonIndex: Int){ if (buttonIndex == 0){ @@ -159,4 +156,12 @@ class FeedDetailViewController: UIViewController, UIActionSheetDelegate { checkBtn1.selected = false } } + + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { + var webVC = segue.destinationViewController as WebViewController + webVC.url = selection["detailUrl"] as String + } } \ No newline at end of file diff --git a/DailyGood/WebViewController.swift b/DailyGood/WebViewController.swift new file mode 100644 index 0000000..da1b9f7 --- /dev/null +++ b/DailyGood/WebViewController.swift @@ -0,0 +1,58 @@ +// +// WebViewController.swift +// DailyGood +// +// Created by Filippo Menczer on 3/3/15. +// Copyright (c) 2015 kelly. All rights reserved. +// + +import UIKit + +class WebViewController: UIViewController { + + @IBOutlet weak var webView: UIWebView! + var url: String! + + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + let request = NSURLRequest(URL: NSURL(string: url)!) + webView.loadRequest(request) + + } + + override func didReceiveMemoryWarning() { + super.didReceiveMemoryWarning() + // Dispose of any resources that can be recreated. + } + + @IBAction func onBackBtn(sender: AnyObject) { + navigationController!.popViewControllerAnimated(true) + } + + @IBAction func onForward(sender: AnyObject) { + webView.goForward() + } + @IBAction func onBack(sender: AnyObject) { + webView.goBack() + } + @IBAction func onReload(sender: AnyObject) { + webView.reload() + } + @IBAction func onStop(sender: AnyObject) { + webView.stopLoading() + } + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { + // Get the new view controller using segue.destinationViewController. + // Pass the selected object to the new view controller. + } + */ + +}