From a0ea195ffc73e1fba4fc59cbf7fe7f0d4d334ac5 Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Mon, 16 Feb 2015 17:37:05 -0800 Subject: [PATCH] rebuilt client --- .../petstore/objc/ObjcPetstoreCodegen.scala | 43 - .../UserInterfaceState.xcuserstate | Bin 19555 -> 25192 bytes .../PetstoreClient.xcodeproj/project.pbxproj | 32 +- .../AppIcon.appiconset/Contents.json | 5 + .../PetstoreClient/ViewController.m | 37 +- .../PetstoreClient/PetstoreClient/test-1.png | Bin 0 -> 734124 bytes samples/client/petstore/objc/Podfile.lock | 28 +- .../AFNetworking/AFNetworking/AFHTTPClient.h | 641 ----- .../AFNetworking/AFNetworking/AFHTTPClient.m | 1396 ---------- .../AFNetworking/AFHTTPRequestOperation.h | 90 +- .../AFNetworking/AFHTTPRequestOperation.m | 385 +-- .../AFNetworking/AFImageRequestOperation.h | 113 - .../AFNetworking/AFImageRequestOperation.m | 321 --- .../AFNetworking/AFJSONRequestOperation.h | 71 - .../AFNetworking/AFJSONRequestOperation.m | 150 - .../AFNetworkActivityIndicatorManager.h | 75 - .../AFNetworkActivityIndicatorManager.m | 157 -- .../AFNetworking/AFNetworking/AFNetworking.h | 23 +- .../AFPropertyListRequestOperation.h | 68 - .../AFPropertyListRequestOperation.m | 143 - .../AFNetworking/AFURLConnectionOperation.h | 152 +- .../AFNetworking/AFURLConnectionOperation.m | 751 +++-- .../AFNetworking/AFXMLRequestOperation.h | 89 - .../AFNetworking/AFXMLRequestOperation.m | 167 -- .../AFNetworking/UIImageView+AFNetworking.h | 78 - .../AFNetworking/UIImageView+AFNetworking.m | 191 -- .../petstore/objc/Pods/AFNetworking/LICENSE | 2 +- .../petstore/objc/Pods/AFNetworking/README.md | 485 ++-- .../BuildHeaders/AFNetworking/AFHTTPClient.h | 1 - .../AFNetworking/AFHTTPRequestOperation.h | 1 - .../AFNetworking/AFImageRequestOperation.h | 1 - .../AFNetworking/AFJSONRequestOperation.h | 1 - .../AFNetworkActivityIndicatorManager.h | 1 - .../BuildHeaders/AFNetworking/AFNetworking.h | 1 - .../AFPropertyListRequestOperation.h | 1 - .../AFNetworking/AFURLConnectionOperation.h | 1 - .../AFNetworking/AFXMLRequestOperation.h | 1 - .../AFNetworking/UIImageView+AFNetworking.h | 1 - .../Pods/Headers/AFNetworking/AFHTTPClient.h | 1 - .../AFNetworking/AFHTTPRequestOperation.h | 1 - .../AFNetworking/AFImageRequestOperation.h | 1 - .../AFNetworking/AFJSONRequestOperation.h | 1 - .../AFNetworkActivityIndicatorManager.h | 1 - .../Pods/Headers/AFNetworking/AFNetworking.h | 1 - .../AFPropertyListRequestOperation.h | 1 - .../AFNetworking/AFURLConnectionOperation.h | 1 - .../AFNetworking/AFXMLRequestOperation.h | 1 - .../AFNetworking/UIImageView+AFNetworking.h | 1 - .../client/petstore/objc/Pods/Manifest.lock | 28 +- .../Pods/Pods-AFNetworking-Private.xcconfig | 5 - .../objc/Pods/Pods-AFNetworking-dummy.m | 5 - .../objc/Pods/Pods-AFNetworking-prefix.pch | 19 - .../objc/Pods/Pods-AFNetworking.xcconfig | 1 - .../objc/Pods/Pods-acknowledgements.markdown | 26 - .../objc/Pods/Pods-acknowledgements.plist | 56 - .../client/petstore/objc/Pods/Pods-dummy.m | 5 - .../petstore/objc/Pods/Pods-environment.h | 14 - .../petstore/objc/Pods/Pods-resources.sh | 47 - .../client/petstore/objc/Pods/Pods.xcconfig | 4 - .../objc/Pods/Pods.xcodeproj/project.pbxproj | 2411 ++++++++++------- .../xcschemes/Pods-AFNetworking.xcscheme | 4 +- .../tony.xcuserdatad/xcschemes/Pods.xcscheme | 4 +- .../xcschemes/xcschememanagement.plist | 32 +- .../petstore/objc/client/SWGApiClient.m | 157 +- .../petstore/objc/client/SWGApiResponse.h | 18 + .../petstore/objc/client/SWGApiResponse.m | 54 + samples/client/petstore/objc/client/SWGFile.h | 3 +- .../client/petstore/objc/client/SWGPetApi.h | 18 +- .../client/petstore/objc/client/SWGPetApi.m | 309 ++- .../client/petstore/objc/client/SWGStoreApi.h | 16 + .../client/petstore/objc/client/SWGStoreApi.m | 156 +- .../client/petstore/objc/client/SWGUserApi.m | 292 +- 72 files changed, 3119 insertions(+), 6278 deletions(-) delete mode 100644 samples/client/petstore/objc/ObjcPetstoreCodegen.scala create mode 100644 samples/client/petstore/objc/PetstoreClient/PetstoreClient/test-1.png delete mode 100644 samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFHTTPClient.h delete mode 100644 samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFHTTPClient.m delete mode 100644 samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.h delete mode 100644 samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.m delete mode 100644 samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.h delete mode 100644 samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.m delete mode 100644 samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.h delete mode 100644 samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.m delete mode 100644 samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.h delete mode 100644 samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.m delete mode 100644 samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.h delete mode 100644 samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.m delete mode 100644 samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.h delete mode 100644 samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.m delete mode 120000 samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFHTTPClient.h delete mode 120000 samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFHTTPRequestOperation.h delete mode 120000 samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFImageRequestOperation.h delete mode 120000 samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFJSONRequestOperation.h delete mode 120000 samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFNetworkActivityIndicatorManager.h delete mode 120000 samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFNetworking.h delete mode 120000 samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFPropertyListRequestOperation.h delete mode 120000 samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFURLConnectionOperation.h delete mode 120000 samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFXMLRequestOperation.h delete mode 120000 samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/UIImageView+AFNetworking.h delete mode 120000 samples/client/petstore/objc/Pods/Headers/AFNetworking/AFHTTPClient.h delete mode 120000 samples/client/petstore/objc/Pods/Headers/AFNetworking/AFHTTPRequestOperation.h delete mode 120000 samples/client/petstore/objc/Pods/Headers/AFNetworking/AFImageRequestOperation.h delete mode 120000 samples/client/petstore/objc/Pods/Headers/AFNetworking/AFJSONRequestOperation.h delete mode 120000 samples/client/petstore/objc/Pods/Headers/AFNetworking/AFNetworkActivityIndicatorManager.h delete mode 120000 samples/client/petstore/objc/Pods/Headers/AFNetworking/AFNetworking.h delete mode 120000 samples/client/petstore/objc/Pods/Headers/AFNetworking/AFPropertyListRequestOperation.h delete mode 120000 samples/client/petstore/objc/Pods/Headers/AFNetworking/AFURLConnectionOperation.h delete mode 120000 samples/client/petstore/objc/Pods/Headers/AFNetworking/AFXMLRequestOperation.h delete mode 120000 samples/client/petstore/objc/Pods/Headers/AFNetworking/UIImageView+AFNetworking.h delete mode 100644 samples/client/petstore/objc/Pods/Pods-AFNetworking-Private.xcconfig delete mode 100644 samples/client/petstore/objc/Pods/Pods-AFNetworking-dummy.m delete mode 100644 samples/client/petstore/objc/Pods/Pods-AFNetworking-prefix.pch delete mode 100644 samples/client/petstore/objc/Pods/Pods-AFNetworking.xcconfig delete mode 100644 samples/client/petstore/objc/Pods/Pods-acknowledgements.markdown delete mode 100644 samples/client/petstore/objc/Pods/Pods-acknowledgements.plist delete mode 100644 samples/client/petstore/objc/Pods/Pods-dummy.m delete mode 100644 samples/client/petstore/objc/Pods/Pods-environment.h delete mode 100755 samples/client/petstore/objc/Pods/Pods-resources.sh delete mode 100644 samples/client/petstore/objc/Pods/Pods.xcconfig create mode 100644 samples/client/petstore/objc/client/SWGApiResponse.h create mode 100644 samples/client/petstore/objc/client/SWGApiResponse.m diff --git a/samples/client/petstore/objc/ObjcPetstoreCodegen.scala b/samples/client/petstore/objc/ObjcPetstoreCodegen.scala deleted file mode 100644 index 5fc062a4515..00000000000 --- a/samples/client/petstore/objc/ObjcPetstoreCodegen.scala +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Copyright 2014 Wordnik, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import com.wordnik.swagger.codegen.BasicObjcGenerator - -object ObjcPetstoreCodegen extends BasicObjcGenerator { - def main(args: Array[String]) = generateClient(args) - - // where to write generated code - val outputFolder = "samples/client/petstore/objc/" - override def destinationDir = outputFolder + java.io.File.separator + "client" - - override def templateDir = "objc" - - additionalParams ++= Map("projectName" -> "PetstoreClient") - - // supporting classes - override def supportingFiles = - List( - ("SWGObject.h", destinationDir, "SWGObject.h"), - ("SWGObject.m", destinationDir, "SWGObject.m"), - ("SWGApiClient.h", destinationDir, "SWGApiClient.h"), - ("SWGApiClient.m", destinationDir, "SWGApiClient.m"), - ("SWGFile.h", destinationDir, "SWGFile.h"), - ("SWGFile.m", destinationDir, "SWGFile.m"), - ("SWGDate.h", destinationDir, "SWGDate.h"), - ("SWGDate.m", destinationDir, "SWGDate.m"), - ("Podfile.mustache", outputFolder, "Podfile") - ) -} diff --git a/samples/client/petstore/objc/PetstoreClient.xcworkspace/xcuserdata/tony.xcuserdatad/UserInterfaceState.xcuserstate b/samples/client/petstore/objc/PetstoreClient.xcworkspace/xcuserdata/tony.xcuserdatad/UserInterfaceState.xcuserstate index 6ff18c077e2187f0273e9af773d658acd64ae754..4588a88ae5d0807cace685239f1a5bfb29b6eb94 100644 GIT binary patch literal 25192 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 CI7zJl diff --git a/samples/client/petstore/objc/PetstoreClient/PetstoreClient.xcodeproj/project.pbxproj b/samples/client/petstore/objc/PetstoreClient/PetstoreClient.xcodeproj/project.pbxproj index 65087ed0f36..349c3f59a88 100644 --- a/samples/client/petstore/objc/PetstoreClient/PetstoreClient.xcodeproj/project.pbxproj +++ b/samples/client/petstore/objc/PetstoreClient/PetstoreClient.xcodeproj/project.pbxproj @@ -36,6 +36,8 @@ EAEA85EE1811D3AE00F06E69 /* SWGUser.m in Sources */ = {isa = PBXBuildFile; fileRef = EAEA85E11811D3AE00F06E69 /* SWGUser.m */; }; EAEA85EF1811D3AE00F06E69 /* SWGUserApi.m in Sources */ = {isa = PBXBuildFile; fileRef = EAEA85E31811D3AE00F06E69 /* SWGUserApi.m */; }; EAEA85F11811D8F100F06E69 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EAEA85F01811D8F100F06E69 /* libPods.a */; }; + EAFBEABB1A925B8500A27431 /* test-1.png in Resources */ = {isa = PBXBuildFile; fileRef = EAFBEABA1A925B8500A27431 /* test-1.png */; }; + EAFBEABE1A92C42700A27431 /* SWGApiResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = EAFBEABD1A92C42700A27431 /* SWGApiResponse.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -50,7 +52,8 @@ /* Begin PBXFileReference section */ 73DA4F1067C343C3962F1542 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; - EA5799F266AC4D21AD004BC4 /* Pods.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.xcconfig; path = ../Pods/Pods.xcconfig; sourceTree = ""; }; + A425648B5C0A4849C7668069 /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.release.xcconfig; path = "../Pods/Target Support Files/Pods/Pods.release.xcconfig"; sourceTree = ""; }; + E2B6DA00BE52336E23783686 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "../Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = ""; }; EA6699961811D2FA00A70D03 /* PetstoreClient.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PetstoreClient.app; sourceTree = BUILT_PRODUCTS_DIR; }; EA6699991811D2FA00A70D03 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; EA66999B1811D2FA00A70D03 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; @@ -95,7 +98,10 @@ EAEA85E11811D3AE00F06E69 /* SWGUser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGUser.m; sourceTree = ""; }; EAEA85E21811D3AE00F06E69 /* SWGUserApi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWGUserApi.h; sourceTree = ""; }; EAEA85E31811D3AE00F06E69 /* SWGUserApi.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGUserApi.m; sourceTree = ""; }; - EAEA85F01811D8F100F06E69 /* libPods.a */ = {isa = PBXFileReference; lastKnownFileType = file; name = libPods.a; path = "../Pods/build/Debug-iphoneos/libPods.a"; sourceTree = ""; }; + EAEA85F01811D8F100F06E69 /* libPods.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libPods.a; path = "../Pods/build/Debug-iphoneos/libPods.a"; sourceTree = ""; }; + EAFBEABA1A925B8500A27431 /* test-1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "test-1.png"; sourceTree = ""; }; + EAFBEABC1A92C42700A27431 /* SWGApiResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWGApiResponse.h; sourceTree = ""; }; + EAFBEABD1A92C42700A27431 /* SWGApiResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGApiResponse.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -124,6 +130,15 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 1A15B3DE4358A178ABAEC251 /* Pods */ = { + isa = PBXGroup; + children = ( + E2B6DA00BE52336E23783686 /* Pods.debug.xcconfig */, + A425648B5C0A4849C7668069 /* Pods.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; EA66998D1811D2FA00A70D03 = { isa = PBXGroup; children = ( @@ -132,7 +147,7 @@ EA6699C11811D2FB00A70D03 /* PetstoreClientTests */, EA6699981811D2FA00A70D03 /* Frameworks */, EA6699971811D2FA00A70D03 /* Products */, - EA5799F266AC4D21AD004BC4 /* Pods.xcconfig */, + 1A15B3DE4358A178ABAEC251 /* Pods */, ); sourceTree = ""; }; @@ -176,6 +191,7 @@ EA6699A01811D2FA00A70D03 /* Supporting Files */ = { isa = PBXGroup; children = ( + EAFBEABA1A925B8500A27431 /* test-1.png */, EA6699A11811D2FA00A70D03 /* PetstoreClient-Info.plist */, EA6699A21811D2FA00A70D03 /* InfoPlist.strings */, EA6699A51811D2FA00A70D03 /* main.m */, @@ -205,6 +221,8 @@ EAEA85CB1811D3AE00F06E69 /* client */ = { isa = PBXGroup; children = ( + EAFBEABC1A92C42700A27431 /* SWGApiResponse.h */, + EAFBEABD1A92C42700A27431 /* SWGApiResponse.m */, EAEA85CC1811D3AE00F06E69 /* SWGApiClient.h */, EAEA85CD1811D3AE00F06E69 /* SWGApiClient.m */, EAEA85CE1811D3AE00F06E69 /* SWGCategory.h */, @@ -315,6 +333,7 @@ EA6699B01811D2FA00A70D03 /* Main_iPad.storyboard in Resources */, EA6699B51811D2FA00A70D03 /* Images.xcassets in Resources */, EA6699AD1811D2FA00A70D03 /* Main_iPhone.storyboard in Resources */, + EAFBEABB1A925B8500A27431 /* test-1.png in Resources */, EA6699A41811D2FA00A70D03 /* InfoPlist.strings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -357,7 +376,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/../Pods/Pods-resources.sh\"\n"; + shellScript = "\"${SRCROOT}/../Pods/Target Support Files/Pods/Pods-resources.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -372,6 +391,7 @@ EA6699B31811D2FA00A70D03 /* ViewController.m in Sources */, EA6699AA1811D2FA00A70D03 /* AppDelegate.m in Sources */, EAEA85EE1811D3AE00F06E69 /* SWGUser.m in Sources */, + EAFBEABE1A92C42700A27431 /* SWGApiResponse.m in Sources */, EAEA85EF1811D3AE00F06E69 /* SWGUserApi.m in Sources */, EAEA85EB1811D3AE00F06E69 /* SWGPetApi.m in Sources */, EAEA85E61811D3AE00F06E69 /* SWGDate.m in Sources */, @@ -515,7 +535,7 @@ }; EA6699CC1811D2FB00A70D03 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EA5799F266AC4D21AD004BC4 /* Pods.xcconfig */; + baseConfigurationReference = E2B6DA00BE52336E23783686 /* Pods.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; @@ -529,7 +549,7 @@ }; EA6699CD1811D2FB00A70D03 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EA5799F266AC4D21AD004BC4 /* Pods.xcconfig */; + baseConfigurationReference = A425648B5C0A4849C7668069 /* Pods.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; diff --git a/samples/client/petstore/objc/PetstoreClient/PetstoreClient/Images.xcassets/AppIcon.appiconset/Contents.json b/samples/client/petstore/objc/PetstoreClient/PetstoreClient/Images.xcassets/AppIcon.appiconset/Contents.json index 91bf9c14a73..b7f3352ee7c 100644 --- a/samples/client/petstore/objc/PetstoreClient/PetstoreClient/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/samples/client/petstore/objc/PetstoreClient/PetstoreClient/Images.xcassets/AppIcon.appiconset/Contents.json @@ -15,6 +15,11 @@ "size" : "60x60", "scale" : "2x" }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, { "idiom" : "ipad", "size" : "29x29", diff --git a/samples/client/petstore/objc/PetstoreClient/PetstoreClient/ViewController.m b/samples/client/petstore/objc/PetstoreClient/PetstoreClient/ViewController.m index 1af289ecee6..ebdb5a42e99 100644 --- a/samples/client/petstore/objc/PetstoreClient/PetstoreClient/ViewController.m +++ b/samples/client/petstore/objc/PetstoreClient/PetstoreClient/ViewController.m @@ -22,13 +22,36 @@ SWGPetApi * api = [[SWGPetApi alloc] init]; - [api getPetByIdWithCompletionBlock:@10 completionHandler:^(SWGPet *output, NSError *error) { - NSLog(@"%@", [output asDictionary]); - [output set_id:@101]; - [api addPetWithCompletionBlock:output completionHandler:^(NSError *error) { - NSLog(@"Done!"); - }]; - }]; +// [api getPetByIdWithCompletionBlock:@10 completionHandler:^(SWGPet *output, NSError *error) { +// NSLog(@"%@", [output asDictionary]); +// [output set_id:@101]; +// [api addPetWithCompletionBlock:output completionHandler:^(NSError *error) { +// NSLog(@"Done!"); +// }]; + + // load data into file +// }]; + NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test-1" ofType:@"png"]; + NSData *myData = [NSData dataWithContentsOfFile:filePath]; + + SWGFile *file = [[SWGFile alloc] initWithNameData:@"test-2.png" mimeType:@"image/png" data:myData]; + [api uploadFileWithCompletionBlock:@1 + additionalMetadata:@"some metadata" + file:file + completionHandler:^(NSError *error) { + if(error) { + NSLog(@"%@", error); + } + } +// completionHandler:^(SWGApiResponse *output, NSError *error) { +// if(error) { +// NSLog(@"%@", error); +// } +// else { +// NSLog(@"%@", [output asDictionary]); +// } +// } + ]; } - (void)didReceiveMemoryWarning diff --git a/samples/client/petstore/objc/PetstoreClient/PetstoreClient/test-1.png b/samples/client/petstore/objc/PetstoreClient/PetstoreClient/test-1.png new file mode 100644 index 0000000000000000000000000000000000000000..1da243e1d23a9bb5a5d31424b9232758d948373e GIT binary patch literal 734124 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 z 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 Le8!+1d3LRb&t#0{?CCM* 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 z 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
  • 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

    M;@&*1)V7WDW@GX;xa=sMiBkxN@{(WQ| zkd>?`Zp~_+U><{@LcgFAyazo1uOKBtCSfb=uIq0ifOW4d%^_uIRTucYoX@fPr_@$R zPlD>%RGlShhdiU8s_ZGEC|`H?feTve>uqg%HRV-?mLxHHUasU$_~@pVwOt`CDdCA~ z!A=QSWrVLeY&+sj3uiKkxK2 zsoKVxM7}oR{XJ?}(P@@}h%wuI2XJpm%$P z2(Hihhqy1v%C^dSDD4hEFZ*dT`>U8aue`0jtshx$C+GZOgQmZw6IL!kSL~`1ZRr_r zXKgmOGtHlXC$I#kq{73RwK1YZJ>Q@{MISdf{5m;NRr-P`&Sa>cD@iwv=1@ww z@{n*VC%+xdfdgK5r-gNa_YZs#6i#fN(4T44^kGqW*WLClAo^( zHaJRuT_3E)oN~P)I1(0hR{|E%K?zVMN1C+LtNw*+LM@)LZh*FPIgy0WAdIi(OA|{- z?5EkvL&@}1=_;xEc=iY;GPpJ9nIFP=W$U|SD+~!qhhsrGT8D+1e^o9YGKbn+3BZC9 zeBdDa?%r~^geUzyB2E5~*4jXc5c{@y4tNOT6PC)BG&p0=TJk)RUa0v;xtQx=gnVmw zna4=~=1=&KoxkYiKzRetfAyqB0sHQ zuGhtq;gJDz$<=0?qIi)-{;NwOqZ3ZqQ~c$j2^kX#T3;?23Y$*~32{kth3wp9-?nxf z_BU@|anm(x&OJ}%+M?i~MC!IvEUb~3{^@Fx*}=g%a6E-HZXwZGwWZk$)}9j3ZHxxT{Z-t!C#_=R`DP5Ml!Ah5bU1^I!DV#;Ynn)I z|CMJmb^fHX>7w~VEf$=iu+$S3BB9M+8f?U&X>Ymm!jo^KNEmXf`SMYE0BTT2wg(A1 zPjo_13q-;++9yFvCW_Em!`c8j%dN*Ko?hY55+F_tns{`;(D>~h&dggY*P znFOq<`qlY)0}rgZey6Rox0;kr2JGv4*YmzDe3Ey?+X{@i8ym&-b?B;2onJyS`RqP; zuU^J>$%QnZw5z(F^X#B5D8iy5%ukg*2y~QFEs9KNd`MwpR!Z$h@_FCYU7_Oqti;{r zL5Fu;dxGDy+%%dr0s-Jm{*DJ_Z22;hac`kX&cYg32*E3q>rNYv=ne@-FXX##pg^?2 z!rcb6&|KCm53>2fAi3EccHS%{So_}RRFatF^BGq~T}nXwZg zZVS+RxgJaMmM^Bf%5bMcA+=C{ZB6pmOpaI`Hh-?NILVBJT=Oj9&8E@;WdZ6ROxOOE9AJb z#3(4dS5s{ZtJWbFbI=SR(PA_=C-;no5x)T2cqm7V=mm|Li|9Z?yjy$Z+wAO|*1#Xg zRL)E@+P|%6W4W0p;D&Zudiy1n(#;b&xgVLm%BrS{9t+E0=A`li*J3{&u0j!u7vE4V z@-*bm3JFuKRt8mZzMp4?UCz9inc`7iu~^NWjjyh0V_yC~vPW&(IjMQ7TZtO9WEO!c zHndnT&UtHGgZ&-S2N(QvF~vlNMD#lbdjJJNdWBdBlwzvXEO?tm$=)DNv=6eCyZ#ag zOKdxvL{t|Yikf#NH_FKPsf{bdqv!qh;+N6PXrpR+I4S#^&ULdn)I_I8`8aq4>+&fV z&y9@JTYDaG^JB+zlgSp0-Ue}Vg0S+kTzI6QoK_t+cUY6=_3jMC+;752(ShcLxi|1t z3V4D%#u?R;wb&At0=4B06|uxZuSXT%@Ts629W7?`yiDll^5b#OTy9Cibs7pjK~_{% zmp8$GLYA6b8t5Xfqw;l1b0OC4F&PHj_xHY^;h1)k0+FstlS5O>_i6pvKk{DuXNVmL zQrw)vG8gm#JXwebU+X-){mOs>JT6)21_!{!bxBLx1 zE!(xRmn&cz=0u+d^S+0RYSOjp9-AJc2DUY#zjedn#@#iDws`7qy`1wz)7agZDRo-9 zNlG>*a@O|DepHLDDzf{Fh>60?EU6Wk&xT9b%RI5yrpmCg;2qeEk34>jBq<#%q-L>9 zah`gjW^Ad+D3!PIiPL?SzovNeVPkS?#6-5FXJsjDluv2zcyG$uMM%@BgSN3?kjhc* zphzm7;cs+qrwb&f3FkZl0rgRm_U(glc;6{JH5dBFni$slX_ zVS;nv82seJ2o!qy4i7m+?-9iBkih5 zSXi0hi)5=FF)HDVDptxSM5w;wX))}E-zI8*;Jz)@t7;y+mt(j&{ z?Pza3=)Ux(++QI)*z(BE%|Ub3Q9~x9p(h^ch*Ss@&P+^2NJ#LqY)HsyUX%q~;;9Lr!$q(q};LV1WCR%Dd|+)Ik}9S7Yw`rJ{SkmKZe@ zss=L*0NP-@@g0;q577vOf8FRQgm|rw^ar}B83vmZayKu8zimEQAOj?7=oTaB<3&dT zNvD(Eujh5Pd>t`XKlUfd;inYqJO_i~jXT6DGKntRt*1E;0Mb*!Rp)~dKCo-qJDn>W z?(^HL&=m#8{9}s0zuAt$nU<2y+lQMN+MHSk!ihulNV7kTzh{-;bM(!c>vhUbe5~R* zd6R7J;w%>$!u#6M&WVX%Ra&DPMU@Gyq~4OV@J;klXL_c#cHZ`LtP7)LDi^DJyug_OA3M)$yKrm9m9l@{Fa zA0HN!^g#=psK%seDKB=u<54+=Y1L83?_3|W;jl9(Su9=6+Qh_igUqczSHgg9YnD3> z;k_?CY{|z~6p>mo{;6YykIYMERt%wOx{7Q6S$g%qcRR8fNG;!?_dS4)m|0@L@%gr7 zV)idIxnU#Q2B)UgaD`~v#21Sd36?&^=18R-{{DmJdYsH0uT1RMRz+BMv?tlt*^#zn zizY6g5D~#6-QATA*D`!pt#n%*#&=r}W5(L>{hdGMV2TdSZASc30C zlmb(Ycz>SZkU0?U&&!ge^tUGZH*K4lER_^iq>^HIsRd;6^duT-L}J0iy;)it2#$(W zDrFP7%s0$HfX9hTRM{<3YN0VF<^7{Jppw)R(X6Ddc)1MNN2zcLm_X zn1N^ejUDUI!5sf{n%=p+EY>%#D&90QQMjwN2rwm25yo<){M>bW)8YSj)3LIOoAqVN zy@x>($uxxHPW46GJ=}h;4)lz^ugGW^)wpdX~^k1Rxh)`?S{K{NK^wME}9wyABrh$ow)03IFXVt1=L|ojj`iIwlt2@H6E6Fm#cjZdK}&O;`rRJqo7*dhtn*CR?qVJ($Ggt9x3;l1 zmsYrPgWbZavv%RyO7LOkuvg;Gpp9V&+FId!&~N&aQ!9qwr!&eQVkWqXoG7>}&1t(B z_*DvsQs`WdEsBP{h>LQVmKy8CzJZAH@_pT+BF< z#g4O!rWv$}uzt8to0H!fK{}+#N%qqA+4?(TW!qgYtDl46pYxoJS2wWp-gUY9M++J` zKCk2FC1Auc{yFt0>r}H<1j`YV2{%yY_I&-HDVZ0fWX4nqcxW(U%0Rm4Z*N%DZcEyC zc1Zs)6&_9jEIic>oBu?>B!9;if;P@7M9bd>I_0&U5nfQ!qs={KL;@_X_pa@Wk90Wf z;GK7wE0u!7SA5{y*IpT)2W+}Q!27SY)W>{_>>s$42G#ZE&ymZnd(gU{?z3njGmqexmH-`~6#@!iRgKD`*GY@d zmnippqMa)S=g|=Mic~YNJDRTf$f5zva)Y`Ve!4CRL3S7q*t3J)O-KSTjl$d8&77dj zl4RUu$&67iG|j7@&YPck9*wX+ zZ#k%mLixjO(6?enzb|ZhgcY8s<(s~ArFTMLL4&^YG0aZ=Ms5Ghu+=%-d$nI7(WtA> z?6@s4db+`BqDt`O7LqJK>mr!m-yT3Na-f6d!s1PhV@zLr@}ymqeLe5{SJ+gWr>abY z^e(Y(eCYD1kT-Zg_5O3pE|8jbhRj}7DxeRatEqa(R105B6T6$Q;m&*-7xu!B0QddO zpr`~cvEvm=zv;oQHd9?I9(b8^cOL#(&!J8dH}@(W#IL8C#=y!fr?rNhl^S_!-h45I zU?3IlQp^B|#5F43JcJmB41NF$0w|c62J~Bt=kH-nRM}Ai(m6uRT6{dAj^}>6^@=9{ zTOe1a{Q2`|c2}+Qb|`Qofj7q|iiPt8I>oYG)XDp|_g!;v;#Rfp2EqS}jRLq^stI+! zG;o00{~Cx0N@rhuMVvYh+qkwwFf!OJ+z8xlL~iKFdmx=p>PRR~2(o(7bp=;CWuoEY z>f6)K%39tYchC+bO*1_paFP>Q!{0|6VB}YcXn!oW=cy2qLT?e}_LBpn0zx$^NPPU9 z;_(ER2vWKjYI4lfUJbsBIhJS`4+Ic+g_?C9?`)@CCKoC+-27;X-}!K-|pG`J?}Qx_48>2)DLMTB|n(D!XqNY z0Hb>NiwHuJ`$kSzZ|{K*3puAhkEguAm1CE{Yv7620`vf*;~RzvFF!`Ve~;yF(&8aC zw_2T^4tp}^!5m3kdR2d#IDZKbbO4p-H8nMlPG%f1EG#WYPrwQ-66@-f*gg3ENo|N{ zL99I1eds_MkpcqQD3%aHZL58cAZYXz5o=2alH`}0kMjJAk?cSz*#3Y($2UKpf#QPH z52#g)!IDB+W@ZWSTWxU&7gjAHSL!_FebDV$MNM7E!sEQ9z#*ojq+~lRMvzl9DM=QO z6i??p#;KtQcXe@{wS2PXqCUR0s(ZoWZ2^;O@rEO}rJkyzeIe7MP;@$c6}jE&<11s; z#Yo#uqwX_HrXi2KD8tJiBC+AaeQDQ8alUh(?XvUv0_W?m!g>oGei+#)X1(}TF30=w z5Hz^$Ju7Eqp}kh5S%g zl9=+&`yFXML94Frl7){_<%VFS-@d*t-M^iBb4kN)Gq+VD4>p_s&Wyu+IB7eM9Y+(m z4>R}23%n2&E3E{b3#gdio$w=Se~w3@85URALUrN5vF)s;S@Jtp0ym0SNoII)YJko1THZJt`0xizrduyKBHkGToQj~&~)!>W@hz>YDQ;1SX>F# zlNL7$Sp1~LqkPN)bhw_tK8fZ_G%x?v;fU*Y`8e71$;*!|b)270-Ho3_pPeqe#bB|S z<7Feo@(=*4MPh3g$vB918*jX~W^2{kyB{mnDT(;`UW>bXotcOdX_`-!<ea#ABO-pSU1!AB+HVFXCt!wW4jEJMy}_ya{vf4^%L>>r zpJipw)HN33GW+Ngou&~ADd4#NX+h`A(#C(BImWs z`_aL#KpfkHq~-8F=H!>3M^4-Vxh63EV94ENU2rgN`J2pjtC1x2+YP{BgsbP6}f@|dyOk#xvvEVZHu|y z>$8~!*c=SH+5r;tr$0$u-+OSEa zXkJ~FtTeX(&y{$M1>xr|4ed!4#)Muu-w!S}rlUk}oT6nS#6 zPtSxuLEU_xIrGIqn~H;T>q1xcv_a#V*qJWS8;ZVy;WS9c`|K^{h%jedEXL;OO3N9e z=rH4Tr2q)`bNF43h#$Ck|KEItN2B>{k`oVzaeU5t^*sv@G!4$ZF}|=isDu44OZ3zzKMp;CquyKKQkiq&|ApkY zORymec$w^>Nk`~I{<5ehKt)qXVhv3DguxCO!l7TdZ$E=DZcgIsko((+8L&aRd`8Of zpuZg~SvJVR+aBkzbmxa`?mmcVnTVIb#7UK_cU{}ah$1&PcZ>Nmxf=SbGOdQC1RU)ONq<&hy;=;Q4fPwX(w-pY11k`BT&4NmIl|wJEGkO1a z7CTltjggnnYV(8(3rd<-zr3>js)npc8XYKAGWpd0a{n23oY$Q>p27283=qiP=SLJj zyI_o444-ih?f=9T#$q-cN*2srCydHLur9C${8e5hVOJMSDu*;o=AdEgX(;)DA%?;A zlo9Su0cufu(_{(&0?e6^DgE+4aiVU0@H6C_a(@!I6a6TH?(G{48QH&3Fe8ml7$#v% zTqIUjW!cs2>5;Q%%~_flg)w2XWYY#ffa%1BnyYHwumas`rz=Z0vi|?@OpVd%?$4rREUxUB4+=VsG^zxZH zR%=a9MxQ*Ps>+0O$@_EnBE9%t=X=3#gA691vEVpLV^xQfsfpU z!nuQKkO-xGi1I4)Wk3`WWsCFTZZ?aShnKL;{@h1E&$aJwEd2id&+q0=d znNc#0u6=Ooa5H1@z7lD%{3HhWm* z*aBfPEhhV@m&!+mv^5oeCY+#BzACa2H(S^CsA!5Fs6b#6uTu}stqH_HtbG)=dl4jf z*Llil)Yrlq3(PI0`b}7BU?Sr0m&T%k`KOI$X!KFT#f~ylF;L-!(zAG;+D6eF03o3v zXy?!ec|f@atF7YU8<~6OuYeguYbahMsd>zxBC8JP#a8LIS7?_?TZ&S~M`{XPEN7{D zg@n29pnb)T;{AhoygTosBx9fSDu1!-*8;E;QYe1Cyv~E!TprI~wfuE6csE8}F9f8Z zn*Q;ads?g4GY*4v=#f)7St+?h4H5fN1E!VySb01aN+-Ak8^FYDYMy;Z$!*qYJm)eb zSZn^PGdFNuqw*f*a2fBq*lmo8;y>^5&fV&u6{k6;wv#6L+U*L~KpE)q%vD*7rZJ+= zXnoW$wbs(V0mU@tyLN(i(){Hr2gI{#bhAaf%F=SMYwug4wJ=!k_PCD0$=B1oIiBP<>Xhr+}h2_z)@3gAYxZw@_BlJ>oR4!A$z$tYB}j2r@mOF*7ss znC2Q{5Z2bL)htKBIxW;ZJ;|uwpo2$!B#RuZ6znh>{%)Qo)e{@|W!O0-TzSbSG4`1- z!@O8kp;-0=>iS%B+OwKpAEd!vPRk&N52x*T!aDfBG^#_$A|EGwe24qe!NKA2FWtx5 z$frxe6xL))+1o%DZod*OT+AceF;nMOYVQ)gU*-({Daz;1aTFC5ojcJc(Up_vo{-R$ zNH@<;@Fs_`k}fSV4A8f#-p_1~C;!st|JWv!Sy7?3AI(NF@C2B;y!npH+aE=MFd z@gLPfWS6bx^_Mp3B~z=8?XS>a-3iux3JaT}E{Nu%E5*xF#D?=sanDWL7sF+ycj2Z6 z7YYz^_s&bKH0p|R@ygj1;U6Orf(qTww#WpdZnUmEV*LIQ!Mj~&wS|2f=jv(3sDtNz zYfL@j*1d3SJpgMk=oR9JTQ>VeK7AG7y=`k3hre+$+e0Z~C(-QwX3oZ=Yo=#=r(v?{ z>7ZK1$c>fRO8i@@3f0=4ePcT==Qz^l9pveGer62I8O_OLw-7;lAO!FE!}Sd5jtih5 zobWU1dOymC({b8qY<{z-vCx8HAVE)q(Q^4q5J^exj>X!`epw62b9S)A5S55iq5cW1 zQVuBx_3>z1pHk~H7 zJ(%K6-09by?fmXXz`{~7sLCUf$WrH{(x4BxOeIBT*5?oiJ}x52;3;be+{$+_=IyxT zgk?>^A~qx@%}Q&>(!AOdwiE zFJ>cwPIqpUm$cdUu-)~oAW<=M)dDOJC02N-g3gS5xGZw?QgAw6X);yw`k^7OTJ12I z_R9_3C*jr@a|7-17ln zGh6n);9lnG_RHaMT^C%dh$?Ks+UeBbY$~+^HtKKq=n2yyGrU+|PH^OTzf|PD$?ukp z7P$H?pPRP((!0(M;n{KOr%zu+50;YB*+RrB98FMo{ot3@LUV$%Kac+s(v*dpg^&hF z*$|6a!32t+RaRu6g%tisEtSdvpRw~3S1Q|?`=ajvk|&>4lKlptIT2F>E0`Rjd|A=K z`sc=p;Qnv)sTP{&{VURC3+RQcij{m=9l5~f(Z zQpt)Iet#MX?@Quf6$U$H+OYb$E=O=|k#}}<FK=_{dYMez5!QhbM;^kB7%Dv*pH-(Y zRu}(X)BTMvZdiL#Xi5p512X=ddLJbTth$Q=bvX*PoC_HYt4t=2BXU^3yf_AnN4JXzcia ztxPUi0hR+cm5rWRkf@cdTbLZVHq5%U}!I3JI1H*a*~@HhZaS5c z6zNuw?k*_>=@#kk?kbc0Zy0 zcKC)oAA7J6molBNAxfNdg$DMfuj6vt*FQILcRg;M%uo#TI8&3k8ksyl?CtC*91dffA4q=OL8>uH?3KZ@ z=9?<46#VG4+`=?BL$wEH>0Pwq5{tSo?ZWZMLb|8*YuA$;(AolJanSsb_29lUdyEe% z!tdQsGL`TIo{jH+=QDHUIw#&5r6g@Ce>0e605_f4nh)D=oUnZ(>^0pd!*Y8pUU&`= zXI4h!g{nHzoSLGOz9)NJnw;q9LteTJ7{eXzRtziy{($PUyfF*nF=a$_(n8S|4fgT& zRR{e!3DI~cO6jLsQ5cItzV(d_{mIgI+uSzUcx(kK@(wv)-#=Vv-;QWk6Z2t6H_!Y2 zDvD%E^h-YESdo1Lm6O=`#76;b zs>mQ<)$ssKS-ybBl!KgBOx9LgZ@k*nm~SaSx1yFCk5`GoSt|42Kaq9A07=oT&YAf{ zanj8P_dZRZq09Js4-1oC66E@jb!u_D$Fg6nv|e5!B0n{(qdC4f7K3^A;vA9e!)xT$ zkdJ%q#Uj8>m3i#+83h(-{k|E50!nZ93> zraQ&-6La}Fg-q_f;0CUnCuE$g?Zqw0RYfw?59{XN&*|6?iFJ!eOm{~!jy;C8c)XKj zG}{$cvo9QK`Qa7+a{PRWuFwhVXMX;nENT20vzFUMHBn*#n`dKGu>SkVt)~cj1207@ z-p9EAg6V)SeCjbySs9OX`LPj=!0uuS__eRE3o4)bBWVzqGono_)(5bcx_R=jK!PwN z1H;;A2X55YXw|e*NA#%%Sr}DrMuL)q(3SN;?PBdzW~f38Pc8hj2&{cLO@I13qpa3< zZ(|+>^H&IzzmdO|tymL&EXc_4)2T%z{rHzckT{vfyO3__4*wC&{Dm4QOF;q+ z>{au4A1|G2EoC>HngQLgzN>yw-~*PcCSHpaG_xu37Rk!VPBJy9%BYcB}s|)F25;&@JKkKVShK2 z4cQZUA<<6oMmlOba-1XTK?aP5Y2F*vaV~w5&WM-R`Vhgq9so}=F%Rk$Ra7>g1?@Lq ze{!j(YJ?C*#BPDRR|e4Z$7;`)gZ9dZ5V|56r`lu*wn-YO$=*zi)j;zq@QP)Z#l*o- zUt6UBq1!uT>}iuaRk>yg+eExs1(KsR#%H)H1s0p9<_yNYv`Y41g``bYmmAQJ~GjYv#UKUYkm0xN{9Kb8HU^azH_Mv zZEG;dIsUz4`_Mb)j=+sA%r$-mdQpTpUMC;btcY!hfO#isMrZKlS`$vF@wM{JO>jVlBDV_D~BK!q>gK574CgDt}l-|==(t+?O2 z3=CyUy3WUlMO)fWj+rrdczE*Z==(N17mHaZ6ckk2<)kZktWDi_=2(xRQJ~o6$+$^t zQml57fILVv+gGzc&Q7w<%h<+LaP8Ce2lmb%Z)_TVs@}`h;-aKvVPv%1`TU8PWrp1p zja?i~y!jHcCfT}M%oml;_Z$1eP%{WiQ2`3?H^@WtYn~+oSZ6?oH*hw-@YzsS<*0M9L6*Xa0j@v{>gA zY6f{B^U2VmfyBu`&bM95-yGq-FT>5%I0W0e3R1DRlQ#G#<6AK)|A4k@dl`^pUw|5) zB5OG|BD^hoBx|7r-fy?}6gusa4okDD&`H0 ztfwo_JP3TXKl6IO#uhTWNJpAJ>2`Sfp*hp69!v0Q``50iy?&okYbPcDSCY!(zFN1K z`6-na)YyW<))ST1UP_JmmWAqq2r7lrvfG@o@L&f9S%M-m)zFCe2%6VpvmZ{Xw%biV z0BpTayWckCup^3*>XRT&7rZ+eWoiKZDDVlp;iP!?=@rhzR}+_)^@+@~Nl%S_}s zPB+~nu+a@qPaV1#$2UTi0Hbb`MA}${jE;nD1>zItPC=1B)~}BSYJy%H^cl;}hG)g@ zNH$uo?#n!4>TsoOb#P)HF5!}+n*N~Gw!1BLA_`NK5>@fSUSA(YNS?$#bJMDNCb0Dk zV2kJJ0a&7EgeM4A5}|y`%F0kA!&281Q);-F1f%8YV)xG=*D=!+=&luy!IPi$4whNf zvQfuGG}hI;DVr1CBV6pP@z1^LpVxL*A`Rz`d|}K5!-XL7{+aeBn4D=}`@8xkTO-LGsR%6zC}&kUFVXHG1+?v5r0;UC zohA}k%rI!g*YXGbayeZ8j9$+=_Vg`uVze){Q&0<&V3Oy-g9bwew#sn^v#_OxBwRW= zey{ZBg2HQoX|xAIjv|`JCT25_*TDd9=~`;v*q0FaS?WP9K7_Ex+s2;1es{HLmZp}b zQROwbs~^^KiQ7xWd<}T)$X}tC==F;s{4`X>~y1x9W@Sw)21!DJ|9V5>`}e|`9ToObVQfeXzGdH$m;5QexQqwx0A{% zlDO%lM~Ge%?3DaY-kshsW_G_iRp#5}F$+B>^zAPGJ*y@#O!tNpML*#MOi@WxLY??@ zwM9W`XR#mXAblZGFf`2WR(I2sTd-TlpXW5@Ulw(Eq z>&K69fYWJVD{C(gtp7TZQ(?1{Hd=F(U9RAMTdEU2(Gp!O<@I@Cypgj1o!n#G@GXvr z{P_g!q>je=P8dtcK+Au+r6k{>1Aq1d(Z&fwT1~DqnNw=YwLi_;`G>Ti8hq8v<9{Oo zw;@bOhJ4)b|6OcvWl-?Kr$YNaTgYl1z^&>hJ7O=Uq4(;ocsOy#{+v`P6~m$nc`IQ6St|W9jU|LXT>BGvIJkXeK5S`Ol+Lr8RNG~ zNaU;g#-FRNf591f#Ioj;fdr7FgL=%sC@tk0Axn`_!c*!Gr!^}T8PXEl-Q^XDTl7XSc9b{KdkP}QMG|w!I|1!7*r0U_W+2g^6NGt6jp9liE8zkPX6Amr2_KOU3 z8Z#`*g$6eqckx6b2Dk(4zHo=L^#s}jx-26z`3#OIOgiEs@Qzy$(xwC4;Bz5sU^?{+)dxCl#>1-$kb6wbB$W~CP|CfK)4jQH~ z%b)%YQ`X^uvA=?|R?+$ZI_;(JyO3jE(uX@7%xmM$wYn=~$36ig{@iqu5rYvUeCUsoTv$9-%+7NTc_YX>fXE?NiZfh~|bg-~}!CzMxE=GWLos5L&T z?5Qi(bF3nmbMP9+&&!fm<#FOD&Pae16Wh0vv|$7MtD9Hm?Fo;c3)$G=pAoy9f7@(t z1OVU;Bf<-|wzlLyOkCvqBh~|8G>A8w91v}l2c4pwtmaEfZsBt;(J8kr`qQM4lAfbs zM$qz+yNr0!C1T5fj$e%qytcApki?$~?o`T62}=Th#TkR#fnE6+t8WztA23m*f9CM4 zzR%L1p2Q4%b=dq|i|Y`gq(XL>C!cJN=FPc9Pv^Xj7M(!d28k`3KTVZXte#zu=-yIq z9f+T?6O$#uvziW4XROY!E^$cAONd16FokY3aS7Ok8dH&5rc+(LXH?x>5QqQH2ZwIWx&z{Lmy`02ALIe#LnZQ(erX8p8-F7oZ59Jhm zAk`#;?anKmTqe(>Lh#C>ul7@VBW(jM=;cq;?w0o`^%a%5W|ry7E+&SDr~Y6=$;=96 z;`{Sz*Yox$W$%QCM+KX^XTre1;4%F0a0#oljLdO8^UfCG(1I!}ueMoXn?fDn0wC4q z5LJg6#IUNt`96L~tjs`7n-mS}sGuM;ttX{*+fTMFjDne4+ z1z2d_4rji4JdYja510ktf@+)dYJ|jYgLk*cEuJtD8F@I{nztV?%IZbvY`x*vCTIr$ zld)3Ng%#R9eDrtR^?z?4_9xd)H0byz{04Dw^rsRW_Kx5u87K|I!EnYEBshc#*%>yX zNc10#^%Vx;l^zHFm~L!v*fFfH@GV>1XLeKdb#m7y^^#_;YYmk-z)BmaQQ(eG zPA;~5zKPm3Z|y`)*y(IX6EMdhIJ+J*|vs$}Y} zI0m^IisR$dbtx+;Wuiq4P}bE^a`k5h*j1h;vjc7_q2}5L2*AG{=9MH)4Px@Xdx{}M zjM+!%|U8b>=in#YzS1Zu~od2$70Wz?af^?#Gk)7DVxl zGi8}(EoJ{hmL{tc1618EV+7_tvMR#6+u98xRne4&q-TdPGBz=xR>(5=r@88-BeYJBt z-b^FTG?=qoXx83qoy?IZtD=hM>oZPI11L>^AT*Er!#OJ&2`@Zm!#*Gv&?cgE#r3YN zaLrWkXEa2d&~YomVjGBK&+(23n2(#Gll*$P%HI{UJDannzC1c{(^%BwS|QFMF7BuA zqP<=Bqa#WCQOE_`xaOMsUUNVOw?QzVGNq)UX`hewA8l*XvcjP{KnMMnxdRLj@DWgO z`pXK9E5*n;}3Zi2rn=P(7nscO)L?JroT5 z;ZW>W>fj_t2!f8p454eFBuWb9FT4&-eRez#tNJY($+CHKBUG!Y28K~Cl~G5fSiBrm z%qZ!18o!IIG?r8>pLg24k(`+BjG$5$8J~R0nZYNmUw0@5v$v=96weBE&$hVM1PU>J zN*|CB#EsoB6R!cY7s3}97s`K06k&TLmS_^(zhoQC-%E}TBgxLIx`S{A{?-!Bf2Nir z1G}N(TC!!n{sF=pn4(zX5*UUY%H>WYPI1gQ;cjQqR*q(p!UnVFYGG#N9?T8sm>uRH zFW#D{;EBj5w7?%V^ORLtma;wM|jo&wEO`6$;xK$YANPsKD6yN*>xO8e zqBI=@8+|76wgyvAul5s3!(xsaDCjvE3PlIWZr%jqf3>V>5d35DmR2j=ZkghXurB;> zr}|O+mh0crH80o#37z()vl5LV6BF&cLqzuesh3S>^LD(+hu>ZG1;)>r8@S;wPl9YaSo{JF=c2 z{EFwRv|*ZxP#lk~$R3D6ilbJ2qwg>l?BZBCqoeP>S%Pdd5mffstT(1Yt4AwSj_HN9 zKDMg8i*5l$&`e!yxHFZCQ(M4+9}O@YFWE~H??IY`-$EA?2=@QNlaY%eSN5BdrL&vW zoAB6q;k_$S(fYa^i&Fm&p)t^2__?LBNH?iowYKrnXt#5@= zd(70Rng^GzkCOX#0q&~|z*gF=y#%J}yt(~1uiSRaI=)Cw0;Q#Ab^AH530rx{uUa7Q z`EqH-s->-dCN3Q zs2yyu(+&o4wJetCiaClC{r)O1dszwBjY*LByJ^D0FDP)nz$uTQz3X~F$W z`+*ToU$i)}oljH2b!Q*P4QJ+X4d1@7H=gj!lkwte%R5 zh`=3S!{)rR6yYBhA_9i#gOfRkh@8G&`U>%#1bek;r(RWuDufQ?RF!I@4~v50;Xn{q z$_KmgicJ>|CO{kpj`bZNP8HkW;DZ>fo9$D!+5Mt?Dw3IMSmg38MU}~ZJ*2iZQoB<>6pvLvI z-KQC;zHyx{`C1S4t2r1zHm061l5oL_S)ZyfnsGWXWr|tWV)~4FId{|Area$C#?O9K z)Sjto6!`qf1-zVfP-@}Ec@voC>+iU-EXO}e2N8Rs>Q<{`ngIG$b{W$9fE?so!$Gr| z(9k8GZNj^SjP)isG+spUw?rx&_hbT&6B&N+4#tmB-3C#fK%T4MN|Y zH#^~1Naa_l%{uiaBQ)2biC5!S$fdt<& zizbtH$Y`0qgtFD>x(NwmcwsciK4{92MS50V`6F~%O2iDBA zQlUN}r@~%T58@1ZzUGx3ujBks8?P8Wf*fHtiG)_{i2bH6^WOpXv7mZL>?V|N|8?<( zM%0l}e_{ZjBb{#EU$qlij_@EV7;v);Po?-b3lPPgjQw|B(ysb`4CNMZSXFvnlsnzI z3U5{@Ddqt(zD+((d1W?!4IxQbQV30(+|<6DZtgIu_?m+*F;1{Pk=T!7NrJh@gnaXx zI5U$rfHEkb;8`D8Ki*wxtcNpYIz!S;oH=*_7%I6Fi~V1);65>?@h-4h9|jEc!Xw>uhUdMXz5ds@#ASLEw$D17Z~&aBr&mwIj5rre5c_nByu zc{giq4}Mh&xtoX1iWAob5Rq|Oa|#K#IsIM<;R|P^DHe?B^=N6frJ>9>nh}io(fe4V zrOoEXd*-9cwfUbXrVz|y0B&^ZIb$UB`?BNQagMVh#_IJ+%tYQ}ny@ZaE;dv!{&5o4 zNUC(`XIcu<vhSh*Lo$1T>bFT! z_aa7VoPok#WC>PjY|QV$!yLQah$mq=hz11V?iHY11wca$S5U#;7?r6a`y{WOMQHzcr1hZ75{eZb=_j04?n{q--uSh#5A*sLf zWpTrPc~EZ1Llkl5W%y_AulV0|M6S%uiIlLlzxj#VOsRnzQ9g?1TY#jIoigAx?=cb*Xb@IJ>QU7jAV!Cmb{W5_iyC@!{=3knc6mOxCCHYnQz3jT>rhhKLIZT zgH#CpL}0~^Xkt{=#d`yTJcn&LY)ifOlq;QtU(DEF%Z`_>#}|c(0QP_n6Y+;0N~z0h zwcnu);l(aos{eHb6hjnRm*-di{j^0Vm1&Ohg)6$9qSen!lE;8n8O=%la-@TH zM?2AV^~1A+%HH>z6YUSsCB7Gimf!g!Oje4;QY=ZnV7#A=e6B=xWXTEo#`H^e ze+scft=s(a*&Mp?)-JUab__b^eScN}&~A|LHiQHsK8zIxJNgeD`&t2V3k4%&p0qFh znZddF4n^U!A~b6sZ=&12rKJDSG2S*JggOo3!=o;r7wYgg(}B8&m)+W?!vZr;m#iM} ziIB3sGb4n1^9chpo0~Z(p?s8IQBkoBG+WoUnIOzX0R=_1Gv(@0UZVu~%#~x|nGg4J z@l5(UUve?*QNUro>p7t=-hV^(mE=_xY2lc=uNOPw-XL{r+y%7Hpu2f^zpoC9WekNG zFTP*z2c%cf9qi=qU*HPO*Jvr%<&t=p04Ys3<_ois03XN(3_X8S8EcY8|*uH5!M*uCY~7E+)S871lWuRjmF20rNI5_F-*F@$>oir7oA`+Kk$flBt^~ z9XMxz%o)qU?uB3!N4xD__s+0S6IBd0FmdQkn$ zP?QfV+J~elH~(&wDZ&?NuCmi;h3u-BY)9L$H2al!%#M!6z;v)0`_Cn8Ef>{`mr0{VeliXL3fN*`W~&=0+hpsb%Lp!CM;32y_`sf zHI$o+@!zE%xfobTsN}5jJVKiqcU2o(JapCiQld^mVcG^l>>3)ZIE%Z@^znP2%(*sE zk=9mpn}sfW%X8|16<6HW5To}?@q z-(8(NWK#i1G}1Zz3l5kSOTQ3VMdD6_2}#uk=FfCAay`;OBi)cgbNWEL9S0>=vOc?XIRc@Pg|ZCbLFklIJ%#_5LJ>xi>uqBeM81YEJ>K* z!>SC>LXL%k%9=P>U&sKg@1tUO0--A5Hk{%jWeqG*coHJ)kiegiTD|L@Zi<9wrSOLG zjmUL-nhkq!BxK0cu6P|Ak1iexgDMlsIG+A^Hwhhc&7Ryhak%eL5YD%qSo-F{UbQjn zXPrMf1*arKD+K)CyipIDGCO-WRf3zFU$J+LmH&*L0;S|ppNRQ?vXhq%`H3+=3LcJ+ zkG?OgFAgiRf7F4$`C0tZd2uCV+iBKk(-15tsU{9_jzM5Zm+;|AnobG7GN}(6FMzHj zbR5W)JEhMRJ~R0k>=@v>o$e}pf7K+`TG^|*Xh;1}5D>-q5U6pCgNnMJLWa1)HSxJU zf;K$Z8q@A3V7)KJ`$FrMORKCL_YuY-G{P|A!RA`=BXvb;YioNfhm$jHR$TY+!NW(t z3V(`+W`FufPmoX<1vm)b9WJ*qcQgXN5}Wlnqk4Yka73SBEx4`-eZPm^pd>B~_Jl^= zb7+*v_$FzxEygSRcMV4#;e)$SBxu5q!8M8XUjzjv9FYebN%OGSR*j;E=l5%svK29W zS4ZJq4a|dEWtfhDHO(&*?3c8UQfrbIg93O5KXII2l<*?>1d?-NRyaGPRVS-YGgl5T zR7@MUOUq9Q?g}A+XlbCSZ}+fFjRpPK;?wP(glH-o?#jL9^^`OO({Nd?-zGdQV z!J=8C#$YXWth#eyNLw|i-k zV?lOqTp?LbR)7I*uT7-Hg|Ju1k22v|(Em&@JM;a5Q7>W0pG^9t$Rp<5e#ArO(lAH) z%{Oi)nMLp0J?nQHcsN205gD1WhR*aYMD>+2j~FoRUHTOGFWT^!rVOu0PTJYaf8|t6 z*Rko7{s*@AEdV{?n1KJglKTHvT7V44wczbvmm2D5iBW%awn4-{i~RlD)D2|Y3f{-*m_hmA&%@tE{|#lL_!1vID{H{)``y&Ryznww>PZin|+NQEG$>J2PF$eXiTSA<-qu!3RWeJtQ^{Ua6N4k zSJ!~Q8DhzDez)a#!YZ1B2hh|cRXaDx{=)?5bq4iX$s_~!JGkVqRG^kpNAs_!Eebqb z0#cOry~p!;?0vZ{@6~Mr*uF+3)?xC($SKQ1vNlSbw({{eHdsMf3b{NI$+dg4Cmg`0 zy-46UV#6z9syycXZDjrP>g?O*b+gpB8NN;)? zkF&Gf)K?l_53A{M-RjVu)IbkFfosatQwAXT>cX#>vo`i?mwa294?od z{j*KW{bAKO%5VNZQ_YlU4G0&ZL(YjSuNK6{>n(HDb9GgBhFKUUMqO z3!%Z9$Cm~5r%G%;pAOP_Gd5JU?itl6?_~Y%RG3vL)j{5v;-|GXv6SZL zE{)=aV*mV(&v0Ih3IQuSFWOGNd4+-oQT9gE%0HYgVK_8!9(}(5@Tk_Ih@1&p>x@ADak>6LiS`7U3Nym_(;3O-l8o#(IM)mE>(dZe$6o1w zL*}-&wU04~nzDATorPHTzE51sVM$$z&i?GGpv?J5$Ekjq?I}hj&~3EoQ8sJre~uJ| zkitH!*O^~{PV*-C@~@Rf#+ek$#j35fBcwU5DZ&p->FX+w79AuyQ(0n3F;_yjek#iK zv*%)N5JEMS7*LM?x6Dlr3-t)h@P8lwUql9|-M$|WfI*HGPQ5P@6eMqF3?RH|r%G2Z zM;5pm7XvQqF2DoW#u)rF;1mS4XY^+MJvbG_?;sj5swp=c+gcfxC>vRj1M3_DGDK#=_-hpmPtw}%nIC5e{_o>~y_JvQZM=(;)r#utMt}W1*1t340&HS%#=STN4bfpe|4DaRU^MwLf zp2IgDT$!y?q)Z0?Oe)s@=hsSlq5TiEsduue&5jUjV@gVEf|Cdy;or`pqE2W8QDEYK z8sg8*!Th#N&HZhGe=1Aoju%@@iUqz%n9Hg57vjQ7Ucr`Dr+?{W&_7I==W^Um+fwI+ zWpx(kFu_DFdEIRxRz=^slMI%EL+sFPfX(uQvRsBCsi`9+r6hdTbTi6Nk^PGnMcNmF z=!Xv5bY7Q#N@tnULYi=<>WA({6T77tWB>hvL=&)<++0UmI9nC%UAAPJ@sbka)V8!F zz(D-|?mc^ZK|M(7InO;1qOd;{qq7yOd+Rc7GMGS?W7}TxG2Kh;dal_yoFHM>)FE_ zq91&m%r%@;R1Y#+&^|cTa(?TKnR;Gl@;eD2Ld?4#91V+C58VZssRP<)+JXZI2!V@!B zNC#F)POKF(LEplC)>`!G!hXpT@u?ZU5LpTQsV?y83CBg0|Ca74cEtvZh9g<^e~d{v zYueO4R1Nlg5`XzN3byG!SXAM&5%PCeY zt+OmD^&yf6a81to^!v#*?R$1EOaXa@ZQIJ^e)Reub(`WQg#n#LCbqAMaX~+G@ z2=h3pWhbm>fKS`zT=n~ebJg2dbSy$6>olNiaCEg2tT2#$diKfT z5T^nYuo@VGUjLvJQVoMrQ_er23eFqb9fH|UU=mhaS_%@r5=#6vh~A4}ztY}%H9+D1 z+u;$Rhd?DC{1+Tm5}FJ>4bY3d*A)?I;2(Wu;oW=Jm6TKL$tagu*xUteKdHz2i~jYF zTlzkVegFb$;L;w!@R|KW6_?WQXy6ND_Uo`L*y9W6wE>b5=RVWp=&d-xu;RVvY^U+x z9hdCHl&fq%c&tz@_^beYgBv1jOl%Tgump8J^U)!@qaW=R`5@FQ+CSv>V8z0qIKKI0 z8$pa;^aG#b_{)J~21qOwbL`%A;LN(o5uG&b_bNBA**OH{-BeU8(h46|Ky00z7RgNn1Ah9Ukw zzcIdVsq(m4j6wrVC%j#IEg4-Sv3D)F|24U?cu34Uy{Qs<1+vVgo#c{ zmP>go`&fb-NMlZ`PUP{8nOnd$zK54IMS<&Li>STrJtdf;oniLTsmzk$d67Wj1K?D@ z?Jj9!5RE-@V=%MXYuHK9(;%kuM|yp2Ui4nT;T3-3LYeOX65sL#b!oh1Yf8(#acE;1EKTaGp%`HcAf7i)7zNNC}H$b7(t7okF{x_sr`Gsjm z@>sjfGG&T5ER66yzR15egldlO?A70hoB?0An4$GNW*)tc$CW)T^IT1f{aj|2clX29 z7E5E(pwd#sxXny3$A^pV2Mmbz-lsI0{2kjsiK<;c6QqnG`(s?5di)ufPx6vbPQD@g zBYT=u8buytE~0{o!AOoPA~K$yPU+702EpCJMx>|;ujqA<3P34Oy%kd^l)MT||B9lP z3a5gBA1>>taH<^HmE8M>SH72OfygN_CAa0njo{q3l=76Oh`j0jCan8OG?f-$%a>Y80W?E>{Q}!ImjiRys~L# z{&|8#?gayfM7~H13peQT@%tReYsygi=I8ETc2T`gkAg8gst1;8@)HV; z{D2qLOB|rs?D{jE=4mOQ7hhNX^5xuIL!CQe2G;%erz?5E*nc7Ax1fT`3tkjF39G5& zz=F5r8VE?j5<6WZTu|W%(;;ZB)eSpEt{Y&YqFvlH$KU|RDUxBB zL5I0H{&WOBt%0jZpI0zewQ!=DKizYWcdP1KC2ZelzFc`?o5AIprl$R%`tnJW7Qqyp zPs*NWvv&C~#ND|eu*9V)7T&$QRH;Ry^wmrlE*-U?IJPV2$RaA?WQziWD9{xk02FW< z65lCCDDMO?2%Zo_;zRBX}54L32I zeff3NMY~3)u{-9jr6d5$_c;}vm@jW8<+35sw{6UfLFQn4^trVBykIZ<_m*ip;S4et zdKtdMrrjXh`0eU~=@RZ3;9JpCGJlPr2p+%MEc)O0Wh8J@& z|Hz5_?MomTPJSGzKqOd3Bmslhhz1i^Hq@(@V8@I&S3l~r7uOgX_jBXiI z_9hs0f638e9txkQA^#Zg5Pmd_rMfXX^3q*19;Wi7+(Rg3tLmgw(TRETsnM%C!pwHF z?Qg_Yc`1aM3{wxG;sG+s$0CQ(j>aI9xRcj6H}E^mYuZrXUnXS~46ouyf7H95#6ZgR zDlpD^j}RNpqH2zsH%?{SYM5jvKj6vlh|Bbq>Y&SOymJ{BF2^r*!u&!-{$`;&^=S6j zNGRcaMG`W)`GTA1S)Uq)1I4E1L!H8%lG;v!UhQ&m`GFhq%?*s+$0L#04g(=K9GR*{ z6-BroZhMG=Af8jxZ@(_h2hk5wyfYdhN5b$zgL|$iTJ^0IP2F`dkT{FBjmVFhPj1t9 z0Igg74QBB1hpcu!jt!%tFF5!G4_w*^PikZpEF_L{Pu{~1H$ACh_&5iar&}`c$O5}q{7y75-d;c&Xml(= zclS&*4hD9Uj?a2p4Eh$S5IlXmEa$zK+dNXORJC-Se5XRSG;@|@6=^ip(vOOH4W64R zM{^Jljkzm>ed6(#O}rdVeyIn}mk09;#1yK6?C*SR z<2gCzWIn7PT%K*rP-a#r&eS>>v&=cKwMogpdQKL5+OF4hy^pfCj{muG!6~_x?3d`j zS%7-!Jq->+6njZ|@4lO7!Z6bd>4kpZ!VreB^&s_b>~li}Sr>2rTJ;huZrAQME~os0 zo#_eol%0EnZv7*`3)8vO3H!uMxr3i*CR9o0aX%xoM8`VZh@Va>a|pW!&d22I5|Yb} zajNV~Gd_;dxu%4fM(pmFcVZ*wg_@v^x)I3T4SWl|f$h=Cm{8sOzb)6K+&AT9O*Z8E zRiSK7)$V~c$(s_gu`M*A7?LlcAyF@VL_WI5IwFe*Ij-4Qo zS@NxOOEbSx>O*=PR~I$uBcopYD?5h)AtzC9q-U;F!sk;&)NVRaUokSaeop5(G${dd z`ixVkCt=U*u>u*QGX%dzeii4vyo z<((Jw@@j(Daw+Ll_!Upzjr#|ienk-2Cq|Eb+cE7{^(A31-8wu-Sj)Yd#bm%3nj2!h9A^`|=agUg`Vgn#~v*_BHv1?%bMK z8J~z>-FTEF!Zn>Wz&&=h%vyM)hUEPk8K`|U|CM-!a1Bjd{PWyTcLZLR0YMIo;*dx@CscW$>M@qDQ|0BYuuv3*oQ?Q>hv@v zx6WSK;41zqjM-^@$|EI+GI2_oZOP}GN;FYmpp}x?pd>x+fy>rD&tbdaKTl|D;s(+c zUj(x4KhKZ`$SpN&(=AEHH8YAECo7Y7mzAGKi>0H(`9AiOnI6sU z_z6MP9as9x5ieqcr)|FS50nC-VT_mX7hpa@hd+3$>OL2$-9V^TvSD-RjiDCTP= zH1B-#$U(h$$c|C`tyTPSdbNigU19R~|0=&2dc}hFyB`B}7rxa8`a|s4W4{|e>!DQc zg$2SjVUWY@Az;OjV+ea6`>0`mB%Nzo*2X|v#oL-1bE`5P=z`hr9(Ke(UlV)mpuZu$ zo-kKUViVu>-KA~KktN}>pTb(YrkyZWQC@v3U_HOv>KNhiU;nZTm148eOM|;JU!oO; z;l1t;4!pbn=1kySyWdNbyLSpKiwpzNzYRMTj=i-^&ZOA3Y!g2`-PYcH_|^}@zT#n= z>+U+^EX8I3`~3JN$q;);jhLghYy#^GWE-1lr&S-zcn)b71TjZ9B@ZQemAOZ+Dpr$eT@`r7NBh5c8Zcv=Mn-i*IKJa%3(wp}WB@p6B;g}}^0(;TiI*m>sk)){ zARs}x)blLP_NbKrdVNY4&hU}OTDf4lzQsxL$VFU7A@A1hJB@{q21e!06rD9(7`ky$ zPk+fu@;Pa3lG>BMUw%yizK$%g(EI-QeZj>}hQD{Z*L2`jSS*w8{VN!FE#?@dMybHA zNV!=?zeLzcUurXkw=o#Uqnai8Nd7oDCdyh= zmkHIyH{)qd_A|eFWJ2ot;n)vdPTd$Sw2!6&HQC)Fw@0P)QS8-{NyXfN2ClmZf75}> zXy9bSP8*3@j@DGl=i(wAFVH2fREB;Vpu&(~$0e z^M2q&;%VXUKk*N+45um7j1+e!iX3i`AO8MkPpW=H5z>4or&_1TYZFFnz_+K#6y1eJ zu_>4ozjI0<08SA^Pzh+H13~d47b``dMj<%?TYrYs54M|>b*GEZK=5QbJoz0OPMW&e zZE3Kd@Nl&ZI##)AhHv0(B3pT+WzC?wxiL;qyk&%i8?5F<3l#Z=lu6sV?d@R!Db%mN zxbU8(l+`Yi*g^Xx>m70JkKqB#$xT{~ibE7c-V^xbV_#UqCyY4?-Z zy8HdBvB_a98mQ99@7`HM-}UE6?A^VKV0!(;quSLzDfX#Emqf&@W$UqF4aV_llZ5?3 zFoG=}o<#6r9pNiksli=Di98jJa%7yal*@Q<9Xs)wa;RzJ7mwswy4g<5=c@+bQ&g>j zgRRVS6X9;UlJ)Bi_H(LPbCBRa;DYN|Krlgt!S8J;`yBE&6ijGtImu1dZc^=!{Jn_# zT}}k^*CQdmAZdq=nS{z4W0BXVhEa>CT1krX=qDB?aD(GLm*V0&_a{RBRtU)Hlnw?1YeB@u)knbC~R6I9SZ|?zX%?c_^EF5_$^q z!AMuQrY$48+tlF7_iPBfgTsYnbU^0bkp|lE*Novw5t&_|rVHFgcnz0WPB%=q{oJ5= z&O(UVvs^fp^NTo&qG%j^v(uz{2g+aBAaKM|;l_uW<=nUb`7=Oh%fP z!)=P59>aXT01m~b(EPCOv-0g&jPL0X&EwHV1Dy%7ef)oMsKviH^yBn!(Mz|j_FH^L zfhxW2BlnT@txpi5PZ}>vxe}a5U_u(QSrk)0Js$Az0Jmw6OA7A=IUSt4<`|cVu^FMg zr9z(0J3{-{vk%Gwa6OVaYojAqR(gN?q&!G7KY$QrQEx^^kVJnakU*NAmk@KfQ(^@M z;5?+zldJEX2OK4MA}?gR^R5_0aPX-aC#zdTP<{9o3YR=mtkrQ4onhZZ(vwL;2Cr52 zY_8+W1V^lCqZeew6LzR77lR__I`Q#eQeDEXUmzdaK-1g7t7K&z5ruC=rX!i& z9zu?#APj%*)>LO-1ajNArvAsOpaLN1ad9Rk<3BN6p?Irokpphh3(tM=Zdh!O&@WMiE@Vv!M%(fa?0R3wd@Qb`W&B(7 zkO!)AJNo|FodGh&2L@%T`u=w-Z(%$51J)XnR>%#qH z>uU+*HlXEUVPfT~=-gyWgC&ti+?4)7+Dg6WG?7M=jnTK$%9S607hI6OSoc% zM`0um1oubp$uXMY=HlO*cBi6s7b_q36IBS!l&H2WCMoTDq=Tg0=gj4iA z@TrU~f@mJNyZ(2+4+bs=M0)FS&~yMCoF_QO8>23%d!ywK$~v(3`hAL#n`phpphMf? zguSPLqkJw4{ls7=!SR-fgVUKyTevzS1CET9v*iEJ8iZyx23N?t1)PfW)BiQpC{V)RF{_3?~>I|f)WZ_R^ zN!({*S&B`(DF?{j1XZunvb%)bX7;NJnLiL0b;T6VzZb7Z#!bI0yHE2?6gAcQeEW%+ z*~Jlh{6;YSAf{cR!VnVdW-hm3d@vSlw#dv`D&x-q+2>Kc8z?~e+*HyE3qd~8^t?QZ z{`-;H`s?x5`Fs5mt$>Ezg6^(&#gAV#z-xF0m6P5bmJ%u}EN^~T%KDwLdBODd=4J6o z`R&p|G~dh6A2lzuF#iu@Zygq8*S!q`f(#)c3JM}2At9)g^Z+8#-Ko+oDIJ1<2&kmw zAkrz_ppm5>>&7}c*3WzhL`a<#nw~LW0+12U#gW%1C@3gGqeTpAwzV_r(Ce+g;Aqu8-5$TE% z1FNbjW(_ssK5nnRJM0p8=`d4r>?dLgzgi^f){}$^QT7N=dN6=dHq6h@Ac^|3e)Tro zKy7gRv7dJ2e)v{jV1?a}Js8M&Z-c4DbcID=WgLPHfMh@fRCUBq^aP22b8fb3VaQ)$ zgnZf;qR2s07gg}|!reX!^^Rm8E81=z&MJ5xNSHy1FJ{QD9Ws%uk?bWkxo2qxEp3wQ zQ7c|dRb2hKy*Bg>yW877$}*iXp>Ib%(qQO3jk#_uAiLM#QIbQyV?&kpnS1GI`_Jpw z;;O`}T1@IWe^NuRl>tp5`96m4M*`6rgk=)0!Pa%!J07qOv!Q8g;^53xD6k{G*}(9G(C1*dx151ed$v&k4NO;Sw4JNvZ(s-8-;eMPWKEHh7Zo z?TJAF+#m}vrFAn_J` zfL20nsSsA8ziUE{%W__cT#UOkXA4qTs~9|5Qob;HgV&d1TWm^bmpK&hM7+-+{`GA% zIG+QCykVz2f{NpVO~L;3dmithsO79Hc=Bd85ko^p4~tP?N`5RN;-Vl@u|v7^*7y5J z!#iI6dnH<*uSqDf|GIzuKP;>Fl4U)aSN)wSYenX*peU_UPy(H&Ny#6kI(mm==-t`l z{wD8OZzzVPuO9Z=<`*D7K_8OCNFmkG84U!Fo011m2-ym=)KoRs`*Vb+>)4+5gwLQ# z(e73)v0`I_Q3*nq>K@~VgyVRT6U&Gil>2pjC3aFx<568b{rb2egPNo|p8{pfUccu$vMt!e+4Xw4^1pE+f^Z8|KM4=$|T13k(r^#X1Ce(n!7|4RPPx0&R#lkcODrlZ-ONepaL* zqNTVV^K{r27bHLc`z%)QD%-s>df&5!$#k9K{oG)YOyoK9SfG#zj^O&SlzJeXTkB7+ zA2p~J*-E70QYXiSIQp)=Wqw{sB9ypvR6j49E}!DpWG)N^oY`)#F)CkY;Y`6-fgzf=55* zBu$I<0o^mZ@XfEK&A?1SxpE&$mW7%lt)n$bABE`js$f%%liBo9{x{$`cnY2!L!l_` z8a8WFuf}}A{6U9uwa6Nwd8H*L8+Lw|*+Q`NLke8S>;I?`QE?=8`^it{ZSrTnH>`ba zI(#oX!8iKt(G|Ie%YzRL6E3EBPahBVgQ61d^S@)`9*1vkxtd1|2xmesHfg9zjU)IVmvG7hT9VsXW4EQ_dH;wna?9~u>pr(`FgW{TWXw(B&+%?ys9!&pm+tfq z*2(jkVp)yq3}QR8@x4<@!GV(u(aY@w@wvbdbK^N`&pt7Lr_TzJ1}J|m&H1<(5#02=`FQ?vV*KoOIu64#ji`okvk!y zHR<{vRjp))XCtg7p4U!VYlwzJlEdBft4{LhN0z=h2P0)2X258K-;6(Nlz{CtTp8i? z`Yx(T>{BG$b3KFnWap#aa8CK=*3^)vEi&f2FhC}8$PbILN9pYq{P2VmER8eSk={*! z>M{DK{aa**IsyI^Ua*^?i+t;c0k{>>!-t(HicCBE=u3xsu|zo8{39`#jGxjwSWTHl zUdSjS2a^9(3^MMBzxOv%Vd|(k7s+g+&6;uQ@gCxg^Kljsg#jPjS6RY_B2S`g8=Ed#qUpzl}ifYun~mH7cA;enX;;=MRmCW5VlPX`m9X?)rz%kx#ytYpz=#BT7c zw`=hH-V9DjK-Rcb_queBDq9#!pR)7X+%P-l%C-P!jwJ0ztW~`4@j_W|kIOBL%8weZ z1#!RXu7}#*2E)(2iB9ej=3b=)vDYwMkd=onoWw~h=}rp@0|Sr>rM)o!8d{-D15`;c z8J`Dzc=Ex!B4Gi16peyh!R)PAa8B}63IE#iLWzfQT)L49+Xm+&jhC}UpLk!B_kaf9 z{>Gh8bSv-52DvS|pk|{4vY`l)j)U_|nir?I5t{e9xp?NfIZK^R=7QHF zGk$7jp`(-^tDyL{H~P0J%3cD z{_dl6y7DunH*X;SEseOJzd?OG5N7|KlR)BvQ?j5w%95~=xZrD~eaWucg+n^ji?qUP znSovDV5Jg@&G6?1xjUQN{=|ltZw-5K&17p3yHu|Z?0570ZLOD)RTu)PKc4fyv1M)t z-h$D$`peW5{LYPgA5A?z7!2NwUizts{834_Z{8yzL@JQ+F5TejrRcocuPR9SDtAAT zuyy3ccd5>C>G(&bVSiq|f`|sSgh*<9`VW?`{1VWpM)9ViRIo2pckvnjH~UibuRVL} z@5>X|fge`gK_t`G+D>Q2P%24GcO7B^asT5iJe=R{w&Z3|Y8sjxU%~zqpJ&G9A5-i5 zAD@(W^fPa^tT8K>qd#r_S=_Qk7d*v$gO9nkK9+zKQVNU$N>Cz#HOGeJ8trcdvg{JB zW`rD6+#N2-JpkFdyY=!%sSa$Xr(GXMWZsAJkfQFORGHUP(cy_KjS98iY6l7;D~KV$;F`m=B$Tb$94%qHTI@A z$3)0AEFN-*Iz)i+kwRqKo~FwbA(>9n#hklvg^_yL3EmPGl1cr!<~5x2TDWB6(i(rT z`_&0yizMvgntWpfSx6yr7ocX?RFI|K#a?HAm?sf)w~}6JRr>F^H@6`Y+>m-P8#m;p z_S~|?TU{1@k)HKuhy0Kg>(|fxIJ8&eMQW3d;+9AM*k2mo|Dx4^fQsuf-$MgJ>l4z* zbQE-x9G=tYJ%DhXjiG{kd$C44r1f3AUXSj`iG1Pi=CG;qK>H+m<`{oL{H$hiW&ee6 zbj;^05N}wW&U0GrZl3u~elE);F~aAL2-XMx^aR2%%7CZY$S|P{qXpjQ-WNSS3*<`>AAgAzo z1WG{MFD*`WD?xTNz8#sjz^r)r){)>_Cd2A{tdCuCdb%#L#ZO&0twbX^_!67fgg5-4 zT1XYxatB7VHj&|%?Ya+AHER^OO<(up$-hw2q%}_HpKGYSDoUjsnb4i3(1 zFAZMfz!bwf$!YIE!X-9?eJVB3kUHeIw*`AGHWI=AQO^Ww!^166gy$y|0L`sC*BQ}x zj`VXy{H*xs^ffLf6EvuaMfo1`r$e7W-qa5lTxQpTinAYmz!AUgpZvJI0l-hRrqZ_% zF7n^3*i-a11$d%-IgzP)W`57kY%_SbrfFK4slTM_s=_pTlfMNVK6!BHkm6lo|H_zG zM)L(D;2(M6p)W~`!ceJ1Kyv^+heK^Y;UR@Fx0&Cs0#j0`Cw1hln5j+zb&0Gxij&Iu zaq-0(udhrAsrpdHy+X;_rh@;-+DeWfzTn|AzGSnkNIi=EQbdzNh91qvEGU1QMQ*R? z!=c44H65vJBewg43}8XEV&+n{*K=aB`$gh?qA92Gprqr6)hW9mVk;)?#CF|Eq}pv% zgv`6AJE9gt~QeFMejPG668}!~-2^P|iM~Af0U^A53OE^)h&w$Jm zHmjyHqrUqiQYN}BOoehsPd_4sAr~b9UIillds%`y-)nrS#rq}>?)H0ekq2;Ndu<_N z;W?pf)BfK3HEi5RWl_EY|I`AcyRLgXDI3zL!qU!3i>QI8n4rePp(Am@0_|*R{Zk2F zs%K{0)fDqinbzH()EWKkec=MLP@OykPLIHPRq zD*$09?qmUBw9}LWPmSi7jdQ^T%9&s-&dKAK))*Du^|y*T{@~u<0d? zw1U`$?IpuO-k|KvynfT5QXj;yMK+tgS9G#u!37a1P5ansCHC+yNdR{(rgyFOSB79# z$aTfUwghardg)yr8g8NKU_JhciT;(IBZrO|A9o6(x^d!QcCIKM-n@GzwZ~eC|y1Bc=6vnYv2${o!!I0!1BI{JQRinRZ3F{Bah$; zXWLc}#=R#CJ+K|V<9hHZH)uF_ExS&HKXG36m+xRBnvovyD}8C>f&Y!M89-Rl(0$=g zB&EU;!RShfpUBg8i<&$g1!2DpfDpbB5sZa~H)N3hB#9h^q8Ol>OS*B_#z`NY0Z8gd zi@8s}O(;eq@F^4beCDKsll5BGbD5WkOcASv>(#fJ7`QH@a?A?9K@_tAr_`|)*|TY{*~+^~yM-{2 zxvI4BT^p6*LWuCYX2;~6bu5qfI!pYQyNR6=wMky$)P;`K$z**5;Fgv`-GMg_~9?DAAAI*I-1X1RMPgIiuaX^u)Ig9SVce@HWy4GDnm2r z1OU+Xf{)fv-m<6+ywjy2Zb7~KtprTX@zT_;<$hzpX2ljK^|u|NRaLcJ%{;7pvUu}9 z`TMZ&Z>pW_!jDa11E0ytfOA2fD3C5RNaLv*^Tyf|a*iD@GtaA=xoO_$$hM(LdsDI& z{MW&vFDakWE+Dl5ChR0MRdYWytSQ~}6|VpCdE4<94KY3h293>gk_UIJtj`|tcwtl+ zTcE*!UIrYEr_{{dD8Cq>1)hS5eK%0YhF%st87DDMq26H|Gzy>b`_$j*`QkV8k(wkc z6-jGU?dm$@i1REU)jkz>rd(ecrWJuiC(^Ef_-mE*bHnAvN`HNzfroXio2~aj#5J8F zKfDA=9Js-U_uzsd~dH`84` zt5ZUo6pb$HWI(R9AuTlcJswo5`OyG2){A@F&>3FJsk$%O2WRWs49p3ztmPa1O1Dspd<#4gHA$oyqu!k$-))U4p=4lCpa!JS-Q~`?M2o^dSywSR zalkRCU(5-0GN~A0!mhJDF__}pom5TC-`sv~WNQScktK?j}LFyCt&EZ&lsc1hV z1vd}filkNfO14{PPu3uyzDPnJwq|S&u7N=2NCQ%Aj_=?U=Xq09jCReO{uJUQn?4nn zt)L-VaLEhv)kTJ>SFj)fGL86R;HC|6WN|OuN;b`AfB1YLCR-c6sHk9R*mZ~~ZdY93 z2HU@2XeM`e8nTE!$^eK~ibO=-qlA|t08-{PNe~3;-EVmSORx1oY_D8C zXv?TV3>-)RJ@#3f?s2Z9MpDT;7}$oCty>u&-%I9Q&Lq0Lgv)U_&qc|Ht!{)?kK|L< z`7?BvyeWt3#@OAFPJL@^kRQv1k`N)v;_|1JHq}9<*BHvAf zD5D8+5e_h{q{5C*qRhW1N@%b!$sjJMINs-uM|$y^aa?jTy6Dfud$K_{e6!|z;n80Z zG+OTD;edhymz}xq+y96Zji+&=qW$A`3IS4cYPUy_$L{#>{$0Od5)cAJ;yNqM@Lr1o zHBq;74=nrl=fTJha8)_gq)hwY*QWBI#yZU;_2G@UzLM-`E*F9#W-v;YpV)cFUD0g~?I^0;`i4JOpt~4ql1;L{%vi!vJ_mF%l?d z_9;gmP0-2#Ol=5&QDwBk(@FUQQqoTPzj_e+l?L2GW)69;agv6f&J#4 zWN{nS@mhV%ZnLcy55fDJx&9jDD*$)5Y1}uN+a@!@2ilf)rKTK)z@*~GV^Y9KFNHgK z)h#>W9A*t~)s3sF^RM>)Y~SILQ{=XKcvLkWHF@g=7P`(~a4>p#2J@*_LMaL;eW78% zP)6fE;-JZ_J+gS<1^Rm%BfxH+1-Gl9eitd@Z1Q=cs3FmESMXYxDajLk+TV05F7j~r zf#{Z%_$ZEKOZ?ucZa|6~d+&WEejNAJ5sCQi5rHUB<_=Dk?@sX(EQlH^!~i86KPI)O zNVw;gEgKzW)$sn~n8I^ZGqq96W(Yp(gthguX(dq~oOVTAq-6sV{NJKf@GVSqCyIa$ zh~P5#D8**2v6AUlcy#NBRWB+Y(`vDVypG@7WgDthwgGqab;h68Zr@|d!^IZFB2Pls z)zGv140qiecP)O1Rs9vG1_{FOb|ng63?EfR$4-4I)Y<*4fdTc6+S$LXw8|yO#(Ocn3>v@ca)#*Ns>X{+?&1aZ%}WWX?3QEE2Te(gXL8Wch zO!v^z)Ja`^3PGA8tuUi>u9>2WxMw1{XO&`uZsnt6l9easU=QCu>wX6Me$t@M;(gI` z%S>OSm#nCM_KJLUbW_9IvrWzxz1H;zh*1s1!K@hZC`tzXzcgtz%!9q}g*_Q$2hei8hFrGE`-`&S2? zlu_yC25}u!pVI6hj(|`^L=K8* zVSyzTXl!JUKtX~!_?c;Il@{oHQy+M`@}TP&WiE3J=!7qb$n2>JGk3CYVm9DKne}|W zR}g~Nb@=LfDX5p)GxUm%j{?Q!c9}PX2|#_Bdyl|S(sf@V1YVISuv& zoCz1K10cCkcTCTNjr#WwwZUSih-sr8 zLJrdVApQ;tp`1knPTc?Gn<1LWJ^f7Wka&xxz($D=%bRRl3MK6vOJ0OV0W{@{Ef~Ji z+qJ9f#ePE{YvjgCuffUNFUI_+a)mOkYK#@$`$)6<*~J9R4i}{QE_0~RD#`TfX z;(gn%-uY{BqMQ}fuh)8T5~4KqHiM|OvHVs@-#G3Cq9keo_wYmo)Lz&AQ%;T27G{ys z0%vL^x?l^_4)`{Yv}PXE@_yn#R+An(Q8#FY4Bh~Tmr+779v+)UH8tpi&roo%weUbN(YPUFR1&p{GXtJd-cc_ z=hGC=6k2(KvctG6Sv|Tc+|-??e5htIEa6mW_8V^CU%a z#ycVlL(+JUxio#9l4Y$hop^3oQo+Wg7Kd~M=h)Y(6fe~@M33|C&3vl3qB6vCWkuod zTR|P&2%?tO=kR^+ObZ%Y*BS2&jJ-nlih;o8VHL60U+(JGYU4VF)=q`Pk&y@tZ*nR# z-L~pm;Mf)?n=9PT@Gjx_v~>WK0i|+u_v=R?%Nzx+6UQZ^oSG+4xHhjbj;RQrobg+n*|*E3%2z7>)*i|Sw@dM%dI*=gS~|#+M0HYo4ys^4_d>#n zL#WKKU29MWCkL0Ps4zy-XOi5&dG~Bv8UGIbfop}HdEK~t{KWH=lW#Vo1+>{Nzb?q|o_V1caS`s7(rgp@meyK9(8W6CINNz=)Cx!zC zX3f6>{PhXJcmUk!>enz~}k@-i((^|G{rBn)YK zM`tNCj>>8USn!Jd8xSgFWs9@YXRC&WN6u$Z4%1kSJ)79%LXI#iHoBfvme30G<^G(R zu(^?x#KHtl+w-%h%lPS!V`a-e|G80GF;Kkg-#i8xx!gwi;b09+tK*U{r+S;ncBrP7iKkNV66j1l-em!E%fj#? z+$H|v!eaS-g+BA?dIGcN2}fU=7eU?r?>DW`o^Xj53>Y3VU1_Is`p&XCc89#ET)fU6NMPw3z6On``&Kp1my@p3{`!4HNdJ#X@iVtE4eG83 z4)ZQ{I=WZJc?X>Jdm?!p54F6%n|jsiu7-E| zQN^(loUY-{$OGYcHhvKeDx$=ph6B(Jf0MEIhHtrdzWkY!<3&N5 zg7D6HhN|VEc4jN3>*|pyYYD>LtjT-h$>&S}Pv^(0cT*(B94~T%1dL4*x#TvESN8HC(1ET_2g8p z%R!j|)!Z|2CWO_e?6g#h+J)^`NLaf0|Ls14pJB3{TGz2ML6@a*c0u+>}9$cxrc7mAjvEI(U804&foSB+@ zXQX||Ib)^u-Jgc9yR#-R)N2Dm@`yz6mnjR`Rzd9NqUQ1P?Fz6gNsRDBJec;B!8jg^7IZe-idmY!81quA=swANX4c#d z77kj30};d3O+2GlM;0s@KH z1<0t=@H0I$fM{cFw)ftpGtZUK9K&2)h;)c5h{$`ldesjDuX2E?iG8IXwKZFVu#q5cZlSVm!ENwj>pDUV6KFCO{`FWq*Z#u zSpoD)imsashWp?TJ#9Ms+yiL>zO{VLgCmuzqsVxsoP-wiFuj5WLr7LWM;EL%O?)Zz z$csgE522t4nl(qGi#c(pdew5Q zGqjqMoQw7hRTr3p>ZLLrNi0EdT9B8tCr6bX%+h>qo5Y5BPp8b!4}x=U)tM zD-<(v>lPwT>IdZ=N8)H^Jlv?x{`@g5{=+rGz3_uGFQ_;pe@;r@lI zj7ei=cSNAf;$w!Odl`2MTU3nf-|s})WVt6IClcn936zz{e)FP83_5ecq^o5CC5`h} zbl}Cia1bIT5`P*;*>n!5U8^2^=E{R!4B;P9FYN zyzoA+u$+XIi;OwSRdk*0eV|vziK;X4v|3jj$}t#^5N}x45oM&)2({bF*OC5P{IfC5 zK;MQ*LbG0^a{e)w&C#AwaRraMfvY=)`=;5Y47bI4t4zMrSA9+xFP-V3Tz7)}Yt7S+}IG4Ue`%Hnwv)WudvUZ{v^-pkUY@nXhX z6XswwS@i9(W{a_fRY#H8LpRS}a?0Vd?DzSk&1P;bEl)}}o+sOSrP1$gjLnQi zAGfo(YJkCzgwPbLap%Ra(RA~UI55Mb1*&xV*zocDVwwcRyCZo0FeiuY=JZbiR(MshoEtLand5*$P$HBB9a3A>txn4P zl*Br{(R!RX=uYZO)M8P@jEpY9Eg3+3R7t5r*(5!PNSwYU-9JOwVF2=~jps*WcYrZN zX@il8;l-MT`}GHTf;BHWV%auh9iDvlK5Xmum%J%v&i_{HkuIGPClU_Sqv4HL9Bz0X zreWcUO~AXprpNa#or>MIXg5p3+OWbH$6piS+o3PBi7R*?+?icCC;<%cq9gI0`%5jU z7H^su{)sPIgP#lCRz=6%hO#e-x~7{au0!aM&$E^-iC)U-iAqD_`ii-zlU#gukE<|Y zE0ILaZ$B>VqIW_&bLvV4%IW{91u$3)OO8x$5J@fsz~NB1Dr;WFddqO6*iz?7K`dUm z?p2yCk(?CnLiqGc)XC2($*DU6f*7rlE2em#izwY%Nn~RqFT%-n%M|pqJ6}vS?odlb zC4FLmQ!PToCRR(cK+p%)=wH%CKLg-#@d^nBsHMdM33!3oW@}WCY;?s>HA9p_m_5j9 zo&j2wU{jGG;9gl2-vG=mRi7C%RYO> zV{BAa+$_>RLpKYWBLS< zM36(}Tb@CGVLc+1!O=UK*iQlf*;?jp{CDEq#(7>+UM}tpUC9lApSeqfK z)I8h%@3X^$z^=`nlvH@1x0=nEcYJ=Jj5rA~C56)N;0Q_d`RFzn`e>Ii?<9a;Ax{!> zbv|t}4?fMHXRDjDyXTRC?#BJ(UeyQRs(E|*c1QKiK}}4q18XU?*z2744)6yG`6HpEqs}!ekY%#k$qqr=TY> z#VTlKTl`hotG1Ctf2ub|Nw@M)Z~=0^!U2EpvimL5X+aj_cr>jE;*8+-wzU`XLx0z_Z>G(KEjH4RgcEX1R4~ zp3UWMKef-rq}PV-E1$0#hyi1qS5iIaS|d6m@Jl=(ODq%be`~1a+;JRgyJa)YI^}+5 zH9d3#Um1j~c6OLn&I_#1Fjp%i6W zlBby9-k)YuHWaA}My5;tO3A%Nk*Xg+A*YtJ*+&;c1^NnN=s#8rFLoQ|_^~LH9e0&_ z^aR`h;Fi4LsSaANa_Ttv=#4b};sa9HJm|4)MhC-cs|Qp+m%8sWFgCYY{D?i-s|lo< zl6QaiHe!(io*v=K_TbT`6eMW(y^~lPp)1CC_5M+WOAhRt-oWB7pBQRaYzYegEiCL(TLc)H z#x~B4r2NN-Q_d(uJ&pXPzpfa^nsvIX<+7mNPM6bat&Hc#xI^xG)3LJ;4$Mq%RI*NY zh|5EpEY{BZEYea}jTvKu|EQ*T*-Ue@&oS3U11?mFOvgYd0NBnss0`h{?}zML|L*GO zY#z0FF5q*~E-qYb9x5{Bv6DD4J(8Afdm`-!NUOk|5p;a3XALBjXUe4(gx!4C+ zUKOUqb&`j})0w`sZ|dfK+$)!Gt6o~Xh%@w9iYGt}Y9JJ~2k>vSwWu|R_wbh2hhr|sZe-sb5UN5HEtFkBeYu`I+QCpMH8)}r%@o`CMi&;Q9Ogyml@QY zFQ5PL2t;-(N!L!i{%jLMJp|>)$^~ZiGB}B08m^k zr5IYYY?2|1)ajMDkg2jMm%nb5{i&a{f6dw7ugFs4JT1zK&yCE@vvTYJP6a8L#x9j`?CdCF19@U4Ls$b!}@ze`5Pw3Wn- zyYnNQI`Htd@gc8L}47Xhy-}``R4xgX*DDNvG8e5wG`~A`J{?q!qN6SoSTfsf1^!ux1u--BQ z8S%Vx{({)GZw%&bq?zw}k5{57FP6=coFx;kZsHA&Bu`(B6Q;;nA0EX(gz`D5N0>TK z$~q@jGr0S3_48vvo+d#}AmjMH(^W>uY<{r770U3tesBR^ZjfQ3O39lAB8TfBrf`{O z(2l1kU-%CS?!J4PWjx^H)T<2k%m+}u4_XQYv+$V63`G>q7=b6EcaJ?#rv5YxT8aZB zrWW{i^%~{V?xXQ4WjM{%X^$=8o8;v2k0(kk(t45vC#sAsfuR174CxprXruBg;? zM$>Cf+Bh^L&groAlQkb*s}7!3gZ622!>|f|lRFH#O|Q=#+a}*>J0G<>(WWyuX}B*X zCkfp-YK>_-(kqf!Zs>MwSRWM zNGLE$5c5FvZ>B;I!J=6$Da)XWqON z=1Tm&JrL;hr>p%G$YWNXiiJ#1tW4}J$8Y+0^paPnY08qlT-$5L<R-uuleHuAj1b_IKHOn&a%WENKW)D+f9V30l#8 z_%B!hyI_w9`-)~4peuho16M*D1?6)rBsQ2U$SFH(gP9SdK_+KS2LtJ{>KYoR=cARc zUpcQ0wZl&&oaex}*-|hMcH{SV2{7kCMox}9{aboE3m2E_a*9tqxI{mPNj^T#aHiZQ z;ry^ow7Qd;&o+^xYT>hQOiDsRE|>^5QK?f%z*(zA#w7Ppl;i&WK7H4zbTB1pcUP9P zPOW0v-3ki-KKN&=b~k+59sWR7MNaNRGMKJ9oPRQ3K~tgHJ>>5@g(^eZ@};L`j%GrJ~qL! zXl+>mtDoHWd?hVHE^cIEv`V~sx`4C`o=3a;;Wn4kpXLzO3IyRDyXo4o0Bbfwjo-g1 zGFkZqn{YIKjo}N$Mn%O%7}*2~!swsLy8O@tOZttchp&dBwCq$@Z4K=6=~IRDXu0CdQyDyXMc!JFFaRnzk=m zmKVRU{C$6Rp8uy)AF1yFFYqI2;7(R@zB3*aS0%O#@M=A5z^nN#He{)Ps0ZP07=NA1Yv3|Bwxth!s3tcaRAL3F8Ia;nqc& zPi&jK{D0gpNc=ejX%~B<(iYNSBR@?+VxFW6EU_@Sp)Y9itdw^vJdq@wZ&Q!#iQhjR z^%qyUaH`#VG%(!vvo_yH2=6YNj|?@NX|DGficYE4U9)zl00l^Q2~FsHp?x^45`DT6 zPY}7Ngy`Kp%HJe@@epLak8oYW>Zt(BW?^Rq2%JpRFVVxvpZQbHT2^XSgq_xITMGmj07JAbcr;E9gnc_XZ z*Fk{kgI9T_k8yY5e!_C0iI+j!qB*DLq`pJ*&=DO(zg9uu=-Zuw_cK>&Ng!puve_z2 zDT~2&jGFzt{QGB`eKI?QVku7KD;YE04A|7%XTN65N19#@FMlnU^DFqFT#=oUkvn0M zZLx6!B;8mzn4XywIOI>9BxQJ2)?H{7~Dgd!p)39tz<%u?$G=HX*Uqz ztE<2?&m7E-X4A9;3%S{_U^|lc<;z#=K+WEL0f&WPk<)F7jhO~R4WlZJe4Vwv)VE;3 z<}!lo1t-GR zf8Carn|A4Iw|&d^Crd3N$9i)z!T3i30QTO-FNaGlhgr4B^74yH%gPtM&X1OD=Yv;*#W&)xpe~ z-l;Ws!^KHMx0@DR%Vn6K3$A^*)5$rN>ek85!Xn)n%gMJC(_J=dU?sBYrk|;hbc2E- z({;v6)6nOvY;4B8^#lQ5=B?;)Myw4l9rz6vJ|8>M!;8F#f?(W{v*$(axKKazs*ph{ep8b5+hg`4{#EIoRL&Zh=cZ zQ_3!g`1RcCIn~|@Lc~TfB6NFM8gH22{rI2eWnbtwd=mfgp~$ew`U3cGrFr+n%x{(N z{jf%?HkW7CjxId&YyT9(xX(8qP_VJx3n6h*Djh>zB}N+uPW;>KZgf}AC!{bmpcr?K z!d8F4FODZCr?FuaoCbMSj?2l;bZihSc^wfi|E-yebJquYmD?WA|BD60H0?qT#w^>CAF*v-K`L ziTq5+dvqGJZ`vXV;T+nQ7l&S_rAe0Qto_oPINc}TMhdmj$B_#r60GK9^@^4?n zdKhW8AI0j2lGC9)k?@Hr%U{4bWup#hXnf6 zsY?Fo`ue+#c_vPc+6E(R_Fmkb!+}UssO*GN5meGXI=r~ATTz0m?AJ$_YA@#Z5*Xu! z4mR6k2D}A%C?`Ko{LF)#-4d<^Gud}hu-$^2W;Z_grV}^~l~Juc@{s-Ezs*`m55*kM z?da|XH+TOQ^Sxe5{qaf5Dt7#{03)?b%PdNA^V;cYQn#C`e0MdeyFwi&RSWO5x)xg1 zjxMvztY{<>R*|FUlv!PeVQj=ZztBKmi@quCi&g3|5~htFF;jUT6Th#Df{7DTr`e2D zHb2N|qs)n?eA1Rpv?oQ>u>DKbwbjQHxtfJSisAW(EYu-0U{i-*{GO)UDR^EU^T>V{ zT52__a27}L7T`qAX3yiNpQE3UW9kSjzbCQjEh2~Q>NpLO(ri|FeYm*Hq;LKO<3^54B~K)x#XGYU{)0<$er>wG}PR;$&`Ey`C}6 z(&vrShb3uXa>yY^K`~9fd(nNtsg(m+7GotUul9tbFtL>!){+`nR~m8v22f&%(lc zK7!;PtYm&VPn(PI)o68{* zF6gxKk-0b#du4xPBJE|%d#&#;B{OU%LF}Y_$9RDO+W93UB0}oy7(tg5>PQB&N#7BB zdo>k!OxF6Mn3DuPJ6op@94q|Y(!N9l1QHQu^UxK-F!36Wmcm@ z-24Z2b%>Z_$JK%K=t{$n@rw-5(R^LakRu0PhPI|4Vlz^hq*{zZpMyd;jc78X7k|ZQ zp`D(|fngheXDiit9>sT9vhkB8q zy&wBI>=#7Im*a6MA=-#$1A!5Fyy&koL5%_M`+5(GDd1XOh1X~3eZ)ADuWN?AGG4}Z zyuV>}dOD~mItK<+KlCnlIw-4Cs6HCWQkLi@$eww#dEQxp)e=dq@`m^x4YhLACfSG(v&Ok%I(>sI^$pTv{F zXE_9+7sJKHHPhYnPaa&yURfK?od*s~)xRb`*arM}RHNlqZ^W!(k}z!aDG2UNxE06Z zkukx<1My`v?(#brXKc>WuUA+MK06z*?23EzuFvkl$wX_Ea67morQxB3q9E}KvtMcC z>We)B=s1h{lO)Exf->x<0la1Y874mD_>rN4dT^qt6dV4v`vg;`+}x_6gm?l7J$Js9 zsJczxB>rkTOko&B>BrPnMYd0hPwI9ZW7-0@zzAHoK2J|lGM_76Z9PAKsIHI0-$`|w zsMt=yu9BY}+(rm>a`bVilE=yiV3l^pybA#{(kd}9Kfz*&pI>0?HzV5qZp_JYd;}K+ z^J2;06W>1G;8Es%GT+oJNMHDJt#$s11Izr|*2s2MUPUkzXf24 zNTMBz_6`gf_~1&@%RkRT0h%}leM!I&c3x9k2kaMzBvrh6eA;PH{uxyFi^{j>t3yIw z$9r-~#<^p{}*$vt13xT7js;PAqI}G!!@zXWOkD5vDyCl{YEVqM4hIZ zsbFbfTh=W<*^|xorpjSat>Q13-F`ng{EqvY2(69i$72t2x^a35D==eSZy^1Z_JWzT zisCK8Yqyh@^#%U=L=Ki+?d!e=JBsQcNhPbm0^WahdFlm0SHC=D<$MYjSpThfnDdlE z=d^<3OO?SN4%oUD;tdRY<1?c}%{OrHH)NJd16ZJf*MupUFt6K_VF^<`Gx|AoO}(7c z$Msf%qP}xv*O!bMvMiGIpidPVk~NmM3lq{_U4Ljc!IH=S=Eq_=1?iuNVa0TxSFs2W za*o*hWS5h4Kz*2!Z#mhG|4f#p21kDaGeq^DIeZ4lEoY9747QpOeo|xGT|WALh2`-Y zm|PxK(BwAUuG7O2_lbYcO`;|0`n|x zg)wCVk*(9LDm(^Y|CGr>Qu5mhEaHS*HYwrZIPDtii? zk3{pq`m@E3=tu5*=Fi(U{F7B*n6g19Tr7Jwx)xdmIWenYJSE+2165WdB693<2!$jL&tCr9l*NR6?4uj?pw1amzbZ1o*Q(dUv)+@a*}rW8Y$3nZIu$U zk3}N3T!h%ZF;<^bSO{-GR)t(h<}%e@h{`1|)Xt15L?Nt(YTO*m!m~J!rf5?O)aJCK z0}|?QYl~ensvaNB*gN>}^`|Vz+P1sc({V^vsNXlTt*C|xG&8~Md$3A0OejqC`RXgA zCx7IT9%AsnU`HJ+<@Yy9wBzL@FWo^!xmW!qxJ7~HkKGBoFqfd)%yXvS58l=1swdLz zN!3l)*ZHDiLRs{vpGy5r>d}yeN{M=*u9ugyNk~YTzFG!vttH{Lr()13`eYR=9r?Ho9(?;^^d+hj>c?q$7V5K9 zzjV|kxRf-V`yTf5Xg4_K#RP6kHmd1`(4trnpqQ17&z788H?cO90fs4~(0|oSun`8S zd8=`>H8FT5DXR!|>eValR`eezMRs-_ZZ_)&&exj;(y{T-XUS-%*8)tHm1(FO9OMrk zP z@qXm5Vv<%E+h-FZ$O}8U*TbluuUc2pPk7VR>+5%B0fnY#jbhfu(F`WB;{}AxLJpkE?c~YET!L-gY(8Pot||qq%2SEXt_J?@Kc&oae$5OxZpB>Okt)MjPKZwbXdpp zX9Ou*YJalnemf>K;V~Yia0C!B7CPP&Nlg>Z&_IZf(qtpx$U7z`hQU?^16rG&ho#G@ zg`dTY8ePRqiGcrV&J&j&sg4}nd1O8U{HLs4Gb93{$7OT zGEixj&ZPzov}Z4y%t;{}TbOOWBpy~8)x`<>p1k}|5!GH${KzNL(&t!9i+wcOhLSd_9B_!mL>qdb-dJZedsgYYlXM!*0T1Pi6&Avgt6joMwRMd-)=-eKRfsT#c_bCFs|K{e#wY#ylK_&}8-=%K) z%;0WQRR_smJ||P=F==UEeQO^^9*#VipmCI2Ti9RfS~^(imHIs%yPYi_`YG6ov>k{x z25kV}My#(}xRgi|*7nnj%$oUCM*ixr6+gLX$6__zj7^JUW44+er)nB8PSpc+OygR@ zJ|SkNp}e4~s^gbU##h#Mb7f`a{G&GmY46DehMP!rv7kWP_iz!c)#9x+d*)Emq$+nU zd~;@Uc79%1h+2~T?RNZ9-?)y`X@vW z8P8`cllJAHKRf5M#^jpUg%U*}4T)!OIM~)ngG<-qNK|lNYp=t9^cdYWz;%j{Plz28 zs>q5+1YVqIPm4tD`_y~9fNt{>UfaMI62a5{mpnZgg^dgWh|CPxc5&!usXh^>5^J^s z?>d`4<0pPPC!5oE!5jBLy-Y5@C>%#OCbn>UM(lLQseXai_F7Qj{e{Nht3QU*IFoLf ze=rh2%2AxrsbQ&*wG~if%hIc}oosNTm+-B|ju9-7PYwi8`IpNuwKmG@UVLMXU^9X+ zNdzI+Z4$){!9sp!xzL5?kPc8_Aa*!@yQ=6)6E7=FgJ#(1i~)Fd$xsZx2-4Bvph(oG zPxonYV(dx|>t>CaMa}D!lIh#`&JT5(5~pVn`2}F@yO9Dg(Rc<8`->w>>$%1U*O#ZE z&h0nH6NdZ1rcA}2@y&W}m246}=kS|v@sa)R10+TqV?p}WT63}0?i%pk_;!)os~}3> zGwP8%kiRuNe%S{je6wE=8++Ld#J&2J1U+Ry%Jdr?CA-fOQncL?0pDVlMbr&;*oqvZ z83Vxi9w2yGX%87tAu(=;8ue$QO}dgvcpy9!6O|`qO;9w3)$y2m3&a<%4P5Dmi;jfh zN9^ii<;k5rD)VxaFz7sU2_+y;UDxei4bD2Wr&z$8={~Hv(*MM;ETH?t@ zc4sW7PeB0sw$-(L7eDkP5ClZm45B9|wIe`yj`k~|gESocilKEsopZw}=6c9i3$hk3K#A%9-P=XYH>Vo&6PbaB{x}*udL#4Vuw`SLqP~@lFu~QXuTj$p?Opg6E!_aX6 z`o`#7rhsFt?{XkZpA5G<&D{C8q!@_pF-B&}ceiRs_s0h5DAVueJ$MiOB*b>($<;5&OL!!Dql7&K= zT#Y+FJlLGx+q0KX;d&mo{QMkUd?UGv$YQGETTnBaqv}AQHBht#q@>tkxEp43#4IY*fpGd9v+k;7y zC;+By!C`#|3xDOsX0GVVWx%x~6}_0Ed5<-6lXQSqR<n>9})U(#1`c7OnhJqt;a7UfkqCrZdBUjbFRuvi$<%ZTIZeUipKpnHsACQ`;Cry3)N; z?TXJuCMviDSu1I;ggLfXbfHeV_q{68eE5`N{iZ6-I5CzIxUuxAKK~MGN}@TJ<8clj zWnE*Zp=pP8y>eJd9^nVd>jrtYgRa8R@pnH-y$Pah&PI{U;Dn>kRYQDcK5&>XEy_8@ zPQl}OP;q1neeRVWOGNB~gVfl-UahJ&LfJ)pgT;KKHzCs(prb7ZMN^c@-kqHKltun) zf=p~jM-Y(?>AK?WyiUaR39H>C$EgK9cDorX<9#!D->5~|Gfp1B z``}WnJOJ~=L>4UKe?R_#Gi&ovo!~}LJosW;I)y`!La&&%9t+X`wp88tlf?$rVy3jS zG={EIv!Oz-)BzOkIJUIS(h#3NThj^m4kvWOqNoJ1ax*Ni^8+^ zF@0JtI*W-fK>}|G2=DvvWVRxT7;-j=HklxXvjIpViJq7Za&dFWceHP|FB7L%?3Yyq zGxS^#99~%(RJqx5c_Fp=3cJ@kzzKWq)37tL#H7GZ0a|vqOVYCT7kBbm{u2vKsDXy3 zZ35f~X5lHQj+L4RJOKDJ5Q9GhW%eY@yJv7o1fD@nNMT`N*!%Y?b`rgra)~TBl$4aG ztS{XD;3Lt9ik!|mZCd{VoDU-ej}jI=i7kdyDkJ(HTDX;+XTve7A$46gr9C^-ZpxL@4QZ8R2hv~dO zP85<_cZ@N>Dt-RQTD8!Y87?#Z%%%gK*QBkp3`pFHpk zyet6sbQC4heb4K*9PH(TysrARSG$#kmN6w3GDva|N8vha=Ex ze{6z_iwV&yF^jM|R&?`*2Z-M~@GV~Ai6#!rn|peEys~~yNM}*UU&<2q)rELHs_t>u z*OIHOu-^M!@81LHMdQr^UKjpH1%)Bxp3!-n4L;$Y@S0GT#T}e0ukjpA>#jF&AmBZb zVxdjl;SPC39_PQmg=;LW9zjkZ=!V%O>Sb%wzzL5Hd!`^F3pF&(lKs6$Q3r63klBs~ zio0u-1|N5ZR#sO3;)Mm2G&(W!&6_kf!bggH-gX)HmH*3VB_rc)q3=aJhc&wG2dXJBR;JV!}yVGy$DmN_& zkxPT(eDZVdj~%YEbn=Il8tQ~?i*@cLobn5v>)YGGT@IAf zUIHp^J{r>mE)GrraloMzzV0 zPdBjV1o2Z=GpWV8SP@Fg{6hdFPa-xi%|TK2B;d+4TCcFmhNS%IPIik^pr6(Vv7s{Nq;0RJS4cS@Me5ZVyPJ_Gt(GDtv~$? z36qm`x}u3#S4Vmfc+J*grNH$S|8?_kK}U96P|5uf`Gurlb+ss5I{3`wSgl0E6NrvA zvVGxq{2~R!nhZ4f8R5tLUrhABl>11k=o0jj8kD|MQBH1#QNryT{b$}kI~yrb=4SCy z8oWYK(mip*(ovbuwYr$vpLI%!;-#YY*F8KU6Ua^{)3n}d{2^wU*Cmd%A%!tb{$T}) zPm@6plWeWI9TXyzv9x3Ykg6Hg1Nh*ffF|HPid(vuVF6SbC4xuqATyEB-|YTY}BM=6H%oiNSVtd_se%KL3BPevJfV1%^ilixm&l;Q)CDxHhcxXdBHpKLt)5qu}N zVv<8TU_A6lE;m zfSyh9pVHAI@SGII2jATtQ!pBQc|0bDI*GeXCgMCqVF8B-=36&sw>bilKA+9B)l-u8y0;!*#Mm$(?8o5J0BtMh2MWS9c z62b-PU*L{Ed^ zpp5sEyi1Ait-`A2xi1hZr0RdNxahP6E~Zn~$m90K7d2s&*0lOSt#NYZ@tTIDYm~R~ zxE)D~V=86(<u$n=YEOo@TL@g8nod5AE%*>PW*cs#)eX~mppiZZ(z~z zV!>T8c0jH#Tx&dtB2;tny)*T-JS#v=#3Rqn#!Kkd%O-9E*f|p(2qqCjrY=ts)@O3a zRY!*R+G1TMn=iwDxZUn2-DasasDkayh_nUFuI}Dm$hvL;6gS7VUqxJpe#`L<{&&V< zQTnf5kEB!SC#$!lD+hdDYJmW1l8hE{P*`ZUxhs$WFb)oG+~0=vJNWbDNe>IOGb9D; zF5=w>uCL^`CbL7LP@;n(F3Jb7z#AiVk>CXM;HfS& zO6FVA)*XRWl`DGejgQhzH6h+?D?QkybKV<7SnbJjfzuS)^xEX%0!Kki(jt#mR3S+%b zZgGvYoWEMpZ_`c9=`>**Y->M2d=t0NZ{J-i(>LY%$l+C?fmrrgT{n0-gK3O+Wt8P8 z@N};B7p?ECobVSs&Sm^Zu%!ae3OBf0`R-|{b}heHX^T1 zprL=3atixe<{Hrkm2{TF2H zVL(E^twGPuamE{TAbsQlqC)dR4QF^)=ci*=A%DDio*KpM10LZ(kPH_b^a#qGe<#A) zzY*_<>8qybt?a()9%mpAV^1&2F=#Ln_x`63tSd%tKciYBaSjVm9&5`alD}XT0S*lA z{c9`#TWJ9B5B<(=^xylVOUr_8hI@pDrl;n_&m-Zo>mWc7-Rt+@cp({^*{m$wbi>1P z-MA|2d_0ii7ONV|M9?lsaW*FB$vW#(?3Y{jxFgc_8yN80048YBmJbi zkU<1j@;ZtfmHz(U78D78O-P8^i}K4VtOS*bN1{AY{;O&XAYRX=u!sdg+8*n0{KGhu zBJX|9@P7&!=6fugRZi&qZkTR=q{{^V&zjXT-Jo&YL*H;EOyE7Sc;vx~DN%Zj9T>`3S00vyDOS&p~mscafiJMHuk~sg~u75AQy{|IQ`1Ri- zx}Y!}R9WjQk@Ud^S-g>)M`-;Uh!N(UjfI$T!weCajq|X~cZ3T!?z#{N$7wVD6TC-# zV%@6bv1nhm-Z(1>I-Hj1xHjLq--l6h3ytjHIa>xWtjI0BopteU@pQ_+gjvkt6miKS*^YAJA;}y(&F<2H_xC zE7SiG>(aU~M!zdL!mkmN^eH0Q@H%4tgq(AnY;x;`v$ZOkZ_68fCHZzOk?Y9DF&eh& z(;bFZp4HNh#of9o$O_DcEPKMHUxgtz_yaMK8+oXrq{;Zi)<+ULq^k-`STQ;lMtfmZ zBGhHlYkj&1kz(ujy|w_v&Bn3T?T!yP0*?B1c2TwK!<8*5tV^>i#YwfM=^xBVZ61w@ zrG{{iwGe-uODUAA+au2BIH9;E+qxC>Psf@Uv#_Tcr)=<_S2TR-9!+_Y8Qzv}Li{l) z$F3}B+HA#YF(7!EO9Ijq!0jh#vOCqsT}?(p&z}yWP(h+U{FdCG!^P=%6lRmfi>0#@ z`=9d*1|M=|>gKp;P;%^wBU5GXkt`nmr=l#hmMZ_@{%ZnMbK-Rxq~7v7-+c$F35`&6 zQV=x%{{BndNbdeF^Z%l52pIQ2_zzw4xd>D*pJF};Cngp`{97^)c=I+EWWjS1d>$;_ zp5LF9zKd)9mx`2u%lxJ=6gKKotD%gcn>#0KCP&Sz&{d~*`Uj?GrxNvU`IGt)1t+p! zdYEcz^+Rtn+p+hr|%32ZYBarK>sm=bR7I$(@ zB{Ji_y1ZwO`$Dw8d2ADE>U>TbV{@aV4Ze>}Zdn+Vr8F95IL%);KX~Zdq;Y-arxuc9 z+~1Qd){|!C!1F0B%@EOZAvI{I)}e&y-9zEiNO#IEnvqu3xs<_$k)cVaBRj#_8jS?O zgzF;#gG+ah{Fywg(?mNw$rZ;1o$(m&3G1nk1iJ-?`X{g|i+r};-hX=mGz*F@4s%iG zU&DHEesXh4iv&>EkQHVsNgKBBh|dQ(2l#F!qm9`-x8&~=e&i|*>0AoG5v}82VPAmV z1K8h8$L)G3oTTM--PU9KH?gb$^d7zokNcb2vQaL$TQN);$0e;_V`e~H5V~0A?Jd0T zAqQT2vmK1TUDs@i*nhY811;}--xM?fr=b0Rmz=@NLhqsgBR;;0 zLdfRRG+x}4n?%Ok&d1wSe-pp7=;8BtYO#6kL>4jH-;wBPuc_g(*$dPZJLWr9E6Up` zLDfol1lh4`tB&zeH(x!}dJVOid}5t0g4-5w!?3g>avP9n&caz)mk^M5xj!m7UwD}^ zS{g`46xu$K#xktSPo>9lwK-?5QTHZXo!saA(Tf3JNsRvIg_iZs+?p%Owd!FNK|Jvr(;fRc9M*H<4eHry<`J{_;PccH6mqSXA-QXg| zvwb^-6}v*Xq_kZ^zc&Jnd`1~-uyvNJuKz72xLj1^(;lbsT=pSJ%?C=P=lP+fKN7PM zcIX6gwk3z9w=8`jC)DpSCJp3v2PO*QJ!ISvr{mUlATW%R$tTqAMjCR^G-&~ki-t9N{ zB6DdI12I(&n4d%AW+cUI5J=7$f==aSNX{>#l z<(ptT3P4frjWr{2xI~3(FGcg-4e`&KZ+3R?>q3Q5C@B?QjV-N}eoqv!);euHI)k_$ z{KnloFpr9?7J7BxF0+f6g<(lj`!!|S*5XuSV1jz|@TR%vJU zA?GfQFf~CPcNtpug!REIKUn2vgwUUsNcZDzudyAB=a%b2eyN+X4F`p_=y(S|8j?_E z*{!N75^KlWE7rET^$R4HYX@oWXU)|*%clV#D~=v~mb|BvnEM&HI9Nk3y~pwQpqF1dsl+hf)bsb`y9K=%gJU*trf+1jO#%0wTAQ?4}&Uat%R-RluTiYAOsOZ{g2-w6@z|j9_;Y!Mu}c;KEOF} zoXdSTzZe%!7Ef}0;0IG_V7l=oGsvu>>B1Cp(DG^)-t%?wvqd_(wV8geGLmTe;jlB9 z+F~v%q_KaPdCD`eBmV4s13_qQjNZYk_ktn9*%~JFMk=yl1`|3SSg&9Gdic=7`%ocy zysqVEO7bxc_-Sf2Qe782H{|vXzb2~Gh*{D}iX0BCY2U6PhA~}R)Qu+}T<)K?vMr|% zs?_PCjLVZ1!Y;bWZkbfO|Ey*5C10;vhA?nAS-J)|e{g%M zTwu+XfM-!$yLaFgT5&$A;r2Un#1Zem(P`Cx>dE>Jx(51_!bts$?_LjxD*!Mkte+vb?-=Yi_t(D-<@U{B`SqMJkZnd7nAq+Y70b2O{u^Me{*=kq$wDzjKg zwo&|YgA|;LVIxi3%ne_O$tQP(cUrjXat}f;ol{1-c)~TQToWB{M(gn=lYf) z^mR{sXEj!f7CciK=&Y*Hq4&U?4F zUy|i&%=l8T5xv(3w6oZ+=n8V-$h=Yz2dHN6l(Tp%SHO9YxL`qh8TI%uca5?QIbDy0 z{gg7QeM{+7U8I%WjZR9$mpCv8iHgQH%ADS0tGQy+oFJqL*K3f90qKNxPM4OKP5gV! zPf%j;5j;R@6yf1hGm{X$S&5ra=HO*h(=y$91^RebE+p-6q*A47I7;XTPZ@b&-`DXt zpZHlJ>S`aCce6Jg?^;igj2Lbg2k&FucKnIVj#HPm*)kUDYTqk8sWY1XCA`^~G|K?XqGQYE5^Gbbe+O8Ezz(mu8mTJr~ zFL9iITd(V4hnX+*2P6{-&>yRnBrxIPPfwV1tL;?%l`t}0h20&N8kA8l8M<3&DS<9E zuSw1mkIiNfWFzQ{0hD!VXX{lzMm}$cd(ON8irnq&$1Ne7L18qNPIs3T?av9gqU%$i zQcyvH6H80Dhw4f;Q2vv6;WSJAN*_deP(aM^rxq!I_$M4iOdRfkndu%ez$D)k#ZimV z@4O<;R-0nh!1H{p`<^~4{IPF7F_+K)QB=Up&U1Q{y>QX?u~-pQ7&eQ@qNz34(RwySt{W}$sDvg>}FQ>Gq4 zd^z`?8qbwIA%Ucok~e#KY6}ID50t8JcWC? zoZKfoy#D)6K#$nFNPDpP!U~bU>G2_9R$1rV_c>Pi&W7Fzj*_7|X}xCl^2FDU{1=3_ zlotm1H4;fT^C`?E)0eKDc9XfN>!V+BDR#!CUOnYZybdn#bQM$fr!4(xAgwKf|C%s% z$YlIY$J0ETUxUHPcrPSJdW_jFP0^oE5XSERxw7F^>i(4x8rItn;FBYru^4#R2J%!L zgTXH1{8UfA6H{9Ay)(NU@M8ZsTW3H$i6=huJD7!Aj;yTV^M7j6)I2;-%RNOIC4%oM z2f8jj;&6dq(%yaGm_m86vv>7re@0M$-oex`!o7o56yhLbc72K^qlSa0x+g~H&{v#U zc{cXFLTr|o=Hm<4|`h%OH>@AVO?_*gyx}2oor;E zm>Qe+n~ltB#T$Vc8)kzwLvZxY?y3fVWV1JD}!ga5BKwDR<&@ zuKTzr_}!l#5Sx8hAGi#dm>NjOaO5s>S{*uN8kmPw%^mbyh-@j6e}$T& z8rNw0XU>`RW#QH9MQ>t|#HLX{e7_G5jo&|rChD5)w*@JTGT-Xd5_hqfU)LqpA(O#J zmAF6pXLd_}8~AV+YLl9-BkFSY!>;G=W*FrVr)i7272uBP?*#|EzmH8$?k=$uRMx7k z#)78qytbYXgm+s5(fq$?*;d|vE_1Hl9aSCzufKY}JoKRw4@?;78ph$@??RGt8SDj0 ze7m_gr-r|;>x;kvS(?ij0~P6p;H`Gj+OqX_#+aXc({pSeQ3W#u;x_I4aTmSbfgu zG;O8}SDC$?*rs2Un(5OH25}}_2jjI~QLBYo^rFOkEs6!yTO3qsbIZ3^(|Mpg(%#?SqfB(!LL>hu+8{V7Y*~X$qv)z#y5TeO>Gm5lt}MacCFfh z;xQJ=%B!FH{m7s$>vgwiTK(gwM6F$?9n(3cCU(f%9K+tCe`01Y89&icXbsi#4fmw$D0sw zS4$E_%0lQDztg_|Fd=Qw&^h{bhcDg;c|6(A2q1k0K6c^_9Q3OvIDmht@WWOpHWTOO31lqyIxEE5B0{qOl##LKPixP&J+=h8ni zf~E}TuD2E%bbV($X3p|RKg$Gy$yL||`9VJ>XgewYGW)m79xzdy@d_PI_}Xu?_jrCpf7Gkioil6FJqV&)PLjxh@@#1m*0!$covqgf7}8)FQ_7G9vw*2wn!)xQ?JPx-R#Zn59Obb;xQb z;Ew(Ht>?dU8TDhBTX%eyfBPHL#0R#k>j;&wXG95%3BYRRn?;b0i?z5G^K$dstYwJ{ z&6qA=S`nE|s@FQ>gUr%ah!_9VUOw^`7km``_Lg*O(pJ>*#{Jw=UXQ7!mqY}v#4&!- z`^4dLk(;W&>sZfy z;j+s|QbzI=+@MUI#f1&dA9O4ly2iqfQ0{zu?*TL>^%+cR&(2*^BT6b4-ysX z6sL?pdp@cdlK1{UtSYg;<{8m{rv~2-VDdROJtnDXt|@QtvnhAatat+pB6e_!$J}fjoUr~G>@iQm{#8KY*5?M3U*u3R|7?LSsA7A^_={#mghSJ> z&fy9j!LTMfo6oky>|&-154LVQLZ(>7O9enhaV|48&8CHh+E3`*W3))0W#k$zaUYic zAer2%^>*>Uu{a{C|E3WnKU{^PD67~8L~SR7XL0r^oBTNz(?f3MV#E|;F zXmj8{5JSR$WTXk1o!_@d)Lq^r#e30T+jKN(d#ubXi0%ON1mjMMK|y@Uaz@aJhrpd0 zeVsC&EBuRU*zVTs(w>E-(EXunfCgA_@TWxJZMJ%J*?x-Uaez}&<38_VtSW>`JYRVf zVnDw(sX|JwoX+DX zMswGs7(v;Vs9O=zu^E!0(%kE-)ch2#R0q^toXs z)C&s>^V-v37W3@(xM6Q$!2r(!QoGb^M@(-noWs`hJmr1IM(rn?^t)UBXJqf6=`o;$ zDrGW4Z+2eU{=?!2x}F-{oTwEESe3Vuq78Jt9;paF3I6k#7(SoyE?n*VXiw;wNq?3e zfsx{_7$xX=+@GgZhQ!-QH*Mzai!RA(*D?~eW;Up1J($ZzuD0He$&X*KI%xY{H8JYP zA+b1jW=)TBkrEx7zjUMI$83+bh1BM>6b^jPa9?=c1*>tCCG;PH)>&5`r&$EXR)@%o zvo+$`mbiyw!X3aBlekKB@;+x|*}?`bm`}g@7I8O;3Lpzl+|A%914llj`j@Hw?}iLa zXs7o*iF-Z^?}(#6efpi358C9x0HjgO8)_@t>1qs`N>HA$F41q`fR99$%raCif+4MN zTIt9y_+V+pPp{o?1sw*FX&Boxb$Gk2w=L}1ez!O4qlIxZRB??_q@4GNS@U}Z5fKrS z_?+?~E>Rypc7_qqMyI6welN4Uw(ui#rsfp1tKVbPDphw{nN>{TdX>(HJ4g*E#&fc) zyuQ7(j}G*>)Zk5wA+{9g3WtOE|2Fe9i;vrD;tQ=iSkPtogI;Lg3Dm@Ej;h(N@8XXj$V@G=%pVpD8H6{bdTwL1mE|N z2ok(d>eBOLemRJX{A}mQtnarcja*nW80<7Ngn{`QS=2%+Rzs!sqmR;6VLylS&VQh# ze!Zgpz>L)=gzN6wIEJpIVAID9_@N0J zvW2))dW!lz3C6_?3vVOs4Vn)lbh|Pf?1Io|U7d73;T}jAWrR!y-%pED=$J+x(iykZ zV}6YHTb0yI_N*9pd>G@bDQFF#o3DeN3Er^)>~uzcJr|s6d=z-IVtS33Fk{CO+PES< zDlB}x^Tf3Ow*mv%`A%eW2x)4R*>s8!P)uv;P++=Ek6~8Y1jYd^^)YEF2BF~&Qjl%q zt@lpwRxh4hWRRHHccWzbZaJ^@9tk>N+iGA$%@QK|IbC?!IsX2)mu=CtfnET;d8p(C zti&(?lC@*h`TP#bM$!Yn+LtGd`J1J_d%=s)zo(tn?*3I$)So;n9N{eswIn7vpJVRk zJ*FHmI7Px?Diib6m~mmXHYqcc64rX_JL|EQo}B;wE3fS=uY_dY?d#`)g8Hut!GJdF zTw4&@1NvV4DM+rH8>#B)zq6QT1S^v3wFNMm-{E^{;MZ z^Tw{n9teV@DigL@UE9p4Vc+HS<3aw_Dv@tHs7z3$Yi9*`fAZk!_WH7OsRUa8x|`|M zl?%(gs2e-4{28#tLz2z6!pVk?1nkxMSnyTk^Akuf*cUTF`7KO}Ap05FcIE~@L50Ya zD-tIUC66ufl$Yb+Pg&gBZ;Im{0FaI{5T#iT>^*4Omx{Vr_mRu9e%b3XOxLKh!sc?@ zvTn6r_2-nysg-n+V(drIrzb+MJ1MTbkHkvf#ldC|DXjt+ZhQXJ#?kq8_jBA#)aAtl z?aT_9ml;Ec$&+)pSZ_xj;V=XjdH+7&$4}V45+Irf`Aj2i;L3^IZE)`GY~58i=w)I- z0d;~&`y(XJ(PD)DH*HIai$mrMt|s4_QP!_U4H7PnhE^>g+=5slayUx*uDf`s54Q=@ z9pYCSbZyTEE5E^e(^3lr&A2|Ix9Pc!iWO2BF4aK)Z6=&LZ$nZtZu2pHichdu)+pLr z?rZlh?H}PWix&_k7Tg~FJ1q2F4}3gHkafzuv$9SxK$K0`cfo)USe(@k=IY~_rVErZ z<;mkEG2#2ca1i-LAP!h5g(bmON@-v>-eO?(Z*Pl~^{EU(WvqZ0xGAo#T&hLWd69G=p)ochgv`uH4mHx!Y4b+nBTdYfmg`)%x*scy`zfC z6uc!aL65YL=FLYBhxf|dOs?5|le*M;c_XF44MK24$tgm+@mv#6fFFwv{|20qfW%BsW3pb zUM(gJOmMU{;vO7=8dB~$KSMk=*Yfhnt$vq~CQVh|LmE+~vjwVz9obu>GUoZT(kdbP zcICHkNXKd1ZIPUPtwib}ID#|T`4y4dW7Y>M=~;B4zYpuoHb^ouId`5rbvYM)^kpty z1TAxd=VQK6lbY~J4wyDhNl`FqnNRN4DSU$vEyGXRlV1w=GroWF+FGhjF$39|f{yks zr7p(-810R;R_ANtTP!ItL$$I^h%J-&> z3z}d?9r+%%@>V#P*V&%&SHo5cusLVY*#(#%wAIgV=|xQ4iU=tfazn?!cs|@LMC}f& zO0puM3dMpiRjX8A1*s)W(%6`^_3AL#X`$aMnv+g^v*=Dg@8_*Q^~Q(#@QZ_1zWnpN z%uLYs`V$kZ&{?JZaG1aOGD@6rALVG-f@%{3^zt3XF7)8i0c*2w@PejM?4GkAt^6CqGx~B$roLQZvqD&gj7gwuMtsa8b``% z_N*8=dijUj+<`*24l>Tu-*fmhb3Ky}JRT@{?}uJg?YPkN`8Mu65uT16qMP=NJWe6p z?V=`+|HL#GWg|HQPbmyV zNw-tHjV@+8e{-u70ZHAT7CkxJD(o%#QRzZ1ahB0=P9i+zstRFr+^@Gijwqcz^c8rw zks4Wa`It^ru3)#$PcXO9XwajcbXtS8WKoUaKd+)4>^ELD9wYrms zFWOg@n7i1$wlIS7zFu#2_huZ6GXJstum0#}5gPW}!6Q2+r!Ip3=>QKodkmTz8)g)Z zyJ1zZdb(BpV3ZUs%+9pX6cEA0ewIGG0Bh`iBy$3X54vi}1|!tTk4l$$45hnzcQ4Wa z$p6ymRTS zFfdJHLA}!S6<8}G>c|A)za}nolxn%X@w&P?9F)@5DNsm#!C<(>nVHFNMlY(A`a&U{ zXsWn8e)^a0aR01l7?X(inY|0HsrJBJDWqvMgOG^m0lmkF!Q^ztN3bBa__`TS1~(-CdiRH?zCo-oSBMX6XX7Fg7yU@!|+=U3x$?NsoHji8>XN$+!iZbW`n1{2!W`Z(gTN z4O1;s7hq3<30P9VmrwioG#G>8|A>-<7k)VW|=yi z-sr|xAAN6yb`51$rTrhqc!TZJvStk8r#=r;l#a0p`2StB z@+TmCUG~3$nI}O>d-=dqDnc#>)}S{md8(w>3#wly_X?^;7B3{_jh42xlpDNxn?#A( z*A}srKof%{@wM*wf#pkn(J~4Ez1xG-KWo`N5tlIS?eYw|?gyY-6lT-s{M9jaOD4yQC`Vw?oS+efN3{ z5T|RAtG_n9ftH}NU4DUe4VF!QROn(^>>Q|pbJ6(UwQ5>y7M3u`zRi+$F-?m`TyScbr@&vFatc#IcJ}}*Is)qH~&P^GoLylm?;5& z4)a_!=sRcGmAecN<|DgETmLWhGJk1JUX|Gtc;+jbR)W1Qe~a!MP1N~+XI>LZz3(~M zQ7)I7=d7~;FMCCB08lyswox;Ug@&=Ju$bYs#@qDP01VBDGapi~pwW2064>hIN@!K; z3qE&i+HrDn5obyCSB6jf1%SZB0)c(FyWyzeY@e>gL<)wx(Jxf^88HH~Ax~QiD=9gf zJ<`NI%YJGIJ$#4{#`ycxi8p_|*|g+vpX7k(wQK3Ijp`~?`5-^6K6;gEW9Pg}1ZC>H zIzQ5|FzUm#(pWW}nSIk?ikAe05H0js(tSXa@1%5Byb)eGR@Rit9>$BCg@thoRu#w1 z+HqCu`X;`gNZgyLigN1faigi~cd8!;VpO6|%4ZIn%(fDRXD@IOMVnpAitD?#MS3O^ zDT_L;c7iTuC&ND4ZHAcmJbE+aC2hm>bnQ(TZRSMx(2BCj<^`tZG&_;zL@JUc_OtES ziHC;n&HwAM?`BfCi6hRzsDD(`AS@ii&i`e9qQ2je6h{9Ja$x)$?W#diST@^(K!h}u zlAu1nnx6&XSBR+>If%^9WMRzH{0udKVuk+9DgKJE`*Mxd<>9!=8l$9^9^*HGvV1h%N+Q z>t;R9`LG4-BaB*0*Xn=oF6ud|X+u9`8|l^4*xdBqv~?#6&ux9|`jQd->Q{xhn1bE} z9n-TeXQTbrM1oIJ!|cv-nm7-5+jLQR3K7!PCLFfkk9cAX-^*`wNI3%>hi~{9n|a+j zmw%JI%OnZKNt<=RH!B4?1nQh*VV-_+CO4TcxEs%a3c;~0en3~M#=~~lWIG`kp1f~^ zZRoH$`zg%^Pg?>?L@$HPDlL}9dHCS{uL}Bl1=e34vQ1ONhY#XDWC;9<4Iv+YAinc# z=4Wf!=as2?oWUb*q_?L#FBb5CwYae>P-pUGY3jxpg4XD%8c zoB!9RlSXNH=AUTSH*PPy&J5WHt_QA>RZ;)Rc5W%2Pm9zxdmgPTBu)C=oTCBwj2Ywz zU)Pn~(c<2iedIRKb?xK|L*TMcJKgw+3kw6Zg_fA0%KQ-mEB5vV;D z5l_Z^4?_}NUM1SqCklDXKO&ZFl~!;=st6kaYSBXD#RjSJ(8T0)G51cOB^Z1J;}`YT zWpoJ_0jj<`v!4#eYR3w+x(Z5~zRkZ%ymZ^`-SA~PSMp)BQ+c^-TRj)j-Y)lMrfNVK zZQNd0c>pNP#)=NsP& z$;nisx6w04*4WJzUA3Ums858~P~zif7Z2E{JAF6|E-2Nhv`+Z>U4I!1rc-V%Ey)@i zkH96OQK*f_p;_47UZj#P`mL{ecdAs&f3QFkB*z^<(%X9Ug%e293PnqPg?j_dHPrnp ztl?&aKS(KwbcNeqRtSx(GJ4lOJ$pmc$1!Lm(-D8Cpn}cqQvVOhv|RK5=nYQ8x0#Jc z{vXPens168-{+O3c0!F~qy>7KxJO9l?j$d?j15rQgNm1p2#E}&`-{okwFslOtNr&( zkci|NG3e=)aC;uNMt%8|zb`)4AYtD;0{$KB?&-n$TQ-Zmw(=L$=9Er$_4E{_sn~XZ zkWQe8c&ejs^b`1psIdjU$24$9H4xqPRqxA>y7jIma`%J0ND(U_^wuPVpbfF(c|}0a zKF8%!7#CJpMG6@ovPhvO)EV68L~fd?TByO~=tG(&Hrtw@I2c2XVV%fCt}x)`ka^>H zG%$F4RX;iZXkRSo?QMOpxOztH6r1Kvo1>$<=L%8>wgSR+XgtMAarq3Hkd0$|(^})2 z$7al2RI=yMjjZr(jlUS~Y6LoTSCCWrm96{7Dy+HBO#V$rg#>&RdTQnEhbY5Yqw^;2 zE1N}*OOGGC5X$|4GgzHy+lfq**rdaj7oGkkz3|LVXFhXYHz4zr(rN9<<)e}Sv5QK% z=w7mUzxsadDl#64MOuCrfegawfQgX zUQ`S=uIamg++MrJfo?TTD~hHN#{R*{)8ddQoXLlQswDfU-0zSeR^k!B3-@6{OWugI z=T=Pfm~8$k4Jmx4cj?v{=#ox1RvMe%-7FYN{zw}%Q4AFVxf?&(lEpW_#M9Dmq@__d zCvXoj>7Z(;BXG%#0Fm}v{??bdv|`$Pwwx%#X0|?fsea%Du3N#3lhhClN(?1dGU#j) z_#Td1A0~^l_{br6_icZMP8$c_DKNAv(`VP|mLw=-EBi69_W zcu53VaAE)8)B<&NkAYkGQIhm0Wkg67HN z&k(N2o(SSRdioMr?qvr5T*6cBJraG*5TJxN{0-TqQz@?kl}Tnp*4h6G2E|PqG5zB7 zeR+d?NZPC_Wd4?Ube@HtD&s)^=?}I*YOgbA?LXIEBo_Unt#l3@wGxiECrK%|Fv+uf zRn)&5TNu(NDJk9}5kk5$JS!}&_QNDC^*@(=GS|AnyZ@)&+mo;6v@=shKJ;RY)=1gM zWL~$S%)zu4`5FVd8@RBGhP|=_dtzt6&H**(zG@y5bGY>LZk`;=H+H?Uv2=g^g^i(~ z*nKE7cxhl47+PfT}EX089lePZ@stK-e*M=*Fo|JC8?*}&vd(LM;+pe z!RwAvxxpH#%N>5_Qy$ob$$bXc*-c8?MBjsWG;B&GH!X zAjlS-AA8~%uu3On(5wHenX@TtNAP_(7{7;_4yEzmRb-4j;A4Dsl|I>D^aVnRu8Lq# zg#hr6v19?Om-*i+Y-h%WMTKz?--*N)h9T%;hu#1^)>K(8E0qA7JQH1I-W~h;;4K8M z@2{^TNq8PfEx$3Qn(RURQUO7-6k#L?aDIpS;Hr3R?@*su7O%QDpnNTb6U}q`c5kY3ovF zjV~&Lm67oklo2yHsz#n`M9vU9!N`2)2P%#==)XD+rtlN{sADHmDXF#OfDd0$8j@v? zQTw>YH}!*cD$7CD`IJgS?^z)Mkr3?UAed-Bl_?x{;$*T=RxUB|8wulq0;pCfS5Z&_)bLd@$P($6bO8NBo3x)51B+@)WWPxb96 zB|F@Y{NT3lx$CF{Q&UUB;VKq?ft$z^#L(MHi*`a?z+)@$Nbv-uz&Di*R z=Wnve?=DA@`w!(BxR8E-)7ivT+|pand;ffVk5dhS>dEdkAHl&9$VomsnTzglPki@y zz|>1wtF!50F==I~-T3e;_jHsNv3>a4EfF0n(&-$;;;rd!4s0=xFSs#-ml)-KlVoRC z$&h6N(wP#bkhIxkqz&39wO%mkRT{Ryt7gNzXM+#dcC>=BG~+4$00~C*tXO(T0>!c1 z;`SSQghV|=4y{vfPmbgviq>!zivjw{Yv2X-WXLytFF(2HSnQqB`dy4< z_78-fCT3>Z+ttmMcR8n+;BIeXkbGo%_+@^;EJXZpi30*C4aSTAAdOpQiIVonY+HH%{a7vF9ig04@{C zBoU6bNjsX9TFD=d3`sWtgjUOmkAdNLAU-1^{Fp++^#AIP0OsV~G1bK`&hWeO^gfEd z#Zg>?Yyc|`4mm=0u4LpMklUoAX|!PKr`H$IV-GJE{~q$Y8KG#!S5B&~BI3{_mCkQ| zr^lh~iL{|e?TG@&5Rc}Niz+!oRI1G!zv1!~H;UZrGsA$c{Z_>`>nkXrEbBEc5D>Ya z@z5+nB(G98PcZ%fAdGFzHzz#J_QdoNfMqd5H%LhIsUX`GvvaJ0^J~Cqom8~ixk5NDpSF*?(Yb%QH=H3D5kK-4+_`jt<1ENE*iSt5d(?7tmMz*Kvzbed zY8DIumUzQ;m@b{Hc~STk#I%WECQ-RkH=8T=DHCCR5qPGZDFFP$?ICEd=f3S6)r?R6N< zf1Gg$w3*15rmQ}dYMGfbxx79_-k1=@fmIj8n5CXA+0&G8cPy7@x-EscHw&85)Gjin z%@j8|IuR2SNL?Y?a~;iI@h>%;)*RO;d0)0LcpR2jel>(um)KA06mg+~X82(xe)8wspsOLo6P_@4OMN|LjTF`k-)B9>g1wB3#)vX=+{z1R!J6AlM zV*H-5J};akjqA-KqCZwcSv6dx_DAG3pN*79^U{`xE(iXX04qmQuOzavs8}LBSnb1W zdwy~?mt7g->>$I#*}f{j+Te2J>&y`8O{Z`(>-#(Jc}0g%CbfwRsUxhYdVZ_XXLv!! z!Lwz}85K`zCe;AK5z`kPOV3(KUA(@XT6xB9ST zA3N7gPs&$D)OIe?qh;h1oMh<5me;Uj&O1mRLGe8-hYPVB<=DO8i`pN<@%BLq1rA-B z@NID$9P2n=(W#++zv~mNBauW`=dUjA<3{7xJLN;<6Ppq1#seA|2%_4unW_{0jz0mu z>2gfwjQThK4j2U@94=duT0Ov9ux;@P zBVxrhFSn|}?)zVZ$SOL{d4lDq6Cn>Mc!7$4W{UPu58Wk@etw4^-IuJoMcAM5{tJRA zA=<_(Yo^LL9M;qQ1^eIU&Si<)9BbstRyWpUgEQZ|9$YZ7x{~S&A@XwP$PF6;ahhP& zt|#?dp>2t#k7;ocf$)z-RL~O}RVOM~mIyVSK(_l>MezZpy1C89wY|))PoVr0M||dF^S=tx~^y68%{T;4Qe(Qr~`J5yefZeNESKHa!!gf zXKVLKX#4tYd>%{weoS(tuY+WX*WGlUn_+2KAQ!e9RcUrhmv(mLP0+>WU*#mJ`K2-N zjpt6i?WJQ!0h7@*wid$mhJ1Py?Tod&E=AmFtRL60<2zs2bcXQvVp!kea?q9Eeo6bz zK8M>#z}(c7(X$;_T*Tjt?=vVq_gd4-&>W1v+#eyy9K|IV++S1^yR75HbD>47X!J{Y zso=k3Kk(A1Phy6wB)hV@-t=%io48XSgPfI zJ6oWI=e9v2QYJGk417bO1k6$aZ0}}1`xS_?vH2Tb^+|SbD}y1*gIS2Srj0>8rW1$R zV$Om)hNqhF(8+b}4l1Va&Lp4d@T*#azNtOX^NDH+4hw}1on1-!rzuMw56k8mHT(YH zKUZomKP38DSwnpble%r0Z_Jq4`4Y~mi8Ax)(FKsNvvsZoWcE_= zT*?Ss)%I0D*0u&O7 z40b=A?AWmT5_`h$S44(3UmYsL(Q?VBdrg;i0`~K>!h(G;1vfOyzE!4=7u}2?IMR<& z1F`yfzgr(d!ao@nJ-#9N4ki(rB;f$`jZ>3Np1j0UJcuQL+ zqvm-%+{;SymYTIX9fV!+{&K80$QZ^TmiVP2KQ5TUK?kV2M1Pvdh&YigVuijGYjJmC zd_Y*~TIr;3-YM|hffT2gPXjawwU(PZR#jwpx)1+W_aOcKbXFZ@H<4@Wi}pXK=29PB zidziP$OxXKr`foRvh*Dhu&5k2F|VG`qNP0pg0D=c?xIeS6i3N?rVYjYPNWyWjE3SY zJVF?P1}+JSMZz=X4A7Jl6kc1@cls{r&${18`_cV%kq|YBw0+1peM1caC})|}TcZy! zp)paRzcSAB9^r>E1(>+)}@+@0zuxm+cG?HITK6=$RrdoGA zmW`MB5z*keKfUEd5-UB%{BdYG-+BxzS-X+?mJn@oj}))?JGKm>OJR7ITT>{iYrCiI z_9c4QE?HQO_N*ICW;Lp^P?Ekq&)~qypqr?bq34Zm8aOU?+Ek(M ziIxuiymuMM6JeP(HT)Nuv9J}$n+|=jk@Wd};?BpoUmMo$B9KqyMUf}?bSSE{lsN0_ zU=N;74ocFGSJqQ1_cH`{)Ep<=le8iGS-@nsv0WS2y%(haGva1p%GS{e)|q2XZ#QT! z8q~Dx?X$-A?1c#boJ9(;4>8+6F2HB`4v)*30gpc`G|JCzp~5WgmWvF5^9}pB)amu8 zG5V7|=u;Cr{arb?tmoBLOeRU>5kDHu&PxZ!N;W%b|@-jp)04y-?6#$n-BQ-jd?$;r^blP<9~71_3}1U}cF<_%>v ztI9V&QR3ngLYj{)qm)I*&oDEqsf450j(l4!ww2q1e)b1^SBr;KD~$baT{CzogTQ4( zh#v~`+;+S4F$nKIZ*QO!$jgYfi?)FpS3a>MTusUhoRY8^FKk)3ITf@}*f+ z(=#@1WJmV%im*^gcvYO~&xr2dcj2ZA_jp*1ZY+;$vt}$+Qki*zs+)-(2J8Q{vP%yu z<X7I$w={xs8=0iQj(i`OdrZ0QkYA43(z|z3MeROgnb03Eh9N$vx~5=edZqyE2=tV*;8AnQ%{5H#() zgSWVuW37=kq;AiLJV3rbP<;t>n?1V)Uu!x?P_H>CVZZrO(l{kwp@LXp@Orc1(NmKe zX@p(EY-&kw(*34OZn)lkrt9?OJq{$|tWARF;>NR-a_a1%sWubEf{yay9HFlhX+_lI zY;^8-Xh>rVnMr7tqYNI_tI^sv4|1y`9>bkC(ntyuBX*ieP~KtH>Ni^(H;dmBgH$(rz>_4x`?2MPX&}RjvNySwp#s z6E25|6`rs%LABYrOu*RAgjh(O5Yn#Nd0AU;0@L1eCvA>P+0*C-mdUwi*>wJiuGU=G zRL=pL)g?dd7xFT<=8t{YZ#4jBMY_vSHA-IjM?sM2@Zl-+x^~_%Hu9TwI z6knnZT)uPjiBvMSbKMlmzx!XW-k$duR1SRS&8A zRkUXJcs=i9-1>EOXC&4mlZ!I0ZWu{+c5gM@XDyP78~EY z8OU9w_aM$HZ&- z>zyq^!#Wm>%jfk>L)_wt`n_U9ZYllUq+(A_X%Snz_w2Xhqa%(Q;E3nv>{>-5aLIC9$xxTJr8B z+S`s@Spi+kjX#GlK6-p1-T7OgvhWLyiRd}jZq(`lQ5P&|5s%BC#4gdc2P zY4BRPvk<_x8?&|irM2R2u^T#D55S8`W zLy;fhIRX@Jdw#7uZTS`5d&-igi*G|jj^om0F4!6fT%kGcbFN7--8$=pOJ&!uCZ6Oq zAe$CsuB{K(IGVcbPLJsavsU6O?i%?X=ofJg>>YB-I6F2}?OW86KS#NOr8#569WZHF z-oM&nJZT2f?z9u6(<>1aiU2u#CYiWWC2mhLaOr#yTL*9Db~3g47D1i4e&RyJ40Mqi z&9j;OtJX&^*o=eP~>~A#nRXgYg;0@zo$*!u6D;^PUM4jp?QBI*P0O-2ih0<6p}L= zt3lC(YFOucs_p9^yrYdT=51J2i{y?o0bupZWv>ewq1U3K+l-nc`S5c^6Vj7(y%zMn z{XHV7$fFZ@yJI51>zdndkDG zI?^X^=buk1{dnw8zp*+`u#D8WF^18t^gI{KB`^_Gd?;L$Bk$P)6nVB@&xYr4P1d0K zc{*D?g~gn{PDBtT>zMm#4*U8CV1vp0Wjs#h{Ejd`zjhLeGkMO&v_gTa97R+8U*DU~ zC{1Sq+L9mcvv^ne+PAM8)8eBiLR2(G%^ye+)h0Z|*Fn6K-RFppBIRpM&O{kWW2SeyVP&QtWbWhuWS|gIRrU6djI$n^)N#0w ziM$tW+q!RzG7Fy#cCER!9Hyo8;S-D5D^cE+AKU2)l*ta-OB8JS{xkv0m7 z>w1L+^tAlLIpCH~bPKCV%qHuAutXM$L&L4%<5))Z@HP6y*}l=1h+|a(GPek{BE@xh zU7R(+W)EnN+toex`{V~=(z<)@XaA8Fx8seU!fPMZdgnf=SiJH>Zr{|x*5|3)psxVr zZuO)?C%qbnEXUH)5}mY2vZH21Cy+ufAp%F0kV_@Bg7la~`q&`uf8RLyY+H z8vdIBV4Gw%n|8K)bc;CWkBA&qUTN@!yH?2$k8Z{wdl#*Qs3;yZXWt%*g#4QGP3Aom z&y?0!sel}xO88pE5&8S6X)R9~u9)Su$j20~tCIzaC)Z5vN_&*+aO^*r-FrIy@xy|T z%+NTrbVmtwuOxh-jn91&G8@?^(&az%Fh_kKuydh#!H`w&(V$2qQmMrw$Pf1zxYt2g z+dZyEVW(tS!H#plqPtz763GN_IYAQq6 zJ_~YJR=TeSQ^!UkaeLz*jx4sk7$>8DI{k2!h6_9O=eh0HV%13M=a&j8XA8JI+>>FO zeO0u#mMJZ&9lIyl1XEJM2N+>5v&Ck1{EjP2Ji2+kx}CumE{RTL}vc=yk0g7LLgCL}sK- zV1)3ekxSs?g;Ku~7Broi>80~|L#r?Geu+vPKIGDwjOVPQ6}uRSo>$l?x3%95I^YBC zQ*b~1Z|K($o;85^h0FnIO~3|xk@F-0ipe0;0~o)gOGN^XHNX+n?#K7w;NVFBWQe#V z-T)i$HEQ;I2~m+^Qxp2-=Fh^^$^?vQxqmv*vWB)gZ4eby+0H!TFS+VAHV2KUY|YTX zK%_SdO>>kUGZQp}x@*5RDAPNrWK-G`1;Zdhs+WK)NGDZhKK1srkvd$oM;DAk*rKe{ z<5x8a;P&e>@pwvT9J`V}-8sBans06O{K0`u;-t;x_r$r*JBdUn4HmC~V(UXDqiy5p z*IDeq>&S^Am*B5S1?BIQ$c`_{6pS{B)8bsAVy$fb&E zG~SvgSKA3ur&nXoU{hm=aHD;Id_foJE_$sG-G%YRMNn-DJNr#XPZd;M3V*HFIeuf* z+?5HUR5b;T^Xr^rzLD8!`}1HsbwWGlSH-ml%Q{LKV-co5DYG7| z?r5VlE_ZX<0`^)bXXmuy;Z^yNBo^O0jM21gQ{#t@%W^d3_sMuN%hkWB_cX+Wu=}5C zz3by?o+TaY|HO}GQfNHL5R*EhjbxdNJIM_(YVsDz@L0y!$KMU1F!}HuP%rkK%O3F| z#g*@}WP1OCJyNL0d(3(g_n4l`KT*6xzw^RddL5S^pHJKIQGU2R!aTxO)E3{^b~ zyE88N{@Muj`)pqsLIbUq!X_&@gYWl z7Hy4M7mi|cu`QjJXXe?})vAFdesL7i1|uhX5)e{|{e_~^-`4^V2LAhYfBXtc-^{dN z9(4CSX?u_>*a3BOZES_vqG6l1rj2QrtwDlKzVl6x82Df|o4)hLySGgrsaft_5uES|J0W-2V@K=lS0h_W5}vI@V!fQeksC0)P_|6 zE~UQNG%Z7CQ931!hB zvc{{6{9GHB*oFs*{9`bk;zz zOAs!)+f*-7wV(EgDACfR2pmHB6=ZWV)t6CyTtple@mLKmu4N}uP!kMkE+&$)PM<|9 zVc-9tixP!i_frb0E{aV^**aXG*@i<=okJYNsBinZAtm`N&^zn#(%zZYvJ{8Th#VXL zz2WdXe^Lli3jyg=J(I$TRj^<^mc#B06L-d%ym0d~s@eGxk+NSS{R^AtikN&po8}EQ zye=%8hwH0HjJVhVzFam-Ke0sX6cBtCfAf`q%fxPI*X@_?L~&pX)t0Hlr56T+SJj04 zV1uF0iAH~_5Ko@d6sQPMn!trXS51s+4cw&8FrmA4b%T1_tnvq+YLZ}oFi zouPuRo4@V}&AG&HzD(RO$mr|ok@od%+O#OCyfXZG(VYx>t!=_Omyu^}I8w>ZHU&DI zYiAH~v!Nz1;pQ8B>4xg`7Pb;2Wrs2xaL8KXMt?}+*i=6CDX}{9PXjQ@Mc5sz`XFu(qCdL}s=vKs zzZU4<(>Sr-Fr9%uGQuwy6@HG7&pNn+GPa=u4tZe}KQ(3W-mc#8J<*n}Cx|YAL{Xb? zq6P#P#i{&PG?oj14-ZzaqCK|je;7qc)=G1C9@|Aca{cCY%f)LyXD2RdPgO-Fj^7@& zBZG9nz-yz8BaoL!rG9BT*}*&CDjoj>eKpK?G6A z$8cXuFxZn)ysRJ&W=Zx-!ITiW!mrnjYG0p9N0SRS3`K7I+4sAxPl|TfUTBs=#iq1$ zB02ajP>-NXO^~syU@J%_WYUgas8>BW+F_lDK6l{*$Tc3@Mb)%6ADN5i=plxHO=muo zVM|S5`T$R7=BQAqkx2pS3Ow0}aU_mog%p=2YMm{P>f>QL7U{vjb@Sq*F>uf{ABvEz zEjKeaPoW^_@YEkS9%{29T}~?ixJ=D@ijB8SZw5YIW#NLgN?iTIvsN^NXP{fJl@!`@ zCltpBgz2CJg|D6_-3}#sn9Lk(V;aQ(#bTW zj?)(s;vJ`~&~I=+M>h{t3S^Gn-Wygl3Sd9=M);wC6s`o>W*^=pku@`XNgv2PjZNu| z&8m;40TV3eyo2w;Yvk5<=s_c{K93adNib-BBayAZo8P3uxo~oM04ZMS`~nU&Tf3mW zPw4JBbxV5V+UuO9l55>pkb>#?+uH@VMPBB9ooFUK>~>Z)6CZHj1&m)M;UQvegN~=y!ck7*p@)J3>ehJC_JG!(Zt~Y$ zr_9T{AQknHpH&I9v#`q=XTk5^;VV2*mRMC3zAz=*YZ#Y|^}^V0XlQtOzb*aUiYXk& znmk;8a~Ju0z)Ehc7V~H+{^dR6n!+i2|6U(0y5%+f$BSRbqZe;jUCnSmFE4c9OQkm8 z7+~Z)DHe|QbL$7GIm6!yfu9Dkc|{@d`7dw~x(PYxhtf}X%st-t9sjAa+$ z*P3gP&JoWL5CMQMG?#Tt)&x^Y?U9a9|7RqS&8vtI6F+>`cz*+wM(Z}>`;C{L5l{k; z<_ep61b&+Ojs^>TF&{kQ+cKU2t$6Z$HH36>*L8NF*8DOaVy7v(9<>uWyYqDRe1Qf4 zaz4T!c-~Am-%C*+I>nTi?>}D-%>2H)7&nU2p}`{luT%TNIl!>-2s*J_yJ-1+Nkfo- zpkE|U*2l&ECBqV#6XG88?>YB{B`~$aA=D%3a{>3zTsy@Yl^zs@TRH-wAxcy{uyXE+ zX9?ZSpwcX(e2Vk}%%{41MC2F0>rOra^Nyl9y#pP0ggiN*dNcf!x&IG*KjMla76~E! zq4+3zzok3d3)WWTpfB+9fdt zlaEnY167Lg{jScMvpw6yIj1W~+RQm07k4l%S%U<(HQVVi{5QN}a4@T8u30Ipnsi%4 z*W48kLoBj>8$4v=wzl%qQ_47epeOOS5-lFav5gK^jNvd}Hqr)iXpHgcH>%EEc+EM} z1hRx>*SE!q>7T-ClAV$8C!2i4I%9xLWvfi{R3C{d821VU3BMS9L8_=L`}$C(k$E9V z36?LmOB4+a4dvENaq%5EK*XH;pALR(7(5AY|HfzW_ku>8fb*Iw|I@*Lg>Gqpu!zB0 zx&CLLL^?mxK(UL%mwO(=_1J4-tt&{079Yjsf(H8V7Qx4oZPd-sh8*K-)KVtAS}*4x z+?XcjnU{zHu;|N|AV_~veHsrB(yg?=2L&a5!uc;GR%kJV%N_S9_*Q0$jOEr;@f}D4 zblSY2(v>@<^23q7Q=y?`;?C=KK@xO)fg0H&OtJ27_qyKH#F7YnLeQtMhpsR)1gKU(jRLktm*e`-M^ zEb5tgm}QXS=xO(c*e~x5**F}HsdkMkunVlj`Wu1Efn}&O`RqzqpjaysyaiSGTYxG( z{i|ou%IIKXh&@l{mJh@%UkML<%vH*&eR`L1O#=Bw(MM?_ zSnx9-7wA7;fY5-FbDH9yYlN~$$*LiUza;zKI6U*2N@#J=OQwme5Xz6pkAIkNjhbDMsmyCd5UM=|(<2J+$60xc3s1vkQPYCwRH8>xHb z5AJd{yfA8A^nU?P7OV9I~)I?2i*la z4{p!xIQDK9FITnI@rwihSL#8Ke9>3Ub4&-jo4N-E+rz4xJ3ersb%&#Tc>m*L%Pts` zOZVpcb`y2l<7!F;PZL-3T>hLp%nZ#@|zQ63I<(_{aCS zYg-Cjci9cAVb)Wh9(TR__e{VrW*B&>TmJVHrC_a6F7G^({88xP6A|dGi9w|l|F{6J z|2};fGGdVw+HcX1hv@kxTtTP*TBz74!b}))N&YIg$m;7f(3ryDX)jk77E>2|bO_jZ z?F-a>xzFXsdJ{H~c9&m*zUcBYuOR$aham-sOq@x>+x^Ca*8Mle7KG-nl<>oN{tG2< z7y@q`wVE8?W>ni%gX_iGJjF4b`d1|$;NnNym!Derb(AbcaXV0OB| zJqUn7B|PtRp9r1$`~G<0JCC>P>LYqqYFHQJ$1RGdVX>DU_lCRXgV?kA?Ye12h7&*) z>i;ALfD*&-fgPRoUhz-rTex7~eYcU=2^?{psC+j-4<2Sv7d*_r5-E&00I}%k_iB!T z!*2&V)aEkWbH&JPL86rp5PkHkwb8GnlTFkL4ds+GIMgTW4o+>>ATb2-VC4e|%N-R? z2{?v9SPTb}`TjnLKhVtq(x213e+?OF15n@<7!q+b+uyv04CM+divxMX)c2z`^$WMe zKU0|Bu%zxqtjlcfGl=56i-RK{;mXSfL4f$?Ah1K-^+o~9*#?2EuXd|GvW%tBf-*1mI0r~mdvVpFR$H@mWyo= zNRA4_qW>oD{wRTPe&6rH$-j35c;USO7;y0n`g3=8BVefegWX2t-%$(?%CQiXikqt% zhGTR4aotFc3SpT@(mLzO0>Jbe`}mUSh;SbT(*m($0b;B*dBlr=(f$q&46;kS`Z}J< z9l}0M9U~yjg7Jq*HH{zT+aPK8+x>43^mvc=V2;15+rA_qpzLrD-%)V{HotuXPx#G= zm+bEoVjyle8Zi^ZZB)HeG_^>=mibSGY*r2AjK z9@F!a{U4{GRuWMwwt)>KYYmlay?-MpZa{eRwm;T$>#$m>-Ok-|Ej(fjMxuWpMXP6| z)=RDrk#`qMm?(Ij&+n57K*$GQUvR-kwY*7v_Pg_P47M4SPiNZS^FJ#C+3rAS@_)JD zrS?m=SYj6wTs33j8|upKL-kps+Wacp(+GpXBk|B3ZS8jF&fFZD>s=@!v08)HQZ7zy^ z{TYJVsZXQ_r`2!_?!E;~oe|du$yxDK#xCc61oU%E3P1cYAiqGmBWk7G7kpPvwu5=$ zVMqT#w!1_B0hkI7_vq;r|7FGW(nIB=qIlj%W(mEm*FiGJljBGr!G+FU>*R0dTv*SY z)Zo^Ydk#(zdF3eHH#mOq@gh2y9&rM1SZ7E!XDoRB96`MWt++1+BhEh^B-Ym_y{p0hhz^aa)d=Qe)&MFgNr1^=nePRjBm4*!1+> zDuGWp7+)yiX>c;mD~ylR+Xl^mEWTkro0afQH$pia;X;$OGWV$+^$S-a%WE-Kjke?R z_F;uEgNolZ92KiA3P=Ym(2-k&gmbk2K$qK~WJC-UX=qKSWgfZgz~y#*CU+~<^Jb!U zR=02##5zbn4S!Y9c-s7O z(7a-ZWYqMb$iIXK6CUs6$!gL6J|#2^%8!yyG z4I90d>b8rO-yTz~Wcps@hqElFJ&tFl zO5Ffg|S#ul(jaX z;bo>@Ff0x3b^Er2-JFcSP*qHn_rmOC2*|@@9ZW^hsN|6!e!)OF^}~&1<1tN1r;W02 z_zp@GF+M!rw027W-3kII+&hy91ZZyUZvvIWsncZM5DA{}%ka=-`Nu3w!*gg?Hh@UTNsYP)qPSt#+fobkkzR zT2r(!Rkz_zd;0X zzk^fNqB!vCH{~kc4oRH7I$FnnVX9Le>2Q`6N-cAJanhzTT-2)P=rCX7$N-0AtjE4B zMQ{|OU$A#aloI-bK@~-?EoDvEWUhm;NK9aZ>C6*--1Yr6$}@VrKJy+c4?xGJ>%KBG z%U&$hNmUi4V*cJD*3svWut)-33)y@U=*fxdma3{_@75PrwH0oz!Qm$w?7Nr-j3yhk zspk-~1cGytx6y)0vc3j_Ys$Vb)zb%|4 zULqqc&IX&Kn3eAoZeAL&%JAwMBr3o8^bamxz7g|aJSXlU%3%yhD|G3n7)wRk_*f`O z^4AGq37*J%hX9t`-LWJFo3)nY?(Hej27(`Y`eU}*o+ctP@`bv35SW}*FXr6)(leEo zJqG~pS>MZDVXtG>ri(2O?}K1;D&=Xx3H^7z*B8ML+SvRv1g!864-Z@4Q>Y*q^MSeD z9l+oZ!b3bZjgbgBK0b!Fit6;v*RCb%^&9GzzCx6|K32;VUaE<_1>z>jK=eUq-gUwt z6a^WNz_%I`g9G_m`6T1h6;45*Tv-$_%OqC`0JSxW5;I8JwE= zFlSxn?v65nfIOQNvQBvSUh`#X$54g=ItYm*=JLkmq#p-ZKiR<%kU3HX)5QXIvy(H5 zonf!kbpiA|Tx=lLZAwo_ymb5{0Qo2AB0(QT_cL)f0R_(XI0kAoGCbh;KEAomG4%Kf zpp2y7t#x(DMP0XEW9L~6q?qaZ%TrEf$)ctCUTjK7YNuz<=~h~k85c2KTmyLP0Kg7! zCq^3Ix<`=2CyNZeWqYgESAc7= z?zseh`)>bGaV} z7(eTIhK-`+0+z4VxXv z)YN>*3*Mc~Xifs>H4Z}+C7pEaGgd|YmK-AZujS3(9bt$1i*W)-4l(@^Yx2}4STC&xN$T|V(T^lP>;vw$b?8?+lSiR26cph1y&(c!Q>AYy5Iu>91qW; z(5r%_!6ehB=>poIG`&AD-r4cyh_Z-^o==fv>l~SK`+g#UyYS_+pxIWnpv{|;RctVkRQ}{xCne?hRY@?+_P*qKZPrmwo@Q(tke4 zc{WD#__ZG2LF*JCL+T3QxA-4Il+Ws)_$%V`cVP-;fRx4JiR-n#u2(KGSY$U*_gfy^ zF0LO8`-WTzA6`T(X$0MwM0{D;`uZ|JUym@2cC(ibtAI9bz(pcV_X_ZajHk-X=5bqr z(z9k{hi-eoWz*#zzsm43z7H(jU4}9qSrAX4`pwiY`)BDZfp`!!wTVM*(crsP2IVcvo(iH1 z=js2)*`J3~-F9!l_}<$*&r>KNQ|2L4*ro^-Wy(BeDnn!pdzUFnlsUszAuco20+qW@T~7d6$&>aD)o(LyQ%? z^#Df?-{26CQF2y}$GxeNbMSjOLXd4pz;Jylr8*=$3!&+qy|Epi5-V{%>Ns_TS*FuO z?N{_)%O3X5&j%F==WUZOD~RCb4b4l=?aXJOEsj)l!spAvZC03QxFvUki%78 zeOrY6epOrCb9SKhV0)JX9}M%MKFH@{6_aBbZrYnrVwlAL>Nq2LEr&K_LIS$|?hY7| z@hCV`2pexQDlad`=3P5;d#n_$9zoek#-FY~f0f<~2j*E;zj~Zoc|B8bzn#g1OGRah zGKgZdinod(4HawJu@eUV7bwVVUEa?OT2Te@Wp%Cd%q*bsY%BA>-vmt4(||K1 zvm|V=CzzLRr%`k0>Pl5?UM;HNyX5@K7hGcY*5bCY=FsM!+`^DB@9%LAc*(zN2E`(_5_z`l>ly-T_vFfLO+| zoL*Sw1uwe!7*FLCWyzYC2%OE<*RAERUZa+N0qyW}H` zZ3A(6V&SbZyXvMDiO*)G{99 z^&JLnBQS>{Y+(TRdCqsm6XYd0NQku{z6yltdcy!M06Oi~Bj`EL*j{Z2NPlR>+A!cXO4M<;fp@C++qjn1dBr9NI zMSP@C(5v$m%ITKzxBc%v&=NmibvkrO>oF@jQz>XK%yXpEIt!X;p77`o za0~^I_X%LEr&{yIf75E6H?=jtGK6iZocH{$P~hq!bVfD+O_Cfd9AwE zB}z-~kV&eXj)*khwoaD`60x;?q9S4w`Ox(XqpB8y&mNy9 zL_^hfP4Yg+lX`U+I4X(OkC#sZEYL~BGI^tz4OYRv{A8LYuDI5=ybXqL*L|66f7dQ# zF8;OD2nT{lB)-e*a*5I6W*Yr7O-nu~=Dhg}cP{oaMNbz?cBHkl5=_VF50ly=0)xAO@w{M}ZD~@w!}t26r2Pl} z<^j#j3rZ(`G%Kw@@wW7*f^@rEf!jlxHM2jT9cevj-AI4Qf%uboCbDDGb&yCQRxuob zlY77L8N$HR*AYHwUl-dHV^hM8Ew@K!`DH;OCmap>f#BEq(DcOT0$CIAsxG-|qvNG<>ZuARmt7?JX8A2c(4-_f3EgFE;Oh785 z#~J|l3Jmj~d7bwd?wQ51=LZ`Oa`aAUT>jKL>(F>m!y1_5XJppPa!P^C$vH>C#JOtS zES_)QY|%XXb0+zdr}vzS>eUuk^nZadQe)~m=aX6$z47gQ9b{exJW+-i%qhOE?UGoZl6Zq~xtI#cg4-E=2*y!HQEZUGqrQ@2iN^0R*(%3#VY#a50e3tR zfzxhrpoE;!|LsMkK(~Vr$j=^^3=6=2*4ZI&(F%mU%6IGJVi-zm*v&;u;gvU}IRwFw zL!9R4M(>5I-#~6QKmFAek{U9rbpHNV$;>UD42X@``Ycz0mnGOeG;D3NWl6gEd3Zh? zm|h|5f*Luhm=hdZxK!cKbtLfifw z04GyG)AZf#FV|gn(dm7&f77(*xA*Cta3$G>-7I86LJ^{(qFZ(TZX)iR-Z0@Su(Lit zW{a^-NWlRXItLHkp$?|N?_MUjC*2KHHSZ)zv42y|c@hDbTb}%7E{Z*AF$Hb&rM*ry zfMvW6|51*|b$Y;DsTsH;>!1BwnK3brybQ&E)ILb|mYdSVd5(R18&txZ8Hr6jp-(~W zut652*a^<9-h&DYATb6mAS@iH`J9KQ&`&e?xpaW14TF@-QqP?LAMBDD~ ze2<*8m6wW1vmF7Nt&%H`_%o62?(Qun zH{L*Jc0ZCE1N3Q*o&dSEfIrnSp^kswtC|G>>Zr46hn(iz;og|$Qoj-tuGS`1=QNb; zEt;0vps!^BLP-Qr_2j<3FL1qtjHO9N>s-!yJC>W?ea6o{Ages=!${UAgT*ZPeYlNs zf&yb=0}qqoVlH;?K5PPGnB=E)i?f{_rREi$394n0xKRO8`3l(ybNc>Cl6dw&&UCozm6`?u!fY`27e z>E{0*US$PeMNbrL|BEF_IL1W19N{O{l~QO_ij3_C1P=9&driM0FMc>34l z-sF{hbn>y_F$|#M@xm`E!|3%0cdLj*;lcLcD=jaOVtrrzPLGZx&H7sD@(|2VGlE=v zV}9tB77a9Pv3SW%3FMzZy*=6F20umqlOLwSRRJKdLc>^}71agyKUm$U$C!_)9ISpY zt@kZT{rZz{nNil-XHc_d^*u%KI%V!PX+o@~rY5BN2MtX=ANWtU+&L%1zb|-wKMH}v zyvv`udRk&*6vnKUZ`~MNnRLpR*t5WdQe?lOO(sCJa>bFb?bH2stS+qUshoPf31v}L zjT%7F+&k_@ft;5}8)M~&yS(et^e5^bOU%CzJtU!jN%zC*?Qr>Au!lY|i zQ3Z+T(W2P0DSiN;Gv%G2mrBqYXMv;9$Y=aRnS^}!O$QRH8kz{%Vp#IuI^n#C0Kc7Q z+*oUNd@*oP9l!2A+i@?CtDW?90jv&GZ)#?u&wKU==CKYIMR`2sRJ>InhWHxKqZLRK z3c~Gap0R{^pC44d^>UgGBL_gJ>S2v&@7aoBUXbqArC8eoRI)HxmD+{v zW?*F1au5K?S%pUXPHHg%x+CyTNq3Fy@9`=MNXd|fhfV+pD78dkD9Fj7`Fs0;Or=|T zfPR5AsBgUWJ{YLgnl^_tZhvPMF~j`V6dvjvwI=K@aAr2(0#4Qd&aOHrj+8kMa-aEL zOR6gd<_u>ah%7SMZUDWvIZplo8V)(ETzD1$UJ*v(!C*-B5NK$xj@ds2eddn1w0Ew< zg&+thyMoz!*j$#4FmeMsYf)&2w9)&Hf;>7l6@TIra3LN__WOo@q>Rc;Xotmb`>Om_Um&#{L7bJ!?3<* z=X5_RdtRW+j$u{eNIL9Ln0VT2Z#!(k@e*VhzDpB}`|uaR6RjI$m3e9t9$**?Yo@`W z1Q@wIpOcs$1vBQ4YV7__$RB!jTVezFHmxb(ky5`Pksk#);qs8rOs3PST| zGziU}3xyE0i4*vr7C@^?)8&N9RDQCA%QpJ;bt#_i=AZ(rbqq{SHTF;Q{sBas z!oC^9Q&qqp>EVZ{`G74RkP#*#@dxr$fBIzA4--Z}7D{x zonPtge;2&(3khYIR=a0R$p8WnBak=SjIQi0$Zu|)L5j>+*E3XGl3Ftx^6Tcm`rJjo zngaRyXsx zPt4S;%*`Z?YSfCQF)m{^(`NgzZrPs+uzME-etdaxm^ShSrl7uf17m3Z`}Dg#R}s;k zB-X&^Zuzd3Y!LpX)iDwi!7-cQ-q-4n;l^de%gV_BV5omc*yB%QB9DENdsd{P=_eR7 zJ@AX3AgUXk&6=4We0Jm%8|vHr0{&lJNp4M>{>|XW6dPgkZzc94Gvdj6<#=gX@cMqT z1=XqM{XdtiU7zZzr60e$+)@QTDsB$;6A<3~MdP>uNZn4FxP%MSPW zG3Ah~tSk$t8B^|~CNp(`7bxuyVIG;qFKz)eOCedw=-_IwQreKq8-fmrm8| z=Du8t@{jk$HY9WvG3r${1-j2q$pADQwM|gvxoto+xnp9MoARQ*bX-be&){%c8-sC-kgas;?1aJel=DJ9d33;KDWoX1`+J zt&MV43weW(Q)S2Tx;_#jsJ+NGHP=*fT} z)yxREr{GdpK$MXGUsUAlR{%A_^_Us~h;5+aBrQ-S{(A1B9WE2QCk+~?K!aZWh;o_& z_9y#ucHDf_7T44BKGgtKHa&1JqCkOu|Dc7y-{8s{wg=(>P|8#KbEHWEx}mR0{_ovC z;WdFaXE@~UQ!XfN6Io*H^-lx6L0IYyd?rdy3j~7b8RKqZ29y5-u$Z$6E(V1#xc1iSFFf$m@|Gh;#0}nzeKGGVGUG z`#10#QChOM)MD$J&zRscPMhFnJTP3Mqqp6;k=stPMh|OiQUO;%(u;dkD!- zL#iyevCkl38}pnO#yct;Ar6s&V{$n3{l{tpx)dn5&*Ik#r}qRFnillnWO3YpIfd&g zbKpJsE%ZD5acH-Qp#iV?bxw}z;uNe9R?49h%pzfC=7+$NnPpk%XfN$zuN((8x))NP z(3LCXMI^}lSiZ`qDdra06e{7LVz`w=X2X%79B>vn8K3QWF2S_Vf>FQ~mFS7nzA{St{FLt;Wc+#-uR zcjGwrMxBH2C*~0?j=s`~VZOEJ9FtwuPmEd?94WT8<(tIFWst?+ptJ^*s5!eGdTpPDD6a z6Z$_l;I^qnKFz45&nlW?&$-E(MELR=7yo(AKbJOR4>gXdCfZ!KP%pML$A0E`#i9V= zS5m~hPdE;3^bm*Rk-6e6Fj0g=4079$VYd7CDOF+{32svTdS!eR@+PP|T!LABJ8Yy8 zV@Ob8XbpcCmA$~KT6sO_WjOa-jhTt^3b|6L;h`A|Ofv~IXyO*8Tc)AwD0g*96X8fl zODBD*8J>97eY@oZ-lnwJX#>2ItXEIt;^I=X|2J`Gpy!T6x>8l{OPE5{ufAb?JEn%P zcxi;tFMXIfCiF|>;*=$wyId?kx`rNN6zx?PsI%Z|jM2}bWbgmdxY{6k)Iaof7+DQ8 zHzg`ceFHyyAV*h9h;`$?h?=OF-0pr)uRdD8L~rOm^7$f5uoKP<2A)uq$~L4@@jm>= z_sAKX4>BuyaoR6@#e5t<4FY|EVyyR1a?bD`mtlCpCjxBeJJmZ)yyQ~iykxJ5;XDuA z*QpHy?^W1DW9+TB*=Sq}DC=4)EC>hdqU z_qBK5CT__uTs}+q4~+;0tkFB@_!7k-=OAW+{C~e+oc7}6vR`dER2_XE;*>3?(yWJU zjmd6~xUQl}SUK_p7A55)3x=}o_Q*?O^-qvyv#9;lq_b`3 z`iDQ2$&aCKxXcU8!xp0FQTo%djti9V%{PkoA7p5;;7DO2JcJ<8w(sqNOf0VOKb@G# zx`~=QBLxnYe4~j7!n@_4Bs>f~04)kLV!;i$fiN}Ttn}Y_QR2NRjBE#x+@$@8PyR~- zO5f?iy7lq@Dj}gTeBue;WnbU;1l;&cP&tO_#v$`$?i@Y}cHo;w04p>dOx;sH*o^~P;BMM)mFjdM#I#n{e`=rrTazf^IxGT0LV$a}} z#XtpjPfx&TAl?rRki4fT~y-|rKvkNXf~ z%!Os3KdU>Fto^KC5AO4fIjI*_;6dbwBgX zuwW%?gJ$;EvZspfNHwfso&RjJSz>ss2|ySeNT9SN2Y*)Ma^In^^ zkvElk90GD-*?vc%Tm6I=3w|AZXnw)@td#IQ{RK_3C}AB310*w?MWb@;FvjNX8v*^e zXr?NRfOE`)pqmzMWvG$5Y-3?fT1L7D52A#l%Xw|5$`O}Wj&}R|GQOqi-Qs)xWx+3# z|62FAiu+SR{m8~Y{eBCxk=Ei8LuC;;2^lqS{)_puI@R%%R-TSiD>89GP2#h1WKU*CU$_l&Li*X_IyL7) z9Hz6HK+-Ckkh6tK@-4FY$Wk;n_+uVyhg^xs**bpiBD7xG48o70T6eD{P1lV!#a<=- zsK8Ase0rEF^`~G0hR04el@M~CI}zY3rab5H;28WZjPht-@2)04`3aijf=_|M`7(QK zdN^cr?=w(>$OTcWXeI9~vPV7$F?Bz5u{9yajfu@{l)^~U*+xYAPLTF$JeN=7RZSzD zTeiz)fpNGf3)|j@H~Hj6ofZ@#wv-z)SFqH2q^ZGnT)?#x3aFC!Cg+fE=ni?@h_R9n zrMi19k?;bF)ba_!C(Ks>?_bJ*}^MR_^>p3;l>BGC3y??!S1_*7tE-a=x%QR@_8*=NCNDQ(~lh6WZ#Wv zzi^q6QU3nSQ4!&bc#G6pB#V07AjQsazlIYg$Htdse8i_8_tn7rLD$6Z(x05f|GuY8 z13gfCR_`hvy4vcrBxLFSp(xEh!o&@5$4OQe^XErn>m~`(l3Wh7@^ini{?v)EDh_kL zqIima>2U#eUG)bOw$gjq&N#8K_hSLJIZUIWiCpa|8%)HOd!r%%yLHrKGIZ(i;*%Bl zvpU!hqLyqel%)KSRb|)~ayAGiLMLEG!4di;=CT|wJ@l>LL}P1L?q2j?6tCiXi`XWn z9LIHO=p6g%2fiI&x%*eajts=#RfBefR1uL2Cc(aF?YMM&ER9wvmGn6U;KimgwlX*R zc_U>bNy{l1Fu(S*tp=m)s-q=vE`(n}aKjH3f}HD2dlgY{$cy+thBJGMZm3ITGlg)_ z9|Y5Dyb40kDI@g=SbB78x-i-9{yG!# zxfZ+)rkO=RlDEejEOS{;9n&q1)P+Tl5b#f}PJA1@aHB_`Yg344aW<4hr~I!PioVji zR3XFX&&*Bj;^$pLSY@@V@Nq4!<19}@9$rDd(Gkq=Ioe#UAy1WirkF5y!!0JBrTR6D zvzWcB2HJ?0PGGOAN~CK%P2_orjWD;ap~!_q#JK9-m`STSusia6g;oe5K1_cPsu4H z=_8BVLpqz~6|8|5U6iDQ)r)Ef-AaosNkzQ)Hr5f&LBu5IDW{5G+@-=gOVZk>izP4P zET%tyT?v$L&Ripp8>7QsBar7t{{G{hsgMls%Y@NVFdov#N%z$Uq(52DvskVd_+X#g zu}zTw0gh`K%xh4QJ?-$87sp(pHZ1TK z5fvo_&>Qmfkgr1`nz-W9Xk&iN?s3Zqo|bKlf0Cg^9xNfUz=cN9<3=w~d6z6|z!fl` zYw?w+Fj4SVv+HFapD0isfQNXgo0aVGNh;7*1PogrQV(i%e1Zd`75}mD=>TyXry>A5 zPkif9UFve2@@;`n#8i|h$_Yf>BzsFcwvtitr&;;%Kb~E@yZ)x;=pqb9VcE=_W;~EB zv~d&Y;P?&JHx;I`PuA=yzd#vhf{3B34Ol4vYvsFXEi!y zNM=5vQv$14ZhlZj8QwQQ)i>|cP^x^*=9&izra-wqN|}EyamHV-sEG-ij^o(b5b3RR2@n)W~$B+^7-k6U5&Xmy4mg!xOAi%bEE>k zL{(9;m*obrUo78KcsIcl){PJvUB<`VxRAB8d zP#YxZnp?;(UenkQ5wFcd88Ph$Ctm_hH>%y*Nm9)BJ51&Nf}S(?csk1OPk(%h%y7RH zzVz~5KO3JTTX5K)?rNoE^w0`1{g2=x_>ayf4R$XK`|r)1>Gv!6Zi%$(j0RAV^=W^8 zhzUc#)EFrRT|+MgszSbH%_O6VIho?_Nmu*XCLxwFpvW_*iqjNv_BwVBBcz+y~Tg;Bf^!4xge`FL8WWf{{UU zqkROb&>4dtWsvQRM~cfcLB9=SgD;YpF78vQ1*oc~IO^AXPV{2;;rEGbD5RHDMq_>k zJ}V$CT2#Wgq`GDnNN(Icr{OkkP%^qUjI{J1v}`6ub$z8aD(np<)=7ptTB{EoSj&$* zPu~b5!rG-F2RLb#H)Jy@$tIM!H{XS@MCCiRnQjnyu1=Z)vXFI@089un)XE)U5@6jcWzg=N{I7@gj7BD;rNu6NGUI>a1O-Qkk<0+dQP}mKc^-O z<3uNfnHHX!dV%m6Tjn6(gKpv!fECL@x#`CZC$2!?=VB)tolZo8Lck!?IE}viIs9>w z0d%PR&Q-=&uZ;ArEq$}t2g*Xq35vQ&EhDp}TVm?J;Wj^{Nb(#wc? z(|e7y0_HRc!NgaNCg0WuOK6_}tD$<#kHdcaRUPxe44b3)KHaZ9TdZ?#GOd!i1WtBo z*bC?MSg2)9%`1=Q4KHa>`YF*qIPQer-25mX8dy zTn{Y0e!*Afs*u#eH$+?2-RqWnS25_N+NjQ3&#N3BsZH;kN4~n;F+P9MSnx}oyNhV4 zN0?iWt4GqQ#5}4Rq)Y5s^{-aXlVi~7Qzph;#&&D35-C4t&LO<6EG;N(UG%*BNaCIa zG4|J$U3E?6PW1W^^0xY`w0Eyy6MF>6nH#oDa7TXh*j~rMEg5&I`b#%pbYIUM@_^^H z{9LO;W#nI!%dA;qs!~X<#1NgsoqF#*q*Ucjf8oGBq5wPy*6!O7-#AcBq0xOCz!-;D zseI7B6UMcy*Y9z?3gP^=TjCL);VpzZ4<4Ugr9y|x`l=fD5+`7SA3m?ZC$?jtWY77| zyc0-RLYG?&6uNM<-xwqC>||bA=pE|F-;)w|As_rk1f1t#K>v_jsfL5%g|oDBY-R;r zzUX2abZ(B&&X%Ol1=wzU54JTiJ4Z-5j>z&%u3c43#X+0_QyqAcOO6Ap{<>3zT;v_Y z32MYv{Vh*1O1j7BqI9z~)9_SM^x!FdU)HV{Hc>VAM2XT4+uzI;&U4gCQ_0IzOweDjT^B-nf@i&FobrWaoLkXVk6Z{-HA3il?j{2tfM81F& zn{!EKZdT0b*6n3`%ONuf^UM9$1HNzvzYAoEa=Z1>``1*vq!o_ZeJAR%Q$CCy$C(GoYYUTT)t`6p~h7fv$n84+cL@i z#BEax?!xdm_+kY`S6SCz`U*qm3+4dO4y(X-r^+9;OfHIit7A_r?c1D-&O=n@?JuOI z4ZTgkG@|Ce(^ioC^mp4?RAC~lGgm#IX#c(hSNPJPB72zr$-v8aJDw~ zz9UkG6>B4^c*WOWQtJH-RVKoj-JSEq;}bs!RRoi;so-5LQUG{bPM!KzQwWiO^b_RV zxY8*#KD^_#Vh|_7_3?OI8tk{U8er%qAmCT8Mip-pdrC-)w5x`R8q!yGVbiv*V7(Rt zN$^OPhAAe4Qp6}**F2ofA}=|es*zu9Is53~<_jaGv4Sd&r2Qk&y_;GH zm+SGhFLlZceU0yKIVKKgcc59V;uXfg}mQ&H;EUBzA(xx8ctWD>nnO$ zCH1b{uH!9ohG+}nlla#sYQSrf=PAMN83YKwF0)i{vo_qfwXJ}g1890oGD2eWah0Z= z%4W&0Ytj4&pDSAf6RCys3g?`~T5H+(j4%}}N)J*}SoQXu&reRJEo6mr`x}#E=^ASF z@DpVZG`M8WGFu-SGzpVX201FNuU{h(q!-miOwx7TPJi6~>IcPO-9+e7kSx0vbbuhL z0UZzQ_d4&#FYw`$ixGl`?UuHB#}UvLi0$}{xpNZW=d{e|#8qm9x_dv!j!x>ot$pd} zIql$_U+BYzD#liZxjNvkWxE7DjJ6tGG&Br9O?^eT#EhxV!U0F~*OiRtJ^ht_C zIOT0l{=_FV-)_k0J|%LFB*(h;g|a1y!} zWLWI{7bqKQR#+NplxvPSI~%#-9;CwTLj-+`=L{Zf5ufhFd%-YJrr|ux-i@E}0$%U| zxG8aC#Kgxag;o%FL9L#vl6cO`8#XAaRW9)yNZa4)Bd(A|@Z;+^2n>U?$fRn7vV{R# z;2qK~Y*F^&U)V;G(4FKvL_Nj`2#-YHzZ>Y&C|ap->7Ko1fl4yxYIlQbR-0wJjR`#Z z+cz_ZDF;~>e|>n}+F#@^&uuxKKd9hl$vq=}!50;#Z#m81n%A>0xUT$~ue_AG#vM2I z#Xko}F+JTF!N@uKDefhW3OS>&UxwQ{64U((W`{24X=yql@QJKg(gW|r2!ElRn=rb^ z>6Z2W2p*Zs7M$=#`1W~TAMd%JMaUJ-tv|0V2&9`z)HdE(Jo_~f@ceCl^fK4``mZF{ zOzTx7i~{u^Y$4KKoE7=RZa4g%WlxvK=S8ZcWw=BD#1ns&YBIy5;MIj-bNR1N90=Cu;dl9 zARKQQ;jCSmUY(YLnZ4J*wZFh{rhsdu=2~hbnb>kwlqgnd@n%%4{WXubaX#k<9^HA# z5QCc8>?rAPvoue%k@$Fxpq(AfD*upr`8KuZoLEPU46}2FA?h7@%ScW`5qJp3^sRVu z7I;4ZCLP)zm#XWH4(9pxrwTl3PSkSv0wuYNc#xC&vdU=XT~D8rFRM`rr}^_{Sohy2 zCY*ngN7*OgZCP%H-!8mZy0da;ORD=&Hi%yP7lNyJJ#DTb)W@+Q(-7tRj>d=(7yZ}! z+Q6Ns>vQawoTJNsGu|yPa6C?X2iw&==iXVSzDbyL@xti|#mrtItQ7}6Io1j}OA7@B zF8EW@hG1Q>N{_T?w%+R54`-+Yq$4u4xeQ4+++IY~j^29-;}l|lF9#hV7b&oG61YP0 zNekH&1QZ@$x6~5`ia3<%6W=SwmwmI2w#HjZmV(i4P_Pj8+rm&-F?mW58AA>6Y1?asW7@RB`^L`B^&3_JMC9)jBdKOMtu95-}~9J!O3`pPh}Qt9zP^>$Rplx z!~5f@@ymbf?}NJ3j>p-4Jwyms+%wu3quHPvpo(sOTt)w`2Esti665Ug){~MzvD`M9 z^+bUk5(nbEVBU^|a9WEK;m2PC;fj8?yz))v19wt;HWd;>8 zri$6Ef4M~=VlY0#+bYi!)R znDc(^Cuc<5*Cjzrf6gUqI`sBYhte4*u;WC?4mH>s6Jq&KOZU0rg>s#qb1zUABYVCL z8>#!6$eS5&YNM2?=AsyvxRAX&8*Ip)#I3c(VbY;t$1i(ITq8U0;f2HLiyMTWjwqve zMf!w*Ml@VQoYbPy%+uADV#_&>@Z0ey>p=>lOvd1Zqs)&=+hh> zS3s0kqqB_XYRK%saUj^{|2TU(0i$&3he2oPKxR~NYEhZ(Z;8h@xsRwz1HhJ6@+XW% z;{8kuJ0hQ~%v8Bp?E3Q=iKWENu3nYpK4}hhgep(zYKLf->lYNg57rk&0X2D$o=}t) z4K2o#5qN2DLLp!zM3NnUr_fwbadnPrdL8mvw1l9Vno;jBxb-oZkCaYh>KQsd+Z;I> zL{P(;mNdhq#v(*!=HLvqEZ8xN_h1|0#k!lnd?E|5k*M+^Rnnk7%Gv-E;0xHz$rWQ8`Yu!~a?q@LW*VG$C4k+a|Fl!4VN5!{Fz2Zxr-lg_K68U zwkw)poy@H3cRtjkh+m!8u!)RrtD?g=a=uNm*io6rRu(vQnl+9!n1Rr3L)SOac>dHR znRHD~d9sz=+?nUX){3PKD_nN6Sv0(s4i;i6L>vK#IJrbQCC(_BrW%a@@)?(doBqSi zbOII>jKU<*qwviTs@GRwl^S16xfXoY+nB#McE4)*S=6Dd8%j6!;*cro&Wt4yE^R4G z(OstDDp_4bi-pg??Fq^=O5RWRf|86dN((yhac|?L<6%jCZ$w3LE$s(IC!22BeF?wK zm9%RubiA}02p+MXmW0EF8z}0T)1EGPXv_yNSnKP7s^c_=8}#pR+FuRkPlUM)!DV|0 zGSBvf(almfFx3@f`x6Mj4;KX3pd7I%8FD zEiB)i1{rJ7{Y1q1)T&lX4CnpydB0R8aBlT7ZP z7a9nVj~yLuhTpeX`!raaIQ;M}1E#7D88eF78KI^#ofqmO*!tU3vm$`}dMTrbvHVBX z&{x#AuR;rjMX-rE3H6S5Rg#zn)-FzaYpS|-6;zlnQ{(IL^;Z$X7SC@LmEPgZ%YygB zvhF*AAQh~k}o zeT}HJeC@tf!gp|S$vjh%-fZ^Kuis&JR2FPLR}yuJ39Wfb*WV-)4n4F=A1xPriyWOc z)khV>g?*1zjowJ09|vA8AomHmEEv&Pcbdp)?x?;j9_deejE^foM%n2rftNb@pQ;{; z@Fn2J-~=Y`Lz=?iUQGja2u$!m0{&TEqyU5X52r_7mc}Le)G|VL6ptwZ+cJahFzGKOpxj|aXsYI9lf8X=TTOJ68Ck^ksLyVXdwR?eo)<{u)>&T7+`a#`08v@^(k`8Zx3Z*e{!13s z?(R}kj~f+u>)~yIlKBg2f%)0<)`r8G3$QYmtMilQ65C>lqjMJ8GA@sfx;VIwGRBv) z{1_)yLM~FQw@z;hMTpQJ}ft-_T1E$b%QD3j~om2<(plfqE%ME{RrpdsyDKmOo zX0M~!KGqW1%9KItnUGz?6rWRH{F`Kz2_=H9w6~J@yqSsJJdLf?lbJ03Ro(h z1f%kwmq~a}1r>Ef^9Jvc{9Z3sITe*}A64NL0w*^y%+P9cYeQ&)vRIL3<&!(k8|U{B za(^5B+=3*9eh6_D3u2PtP9ccs(JxP34=={?S`)%N?+SV@-Mn^dv+${5h< zrGh#hH6Fup?G_$zKuYi1uHvJV1fd>$Z$bXrY|ArQ9=;N7U5##R^QqX5hsDVI4~c!b zOXtkYK_mJ(%qP6qy0}18_pOk+SV>%V%)3k$Dha6#)uaCz4G+)YyWQ>moE68 z7UX53CuK*BT44#LikCo+aNGAW8lp6zenY#!soQ^Sl}PZ-0mT38KqT0aeOkUed>dSx z%Z42LWz_1aQ~=3)F1rX^=zoDGqHk6a{lr`<*Vzmm9?=QncJ)8^SI;%sxKjgV#wst@MOst9N18 zXF0wKo~v+-^SwT)>xhl}u(kfqXxiWd&FRn0uF8G_k7-pKy7gcZ$ian{*8FVRL=j?; zw||YzZmggF669h0yp+7sEeW_Mzmb313sQ*Xp&P4PDZ262*Q4PSO&hmqgW{1Q<2&hJOg^1&)7D*Yw2cx8G@WLN5=U&h6WXyOew=IR z)|})|_B;JE&y9%hnrxbZvP z^X(OJ7X0x>m){L@9M5slVf)Izv+4aa# zF*ueijrq4e+n%SUBd#jsdG@`(A8XtgMEo7k zwOzTFA%Of7hp(z6K=nsQ_Wl!L#seJy$F0}y;%muVXlKBSRT%e8-^J4sOPi*+5?B~% zHN)shL1d>%OUfs8O}oXDzZe87G*GL|<=iB*1>xaJ&_4x7g@NL0Er8$wda0m}Iwc31 z{|!|twudbBjadQ@v;g^Ny3f%S@A>QqC4Zf>-K}X7DmeVpgoHPzGukP(c^2@Tq+xG+ z=UJ97pOhokp>o85(yfT&!$L#L^en8UKdz}VLU|a`i;s+uk7`-ZHvHaiIVQP&OY#vt z;xHlmo)Q_-1Q$rdBDt|n&Q>?(Hd7a(B)v?0(q~)@kOSmxuDgKrvE?rIn=@Eu<&*?% zo=*Qv!LFMr(Ky*9a_nS=$VmljHTFM^wzB(*$_L-${GNL%o2LBnR? z9JCTHQ^*oxE{>i&vaA8jhR4e!^+cQ%3weT5fui`qYWO)D;~!tDR~?r^*M6Xi``XnW zqCy>U(qLMC@o%=v6T|mgiP;tKuBV0(#i^7s!xWV!NdEw+( z^UheUkgZ(&x}Tz&9i1(I6Hk*nn?*k)wS2?t9G@+-%wBB+@VWFIz7sCaols~zElL#e zgNhI7Ca&{W>Cf*(cJa;K>X#HKmM`VN135Ed8s!W*PKb*#=+9xM!e>TV@-MHkZuJDt z{m9x16s6`xBk8+b4QMDrgXxHHNVNqsymdK%y?)pLx5zv$XT1b_9s6e4LGsvsS^+CZ zVN9`Q6K^m_gnGNR(#h#wpTj4z)hsS3O^(B~Fk zOrwx!@Ft!w-lNlP>Z8iRvQm)M@UDKT>5WTc)xy*A0C8UplpPXoOAkSR3lM`yfrEj! ze$+his6Yk*=lsQG9%Nj!eGq;aD;OS=aCDV^WwYWAtzG#{U5Gru;FbQ7J=nYmKI^#JDgHgtdH5pb7`)U=|3p`(wg!&a>}NSX(HacoYh3c)V!jVZW44C!#u=? z@N^McUh&lfpNon!+;f@2t@lcTIUmqT^3r==wdpU7#f4hg8>8pp_}C`^UItUpxsc|9 zcOPVgK)(TpvYF>T-t|G~vnrRQ|A5bmx&_knzkky6yllE(3_gBPJBotr9nhUJv6Z4i z+*gKf$N$_r4Rf0_avm4J<@u@h{%Z%jj8hGWGd@z|u)AeV%F;)u65o3l0{tX21x z{O6oJxY_C7NWeq8v2~e*nDai3B+?=`+8q25I&5D?XCEsGA=?=J$*5_gqRxVe21M$U z=Vksr%tX%HZ^rO)eB4lpJZkI`-${v_8+<@y*QMjQ3vs=Z@i=(^0t4MkSH>>*HViB*gbiM436=B-h4EmLZ)<`lh6kxqzksCXa|+7n zL5Ta$JpYxxqY?jDXV%iWvNhb~nuRg?-R%qDYRK(=#5cm#p0|9h-cZ}m%}-fxH7=YC z7M6bKV8}a-wE6zTGH$pW{ucSi0lydj6F^Xeh)cjwTlBrp9xu}w+P71_sq(<8HKd^0 z_lci&zSR2duO89?mwUAB_L>S8xf8gFaY>tqu4`gL9o$CeCe}Q@G}@^)REJcNW&mo@ zA+hO0;1e{s;cp3pr@TF8G6pVOvP-M#$=3{2FErah?d|W4w6m9bO+7N}V-v*i$E*fzKo-`PKIK+cIPjLhM)?)!DGV56|V3&H3IQjTXiL;&gR zA<{S|&~#@p2H+6n|I00pgB{}#ecm58NiV_&9B?HVm#O?|pGJP^h$&v${lODIs1#c1w6FmL^n=(RWR1 z8pm7ewfSi0JJy=ch!2m#kK z?}G0m0MnQPh;CUiDgEF1!?Z|n7C=Kh`Cn@Dqi-6iH%;k1P1x!VKHqiLJbGx{z$g62 z9t+l$tqE$ZoBN zoU#{FibVLZu5ha3H!Te~M@t5?rDI(fB%&BvA{jm(21`5xnoG;-De3stt33wG`kf}h zpp_KNXg4UqLH~w#T0p&*>B^8HNu%%?fjtfZiz{qtkr9O27-L{|CQm*7CqF-IGEV;x z0C2VEq*4dIDiyE#58M5ON*(?9b&942!@s~FYSQuexdL#QnF##72K+Tn5Lo}AFhg6$ zbdscUJpjJQXRB&-R&Nqb+MkfGNsiv~cH$`tRpFQ@rORLL*Si0A?*g6K-Pe?yf{J|? zwYmJkLKU4=pFZa|3YeH4p`1r0z%zp<5vq}cn!S+iO2i;Tn z#6A-9O9%_$E1sp5(=5F_jD+|&dmLt^2ba%L$n0W!kamKlSIxYW$|LRd6t z_24i4eF9TwQ9EeM>QDMwEt-J}NjieNrNX z$J8f^^q(NfSA>AO| zrAT*ocXyW}ozjhTgVN1^Z_xL=@A>{2=gc#6o_V%=-*v5Zt!u6Jt^ie8k2Q8ARX9!8 zV~mr%xq@Z~P2l1A6r174p7@zof)err%?f>FV04Lkl=Kn?Q za$ED(KZ!HQJ%Y3u#F0JR8oqG<=NK)&Vl}Tpg6!q+)#NubU~bP`j4Py@m&sPAjw|rymHMHi&i>S~SThFjBu-q{45oF1VnlxE%PYs8Z4M zp07mk1N{r`@bGYCAT6%fPhe*m77>xLRH+fri2f}wAG``~Q%CO;DIt7x(5C0waX6SY z`Nan8YMzTpFsnk%rOjt+VG42M#NkyvH0o_Aqv+V$;a zYHv@^C*bx4F;a%#c!>Ne_ZHd4y6|8}38|sB7VCh7mWKyFFE7vYS=cs09H=}AEns5q zmCC-ap_h^|XWacLDPJiPQ?DWV4oWT0{gDfS)}GB@>2+=c=r0}Yq=ey`DTZ9f+)-oV z{r_&>^(P;^PuOLpMBq?`TV+1uGn?^@yAw2(|2(ze3I5@AmRkV*W=r$a628!7`~IH_ z`7dayc6{@DgXljBF&I-vGkC)~gIc$1C*WR&kt3a=@KdZxE05T9fPH;Z$o*FDv>n$}FqhWZEXx|Qu@=P#+;>|{KvKx*jyp(fseKaCXMPLNtq2zT6CC3K_20B0@tC6G z<~GuLcsN?2QW+d@h?Oa~O<*zmGzL*z1pbztdvhJ`k2oI>eLwoW*p}~}#9<5Ehab(z z2G`kb4hy~2tTx5AvbG+JeL~-e0?gp*l4faLK@#pmKVg-TY{{SHdg5K!n!sL$L$$lR zo2pvBKb~DuvICeBE0jf_ujByB%-W-2@dDo!-rK8+@cyi^B2`RGwNJ1sRlq$X*AI)20BwV43McUQddG!s6a)IWJCn6ofUcdk zC;xN}&I`UFMHz;Fb<%>1x5ndnMNqw5ux)YVTo{>l9US{4ly4HPRBR~caR3q85t#1y zYQ|HA#HCWeCkHr@yhUgvEBK>{uH>djpgUUfC1Jj+V}Rsqb8_-wn1?iyZdI<&*Oq2q zI3}1TQ-TlG1h07?MiMZ)WscRMs+bn2Sf46*L|a0=c*6~nm{CnDpg)w#kHu^pxqC{H?C?&saCl{qSa~8F!{H0FBfebxX`eh(yP5bnK82}gi7$H*bmTQ&wvSaCkTzrnI{>h10JUB zGd)w-^jg=zCW#-5jb$nZn^FI@(c}pE_Y&WMtgI|LA0-4szw>$L{i^OZatpc9>NUbT zsbntYB+RhEB1yq*5Wzi@xqEfxa`h*~T|T{nDJ&YeZTp7s-qebjGUSM?jFZcr0UK+x z<)R6%ZtzYSat;QwXJ%&R9^U}-<7w~ix{bMp8gaUDHBIMTX6Z6vL0%vPEDMsjceo%F zgtBU3K_9X1%a}0WEG+|G8Xx=#-y zRj8DiT2VY0Ekb#BTFw6I48Y~4hTTS##p3?b-rJ)JY4pzfVlTGi9yw3z2oMKDq{)obRx-jtU5s?}*33|AQyw%lCb zJH}BH8Qp&=_(m5yt8di)SrS5%%KajvZ7?kd;AfbD=*NvujIz7Sss&{}C z?*>OnQ?2{iZX~$W`@uFjNpG{Vo&I(@{eqdJDC_$ z@x{c%P!oYr(yr=idDG_2>;!qpqAI!hG@G-xfXE4@itGdN8)6J`1S8b;)oI{C zXlh-HmWoGaX;9~H0}VwrovuUz*~nG>Gf=NR99F4ojU*V_u`WhN#xm0>hMDAUmkNVH z1!ro8#zfddiQc$S{}tdTncO3ACKBt4`l%&I;bL{(_#*hL@?~U88_}n%as>TW-*JW)t57mx_uV9)er0) z6(=&O$`Esjljf}lx$PjntM$rL6I4_FkyOM5Okr-o?obt?J`E|5%X!9OzgM^dLDdDX zfUc^zMudN}>{Jc8q~IFoe&YyB2;{ph8J}~nl-DO=N+k{Fow82CtD+(f*y*>Y;9WJvOKqu3}Evs%7ix_%6F-1YDxcq^3%~JbIqLU_!ztUTkG2SZY_uu`A{A@|&ul zh0%D0Zc*@VEj_VH0$d~FB`}jN-K|m{o3c#Ny8#|$i;F%4#WG*59uF})u9wmOTPi+V zD0VP~vI$V^@P9^piTM84ASWE^TX?kGWWI{9TOaHFYZ9vk*XIihn&(=ouisiz3Z(Qu z@K*rhaRJT->d5c<(B3Hz=#0IJCjb7sWmff*fk{)Hg2!hd7-(yrq(y$ zO>K`-)G)eK-y@Ss;=lkg3JN80OBINN)Cz^Iytn7l$MuN0va623q0nKkZax2p!<1gk zV)cxu1(vWP}*-v4Ds%^LP)tH$d^T5w= z*iJIjI4tg~vTeVNhxt@_R{jm`C2fBc;@(z#pl#n6RWoPtHaOp9>TKQ0)`=5TeByc= z_VbRN(fKR1ki;y8%EYGqmfLx|ew8}4f$&61BddXA*ArzCAopSd3z^p5eE)`m{~d$Q zhgJNCf%xC^VK7ielDgYc`Ik@mH@!mEmH5&e5a!Rm)u$mX1&*L}7f3j5uKoSjTkN3-=m+e$1 zYtiyGL?-JDFy?c0+8;Yd87Oi>b{A`h7q6%p_f?XC98n59b3lXsGmmhSX? z@aXriFVCmpS7t0)Kn1(g3Q`k7V`FpIltDciFYdJo7HP(7HGr-j(SE_T#w-aMcL^R= z8)w8KxXKJB+VCp*Bipfg_gmLSV6aYi=|IId;hhADtP)!d_JmOIIa3Apx+v(6kr&c-=9^NZs%yu*mCQQ55ND5gDA zKtJJY8BqL%l7z6V(BtC!e~(L_aW>WK*R2#OF6riI(b3WGnk|#V!WM78eyROD>oMJ6 zUviP%%td9^6-rcXvHR#P&CIYYH@|jd&vUfpstJt(b2M-9fDT3sI%o79Hpz44C8Ze1 zIsg08<)sVKUx9oQVvn7QHPYy=Yg}_mzX)P;>{JKBMtDrXr>lPs&W17*O>POF2=5Ot z0g?-=ZE1WHbZGQbN3KTCd$=^QUlo=yM9gpL3P}x{z}Rv96Sf9yl_`5W!{f<;sNo6) zR?^Z5Aeb&3;B>oku-TuV1G5IO^^J|Q3O|(}iXf~B_&i$#wM(dR6S3g!`JlT3$bWG9 z(~e2P$*FoxmtKxoq#t3M`KqFU93w+cP7YEN|9A-4t5@Z7n3>7iD(B<%Rsr;3+kJOr z@+0i=4oiwtmU((>!J(ak*SAgvuKcNz2`nH0xUzTfBd)Rvc9&W+T53^Lyxx2~;!yBg zNT>ehaF$ZDOC54n;S{j#r4la4%|&c-KJ5S~S$%DNPeP>xRPso)C-<#faLeQZ*_B~3 z^53PqGt1c1+5;}8&{DQ2L+2~JJtNz^QauRGiG)|5ArIM_F4qePcgXTnqh)PXsWIQR zF+TUc1p(Wp*Q-A@(0tC>%7A4f%zpD_@vH58V$X(JJc77&(PLP9>x+wvbfJJ!t1KC# zQI((HM{G%jvFXRqR&s;_UTzF$1?04u%nfQ9(_q2$^}a?;#-mw{~@b+edB%qA~^!)1|1G#9?}&RZt4Y58j& z>otiPW@&_t>C%ECn52}Hk`-%4`@B+GjLQB&Yvae`mOPYdBsBexyMotSo#vu&X)SAe z#t7glm)A*x4W_Yi?AaZ9BEUdc=48m<(i8lO;H+{H{Jju=2>_Hh*Jjh0wxLwlI`^~+ zPjl`{!Ea)R1cC{@+H(X}$a7{(851&McQ%pP?awc^-iJ5X8e2D2*Y)&&=e_w8Qf>Ss zIOMQE(lj~ncp~mV*X#tz?0+eiE5GR3$VmTc#2)#nJNd!X-G$|(srj|G!w2ts?E2v= zbmeZ7xlz>_Rdw3tb+9Uag6Dg3Q@^gntp7fSq9X?oz88t zddfT%xy7PHQBe3s$N6|5INSoj#z;2Py_98J>ktCR71T=OF)_aZfXAy;HK^!#FE%nX zdh6G8fkkgS2*TKb-v&jj7BJ6;+&W86K$6+ny@$*(yoEB8fo*uEN;wlXqhgA|sCQCM z3cvh>v{ecSg3I(Tn=)@c*MEx3Rw}kfj6IPj*SR{=FC!Q|0E$C->HWy6WQQfBE0CE} z&Hhf=!)_Lny#TNVa**yKN&kti1tD3;tYV6)3{YIPjA7qp_=3yTiyo}yVuO8P;@#>J z!UKldu7xs~^~GwL`N1TOk=2N9e?0S6nT3@OEj9HM*NdaFgi+1%{N?2dU70#Z%7y8e z1i5i?))R86M8k$}6ce~Dix#e?v8<4={$m$glJ4sPhlRG0gpjeKU-`zKr!tN_!u&-g{9%mroBp5leg^kk-kr&4Svt|(zK z!(h+v40;u3Tpebs8>_+|6{;|(DdP70BVwkD8&1S13u9+~ybkI&te$bKkU6(;0D=3%0nwDodTq| zZV31{q+zEY?RPw=b9Q<2w^Rhiu{ z6yB1TuSVp&p9Q&od_nr_37ptx^J}8YSiwXpnvPtf!#{2Gj?J+gnd@iwtwiEVJy-wR%C&ea^;F%}>krinXQ)5f^vd186zbcN zamDQApG_%O^)S9t5E)cYZLfMR7TByb8V933*U0U3)LLt~On6$61y|nHSFCb-bNvU< zF!RL$%hzsouTyxt)=`F^;j(!=B5)ZZAL=o9tZ!?mxkA0&J3`w6G6als7A|j+h1Q83=%#<77Rfqw-vUaonoFQ{3$eBdNW; zxim{LsN32Gcn^a_k)7@F(OO(&mAZPwc5upaUotn&=H@1qDe4u0+nLtNYTb>6>A`&Fi3tto{t+$IpCNEIf~F)9_s{?l1bn9o=#pUF+X(XMqWHdtbprW-)i|yP zySKm&yt6tEz+-4s+1P$uT$~sj9W5;c0>82rHY?A*-+1_;#m)72vg&wy0vg^^GdCMy zvCym2B^U@^{{kn8#AW1e5Eqx<^F)^23B*$v7Xdq8HP_>@&;;}3>MeLf$G(`^uCkuq z0epdV2NLOg?khmD=Bs#A2IFxm)M=5k`jM^$;jrdkWtDKL6oJAezvZ_LIbUx-YgobU zVan~V(L6aZ!WgP)(9h9|veA348$$XrkBg8dA|e7(^)Rp0tYe++!#KvzOHlW=gByEH zBMAf``4=n)weTSh0h{(V@JaIRNZtHPCc~M29GJl&+7)ZW?7hhSpyZ*FIv`;^20f&J zXLuZJ+;RuL0*v|%Q$>w$7hQ*k4!!Q@hu$S(W6yJHGlm24= zFO;Xt!{2HBYG;!gjuNRXzuX#3)z_wqKBhB__wVTLXwotopytF>^c?_JE0Mbu1%))r zN0Gv5?O3ONO_ZgJMs7|*dIo;{D<;UDyWZ0PY3RXO?xwago!D%J?$ww~&~e?IE#tSp zJ`G%*FPp|x?_6pR_|tNGT_RScnFmLcVxmONtBQFBFvo9TB|oiE4?u(2=}B*IZvIpr=nwV9m}n`Dg|tB?wk?J09pp{jsuW5s#tEe-l!;Tr8Sp z(k-2DkRaJ18P6nY$;e9(F<1|+joSGS?AyB_&xk{%lewl&Y-9_#_8latR2M)5X?1Pk zp%||9T3^{E&AX)w@Su)OF$KI(K8zU*FK)SUI>rubz@4>ZEK$`-2V4vD-y8vOq&|^C zyJP?CgGqzF}bepNRzuClOsqvNoIpW=9U0;{E^rPz41nxF$qmi(dW5krm|Yr=9+ z7btq6O^WJmD}mlCmZrwne|SK&2@2}CazsMLfdiK?tO`~yatFebm-5);tjTVN2@8`N zG0ZmyF)i{5&2PfDP-#^vOSefNB_a&ve8NSu> z`N@n$%_R(9ho1y}$kW2&IOnDO{Mu#5DF0`~AqkTCAFn`oQ?4Dd0mctr5Q=HLTwBkg z+l6ukxPz)ylDaO*PjVj7I2+}I$%(Mi12^5sIF`mEthq5`{l(7Ohif9nVT;`_P^UVt zK5XiqkelL|X!`LGqwC9RNv8HLxf9m8k~ib=BKh1Zo?A#OQLO6yj!bKU@6;kifrIb4 zb4a4kCp83o^yR{;_H<_lrZ7n!(7R;L>E7wq!GN5%y>YOz0H@ZNwD70>a+m}@+&*i= z$5DO7$WcAsPw@Sp1YC%6x5X0kZSrwWJ5j&XjCTdXKjByjj= zkDFPN@ik2ImSkdTua7&F(%_*uS4 zr7WtdDp8?_j#u$a?9KpUddW)`7uRvf=_441&E-hMrRQskM{GT8^Lbt)x#@7T`uT^! zNz4Kspmb7%JgQmp5(%R+iuz~W8B;)*7-D&H!f$F(EKth7ZybgrtjGE`tFs4A$-Q~ zXqvB<`JyJt23_zSkr+r)&{3w?L1p!Z^I4am5KKYTSvA$SP7s9-SxhX;x=6n2Eae4#uL z5%p)>bqaJ0l2eV@CFSN9TYfluZ8U*B!hxk;8H7YABizPEt?}=3{gJ2l>eiH?f zX#ZyiuPc#pSaK)0F;cUPPe5d<&Z$Ecxn%rnh42h{yvbV23~h3_8XW{fM)o{XOVHJ% zyiv%TinPy4S^0g?OTRqPa#Q8xl}x!VW^15DE17wG7vCl<9+5vqES0dEonZbQa0rm7 zT}2JY_LF+~`MsH%l8d3c??>A^jGcG@pt1hY-MWGoc@{WiFAa?{o zwc1n$5}9S}S;6QCieRcbUW(3KH(~>sd|p-Fp)Syk1#Q!hIt+F@N?mM54H0tfOhcchX<;kT&>(W-NnE?mo&g ziKiHx0+Q3rAUhVb8NZR7R1G34QufxkzUk*AXh0?&N4cmQ${c_fIA|%`TdA2-oKO$C}_x1 z#L&}}GG)VD=9mk9%#>*I9(Qq6$d-td0C)kByV{g?mkrMsnKzrR{C2tDQlfDR_^v=r zd}{D64MH3X6R}Ge&yT@Bx2N1*8AQcoc$r|N7W6u{`(vDepx8V*RcfLqw;(2cDxbH; zY-U_xQFW>G@wdO#_bBeo3-E9A3m!oE{g(yUA&eSUCo4}CCU8#$v3x_X0A-m=G`9N_ zQ`034-nzmTL_iYr=VWHGsT=>LwRYp>F=Dos^egrP8p$z=vdXJ?2Rs^1zbqezC#oe5 zM5S;=uB@ifw7`7jw98+Z6CKW*qpOAl7srgzn&!VxfIC_XW6dyJFODbHaYsYM`hOay zMK}XbWW1lP&*|*^d`B2hy76z4NEOEjx(kGRIinq+a!Ni2v{;Te=ot+)-@+|UboRF9 z7USSEikV^M>{zHd?M)g)Yszw<}THi3Ca<6d_ zRztr2PJBOAH=g5-4qaltU4Y<=xdjIPT^-QDVy-9u=eYpM$GdhICJ0#~ogh7#RKsbL z%msAb{P#c{5PXy-1I-9h{(o7)xJ($Z3-i-m#&%b@=XIh?hqpJm%Z(#O3(Ezl?%osWkrd=p0X zE7%Ow__5s1c2N@`p4Nl9q)}G%V4NK78f1`|&Hm+TddA6kc{P)$^Bm~pLf=R&^mVR{y5x!j(H;i)85 zkC^~B*Yce0zNP1Jix_(=waX^&Arr8h;=kGgVYhyR#3U^#sPDu8X3K`w6PX-HLA7F2 z4Y8wpKH!eCm1ph2s0n9K!$*Dllk&Z~G!yB1t%Rzrf#eSZmODn)GZZS~U8(khz1ORI zy#+f$tI_f4--N3pL~tRvf<8~aBo-hi6pGdIbmhaCg#we?Z}NTK|#`X#hUx%4A!^UZ}xPFZ(c9pH#VVidmci9KX5)gkO(JXv%ScF)m~>J(#6P;{C%E9PRGER*5~v+QC%FW!Ev)o8e~cBZ zcfKx=GV9qVwz0tB8+!LB_*MbZ%aLtx_u6s1zY98-rg&PUh8&z5+sIi zgW7bgvF_~ZLSeu?j`Hsw|L>tv0Nqt|KjxWULi;?rTBzZy=Ciq((w$TT%`a2;YnPv? z0ZmIskfwS~LF6`=0%u$U;DNGirc50~F zpa6ze_Ars%dZ<)OK-C`nRXQuywzx5R+-Xy0OJ%x;z`>&worbh;cjh^+`wPf>?=Dk5L@s9m#ixCypZ|`c zBj`%fEjdFmwb-Wt<0+V=gsgPeh!>e-MU5fr5)R|NA>RwP0*BT4rg#kF{|MH7Fm?LQ z%;$o+vHEprNkw2}%Ue4(@LrwX3MJ0D;oHss-p#*ncao4CAY*km3$6@<=%R!uD3M+= zq5QCqB8j)gIOHt~;7-$tUtB3#3Q{Y5DE-`y^orKjP#kZY_Sr<9>Q3LTt5RHkvI=J;Gnl+gwC9#ierm8=)x2MG!ftrbi$eg4gcDe_oPXP?1U_BH zgN};oJ1F}yNH+l0l9##O(eeIKxvF^`0_aQGy6lC(&}vs84h*!79DBY@bw68t)R)5B z(*GwwiAKA$;%vJBMqNQ68?7ve$kZ#WVX=t9o~x&~_s`72&3IWM;`f%TRr;vXo!OWQ z7x_9rzoi>AGZKVH&Sj@#1w0b>h@Qu!QSvaG*@5%*?Fy$$1`P|I7#ox2w*nr~ zCi;WPK|MWU%)%EDCiS-4Ytd!YZ9sJO3vjUQU{CJXzTZ0p`i&WqfFjkJCD5<79M#=v z0kL;0AaI=C{rm~f*{=sRgF!$Zn5Rh^imxlObp$rtXfjaC5|Fy8z0X7(+Qst?!!i^3 zNi3r1dLA`XA-?7OSk^xvRA~r#v&{#AhISeym3oca4#|7=@3@a6LFl!i2r<=*x={DTs;P|@z`zo-!SP(IMn23Plw zvp>twXlyQ^T`V&6FTMDIE=|aOE=c^9!gC7J8kMOj+HZ@W_9B%`NZIQbXfm*giAYGu z!&Ugs1_O4nc=S!x*{YJru z&2bi3_W-Gu1O*xGh?Sn#*Xyj-R}@Gu`q%HmokKmQkY223FO6*r>kNi*s9nsi>(jGR zZKF@sy=KLD5VeyS{GI0Vlq6`sq3+$!V-@FeYn{5~rnrbCS8jRr?Ps+8_=x}!DjI_w z1}=y-U^+J4XwcSkPsO>8V*CDPD@rhAjX-fV+C{a(|lhOko+ZUkcA z`_Dy|rt{#zZe`9?s9OtU9N;U_XnLdl12HNcM+{cw#6H@2^$?J>+C7n!`ANZuLsm&) z(Yr3xA-L>lAj!53ka`w{nl1Rmzve+Dh!?F1-W6XU+4@oTRiqvudd1Bj4fgxy$21(< zg%zJb50jXY5h^H0x;g9Qt#(pFi_r^qu?8!+8(OuzygYV6jNv2Z5uNTI5I{s+`Gz4p ze05v)655^LL*E>PBua~lej|%fgF~GZ3cgtipdW3bHmPgK881}+0#(=*DTz$iW%Bnb zm1!d=lxPIqTwm&dcK>T23;6csQPhf>oLt5l8-;1W2X~NwnpV8`BV`1a?GqunL@bQx z!~xnIe@>vcHjtd9^yXa6Li57Og!g$$Guu-bV}(){hfXmmOkdMaX!}$Vtx0y8GGtOBj-H zz1VHjRuG!a3jSM8Fl%~0T(Mp_1%@l2b^UMX>a&IhO$qK@5sJY z$3#O*_~p+}=nQQi0c4@KR58dCP-QYvU1uW5@$!5!0cJN5D=|5FFVv=K&YQmJ2o2O) z+|0XxaPJJnW*qGVWwTZ0Bk^|!KyoUhq?C()NXo}qvYrS>Ga+hKnu#gCRMnt0O1Lm| zG8(~&znjJGto`wK)b+|!P)e_(#*w~<_Bpq9xR1Aj8o2i2uXg)dnshDgP5ftRHhX19 z00AG=a=mL|USrRLE`1tVP`H<9Y>qgT?8GFS7{tE1y6Uiz=A+U*v#ZVvQXd0f>BU%Z zIz2!8&V#lt@_6qLxAUjW%04<_3tHjbTi5mKu}ZC+yvhwPbA&Bds|7ifn6R|WEq8TB zb~Mzo97Lj_<9N-~Q@k4O!JdiV{d3mDnbh0W{Mgg=2Aw@c!i2+Qh9n41Kl5qNOg5#q z@j~U=U!>Byy3pLsNT++Ze!j)>?R|*(vD@d?2eV~Ka~x^x8%}ve=BMY|$(~D%@}1** zXu-!Fk5i2d#LKOPbbAMOalMkco~W2=0`K{H(Yoi*Rf7+MD(}Cq4&OiVGT_wOjN-B5 z+#_>Da!*6_RG~N5gSS`GkA``#7N4Ji)fihp2-*TYBov@eH~ZR{p8n2t4hu@EWfI^B z=nm$jxT%n#a)#hoG@|Ns1bXIduTBGgH#brTJ6z2aae98>8WdHnJyFzSOzV*b(i7~O z5lKlw?E#q7=L+73IxGp2+~h`W1Fp>=#1{&=r;49a=e2^g%pfO;;;2z=>~e2XOq@&K z50`fjcQNTx@yF#)MOUM5KoYw-OeVrjuakGcVG>IaSNQYGEO~MPktUb97h*H@A&#AXUn4}4Y=wH15HE{^$QN% zXbtwA_J{bs#nM!w3A_tJmU;tAfHyLGz#=KSxKs<{In^;LXB1$dr{YY-4POQ6GY_ z1AbRm?(m2RRllmJsHj{p1VTy?@M&f~nL!x%4M_NFJ$*3b zir}Q_%qlYUV}io}c~!#)+51F27%JHZze0o_dail>9IB_4xkYX`znqI@Tc?yC8&z(u zt6UL`ERHR?;dC5OP56D0-4wm+2Un>V68shV5c0{RiUfpwqo@fMfT)uUIOp3E3dnmR zeyA8IKUAjB%aE30KwIANL^Y2{O0cWS6Ykpms`J<%=fyuci+;r; zuddVLm6+8#Lro9(LSXM(X*(Dk^|zD=0a~uZBqZwlW<%*4Ko-2@;fls*fE(nwq!}+( zpV4nQ9N>Ho1^<+TxTGlNa4A7}A!}P(pJKjUi>9i>ac4^kEgt1fRva+9SfAp`mJ@~lz81&1H@R%vxyLNg!@kF?NixPuO*Bbu(_Bp*_ek2YWW~ufTaCGKohlQjVS@mtds`>(>^@f2AAjB(RQld zLhed}G^?wRsCCNLRl1f25t=L@{Cv*Imrm{<03P&Mrbd*C&eOJpgj1~>-X7Oxx^N2r z9ks{=|FpT`pY*)QbBt(syVVpcTi!b~-2*|yT>Dls1gun zQ!~+iBT-!DZ*rp^s(m2Bg&t3<>?$3lUAZ9K`UJX%TbaNfPFQ=bgm_;+z(Xw?V12q? z-dB))APcS1ao}?l^!M;+fe$3W$D^ceTQg$3Zc029CDes~?{>zcJu+NsHw!g7kB6c;8D8EwxyXp8 zvaw>6Xz;#r4jx?`Ugrtnc=njCcv#}(nYPp6}jj#X02W+~_5$}0{fGfd{BeFxrN zNBu6G8s=tT#vjG8gOPl+Q(hr5D0!K-`3QGnE6$!jfF4Yn*bd6FfR92k0$)~m+OM48 zp7MeQz2Zq-%>H$>UIKd|xRyju04#%yU@J=MY2$CSYI;W+e-48J1)%#WqV~SsH_4rA zdbHgkSt`3(I3^7TrkUV7Hc4R!heoCWghFBj{KFqv=zm3VHL zvPp1C^&XT74ViI!#&Q`}H!6tNiW`k5oXiNVU(ni3)osF5W+!RXOhnLsjdsFDFf7Sr zyUVHT1Ct+>b%Q=*_wR!e)Y8Bt3A5l{jrj%|Lqg6=7=4Et@DZ`#j!s*gUtDUq#1(>} zO!)e%BkiLkR!nDwW^aqVWSyQ@%JN_;+4~unTrpN1JhA9!x~(Y;3vRoFi^DYq34mwt z>INC@?nDM*BEP0gymfR3O=oX9$P1@lVt=-%sf2&Anw<(Djn3tYLsZhL8Yqf-2IyF8 ziz%kjlUDnqAIyzEQZX%2sF?L1=x63z9(dX9$U9VuuChG-jQ8u2*V`cmb41|o%?g`K`B5GO=qJD+DTTKNGG2aMQ>IvMr?=PY zjyH?m{syt*p`^w}vSbS zSRLtM^-CLii+r>N-@C}|b79K;l$8YZm~S#E-7ES$R>9j;eT7;Mov}k}HPGqIsH=}B zg)Y66>mt1fCEfRn-eSSy=-{09apmkUS1~F?+m@BgI?2tq$2`9r^OZ-}rHCMb6$AY$R``#w4bu zYBEN`kbn5@s3Fdcqx*J$(eJfZ+mW#`pVX2TGN09QkB~Q*vlc72fSj{Y?_(2CB*$j6 z5>!ygi0?Yl5)M~953dLoBzxnG8^oEGHn99c9erMXN4v5RQ&WO+dS9;c1|h}mg3@kh zGEF0Acx2?Q)_3@t5@m(G>iYUuP`&Vl&{x1(1>$kOL_k1@HrfO|D4#@#sc9icia1>z zyq}+6blw8hS6Pqh9?>$XyW0Ym8eENLU*)ue?r-U6;M_CKAl&{AsxC~$fF-%EE6aa{ zGk_<}LHbb)u6k5Hu}nWIfA@NcKf5qY=&KKm-p21w>&0snD3oZGVQ|+M9o(^pC#-9a z7G#MK40~}gp4=Z!L!wg4lk=?%)DTx)D)P4a98TT!W_8)nxD_Egb5R>RQchOI*!+|a zFEh6NP6XGZS?9*_R3uE&CW@GfhZCQ(>1v%TnLNFvC*EccNNu+1mZh z<%)*@42Tw9UmOdh@VH*-e}A$Azv5g1W|Q9Q>1AE0c};_EGZ8sCIjQfw!!mNATAl1J znL)k7A8jy;3$M2ilvzt*!uXbj+<+q{<5$&#j=dHrmMEDo?PGmD0%5mxKxvVRQFep|8n$)!ACbI_he z!CV6_tUz9W`S=J-96gJNx!$c=p!znA#X9dm0%WB+aXQFk)V+L2?*NDQ1tv=To*fjV z1;4(G^O5Oa#qa;VRXu;9gI}MUzR_z}9RJCU_pB#82VZJuW!~#V9*hNA+Hci*WOz!R zF@iXtqWfvLv@?O{DH57G!OMwRr@UDz3oYz;DDDRr3*Ub{sU?c5bwhtQC`_S4pwG)&EGUYk)YEW!EcPc^NYU4oU7`(OO?rBSt@N>WDvu z{d^1gL{OWIBj9MZk{}*fl&>PV(sCagr=DX~#wN*GJ`&lEV z1t+)Cko}9Dmm!`X-}g6!itl zuk(1Qan}`k31EsP3P9O6@TVE-EQ3Qa@K1x20_D$<&?%s=u*c^AdS|C>j>`yvhW0^p z457~18yDt7efgV_o1E9|BCU#`sBk4~cMKD2-9kHRH%RvH+>b2`?xdmwf@YHAsUOXE z=)($0jU^Z7r5YC^fm;oMePbPaYS63lLnDN6z#7WcC!)wwa@K^XOrU$l;`5oJ+DL{6 zH1G#d+DM$lZtO&^m`aQAz!Vu7@C`Dl1#F5gd)8{FnkR)P?B)%y4=r8#6l6;67qAjo zcMY-KkTG3@x!`A@4a<*Ge+Z?P@s~)nK&b zW2|#F0$?o}mcW(EIx&f!BxDtBV}P23Q)73wQ}`(jU-c>NB^}m6Z~43aoAF#$)0!tg zJ9|?_r|U*OP)_{0mSbn;RLu+t2Wssr;H1(kST$|6s%8D6I>^dw;QMF~T z(Cj+dHPDZ4m6Vhyp6Y67;CnyC{yY!h>xb6@lJ0`nCP&RE(4g0A1SF&}@;R$XcQ_f~{M!;N zn*F$)PjXAT@z)crgEi3{osWAb0B|fASYJ!9c-D1o5+(GSPjxj@iQ*pJVt}(${hhK5 zxO_s(mR{&{9G9V;20eL0bRfJiSlHT@c@uihNHLGwLopRo?N0Fvaag}W&)POx>Ql41 z3Y}FvlA%QAC)ItLxdFEZ#}E57F2p)tK5l~yP!8$fs|V#@WWSMLyaZmZt_JOK_osS| z==VJR;5+{JXl@sM29v6Kn3&wi06*K?F)ZnrZK0*;u4k(c4RP#_&m=3jsr|i`N`-9p z9`;AC8FuUBS0I*!?-c49G#nMCjrXu|$TtL&8ann8t9aNwTo&=+(a6r+VA&iJsie^A zJch5-b$(?xtc<6Y<`^Ldrp^Lh3aH$GSs85uvjQK=i=U!exdRz22@w&$ zEATM@J-KBieK4yY%VwFrdIpiX>e3BT{VK|g*7(x_HT_;oya zNz)4ETW8H#_4}|Sk~qfxaJ*jH2fM=uta6?SsGI(Dk%UyD1zhW`_eg8-(zRS!H3FT+ z);ZB~<%pDAV-kB!r??WmS}n@=R@<(+z693iK!Nicse}TyK0p6)&Ad}Vc#7UrJdPJN zvsM8*>gycH^W`l^)}46vZ15X9JEm7)cC-`BCXHp2qgJoJU0>Xu>d_d0t8}5eT4{dK zJ?D6|HTDE3hK@y_*%$FLGh+ZUsRPt%`$`AElH<_NB2xmyeo#_$^ZbRYz?z~GTgsF9 z9=;1c1(y!0b)=~mkofx}vQexR67W#nqq+ZPehcL}OsY_z6a)uN^fV=0|CD`Ov}K%1 zn=!OlQ!n4+*t5_GoNp-PdXKxbN(?d zZ_D4HyIO^Zg&9h#*;4Fng=@@^mKQgM;7=(FSF76u(|#_th1ITyUdz9aUUSrtvQz)8 z6S5mWdO+0lT%tvJo-zN2h?J+D{lj3J4R2a8FAEaE&XcdvuJ$=0r6h2bq?i6zJ6xnu z6AS=}SrmuFtKji{UD3oV(5gx%+L47ov(Rfzs2W^85})-O&x4 z0Kzz0+%IJ)9}JXEBb1;Mg1)mv#2>FpH$;rES)>!N)79&Mwnq5BvD}S%-xTQ(EO<;g zVS-|m{5>FK8`z4$ZMzY4-+$IWR6AQyk;?&7Al0LCpWE-No=TMe#k?%`Tb$TR*qKl3 z#Uvfi$$W#c8{bX)$D2uUnYj3)u#>_5Y zcTzL{hB$7_#!NmVLa&F_FkECuuyRyTOaiTJ)8RGy)=u(G;2fiDOFsQlNhLB3lz>MJoKe4O|OF^ z(LJc)AHO$G8z&9e^+2zq%*)4@mFI2Vn~bKfrS)p+WI-TFf%{P$R<1g!7 zqi5iT{?|NAt^sP%64s@)E&%WstVTE}k@GEHH!i=?W2{683}gB`Rl91XtH&+-;xB(l zU`#WD`MBO(rF|g|@1ht?cSWo8L|>)mZN1-?Oko+`aMfQ5L?X)*gh02L;hyM=Xui2^ ze;QKC%li5bU%&Xeva+%N)U`~IX2k8MP#I3uAo;6x z^se|ttw9>rkBA}rQpN7=!R?~2DRQ;zHnugB%5assYdS0Dpa*&(1$JdZ;PneIrluy> z2STKZUxE14DIEuNK${71OZNDryeXzV2C_9Er7lf@RLpjb&#~Ks-_2yU!td0lsO%~v z+JDMMP(R*Yf=pp5Dg^m7W8Sj-93F$n5skTe^*|gGS7*&E5cY`cNohGl@g8uGigVyH z$(0*o^eks>^CU%xG<9nXk{fF?TMSJr`^V2sgUnYyunP&U7##h!+gT&pq_Zh1bv}69 zOeIF7hd^XYXf&2yF;>E4x%#7DyO1*V2pFSCNJ+gME&qan9QOmGHbG`|VI6GX`YP(N z|Cee^0KVf(i8$;3v-fLg1jTuk$t33R`GPLRMo_vedjN8}>5i2LE}?H7dU|X@SU)f| z!U7kt>{n{hoEt8$yANquTI$N(968iOyxq?lx?4j}cFwY1;Gw*GFVV=L1b+q*qRr&j z5?ISi3Dzo{ZX6;*>sZJaR=7eaYs28dEr|+UoYAwYWSr(*Rr{)V?B@Lt3bm!-o-a$B zfzDEj*(C~Ypm}MpIaea(ePyhp6-kH3wWA3h;`@{#`VpX+w)Ux{;5?0Do_qY|p%A+Z zx&Qnji+m5D3J#as)A^pR8j8T?veYt6K%`@z)`n?nTLS&+b1ssv;Lr2K@gT2d2dSId zOxD~0xvo(29w2x9qmP#Q76{nDltI)B2>lU%S-LbrE~&#P zXVc4=CO5B_R*_guwlnJF9ZX+Y{n4)fXj5-3p zrVDRimP@{HzKW_K%ben|s4za2o(<60mf>*=;9z zfpG>jBw3YULfs66iZsCLY)R=PN);BBb=#xb$izjs|f~cCM(H4f4Ka*cuuB zZIz!N5o0&8{RsDS%kiwJjRc2bjdMyqN-`r&iPM24@8(-PFK zwxEuBf(_2ukiyod;vXVx8se`uQ%FP#$@t`sR0)pmepu0~Cs%#e&Dxv9*Z;8j)MWqG z1NrXm((2@t--@Ren>}y#4msfOOexyL2S=t1U|QHhDU3lDZW z?`xIkuk-L5xDIGkEPW1h08AO7W|NO}R8;ud&Y+F^-r2c!&4eWHB4hCLXS+(jrKo(m z??B_!!=+V-1{{{uh~(*jkB79cZ{5*J05+||gM}Qli5qT7fXttr{m$ENm-}-8PJOZg zNA0(LS-|ufqo~w+ei!CsDL<@%IMDFlU$hCYdvF&NQ|r4veu=xDJ28vrA0np<`FvvZYM z3L_pQpwTC7Ehgw%@`1ii`+n0Wk6#)uKybFV&Sj{A1;TZ_3Eu4Vy<76uIe4_&r6{En zsNd<#A);8kGhG}XwCH5jc5tZoCb^e#beRJoupZ>L#*k8gKQFDXf@BqL+x55OKr_Kh zm4D*Uv2|Nm;MJUW1GmUObn4x_?7Tr$JZAG8GGT6wpgG}1mLj|RsT+MAC9iI=LcqS8 zk~+qwSzkVBPD$qIWG`UfG>%s~(-2kSb?3*}59RB}3ED8fs1~!Usq0D+rvoxv1(!+W zGqs#N7RN(SZEfxz3V@~_R1J14AWDkUf`P0}U-r0t@8ZTp^?+%2W8wEQ0Of|Hv2-|C zEXe;_C#demL-ihmN>o)%ZFb4^A0=;6=1fUJVcXO45V##R9zcx9Ga&J53czGF2*YH6 zA3K*lGzH!#w2tsw;I`mA`MZm^~ z2gm23(@RR|%USosmiXnJx&!j(F&$6Qb;ZE$)1owyLyh;$0RLGnM>31h`41vX?x%0* z@W7~Job^=TiXpTD#D(dSVWkWYdwI)pmGMQ-#kEA5Vbl;OV94{!PA71-2!0ApLu9i)TjXg>) zq99fMFS^6tI)%6Ap+=e{28opaJ(p%`^Jab%a@^6i3%qlmt+5qKk@Q9|X*cffk_?f9 zE+rXXozFUBdHr6Q1ex5}*&OOsC2qNlMx}y0X^~p!TzNdZD{TlqY)hh{MprY;yAv9p zN@$sSok2dbY2z(_#7t7*n4#}vC+|LZv;0ahJ|&hUn~>K`-r_hOmxmxAV@2~H2XVkc98w^Xifc{kG!B$D?5;LRnGBFr(PGi5T}Xq>)6>O9`})9i4snML_3 z5GiH+_nUuc^b2hG*dHLQohnujy{g4X>A*pJo$(|2ZQUno(qZ*hezXrdz@uz%5>T-Dk0@B{Jvf>}rBt*>kGg1lR-8Ep{o*S}bZ^ z%se+P`53qyu9ifgn{q(iM)1`?CX3Ti_qNNxEZRQk&qXsYO$n9hZ_jy?u!-rh@ zzIU%D1y0&?Bkd@q3Vg_Qny}GDZ|keTOguBeGzd7Ah4_X{g6+yZs<=VKF=>m zJeI?2=D{f_rILfM?D=dV18#qI>F{i9%|7o6jmHMVz{zI_UkY zwNsQ7kuk`^5e4#9NStm)#QEu_pQhpaW0?=QOvbaX4Lv-Bd;!Z&c(58cAsR8;QyK2g z+nDpHR;YaAtAgG5|+I zb!J-9?PK8L_sRt$1Wo_$CiGc)^%u>aWq9-xIy0Ho8wuz7cBO1K3JK zECCq31CsjVkbNRHOZOOma^@w=g-QRSrX%B~h?f;-ExpQa)WaRXS2~_m6Iz0T&Ot&v zQYk2Y^^2#usnL+jZnym7`D&%R`Po(gxxmh5N6@h0TUUEV8p2n-ICf`qQfbap2!}q8 zF}Dk0SH%-G?_t|OFiRxooJ1{4yLP&8j@e=oY8R6x|0QJ^3+h(8knbI6KGtQ=Hxe6_ z-<|C!j?%*Ix5wVSiLfg<^V8KR>?-@SX!r65Q355Ap=w zwT>%t-!z~WaU)p0itl~ft~X*@6B85HG{>ebG_|#} zn5~vICz%hmCox2Wie5EupDrhhdU=xPV3yYNSW;!yRz!G#Ea&0=54-vW)sNJQ`TthC z0nu&(2x)*;B?Isc0i}f3*}Yq54g)%KTDF-u1X>1xZ>O6IjkjF|PYy#=Z99DA8m@uT zK4Ip%R!~}=>qUe0rsZ$19Gq3*vKkW*89$X1bgv{GAX@wbd5tC)G1Cf$*Gu*|@%@{f zupKTi4#IxebNz~~7Vd55-7 zeySx=34=r$WCR$^R~g-(_y+#*C|wQvhqy=KEG2gkD(-#I!w?J0&*P6H;olpF2i z55bQCiO=#W9;u1#%A0*=!&*BYRSiOQO|;M-jmc|ktJ5oYvrygI<|)3rx7y4vdQ3Ev zFvOTAS{XOW1dlqhnmj4N+P^hvpBI_|tJFR5dXrWJkHZC2Hg2?QX>#MYo5pLdaXIXT?Qg zo-D{_J1eoXA_ccWlPZi?YP;jFySG0~7B+#}bV;vXqjqQ)Q|!qiavw)JXKroJ?)FK} z7+Vra;(!meF3xbwSiWIB&CQijZ+#W&D`|E-EyEszp7$Ixk7Ms+GgQ8?U zJH1iy#5ra50wa}0qseRD6`j8)e-t}=B__x|AmS>G)E&`wS8yt0y{Pc+tIJY29;-U- zpUdr?1jA2>Jlm+0|8W7_MkXU+mLu&9f{HOE@ir7?6%Sc9IgAO$%YYg zefH~6T}EXsqCKO8hjs1Lvl(2NKZ36YRufU*)BQUKy#b0M2C1&_%XECX>rc>pAE^6@ z*#OjX^cT}+vn`6mVMLjZs$Wx1d9xWGZ!}gMgR}BB53F>CW}$?d`J)%~x;|aHZ{^}^ zd|0>s5*oNJ2@PdR3;3>Jq%WnEczkgrHenC1SYFp}!Uj@drTz zQ}ZveaB$WVm0-R0x|>l*5vX;#!&!q=!pbP)i!pBrg?V!hhv@x@pQvB87O-&S;h* zLXoghN9m z^r!iPkZP=E?^7pQJS%yWiLUzGTgxGHoNP^u!#@@QX@hT5Kqvqemtpw`!^9bk zwB#HJErP3+N=UF6~QoTWaWA26)Hs{KL;S{+_INx6iEwm-4B$;6KFNKyFyq)+5 z{1njYpmcB&JQwMbTl42tWZAIFY%Tr~1#CWe(-8XAed|mw<|nxzQLgnpq#?ZK2mAA;gtYKuabf!*DKD%#qL;U4$QEq2-^8!ix6B5DggF!}@ zBXam?Fv^C_f<3Mj%5d=S&=nVQvb(UTU?v7A6xg#kU3{@;kv;$g!TX*I;};vIgcTb8 zOslrkU>BZul?zu96fgm=1gPWFIR+h{#Mn#xSU8ddz$LbF?P5@`G$TA`bw9)1^kmMdeJap3Hmx+O@i~Op}!Pv)a$qxK$zn% z0)|i?_OL+z{B(@qf=>!iu}r(O^jv*F0PFJrVV(qfmDKPH5@^niRBVV!>RC&A87*4! zQ}jOW@4Ngx#m=rm^!6I$sEDm|FA*o}MawU3BWA=o_VUpI|z4-ah;lOk1P)krvjyC>S8PSk5aHkQP8~v{Ha8D1?~`+9_jiM zUhrTO2ESBqm@m>NR*NBFI)itXLf=c~oU`MI!2IMDy1!Xc=hL_VUgQK_Nf4Uto!-bg zOzJ~AtIU@X%=DHw`w&g8n2w;82`B`02Mz!3_(j7nM~?vxWJH6Mx#HzloQ9oggx0Vj^5H;TXwt*l@@nJ#X?(cdDQ-NBlvf00i3;{|C0p6A{LRM=Y4D8 zQ7yIX>P?5~SnDQ;ds4;ZPF4UF(EJ$r#m<|F*V0&;*$F;+jdI{%$fOaGG(UIU^WT0cBr!M-Z^#8bu?94{O7_2=BVKpfR zZ~v0k1@wJ5U%@^H`+r9T#}>#OaBxdKF*fGFmAB8vcrJz!kr(i^nqMcXP=yHAc}v3Y zv=JkXnT0+P>edh6LB&l#*?;63T^12{d3n`XK;Ndy36M&Em(=uvX<45qWYCX$w~8l~ zMxUZp0nL!v(mt@{C>e)ku`t;bAuv=edWEYjEd2@M>Xp1+gsl*KBM&vBg2&64f5BP) z3O?zmi)>@yUs_Hq7bP`1DfoJmFz6r~T?G}h z&sG!Pu;;Oj^|dbcFK-%_dQ~*)b7bE>RMXH<-|M!JZ@`1q{6G!ZqifhpS!WhXisasH zfORrU`0Z@JlzSD~bTNondJEv z`GJ0-#Fg+IfMqGuZB!Uf?z1fV8@>G`v-`()-(c1Yz08dM7Nw_+COphKE}nC0wRprP ze*QDv3p|}JVU7A^Z;B|s8=tsZicbq2phwvP$C7uG=X_f4~qFS)a@w;s^Y()4zM-XDB75K`uspS6FA%B8AyV8-vz-DWn$Ob@K-*UUVXY z(vAXmR4!oBCyjzq%$!m|QV7%+G5iN0%Hgp5%M>%{6DXjc5G{!r*k5n&-gZ4zy`icP zx`Rv?%k}Gi^6c*x2S#dlOEe|Il!6UBD0xr)RXQF!?c=KTt2{Tf+aMf%f@qm9?`T_J zeVbqHbF~=Hs@C(WgB2EUzeFS#%;{@+Oif-d_Ugr5vj>ULi>bNoA0XxqN}T^@6*2#c zLnA}fGS0xD$G(FF-p5zLD-_cq@X;;f>&O}yw)m8PZ~IU*7()05gQBktWgLu9XOTEK zF|;a!QHwqed+nUu42r+2-@5b4hyTZ1A$1}J!{vKq0u_h>umEVNFd~8thCLGHyVA`q z!?#7S14^~u_lL&AJ8oV%{bgbmu1jNnMbc>ybUsJxa8ni(a_Y=ra;02KDo;DQkedhQ z!aPEjV9pGD+9Fr6CgQQ0Eu_NQZAt<~iYjaKcE6f7{HCKOde)9<>|M~Y68dH69F6)9 zCbBh2mD>5Mgd**;y)vzfjsOW(Sbh?KU2wXr6lzE6D^Z%@$si5VwJBRzA0kYk{nksolw0ftvI$83uBA`%<5Mny@Y)IHXWf) z|2S!}ECt^$XyoY@$DD@hg^AR$5K2%32SxwI@*Rxpy$M$01Js<5y?PIaxm-sMV#t}AS$_>v-aez-fKV)UUCP-g%p=@HjA_K&MqqW$ewF`C_qHh*yn zw9TR2{h0JVfr>pKgl<4|CMwaozG!nu6*n)dSi{|OTh0p0T?X(2yOw*anI(pX&jVj4 z`(h#Aa=d(zt@jB610;dQ%EijVS>WP|1bl~9?iTmFpMc7D@Voy2PKy*l;u!QJ92*zJ zvd*7@WmME0d-##7#VTVh_;>bbpk8LfanBkohP3FlN4r}0kh1rb4D#K->pP>zLy5c z0Oew=d5CinGl04OZ&s{uR>})vyDC5oXz+fFUoKCh*MYb&@v$J>UC@ge0Nq%a`9tN! zswLQ4sF1-Zqo8CAfRp^M=~jSF{3>`MAEMwU2N*8(`_EnKXPkbZZaqkWzn|ljus`z^ zxYg~!ZbpjyZ&em{Rju357c?5u&T&APL(pKf0B-w`K)F=${fmKcEC;S2&eDx0#8r*} zgL<0L`c0M_WTXz?yNdMvhxMSjh#}01zq~lNpuMY#nLn(b^GlhGlbeFW;7WOD%6B$D ze7~y_xp2@&WO`rInN?nr!zjKbp-4m3OjGG{8^`--Ib#^?-a3*=1B2N|AMSiJ?e)F= z9IusjU|`?{m}3m^u<-%_Z*8~;==gD3pFUSAap2^=n(T z-IrGy=kNg#1~@?vE^ZULB6QlaW=)DN-{k)&nGk#+_SP_U${D#VXJqFNFg^T|mHp!_ zOEFkk7eEhcTN+sAExmh*q`UW>?Hh)TPYaFPB=pWrp2;nN#^*vK@K^mkuZ;eu5K6@88ujxu)QudtoL2&%TW2gABhZ?z5_Oc(ZAc=gi{mOJ5jDv6E3SVa$*Gux!xo}V@ zJ2w~c&^JI@k$}}>FMpP?45gvjwws#%ynLItAm52J?55(s1t{2A2;cs6$ggYQE7s#&OJg;WlMwcO@@}*KFK|&x#~SM|0T=foM-HnmRa;6}PpaHO zXZ*!3uv(T6_eMvsNQ8CRmxLKQmAvYVndF?wwGQ0*O@~in zuCi72bE4CJ9v>#MTL4?Llpzh#-z@PGRP0`v?1@9?=^lS=>al9VFC{OZfIO)S((xwLFw z($W*z7||l_hbDe|%8?>iujGkx$H#|beyuSJS-U2PJg(&93BQG|GoiRAjusaQw-&>3 zEtr4wGXBB6%+N*lqGaErWnf(UQ1#<uT$zN*!22_X1EouFV)_kO435Iy1YLMLaAk zj^vxxm)-UqNZDs0dSmbsIy908Zig%=_IM4q_67Eb*W_3 z{SK*cvG)Wk1#zXX1t9-ihj?YZ5?I$!d^EKsu|Ba$IUN4kVA{{l_y#-SE*-iLiqWdl zG?fliIiE@wIPL_ImvRWS9bnqD!yi!~KfL81_!Fy;JLGLzZ}22R#>OosvGi!2VXa?S zcUgZkDBjakof%G*@wubc@fVwwt6?_J^6Mu5TzLt_mjL1zUX-f9T7opk4_>IUD0i%? zSy))0di&VGeX!dckpiyH1#EiZP}v|yUj?FypkF!8=&G3zIoEr zH(YwMOuyE^B9EAbc|J;b)3~hmcgWNGJNN|)s41GsK%~1NOHKG+0DDcHBhf<51mkrq zT-Lv^h>;_NvHmTfl1JL*!XsT%0OVq<;wGl|aAai0(tdt>FZQeCswnwUbiI_wkvm8E zOp)8fAl9pOllLEWNfY;iQvEG3O`H%dX{A+@JVlkuAM~HcKVD@N5>S`4&VH+v|IO}E z&yk9ika#3J`lwO1W&t{3o_~n2*G-qB;7jZYy=C$Sx=tPC;eU!PIR0B~k?s8dOKhPB zzrHqJNk->)au;~BBc8{&;^X1wO74GzKa86$B0D%dI99=48!*QSo*sA#ptpk1n+fV*~XR(*~moW z8WIJQbcJMFdmvyT0())m$NYz)B3k|bMNy$X_W!D=*sSNlK-RD69kyE!11>-WaM)LR zU3pJgWSzHV?4z?+P0(IrFg^o;UT9)RjmHiOtb$9~s+tse(wD7~Gn&h__u~*SGc@x! z_^@MgICdHvB_T7l0l!$_k>l3{+;S%D41wuZGw|lo=_<&}YXR~N?C7teU>~mSGT=ik zFE`0wep%*UWFVZ18P70Z7DS|5;Q(2f5_F`v=q_SGn9%I>LOY)F=15F;uqU;WGHTc+ zH6x%4xf)y0G~FW*b%9mLe8~9*EV}W_TsKciS9~wr>~%N_xc50v5=6s+ z_VAjfo@4N*-tqCbz`l+uE^e~#mWxJ0Rpx_m&Ly^K1N^x+$0f zlazt0EaR{5lB1|NQrBzw)W@=YAQ0)4pi;Zz3aRw-hyV)1;ja|+a|@sB*M`F8IG4MW zal1c#Pos{fN3at551RV+<&!96wKo90?X$|AMd44@ES#HLFQfz_wSd)37*EL zoWNplDXjnpv36)7YXqOPReaUa!6p$2q^NicZTJf^zron2aG|J(0(-9O_FE_oZ_5wM z8S;Co7g$&2$Gmi3A5CBQnvubQtLM3LTSU7p3C*YVhUG8N&|JS`gqB9Af`ROZ2v)M2 zP8N$Peqz85E7UUCqxJV5SoTQ^EU?Qoy8-9uq3~WblPvY?sa8o~f6c;OIY-)ZTUBqq zCXMGtarvtOux`SwpL>yh(KsE2g?;s>Cw#6Gw5K+^LhYliznA6M{-v=5I%U z8pd=wz~?$>EDs=9$79j3UG*KLYS$D z1KAcS=^Zu*cOzhvYm+&xe(c7-e4{9rm{_pq?A&^IM5qW=`6P6ldP#9z!KBEh5-H-pXfkeAr4)P5czp$_WwiHoJ#x?{*5(Qk4*lo(Af()VWwb_>u8511-DT(Z3 z((&)+rc$~r`ED&{(;N0RzpsGAyR0S2ybd`~ug9D@#2w2%ubYh!pZra&~`$lwl&Kd(ga-8{&rssC?b z929(iAoO45gW!d1zEJ_(`1(4Fd(VGxH0t0Bu%c^%&+efD{<)w)0Gp|*Zv3I`!u^u! zs{7fuqUOI{lw7?f1T+o27qVWQM6|E`yc?PSP{T*9;Q*i$4rzK(FiA-;rjk9_2n3Wa z1|BYwBL2Knv&GiuUjNOCJ?!9R5V~zg>V$DLl7ndZDmmrB#M|#VZYWDi|D@z?^Vv!g zt@}OV*wjhnhuo(_$L#z$t~Vj@Y<-BzsU-T>I0T*Do3p7feu2BBa}ODN-U(Zxr+ry} zX>kv^!#|GBabcfIN&MU5Y64Y;vFl$|#=y{gsl=1ya{H+WuodL9QYf%N`*u}e95H7l zPexG*?E{tuD%(#S@~scI3s@h->~cJ-bE>tzS@^x5QNxRhQMbUb-T-$fhLkI2Zu0Rz zE{%>u@){lJRQV&ZI6sQBR=S(_=NMwlK~ z=Yy+5UTu6rI$E!{Y#f}Fwc}kyn)rl-Zm_YjMI77wZ7p@;I1XlFSQNLq1i0!sF%dv) za+{M=y%w0H%cuKLN#)bsGn31K*?&9$bordxx6^FqV`H_~u12c)M}(+ZT)1z*F;W4( zDy*J%X)OoLt{^~(ysh&VfYlg-AjF64b~e%)P$I45&Uy_<(+aJ_mfc*Xjj`U z;8{7Eh~1yKOJ;RQ1k(@Xe}YgP^a*7Z7mJ=Gzs(M~yD~AWz-JIAt)&eC*j?`l*&Ct) z39ebNfUHhymv7^UafBkZ(r!X%isA9nmAJb zgo7hhzZGou(ZJgrEwzr0ib4zmIvlX43t9$$X1k%WP>q+LAYk9xL?phphm(Y5rTI*U zc@@zAe$M`^a;^s@~62B+pw)fGbO%w9xN=(s?4`{1Mq=%G{kygb;F@YmCth@HUm+U-UfFMw5ZDtzEj>B6K>OF2=hb5?Lq?Z^?Jn5_0p9^ zBE@`;5TGZDYFk-Z^XqEW1nRgo?>M`OE@x58EHAKdJ;KG}OWVT#={ zAC?spx=uH;L~l&w09dh;zSnb-&++=H;osfaDP3+iF{)<(>^nE^Mk8fvC<*T+rrXXk z8um1f)!xX0u0nsTx#8tYp9b49gsJ;0F9qcAW{7W9B-;Vei5Vd(8qNdtu=4)D9Gi7N zgMe*pO6?k|c(BkK_~*P!?Q#t4CfyYm8w>hKbSm^KI4-Y(ZaGUH=OF~A_|s8RG6PHs zYGM9-en7zey`fznSS}pPM8?V^xc%J5AM3@&cX zbhKlp1?<{FoRJ1Y^eP~l1UrdbUBp49BIlHUSC7R~{`gXmVWSe|2Nd;%b`w?nyZKcs z?0POgWhww2l-i`|(VOt_;M_{HcG6chqaPVQ?*R|o*TCJT^es*$gy)Smxqd$_Gx~;M zGiGsaeXq9-G#t^8W3u0`0Bq{WLw2}(NK!#>UbTmYhK7Qefam)lTY1z*r}K}!NyoTp z4t92EDXcI`L1712htLw|I}w6azCF4VVZ}dzv0?Xzm_78hr}UE%sWtFIxR|NiF@St)V^U2ERaPa{_1-1Ak(-de_C=%CiF-^7ZxO0n7GdILzFkgj{dP;=JU$t|-r8S{pLUZ5ZtwN)# z09en7B|pFylJjeg{Sf@1@wzEyiL+_X@$i#e+RkE+tg&$_X%aA2?0@bhuU7|{#Ud=L zKLW2_y;=c8wYs>2vu%-WV8QDcl4Hu+Rhh_*0^0g0>Q%pm}ATQ1Pj)=VZPZ_rHBTOM`^uqIo+H}GTw0{(4(N1xrF zvcJJvM0~g908sAu|Cth-Z;24ttliKfob^ijON`%HYf0=FF zPbvg(kqnncd8fe59Q%d3#!;xBKy7GH5M0t8S4LX>4WclYk=>fd+E_+L&ugMIm!ALH zYBr9^RDF(?n`RM*mV`9%yRUL-^0>r7aL?NFMUmeTvF-0fVny1MK2CYW%f<*TicER* z1PnM&dAsutPHq!js})KKf_^g%@nFzj-c<(E4Kz3yC1?inpM}P~KL>AY}jl~@(fz(tKFvz`() zkT4TVV=%&*`0+iJes7+q{Nm)%6p`=Vn@2s*%XyUF=7!nZipC}@8D^V%LS@$lbRm24 zuKFYvNeSMfz-Ac|7IZP2XLWi{dMrvb{{r^+Y}yl6`Q+~U93+b3mhyj~&CTGCVY3ZL zyA7=qht=i~b4bY4h;3BNssc;(xmC!r9Ippp|A0;|LcO!FxR|3*4>te0#`4`<6`y&< zq;6;#Fz8{s{W0g4ZM?oBmeofuAmn-hLdz$IceS*9&)*%Dl!7u8a(x0Wt%T3Us9fAF zWzC@7_C}zvVvqkR?fb!{Lj*$&g8vi>(f*4Pg&;y( z;Tzw(c8Ov_v@E!}TnEmspC^AW5nbRs8INRp@qB!XIX#q8aVS7o_{O*@W_O2WDS=xM z-A~k%(~UZ_`A^2D`sX63xF`OE@2K0N8#ZB1eWVUHQ#RB;S;%}u(&z7v@E2B@BEX+V53nZD2_piF`}UGRBiI+mRVaiykAC3ocmX};1je6PkdxHT|#FD>#pWKWc)sM{Z8QynmcJuhBwfb zz5!?h^%Djyc1To`_Zr7*I+&7wK6AB;eJuirgg`2Math+ch50?hbrH?bvcNCnsS3fr zfOlE9si2h38CVecNu6k)-%nB!19+#Wv+Ij!M!1n9FwI%xLV?9HQ(HYpSE3Nv$jC_7 zlkGv3!80Hj63F_nW~Y>ul@+z}M0+fX+9dkAS8#@{;*epyG&mGzUOY%gqq%k5 zZXN|s1I)h(VG-I#xSpqe8?ujFc`|PWk~$O?5*D<4qO=%xr+@~Xgl1o24+NPx;ZsUTt=> zIuT~Sp(9DO^UY_szoQQQM?Cs`N9uB1b~$Yl7E)ZqMtTW?**@HDx^_P+f+Hq#2C)iB z!M8xiz)PYsU((t6=ux5|2>=G%s186%Yz1C6%YW9O#Z~_3;a)53DOGsQUrG6XJ_A1W z3U+RJOB_<^jJq`MFS%M4O|IR4i0Nv|SL7W?pqj)DSSe&xc=-Q_-6 zAI`W`bGme4q;sq@R}p03wr8t-AO%+Zn9`ET@~l;ZFL=zgfN?pM2dYS{rKdq%Sx_Ve z-!ujMxHV;(4=BC#NQjb9R@q~6+}9JbZ}P!snB;nqNtRAu;7NdSIY0L+@Xr)O+~o~l zY{kI3gE#jbyB(W2^B}Qag=N4`sRa0QJ>Dzs%59E^G1hsXjZ~VY zXRkdP5kej$kAw;ai1VJgQ~8Q7#|;$F{u| zZ>4Nb*6OzB1F?8Sk4#Y9ref^#PGG^{%Tx6Sap#1x&8LowFYC@;j(V=ah1MfVHGL&bM&kddh4B zwc_hl_d74|4m~q;S=wz)dqMFEWDgiFFk3eq?l=sWF>}ij9-}h;{0%wTs1_c0&bfwLpPI)t7TF4?W@ev zG2TF&KgjLzo+6!+xCmR#6Lx|31!ni<$JSyUXvJV-rzP zE>tkW-2-POlNw0$N2iDDXdLA1ggwpE>DdNr*K*G^X3F1mNBro1mn7wL{L$|N8A`SW zmn)TQw@VYA!$Y_;;N+1i4OgMTYrR64Ces*)Xg z7w^Xjd~q(>AO4r^2?-!Ay1?wk-YY{>J7yzM&>;@qHfB5j}8AkU#7rkmXrPk#ED*xUC|2I6T10^e2 z0+~-0QCaf1TEBafR`xn5Ym2F;>^Sb$W^4#Q@wX!pBP1jNr^R{bEpr-cb5$OAJ>*SM zNga3ry;o5`@TJV+9szN713iK$`6`zw&hEN9Jm)CDNUnh&wi|SY5}tY{g06FVZs>EP z@L1l8e2V{!wOsvWcO|Kg%NyH2cS)cJw^D+lcP#(nUve_UnQQV1trWXBRRK={)1XSj z(fJtmTz+9aV%IAlfS)|aFqO2^X&p_sOb?7b3RLT+u-Mke?T)A_O4zV-9K`E-woF zJJhBY>$WvthTJtsHbCPZECdmuK=lI9ecs_X_+W~%WXiHy(N0%+;YR$}`X`Iwg?V5P z>*{Kinbp$U*Dc)=pQkh^x+Y%0xE>YI?N`K0f=HKiIRK&nRN+B~j9}q&*Vx}ssA%Ta zSFN=qDyu*8y#MvE{EUX}@KB-9E;CztJ|gM%r*q|4LAFDmxZCW08RT7llmpf70%5VE z^>kIr59n|!D_8En)~L<6eq5&=qQ6;3SLW3o94rPxO~86;9H~o2u8a5KuK2tDkzQyY zJLZ^5L@{>2I1={gI_hzI_hoVYOW%!q4DEYCucQ_B(@|5BPOu%f!3o3jo4Qq!av(RU z>DnGClh1otgk_Sb4tsO;qDN)uhOr3dEss`U78P^EkbS1Pd>6CQGS z)UA(YrM z<>Xz1xh2!OlWTX`*ihE1g=URxgx`cMPXq}nHVvd%S@@;&YPQt8{pR^1Hi6@^@OHPD zT37Ag5O&Ly@O)_JJGI-~rbc#>Sl)OYX4v@)Z$Uezp=%)!t2d4#;PS36n;Tbnp1<#p za-{h@n)Kz$*+JiY#o_A(aWiB7mHN#pf+nKni5cj9cad7wm))WV2E2AR1ixzXUvW`T zi%T;7{AK)Wx}rIt`q|c+C#Jwg-}+Db+(XjFrk)=OBTwy-+O&xuV0ySqKSxlWolnJY zbBKSpIQU8_PPE>D&8{SB&WnuD91%5NxFBQ4L)@wx3Rf<#EIm5Fuo%Ggy!eF=UU?bu zEvX9{A2Ia)8TCR4UxCl$U#QLhUE4pOeKa^ILP&v@`}i4Vo!FsE+k?aMsqAd_uopG< z%lFJ8t}kf#Po930)$*ALkNC|9r#oH7Xf9Kf^^q};#p`SHKE#zSjDKoq5b^1hq=X;7 zf0vp*>b1c2N%Z`B(~9EWI6s6%$B{?y5IFJwQ?DZ5?tObJf-N% zdE@^i3-}kW8D=$GDzR%8Lqju85W-2S_fm_tCR17FSFy#g_Umwz3W8|It}Z>G(Q#3* zDzu1)f;|cY3Ug?YQkR!pt|1tNGTQ%2o&Tfvxm*uozT}THC;ou!qv^xhV~%`@->fND zuDyJT!TO66u2?$1|0P0FT{1Acx8~%e{#Qfx0Q;XzEIRrkYs&t3YWUBwO~k4pH;$G+ zxYmtB8HuUv@HTS`lV&gbEWbDYwN{-)5iMr4d>GhI^CW#df@i(J(8KP%UQnH1^|!}| z+S>+h`yLUFH>4t^rCdu*MFYrYsyc-WI%7s`;KjzznBBR|0yseMAlyiV_8uU0Q09cpY6rK? zc%i=w8o>*VPDKFe()q4U8l4!dgVi7?#=HabYLg>azfFN~KilL=qnKkV^%EzzJ+2wr zn%%9Q9=GgiR8g(mqkQGSIe_r1*`Xa!`6Q)$<&%b;TRz%4J3R7aOTRfSgH57x>znLW zha!)cUN|fIXyp;8l=S~N?QSx<`dbOUh1sY8wc;_CQ#@kR!%ob=+r4PYYoy#-w&q;R zl>B&hk+ZS;rG{@CP=*TJBLunUix=RUMsgA?#{_JAl$U$;+KoqKD30%`8#h=?8@zZG zmF-^Y;6@1e7O!9!o=3!1QWjDLTG+OWyK-9hhOR5XBvt(>YN~4VjgM(S(Hj7|7?&dv zWDsqtbaLf|8HyoD8ppw5N&n6o#H)Hh54}0)qUfU%WiXbXg*(1BDK*Gz~F- z#}%QDuIfn-B6BK%)B{(|oIi16<)**s+DuWVk@O(0AyUzE^6O|nGKHjeU@dAh!aE+c zaUNa!O(QHgsD9YNzm|B;&)@Z_&n5|YiT;0-y#-KKYu`5t2$CWxAQIA23Md^n-I6yb zozmS61|T3E(jcIObT>*jBHhxG(hcWYpwIif-<&yfzCG@l%@*ZeYhCM~zlg|=a(7g} zsBHN2*s|(MxSJTfg>R8Ss*rc-eEItFY@zU%Ppa4Y5hrVs7e|dt7e*DR&Om~9@TEXb zGG6KX{a)&QSo+2Ws*p3-cB6%WAktK2r@D?a;8BOh!b?(9P4iJQudJNCn^J!UXDk-eISKm`f&31kjlVSfmvWsm<>`*t|^h44m-*cDHl(}w)Iw3 zk6eh>A3+0U1C1c(CFcgxZr3m48{SxwGL zzeBbZ2has<7BiR>#=u&Coa$>$v~x%w_Tm6*+za7^3{>{YkcHXs-aMe5Wy;1sruSlnh@+l&hd%Spqe6y zhr8cryxQ?r+3t7P=S5=ZNdF0IqPTx`c1I|6X_ott&W{ow%?WX$DP!CHHJ)R5KSnda zUzR}u#Hu^B^ahLh_L>n_o~m`{`l?~1fS)tnM%wfnIy+66;CuPWox!}b#>xfk`KP^h zTUQ-^9t@D)k3MFWFU)V=-Me~yD^D#EKW+93C$F%vv$(3IFWGMBY!4o@;-AY1->Eg| zR;vuA*zXUBa5%SvsYc@^U{bgfXr_4S930T--t}1*lG;>HJKcDBjIO5bW;OYGX@f>j z6e)sHv{LLfxz`I_ey&aB@EEYx3L7fZ~-+RguxrXLx4xE08swc;Jyd+&T1p zsC~ESW0v#$lD*q{S2A6FxE|(Jws=K|;37E3kU!6b!m7{))*2gqqSA)9OCJZs3dSa0 z_apki`onR|l9uRZI;VFFDy53hs=p!2teq z1m5S|N(V0Y5(Ih$T>F@f!pMFSH`d(mzVt+t@i{KG`UOh$A~rv%sB}##z&bluH8RQ6 zKb-&Yac`LJXDvX%Jk1SU{dk|~gW(>Zo@1fqmC?#|Jt=`q%^C@24`R?Kj`$E%_q18s zH+DJ$nas`PBNLsU6a=bQc22nA?BJQ+fim+O_LZ9oCXg6>N&PCXS`kDB97rw&nTth4 zIdpvpH=yzC9;3@f%Y5+ymC^8_#%Ivou=Ah4GYNMaLX#{>ToHVeO5rBwwJ9yq$MegT zmQ{AxG$NdY|&%6dam;;+(B=10@8+dEBPy))-tD7zn&K)qUlmmqp zmkrYzBuCHZ*rAt;qNc^g<|(H^GL~MK;+CHC(u>J%y!Ou@+?D@XH2{cxi8jYX!O(F3cdwh?6K`IHkH!TQgo5!Lt5P)z!jP$=z@zV&aw)iG zut-sIg8+dVz?5-AJrrXA#|*b-M~f3gU@0g9<4qDoNPi|5M81`p^1-V+*08lDm?~0O z^YKI!LbAuiqg9`6Z5dbr6H|MML!T&UVHmYRn7x?hDB4_dTRWqA78qmOqnAy6d%aLN z>`@e1u~t;}R0CP?6?a2^go8I;(KA2Wxb#~wY3dD*M1#tB7r7wTPK-!S4=#rG_qYAo z+GI;p;dQT2kkE2WH{&n;hXsf}O(z{)zHWdonEXoa46JoC_rCiE1xJA2-v3sbZj9yE zaDfdv6=VXb<+tHG^e=Z*}dFM?A0uG!)$2W zy-zDc%5rt6`NL`cM5YIfm9rF9_AWzaMs+@nIsfjRCp-2gj7@fE=sze1j?^$}Kiime z(vodS)h^TWwnm}L`!E?_#V z2c!0t@F@$ZUz>w?swr5tcxdW~8m=m@E7o%ib-;o4gU$`wv(UegHpC-v#P*DCW=en< z2W2F*sPyZMWB}e(mfKyne;blXlr^^{-E=T9ORvF5Tsgh`7QCn<5W!=>UG|Z8B}f%c-GZB#lbZ=bO0yk2?!E810f z;nbVO7S|rFD)K9x;@*`AP{`p&Z1O#bP4v(3FflY8m2>Qs5~*!@FG4}6Tb^?6Klkc>=s-=kJZn`+i@|j04EhhU86p@SdWCkvis16}g1P6F~oM*_E zC2ndIb8x8v6QOK3+D(X>AS+p|Z|d8FdxQ%Xtd4If5J(>jtt-%{_XA(8lV!~pF5R1) zebG5Lxtth4J|6fBj_ST~euGNQ$XbC;Tz`(4b}pMXFKg-^pPzohBs}Z*4gGkX#ISe) zM%yM-KDIIeDn~J+JnU*SbZ!S*^4lvFqF|XC2F&X6WyMz_V?Ge3JmQ-)r-;V_=im?e z>MawIZt^=`E4Kz1V^MuX`t+EP+(mqjPFe!XrqWMLl%!#vcMrU@WzA3Bv?NWH&=Ct2 zem<=<1n3GJAc1eI#dmk;s1b8>)aTi5Ps0O^(-(YSx~Hz6EtI19iJ^)WDq6|FS0lwn z|FEp!IHqM5+F-d(oY%_TxsDo(50_O7@$(%KN&+aoP6wk0el)P=2;ADC>Yx<6a=N$=>yA~HEW3`() zJ!18Ez|M5KWY#SWt)F2AgXyhCALB=?C=?9rn-DJ^m`?ef@Gu+IfR^!{8o%TcDLURh zq#p(rMcI|MnORx-Q&o1>vmN@*xAH?xoOKR?#L_VY*-N<%T@-ZX|Hrr$#1E1p7C)d? z>$%fPWX_d$7B652YT5z zi-)0pnX~a$Xm|e(3t!wlBw8j0zDdLNkAOn$D-Xijp^c&H@WS!d7Ah^aE%@PNF6stSEV#_^z6Q;L>m~;WI3M^7{xwuZ``UQzJ`rOc55H;>u z5uv*Sk;xZDdWhcVJCe~cF~EfeT3ZH&g-HTx&Op6~3l{Mc*ab#rr_PM$UM~YHt6DQy zZ9lOX`RcnJogYfnk$^;|0wj)sKQy<$F0ei)7W8yY`z7+~K`PVR9<`Gg2GD=l7GDbo zfQRe~rjH4zfE))Rye~2{P18;1B#RF1OChX9|HpdwgYUqmHW=6(rh1Kk6GF0A;&ED2 z1#AG(I|RQW5lpn>l8MIgaZNPhyFM6SWeDbE9QgX_@fSKS(shbIttMh;Fo2)Hik(i26sNwSzO4K_YLeW zkZ+(*t+t3sO#4mf?NDUko5G8wQ8`I1;;ZK3)fbcYQ{io_R|Fxkd@IiQNpU-QGeG%l zl={eK8dvuxaa!H4u$e7bj=&hO@24C$MOC=&YSJ_s`v*bXKJ6K*%h*fbRh(REk& zz!6yF_f`SHZ6#gZSxeTOQ!OPWKcE2LZo(1~n}07Byv&4_ofZJEItEa@jFk4k<=k*6 zTS@+Vt>D5(em8cY!EXk~sQ7^Ybp_+q$H{v##56$l4vRD5ulGsO9dM}?;}~=|WjYQv zlq8y2{a5a5Jw{a!JTbx|<&=Ym9s_acm2i9GgI(K&Z>SVvXNQ+U#OMm{Bl)={C3w5C z8ep}^WThD}qDmv`%X(#YYfVO0Ae3iSG_+vi<=eI7En`Y*)8Ad&a!W1GX(*u#`~Z4b zKog;;7RyR%0JWRR?sC(CUuJ;xk`G@=NvUczX6e{j^ZleeU{T!-;doCmRrE_S}V19B>zMI1RW{N#$#0$ND$-=Bj)}LDLy3X|dm{48oS9lkA)uj%~EhZ~%Qcq($R;UuY$vkMv^!U}E zbo1jKSG3*-xO^0+K45MGoxlRZ6ZKXy>Cmdc>*B@`7dUwT{(WGZ z%>~2=Z>?Flg|j;>%Ndzm=@@^mt9uYk^ti3<11TAy7;v-y%*fm!o?#KiNZe*@q^yhw zRKrnEQdI32SXkf=9qYe=t&AnrSsSZ8&l!L{W_KG`&u#q32qi$woRA@z!l_)(qo5c%E9$$)Y;oQYGfA zpF+l6Krs7F-KnBM=9e!SDqo(j0v-~6gx2mO5L(ycJOOJeAzybsANb8c>_=*w-%NGd z3-SK#p`jc`0jTdH<%au`1!>KL#v&YSJ>*k^uzh&ZEo@FugJzN_craIFZl*JO>Le2( z$QM&XvQONl5M!@O?h^HD{&MC51U>H#NvHl6C4o{^`3T=N}R= zfbEqnJyp?QGmxcRqAKS+n#-@M9Lu&FU#nJ%sxeL8JgUh(|-w=}0NI3G_1QLV;hduvq7UYF%)la$j^@n~k(0{Dm%vl)m*QP^@Y zF;~*eWP}OkZnb+&PxH<8cN;j^+YeMbm^g(&cwo`RKVUx(BfQAY%TwtG?lHgV;ltzE zfzx^FkKyAyJSRsK_adgm39d#PFSEFbi|L;yWw(*Jucogx=ol1e*WUZ_DPYeRRGTbD*r+PQeRqOxx1(Av_4vZc^NJ%A{n5=KtMRcY?*MF$Mr4Ee9|B zL-#jLoBClTlnJ=+JwMl(IyZ8jKwIDob2Vx;nxPadv%iKO|BChdJ9bF;~zwXi&DF?vPC$#)gq8H9&>rt8LP_;dT~(F4hIjVJLnCp0FM?IOX0DHK+wuIY9&H>jpFSB@B|VCGoz+QFyW7PC z*C$vw@snyvNnxt$i;0g%&ylzsQc-v&t6*e&(nGO4sLuGYn*-<3<@|)0eTtx04c@O0 z%cpfq;CouZd0GmeT#64@RSMe&$#PHuVf62!fEFZ6wLv51>zdgw5LzS5hxu9|y5grT z9hlkwHc{0Nmu&^M>WXmIdpj>#uaXi~xj9eo&$nlwzKCt)WWJXa*7>uF zJLbWi_+j1E64o4BD^<8Fuyj#1Mm6iRh$~E9i7rfTwOi?yT6vJn{IX zNAsk3Azxp^Nd5N3T_qs!IM2IGneOtK=J5BXh18f2tBJ&+$xkP)PxEKP-uYY&>I!0C z+TyiW;OG``!_<>>jqV* zl#Xa);{J!U!dGVn-A~TLXUOxQwU+ntsS&NA<2G~1YRWrMLrN(GimOJCe9hQm{SZY>S#z&?mC$4K()_t>G8_HQD z{~3oc9qD>GGhI6qQ(G_|9wR>Gv`iBdCr;(u&>vTO0{KUL`~fx^_2P$idV)@f9G?MS&v zB1N()1##tETWBx#<6i0A(w-w=RMrSIUgcAEs!~W_&TfpC4kxl@@f1#L3+}#Bb`v$r z9Ws-rIU4++ohxISdPeRuQ*wt7&76;XJm{#)L zYV=}8E2YT+2;7R3A5am24Oc4wYm=>q1Mr!}g$5%`cIlRhU}XDZXA~UUo`jV!dx?F} zwLGb^+dLv?N% zhmqE8$993w3+87TPImBg82N~_K11z_U#t2wM{ypDD)cuZc4z;LVKPQ zU!&C^!ykj#YSra?FDFb_l3mC{`L?*7)KWdRc-oIZ2sC&Au-R)CfGWtZ9;pRU5FZ8M zLt^WhsR#vsjeKQ5o0y;3`Qj$a;3|MxvV{V163Mpy!G7#2(2+;N4OkM{1x1Oyqf>zx z2PHm;O=M?KN%&(EAx=E^`SF6*kp2#D z%Q{cA`8c{jO{ME^XQJXbg*r6a?$}D#WUT8}j0UFxc|ykjkWRSK?h4M$+(`O&!90rW zO@lr_#h1!ogb#%MMGC(X7-h9kvrfF-(5gYyaMM2~*C@C)JNXXrJf2JqJ$Z?TVtPcH zqy81;eph-Hmc@_fwKDl;W@b3TLkwlVn5x#v{y>C$U`7YO6UFBsdK^=DM`<{fZwWTv zsr71mYkIn$FYKV)`w;_`%dv!m_v9xF%Z$@v2RT4jS((yGy-RG<fg#;1dwV#OemCu*7 zI5gOTeD#=5fX%TUIVK2Q8Rc7*?H=csy{tr_|GUXC%2Ti1b>B_46|-6^27~DPchecx zJRoX+tM2l2J+#3j$?i6toas0di8jv&0b%+^Eu6c`6}>CgbMyEGqi8T%vfVj%CKie1 zD7B@u4g}>jout&TXU99+-%ZffY7Y(ETsBQ=f3^ubtnnJ>~{J@ods5YurRdc?Vp#3}ePaWXjz^h-r z)idiGj;^0Buf_jxftx0dbWeD+>doFhR@1X(!1N9*?c?n(CK!E|NSH?JySGOOpxmJL zUt$=V?~%>b2Xt0a;LDpa;b2m6sp=ccaR5lXRDyy!?~VfE*C#SR9cjBf%TMs`VQc3$ zvK`mVct6D)S=zG=CjEke{JkU5&_EFF|8pRSI2z2FLpRXi<>6GFkdhMmt2rP~*S~1} z6#u+nu!wo+V7I@j#epzwS{u1m=QRj}e7YUgI!HBrBmn7 z-8Yf$Dw;XU@Tacf>i2&Sdx#Euy~Jf0kGC{;9u4B#gi_G2bIIG z4Vt4Fs`!r|0}s|m^ZLbIi4aeLPo;{kLK3$U;fsjnFoeyTR2JN{X?WgYS^BPtFr$1e z#=!1ZDMs_|Qih7p&|F3A-w@0Re5KhQ8F4dggai`%eXY=|bR4U77OUyD7-6J^`rREJ ze_T&iq_MAf)~5t$6NSlUUHp@bR^l0xg(KMqVy8=g%8cpG3RAL4O*@ z02+ae`HO4R0L`O{1*&EpmuaU^^EUPfp?AzWUI%bbKuQWd7YhOox2CZ+z|jHBy>e#Q zS2v%JuenN4rEG2Wb~V|nH@NQ1)2%s7bWOoxg#h zN*l0C-R#h2RPWa0$O;d6>ca>lA|hG<9yrcl)o1Fe-4D#+!smeAthiOO4%zhRDE4g8~ca1LV#^RT&514#8&XjR(gPB(l zu@AIOuG8o?L|+@e!~hb+!&eydZw0}8Wf}KoGYWtURH8@Kzce!UH{URP8FgGg$bz-T z!A^(<7>VL##7C8V3xJ$IO_Wzxb>2uL;8Rj;Li}x z)DfbS<&#mIAylVdAnl)ktPirfXI}!vo8C==M6;S^9YSzn8>7YnY&4!)sBSnthvg#p zoGisbe4-*yLed$E`^LPcvftjCTAX>gI6gM^qHx$p+X0;>CBF7-ywrpm%pO6NqHZ<< z0EXq}gqJ7%KD@DOo>!Z^1%UkC%Y8<@mynOJX)V;xyUq+GZY1FAv9IZO`CGCzpeK&$ z1=3NmsnXA@HW}c1*e`0-SkQ24F4bzY;`|+*eh!eNoIROd5T<#t#pRAF?@aMDzQ?DB z1O$68LpsNwq--nxUp{V@xUY~bM{aKJgOea)+ZQI&|F8i3)>GV4tp>PWALxj(?h5SV zfVzKlLs{*#gEqacwyo!p>zUv0p4E3~*xyr9q=3)m1o0q)q7Mt#&_{K~D6-FGhY^cMvR$Qvr( z-FpiDF0}KvZ^%wNwIP^ctqwri5d&Pp;X37bU=s*faz@4r zLJ&uUl>==&;AXft2zunueSE#y0|5R!o#8*4ascg_U8x&3&ms;10Re;lKIl(hG8yH+k zuqd#by6T<~zh6*L&~`NIGix;cUB<{TBH1{pqXH0dLIs=s?}!41I02?U5fexL-3j$%C5vu<8 zz{>QDDG;fQ=lRBs{v6QR25%du=zFif8Mz6P?57hh*38346Z4Iw;j$d_1%fNHO23*^ z=0Pb$;(wQ-K#rnbI6bY8DlzMDn@Pru80 ziQ(iCM3%nbaUcdddMQ#T)s7Aj>GSzXLX06vVd(MSOuJy{$Ia{pIemz3Dx}6Iv@mk+Mv}@A{+wn4ujM*P3_kUI2eaVMb{WkG5Y-TsHlvU=fp* z!U9&;&t!j=D+V-dZ?`E8suamV>wpmr zOiWD3_e*lH?|VsMOmuX#-quuguE9HtC>dlxU)9e5^Xr|Rom{FW`c%(BqpFa45XR*? z``HJ|sr>fV_l%z7mWu<*-TV&7**QAY^zu4z`k45vPTC~k?5R%z z7f|`vo;gY^p_^D!Nnon{S}5qugGQtL&r+Yhzi7I3mzx_bS9Rc*PXxJ6>%ed{D8_+R z!ZWAAYpZ(YbfP59$9t~36$kfpZk~1^S?33RO!`mIZ|}~DMtJXcq^;ntA_L+DZM)q! zNE+mY5y{OozDXAn(4L@5o5xJs_cASiC;y#Sc3|>oLsY_?JraKbPPob>aiHv#PmtD6 zF-Q{N(%a-4`nyBsy`)wd(Rj67E-z8;TAzm7&${;zzr;pIXKux7Z@-`Qx$<(-Ww9Y}v{IHof(Eu=x1e|WoM*sQ+4$wm#PLo$ z1($U5H0ZA`>ZVR=Jv7s$#_jK3f{e;%(3P-g?FDG=;aVSF1&&J{y_{FFe5Hl#kTPq8ymXVP?Md zawA{p(P)S*rR*0OO90p0i+^qU0&d0##EBr2mH2N?1eyub($dmcy$6@Fva;=;IpL1H zzD4>o?Zi9;mN-oi$MJSR-#=um55NnSF2BKoGHZnX#MsE_W1j+R&e7)N7ac1G`CJai zwV}?3x~TSaG@n&VtxZi83nTISBBRb{tb3!dSlsByc+t@7Jsv&eEp}0uR1E||&y^}I zo}jnDy6G*(B7B9|%Sw@1t^_ErW*FgVKk*EP2ayQV6!Qq#%hF^ZVj$C!h~m7Bt?*Vd8$AJ5Vu&K7rn|p+Xxs^Oue^N*gPmdeOp43Uwow~?LR`$@)w6|7i2kK}X zCvMasG5`euy{rSwSJxar@bUftJHE2VBIkAg7G+#w=z(?KquMU%7NZ5>7(KfRCpPh* z%r!Vz8xDnc9xZ+d2TMP!A2IA!e9#H|GOfpY^XjET5U}iR$~{Oi7QlfZt*nX(Y`UKk z$Y6Ao3algY<8c?cvUL1?=(Eb-y~J6YE17IiMreSC&;>bv*JH#wCm z#P_@@{`0dLCLm(TJ9OnpRx^`!`MW^LH?-)@_oW+DDRLaBKIe9g_Xj8`ujbv>^D7O& z;Dk}%&1n|=2+(M@9ilvw6%8slb)#PE?usUuR#fv((5_Xi{KB2>K>AJmX%@mXV>Zuw z3h>#^5QDXEmd=*qP03iBp14-3e%|h#5?FoRFyZHnpyx^G_|f)yAAl7cZz-w)zE5XY zU&VwO-HiwO0AL}Ql4C#t&uTPTUx$;n2v~c|CG!$GIXPK#L|=X80fms=lwJF{BZ?do z0hDoCwGIC^Ov2P@W`Uu2J3L+M1XRMKTu%dWr!y%)ZM}(g>#r^_#K?%KTGuM&LjuZy z+_rPRrwnXtxMaMJlni*L97xZ^#j_uo6YQ$^V*#oASA5^z3xI>sTY3|SaJrBu$lTt_ zG_GehrZrPs&AkW;98gmF5I3^xA?mNDTiemcFo}@gz#Pr?#O0<=kb>M&2A%mGM`RIs z9S?)zCxT#hc5L7s$8xLC?--b_aT0CxzIbq@ZJ75qUQP*@_bXvyA%} zrhG5Zi;&7Lju-~nGZDzl`1%f@rw=p50b2`kbKwRVPKU9GwbUFGphPSyZlFVs$G769 zCADCIo+#5lwyS0M4h;MNYj*+diR{e*hU^&jJjWoCa_tt@-gRV#np1wPzsU;$#wc_} zCv;WiEg*P2Cpt7VR3na0L==qwoH)!I1x4m{L1Ceb>g&%4y+8lWTJJ&6{h^%yb(2I1 zZaf)H5fQg^_2>iRtToMH59hS>I;`@u zAf=bbw@RL0Va~Icl2Mg;|DiW!V#Ru5hz($V;AN&nOoU$c(mVRR*r4QcBZl6VrbFn} z@(%t;c~i_V;VABw-b0B<1;`7s)tV#eXLq{Wg2?gjE07S;^W&O09X-F|9wTsp;x4GMT-sm;Z^7vxO?2&A^}~< z5!v#!Cr%SD(j%0UKxuh!PFTS?$(j9fsrHS>VNCHSJ|H;3`6^(AITFJoB10P!@7Izw zm3F4_eilzT_0*qY8--lpuelUT_A>bht6oLn_?(mFS~Ms4P?~Skvjp{D&$mGRIIs+! zM&-%9Cx~~UV`d6niSH(~HoUmUCVX=cDDeY>f+SSI4vR%6q_E+1qHsKv*PJ_)=hXD+ z)2C_a=_yEMy8C1CfANK$VDQjOeU0lngdBb@JqXN5lzl_X$X491AC7>Zvm|-CAWk|D zC(AS2>X)qEOkL?*L+R%05`?9e!|YF0;h*dm!m>4h{6!^9Rz~FO0Hkd}%n8Y#;d_~wK5_G=F!jy>DyydsoH{}Al zDOcp;8vcM-Vbxx(1I7zd)Hp2g1kByxk~`Hr4<9SQ?LwtxMJH?slX`7`tgru2eCg*u zVXkU3`^lf!-eEk!IQt??$Veq1106rw!W^c3$Yfy#Nkv-Cs{2(0G)Wf(pGwX|3TH5_I^X`^UrtL)OYZr0>WLm~y=rN>F~<(r zMt=q5K4I*CwdsGI*#EbOqxdj9JTCaHR?cA3TJ~TPTN&`fQ3s;SIsQ5-Z)yhdhPI|Z zobIwm7i#fB?uFDy=q2wYAUNoC^i@!b+k>_2m|zvv=XJ%r zh_3z#&%dw`m(Vd^KU9)Sit%ra*%uOh8V&eL8 z$ON<0NXW?)V~vpMrQ#Zm-4LI?)J^Q@MQyx9b{CJ&dGQN4I#NHTE|wHDAFX>=^Nxd` zRl1w>6Qi)K#TXlf66qFZz>>qAn~#Po0#l$svg)t|J!Z*ldYPPn8D&|@k&-WVmb_sB z_#Rx~i{L0`%|~>@PM?Dek-~0TX`qS$EpHO7v3_1Z6?!PlKln-+?zl>+qW?)HGGd^% za zq{|kKXb!iG%`HW?bpoGD?~IRz_*x>rU;p@~>N%NL8ENK=I}JpvG!q^Qk4LH+6N&yv_{nhnQ zwX}C#Eu}-^=cXI@rPuCFcxX^w`DWPNar1bg1qc|SzYTkH{l3G|#6BUA&E}aX8vPmz zT{ij^-HdG&Q*YHPEjCn=`@6gxP#JeNby+2VNR`?<<7>HAv`0ukl(VWSb(c06x!NmwOFHKhpmtGQ@Yw&uK*|IW*xgzw?iZx_|*AfIGRt67PkxC?!r7(cZA zVTFaS8}=WF4R3G?#F9au1pG>40T0F+b1ms77Wl}o7>e&+KLJQk#Htas=kGUJK@m#x zGAa3Qe&L52*5>Og2ceuj`m@=X8qpktK4QfMId{!zTKqGf7gDf)v+Vq zjtCE%BoL@|eL}DbB8G73Z|@_TRD)n_dC*d+L3y5gLN?>h9rCLwO;p+^(ezjOaT zJQF=#KycN5dCUQt2m!i;v09=}Dk>Yb;Rx)Q{x6u#0$(t{E-qBl)e1?FUpAV{eP-eH zP9;^nP}?L|m%$O74UF2B2jBtm<4SdOi;GwnM8zUJfHOKdV1t;B7LY-zS;dC!B0tM)Uowv3 z3L^u+bwbkgM6&omUTy-eX?E`0ku<&r-O4Y-PPIqJG_-?7@!nLFqt=}2cg9yTH*oHO z4-(MIX%A%n?2)yWUg0LIoDpU_8DW!}y9>yGWGE?WY|K$zZN7JVXk)CatM{{+|EqRE zhgk`&0Ii_{H%uo?6X2esbfF+}zT*Pxi)lD?7TdhY6yM>#@vQVkeho#RC)wO8%{v0c?|G8LxstFF1au;n3PeI zla>~?wq^z3G=E%b3CiBEQB%|urNz*%z#{-4Km7rwm-9_{c(^an%6-Vo%WIElxAai9 zDI1}FeIzGa$D+W%zJoRPeE@&>vWlDyeH3(Gi@zedHINp7CRIBmk;T*NQWkUm9;z znFW$ONmqJ(x$G$hw=SV!y#|#*RWlsAe(^}VuMj8F{8PyFwSI$Gy4+eMF*jA3Bb14f z>kU5NoNZjl)n1SE61ai<0t-R47=M88ilWosU;WWgv$J;(=Xl%aDi{p&z_X{>?@Q)0 z1QaM4nJ=KWt$Hv4?cFOMc|YI!Pnl4P{3%PuLAYTpg=a(Rpg*>&*9lcNZFDHjz5U+M z)>Vvs>3FZ6ka*hJw8BHTIo#~Y^JnI>H6!edJ4ENCO5K?_e&BXfUW8!9bYAw-S$?&A2i$0%PRrE}Re$$F8onzhH!S#>XVeFBnPQ zMgEt$vX+BP6eLvRogz!f<6ggg|CpLFAAdi{YM_B9`0Qrj4nwMVnC6m-mEUf(TC3}) z#^2BB22`LxR^qt+hW|hL_@cSe_Lm6!WV~8B>lXlhrvdcj+N3g}M&=}i_c7w&RS!ph zOL_qL+N{`yRf2B^=FiXaD#IyR?~l)cs;x*atTY0a4Yj^&e8deWUs64=Cz4&T0iAu? z03gV&3*RX%T8=LVOp0Rc{+w#I&o|Y5$I71mj0WZfj9gr*@HF=`HCi6^^J4*X7c0r7 z<o#LaQh6xr7r2Le7ulk@Wi1o!S4fJHO|a7_a$u_YxXii(Q9qS!nw zhRh^Ke@O&^A3lhK`OXvbAqK+kY~EzxdIKP6yt`2t9i&{=EkKt0t$@cNxBd2TUfg{q zc;1B>5ZP9Vq=|XsX#==SjHtgThYL{el5cQ+?RX3gfxxydY;DcF{17ZI7vADO zSByzaPF!qw)q5Xwz6?2aK3A7gQc_L886orzDJR1#Al9xlzlZs_&bOpQ!b~F979!^{ z>b!bI=MLU!nt~AR8poVB@lV3N9y~Qw6FuqX>yymP z0Av71_zGl_79w5GbZ!||pvh}v|2&C4hB!~Xunho$){jdg0MrLaGUo{3e4DD?oUSDT z{2^Mf@ES_Z02X!!Ceo)RYr-IGndc?6Tsdu_mP#6`2)6P3`(Qg_~4OJhNuvbYE2^A`XZPw{)11HRh#cAT+yl}Yd96FJ?qQahHT=oOp;C#lkbZ0>=K zV=SE~J3IRypzF^SY&Y#R`Ycb5)xK(x-k_m&*|TAB51{p$tt?MAI(Tw>U;e`aP=~dE zB(ybp7xg1gK*UHpPTG;c9>2`&;kk=srrj_1Nx*bpt(d*_3Wk(|R>rrBb`Ze_6~u}^ z=dh})8$My(G0w_0a5xBM31{q6u70_=9OT3#*KQ~Y0M|(4D{{gCLJGp7;^?_6p_t~p zKLRdD>SD zG-ufZ;4jX~OTj3M5%QvHC(dbGXG{zlg1&?Il=)=|azFoGNRFF7Hd$__iWyb&3_#n2 zGqw#Hu|{Owi5G96H~3>1Ch#g3uPg*0uo7~sm|s`mj;a_?F+;?>wS|kbqXm$;J)+ov z9Qr%^91Z60C12=D;#R)gP5W%nR`R_twUng#v)6V+$Q1N zE^(!$2p2#um+9fOW>oG75V}toUn)%{MQUqKja1iZ_H!$Yz(pSe3PPrnmMHk|pCI{9 zO})tCAw+j`lX3jd;EK|Yo=aV3X&H<}^3U(PJJBw^;-DO-&qUjgKjWO|UHr71$CIsl zC^Fy>M#goA?H1irnE~17qF`i|*58T#?+wOB^!j6IN+OzOQ;(|gn+sVSH~4Ti*nf!(1u>pG!|kC({$KIj@lF=pzj42RrQt z022UUA#5oC^e$Ni1g(iBDZI)~C!##H6crI7T;6@ykE^c(e>Ff5={$R$%N*Qdd9EX7 zmQz({za-PnA6cq;75iYR6nsbDPW+#^of0k(`}INQ_BN-3b-U&uv#ifl*%_8nQw^2` zjsv=)gXc0cF{Vu?3m+dT*c^+3@(12%(|Dl~6m;u5>DKc#y<-?mqbnG|1l5$IYI= zc~On8*KINgc1l5)w)gDk-@;mh<-;-NEO7<#YIS zO_2h>_Z)&_-M00HX2k<0Ivs+;^(7?fG+Jc5UHgde#5|FzuHN^`-=N{|pSHUc!`-<6p71jMNl|!o+eqohAjQhBpPVPIf7Dv`U2VZ z;-;6Vpv5sma+H>SA1MdGh%%~h_@nXRuW65Bg0c*XfAGI=2H3M^uufHdrWIihc&UNH zZ*KFny|1Dgc3g_<=oqAVoU_W@n}`7UQ_O!Y_4YB{(%2bIMqqIOVP8zTKqBV%mC3eT zQ^wc6%L@YS-JxO~>E7kq!t?_*Q zRn8v@@(?x)Y76u9n98L#K=sGR$4-g^A&b5=F;$a@@?!NT@u)aqamrRx|38eqbyQbr z*fuJN0-{JrNtYlgAku=8iULZvGzx-rmm(q3-KZc)OE*X(DH77%osxR)4LI-noo}7B z&aC-!W|p(}Z$Hmk~pk=GRhn3y6FMX@BxV3vgHnIUn!z6UAkv z@!E*F$$Flc$=r8*kX1PCt|lr5%XRpd|=C1G#R3jq0IZ2RXv1qKo6 zRFmM)nS@rAN=I(^Q>0eeRUURnADO!y#^(P?S7}9?5VBhxei)wt?(sm7H+`{!Yb>J& zQ^V8rOKH(3L1t0{K0d~g=!+(fpAV{Nwz@9p(D2*J-7h%8l%R&(f|uslb3DjYenmXy za8Ce5)GR`#-B-vd%{r7#xc^(J(N!_J8;%;URn6FhT!{%%Ep^)Oz6%){y2<18C6Kh+6h7V#9UKZ$9$8snS}(Irk0?d-ju$V# zlH%q}$4^R;&-Fht6D#cq}{hPcqUnT%A+eCj)OW}*&S0aIhIys>MPUR_M_zM8Z=uJyhBibL)&^E5_s zfYZeXZ_MAU?8&GokBu?zsFz*7-;*2JGrCKgp~H8p`Ux04PoMk;WJ@)lP+6^mq-^Q#AU6FqP=N$svC%@zyo)Tau&0duMaDyzSXUw@{u#cn@JxkpaRbdH_P^Pb&otc^VlA4fCCoJ7GwK`Hh1w)wa>@<^zU+yue z(0HfDfHx_D!#qw{T5=8wKmuWWR1Pfto;w@R`_wM+u1i=D3;EkCB&iTzRQfY-c}<2+ z=HbJqaT?y!IuSJ~5#S{rx2ryk=l`^rtlO``{h)sIT2hAY3>JzbT+fI`l->-8D+xGp zs5>8^TWv-6_uy7Q^Q*I&;g8Wa^|FW3L@)GizZ_JsIkC=3)geRF_4sK9RcF-zy72A~m?i z{7Kc{2dFt26hdNSH7!b;c8LEbbiX7>r@CZSE|Yr1&akpq?cS z@KV1qJQ<25e)kJML6KJSN0B+2t{g9Xe{I*V9LHfqY`%=#aZo{Jvnta7P3BaCL*?O! zQ{tMhXEFG42ctHHZX9VQsO$`bJrE!_B6xj=ubK4DL@jvmNqbnUwVe@M$r$kdT#y;4 zQ@P#^GWkv8m=+fV(6E9ph%=H`&O>D4NG_dZ+=OukFqHjYDgyff+a zz*~>hLp9+Q6$3O})KtAR1%%Um%g7A?(gJ+S{h)W|Q&kQ>cZ{feftj%B)0Q{do@tGo z%E+m*>_~*kV)66nuR45cH9vn3j32@A{9kf#>iJQI+bFp&s_CCa#C{qoc%m6shmRj@pZzAEp+%X2hiLWJ<)JTv-`f-1 zr^)b)#ZX(SU2tyN31J)#u!OOa_W4Bf76lMqf`%>8Eyt)Tp`%;Le`vfkaT}Fg)|l9nXIXoP_X! zojvG1ppAbI0wwk5?NEt=w1M+e3IMJSQS{frXw2UHf{_h3@VmuE)8e5Gu&?O;{d4@n z*Tm?#UH1-jMtFc}02{H5gnSmieFu$P)E+!CX>{aQuiwT1Af~ioxBTnF?i~r65m!wt zZaX!?o62ZLpUTaFDnT%|5!+^kRN=(L1WsS~m0!f4B>ZcU!}l5cr0t_e?;VHLQ46e_ zD1==r^7ZoS@1Pm&kFrQfk75zBh(I}B6W`u_ciWY`WhQ^=s_qsIe#6!h#GD^#Kw`6U zj@5|4Xn{YyoXBva3RvWazwUH&_|R&mfBN|GMc9bYA88eDUwYvc&*r)m0lRN83DiNu z629}lP$Kqt=_OkG*Tb%P7C*YDVrf}fCgB&RnGme{T-HekHV0&c`joP7M?GVs+QAbrZvH}hf)Vcmc+QSSaz zVll;5Qmm|L6Ryj2*vgIyRn?4q>Z`A--*0A`(o_0fe)+glL3_o)q3~hnJk3ijh2Z$} z>Simt4tX3fHZWSq=pp(O;+{8lo%46T_{fB_wPSX$wS&O-CB1kqQJlE=1WA}7h1`0F zbET3CYs(&qBS%Wzc;%DK_h{}n`mc%)ZFJtxVH91+=-<177o4QmnCU@CaJ6y|qkz?J z@3Glw+LjcR54=L`$+|1c-P>$fNe$LYId+Z*5BxneIr5RC+@l6rNZso6S3Mnw>_K&4 zy!JowbL&hVa^M>!&GX5&A)%oa24{K)b_I9CEi^g1k+=*sX7=5V1R>IvmX_x4-(Opw zw+;96x9Lv#r8sIspf!S-rMS{xY_3h;p~N$c*`?SX7!aUDlm7!(r4Na{3a@`as_vt3nqo=(q(9UL!E=8(B57>(m%LAf&An{olw`A^b<7>W$bL!^(=wMm(+`Cgsd_ zF&G$vMY{0k%dD@^$Ul8jwWX(!nK+}pQ*;7LnJ@=kE%8}|g=V$)IY>`g$|RbkCY!gm z`u*))TdF)5|S2y)k$J8FE0N%}=bdd*zMq-@SWnt-A^gx1&AqmHE^K7ozM>Z1!#ilo>nojQ%2)iCEW-vD1*(NvE0M0ixUZ$ELK8F-F( z?boSJ98Q#xGSvWYUlsDUK`HPJ@;InvYkjzs9122-=FV){)n8xFBf~aeG^=k~mJ|>= z;QPH!_vM!XDs>IGd6tO@D_tNt9AR6v&;kyN=v{|cbm z(x<7ovR1b`@uM}8ElFqyp%&_sjLskU^U{NHfMO?Z`tIqauN_n_SPbln^Tu1zSx6f5%Ah9Mo@?R24h|(zZ9wHBqk-FJm?zjT_F{z z1ac7Kw`Qu?w5!OvCx%8KhEMsoHoqkL&mgvL7;1>Z=ya_VA{Pa|^hdn;aV${=#SL5D zgKTrocxgN+tapk+a@n6&aZH*Mzh95Ix#!wb**tdOQu$lgy@n2F?2|w(J|51`8w4CL zhtk&Y9e3p#ZkJD52KreZ|BZil6xx-g6lOpv?qGJuRQv+taM`_vkHgCxPi5#lf*>~R zkkdMb`tOK=@t7NRfR%Ly!kHFqbI=OS%h&VFg9z7Zev0vv|#UYip}_3NCc12M@kH!QjE_ zYLDeneqAV43@eL=wS>`16gkg{`Fyuo+>-Cu?etzt&F)O(wYYB)Axwjcv}c+N>ptOk zHZn5G5S%%>Y@t1^=b+&=T=?tPud>OKXYuWZZ>;SJ@6vd;4m4|KE$T7)3%qQL)R<=L znTxz!q4Wsn0>AZ8&YQIB5#7XSwNFEE6GAeJY^`a8$83fbO#_yDFyVd=lpo%hpK9Lk zH=^jAtFNK%vKDa*&%|iQ^~KZ*kChHINSfTf88(+7VljB9PP%{M+Bjfmh9clb})bTS$V8MYDk9uLIkrR4-F@skR}3d4A;s&dht zMO$1<6RGCGUpf#J+Ztf-(ONs^l4$7weoP#o$?+?w6D?Ukj%}JGzYtYB@f66TSK{^= zanN`@6189Z(6w@BKGyY$U+;!=z)930oN?oWcw=3L4S{;9?>yUV(Re)}@ zz>b&m5`t^@5OX}`c|-ftM^lX`OV zWv90Uju(?S<$g><6g7SYX>^EQx1s-TLnnu5#7vr)gA65i7G@sxE2?B?OIv9!X2=*8 z#S32ewcOSE@JVn2N?2GL>vy{~8#4m|YYawPK{i^)`V}8?4l;CYP0#Iq!d`m%>WW#K4K+?_YOXzU=)jyWx)i3r{HC%1%^>m#>}i)s%p%)B^# z2zakx4^4JH>nHL2z?x{Q=7T$Q<2-2Atb}T7y^B9@r5{Z5RX>REJz+U~kY({Ck^9Uk z6afB%{iM|jd9*i?hi7GF6&x40oSHguH!Cxf1+fCaUuF!=eswTN^B}2QiGB3!VzN-! z39gy|eF%9&lA{3LhVj1%tw9=jkN@6*tZ$#?;UCdy8EqPxk+WqAN?C1jp{e)ZwQ2m> zx@$c5=kF)}=u$R5IrnU=!hf_L7XF)+uXLhS6ky8!2nQycua0sQGJ&l&>UVaioU zyZ_jIm$10ehj!CeLgM1))>b^HH9*m>d?Q&EmWYcF9_-$=nteaW4B4$vhkYfForl^( z?#46gZ!Ix`1P0H`?~{nX=`)Ln{=~jIHC)Z~wKN-3iJof+%kNpIz?a(ej<#}Jf#UU| zHjT*PD<}tD<*i@M`X!S_52O!VF7 zxp@v-hGci0Rcr`lA3drMq82?$Z!NiX08s=_ELZV=mD#Smt8zK)JG|d~$OF`f{G*f) z9WV>j{C>6gI2`3Na*7e1PM!B5`*&Wh8YS~A7RVd`?C#Jf9bE+AB*A=={Z|}A`hkS~ zyHAJJr>KqZjS~Hxew%(KgW1=pzho0^qAj_KJbz}?S>Bz!w)xLb{F8)hi1UR7#4mJ$%8%GN5Wy$?C>q)Ffm!hX}1=n#IpX3ZuJib~-I8WUshy>70Ije`%9` zpAd}O+bv!1ejc&kGrX3EOnbZY;@KmRP5dH(hI82+hAz9+3-UK^iJu@(;hu z!PZ3VTJK@L%6WZjO+HpOZ@Ah`7)mr}+Kd3E5%a!EQr-%ErpS@LCINkc^%V|te+7&| zbwCVC1D85WAxuW(Md1GbeG$&MH2gN6^lVB(#0ep<*CPUCwhg}y6vFwK{Zx@AzdkRK z59@HjnV`>gm&Ftvo3|K40lw?^j3NSQ+~i%_E;iQBWkjrF@8JAUm8hJV{fG)DpJ>B^ zVA!&(yk$Q3950ilY|l({i5Id7cpW1Wy5#+FWzXot5VKs__;>d#Zs+myK6{DiJ=G{X z1vhi2zseicP~5;jp{RtBU7{@Z>*pGX2;Q7s{4rr8(SW?ObV5K;8A1k(IdtH3%Ux*gSP zk@|)aqE#d^@vPcDtW`?1jPX5m)Y9 z;u9TFRl{s7W$D9Rz5xgq3`1e0dU(EV?gT%Hy zhI>oL*H;`C@Zv+^XEUzIsv%J7E~-yz1ZS*`nkLD2HL1u;i%kb!$HkG^7*_AM zn|DD-TH-2+&o>BCo&3UKbo%|7gC1n%am@RFHg^c!M;Y|HMRLM+Ig8ZbByEjp`*SfX zA3pOw@b1yo!yVW^@~h3}w6f8RS<1_A;@n#JnQNdAzuc6LHk%2xe(v^BH)Yo2k4}kY zUdCZI*_KxM%oo$h@XoICMAZGTcxg`Zd{tdG(#W%A)c1zf{&@gpSgJ%5tWLmxm*=v4$Y(V8*UFj^P>z7 zlRHB4GO?ijtCVf=?r>pF8XB6Qpz-KrHj~Cc%0Ljb6!y)ZV;zIYp6o!UP<0nHNaX7I zBF{t~+wS%Gacuga30K=@NjY{8fFaSI-&Q6E1}I}jIK%=#F1)w;r<$)q1b=q_qnckt zwhEQ&7T{h&C`S=dtS-Z7KKR+1^DDxEO>p0aGoMv})bT;|)D>@9Z=KF|D>KpP((L-m z>JG39p70`%6*=>Nr0^|RdQWR;mzL59UnMZwdSbgrWxAglXKD4Iv9rtX=4Xe$UL0^b z!?IU`%4V2L>bf(jsl!4pTXk!`_@BGXAGkkCX1V_lJ>t~Z7I?B^qvQg9KQkHCh7sYF3codaHVP!yPRHRdP zkzTvC0_JU!EVV*Q^)0x;6@)?p+rl075$}7){#C(s_bm$txkUkB09^m<8}+XI;-&qv z1&UoIi}%67!4qNMW;k@{3rnzl88|CP%#`EU%H}`5=uBnu68^JCTl8|sD=&{Tybb_E z5R8DkRV!oF+BW@cOiWLY)C!D0tbQIA>Sr6uf4gbLd{Z|HD(0DB-y zsPP1HF1RnisJDZgRChY_iKtFa;tZ6A;;Sj@T4{c9q~jWTnM*D(8y3CuQCESCe|fmO z$jDr?c&CTOpA3uCQ|BG#1~^{tcJt^?r-GP_rHJC(ouHmRl6{Z0xWsYlz4=vyw~ z9qls=`8v!@NyE#y_he2^*uT_C4UM1r-??RYK0MvL2)Fd|gc54va($=v`DJydCU2?b zKw{eQl8+w-%Zs3^G_E0mmJt&UG%X;(wqGdar?fy-E1bkDE%d0(yba{r%?Rm8Y#@afDyhry-~Tm>;}X zDK|(gy;Ei4-@!(Oe=h1b*JShs;{nn7F}FWkiA2-L6_S4BPrbtmdMf~*S(q0zNMe6m z7w>^YPYC2t{5y7*XScCcjMOGgYdN;^hf2V!_6G}#f89Rc@XG#*XnE-GlTN+4dbb9W zYceubJ-4A0fze`=xHXbpIWOPhF8ogjAd%sUiI@5Qg4T16%<5I?@9uVu)dY@Vo9*lk zs@M9c(9+H)6>;i4mNSB@d+B`u)|pGC<{yQROim&$n8fC&;j52C{~QJcqFs@FaL>N= z+D@gasqIR)Mr36Mel&f;k7!kPc5k62G=teP5$uoLnDRGhKPq2!7GBhvHb1V?3XevV z_+WbavHY%8DBxvP9l<_>V!t77Tx$Tuec0TE87|9jyt8|`#mmNUI^gaxcubGo^$9Dd z@T}yeG?4DBzPFk<(07+vI!7JX<|o&S563llDghPphg2G87HR~GdN2P#7n^WwQtg^# z2P;=UgGJ>u)iY*(%38&UJAOU%3t9{Otg)J14udRmt#o#QB+(K#ME$JCW{U3$0?X$U zCw#Pi9(ez>+J}-FxB@AkvK*o=sN^%UjyQ_@?CL`hJWWrw+Kj!+7EkrQe|~6ohLlNt z*lMSQw|=l6WFcvqps4AqEIid1DVd2-e+A*8={FT^+9T#(;Q4^x`wDgGXO-;zn1N~_ zjMKOB8GxN6+_#^s_m!cb(SYg`Dc8}W|)mo06!S6JmD(yTVI~(^# z`ZHwLg#*u(2hCvhErRFCPiJa%=6k|J=Jot#{8*#GnS zgA8wS%@}-~kfsL3ZFh;bZy& zy&QX1w)4U6JQ()s?%A?3jvrc6eWDDWQ-1%cIFrdRb|GsM95amV4AP|Jz9t4*Ch~gsFyJozvz8v z^OW$pBV0x4q`4;Oi%bKh3tB8z0yc}uWu$+nDF42)EsAKOpPg**qpr2lL^EEvg@ixB zK4ly>vLY~e;^~9F<VK?O1x` zjrQMz{)cgqmD34A5Y^H_Mt@a@{k?$#y@)h}b#SWF&SJ_hUpY3rE@F`7xKGoeR$_ER zrua9I1x`C_@!LxCtjUqW4sNAh^+d56*ChHwRRc>`SbI35O)%R4zro3ROpV+}?B42vb5rYprn z{&ln)9{-j`#o?c3hqw?&k6{I z&V?L{`JrO=8;_#Kj|LPUMxbk6m`^7*G%(QFoNnnz)$C`{EV~9`e%rftkU%o=Io9my zsgjIJhb0e17wSqCc`$BvJRu zNMjd{y|#zYzWvZ?(C(8MbZiGnX)}i0>!joPcUgm2lnaZ1lT< zjDG)R8`F)8BctEHZZCAS_t;&#A8Epz*EyK5$!%A4hw}T;1vu&8rQ?vk$+e=KBmR+* z>UgU{)XCW5Yc5@}h>B$%zT)Hf@9puiSquR+T57NJ@FkxKgScJ{Rxo4%F1NzYZ zzoihaN5_^D)n|FTur&xSUFxiUvif84Tx_yrBke&4eJ-8d8!fGKFQ@!blu&-2aze(J zQ5^%nbg7M9I^HAglF54h{#pqGro!W-PKV&os0!H{7MmD5oUgWU{iereJAgbacIwY& zWOY4!qH9VoBQ)UbhOF7@sh_gKSz%t&4DpVCf4luvZfQxtwpum3r#=bdsLg!pRP7n7KO587-1Gu4I>%go$A?t< zuXcD}O?0aqP;|f3x=MrXm*jl3XAz$B{tUuU*v#GOe@R%U{Dk=F@nq!@(nfnZdhL)Cj=4pI=Ie_{KNd5-wej-C79zQB&L$!vnA;Ip9hs&v_Y=UisOm6VV)Yd1MRK5WCDH9q>EKh9 z3Rv+;J$z{SSuVbr*>VHK!(U;Ve?bCrwmd_)rg?z^Rnx<0p>)~Cz4LM~nSzx2#Wg5% z(U>Z2_KaEeijL1XI))#~7qc!2B11b;B?b{JcHF|0&?1K(I+0fA;KnigsVj3&aXZCD zuBJeyahObO;VI%Nfq66L_dl!X5n?kJ79#$9GVPlIQ#f0=?&+T5;$+-i$ya)TrKJUo z%ebRoE7jCUO9zGvRoRO_3LX+$$6o1cbIFZw^Pp#=cx+a6z5(5qcFOnf+yh5sR{^Y} z2&xu!*XozZVEYD}T=Fr@rNzTaJT9u&1@rHso-iw z0iWV=`zNM}UxJ_ZjvGRRDCrO8Zd7MYSDvWt59 zCGp8{>;W1s(zf=webB)_18s7L4b*nMw)V#!vLB58x(N(ZKK%aF_ynq4Xh z$v^53C+j~=CJu5BL`G?jXI>}t8#~UevZaLUTj)t8^;ozhG;)}pJM-C3?HG6@w-*;I zRC`<6Q_9^uwVrzBi5}{(vx$kD5t=##1cu+f%6bQzd~6Ta)BWpzDAqcC&p?$N<$pV) z&u2TMC49E=J~hXYcWJR?lljMU`?+M=qR70B`PMOM)Drn?)aBX}~A|)%UY$5hO z{;mr@3>@BzXp=G1nzT1%`Q`erWiX+XFq+A(A!p$s=SHHH_B3|o~87jlm~lL(F>yw6z1uR8h=_C0{;F9 zofx#y(06vw@+w9%wo!)1OB9eFFGH=0( zU<3Gj52B{dF#8~8B#AzUO_91J zV^%~VoY@z-{0mhf%!!W2sZ1x8;O`T8yD=;B?aBMHkrotZ|Mi||k=8>BNxz|0uVYif z?-5rrtl~tpi0{sGh;5gv`(hjf_~yphI-_y_lcy6(f`00XMEt7}z=GAp4U zSN4cm6R7?yX4^=1qEyYY-X-zb1v`tsGW+@2Uo9j$+85}Mj+@)xxBLiMUt4eQM4S_X zW;-$g+ea&N*TEG{!bhIL1e{L$b!q9fR~vXdl2qPl zu<3Or-9sva4qQRQZx6?297p?RPIM~AlSMT+hbJc|1*_U-%ToOEo9AKG&E%!p!BZCM zm&+di&7hea{!l)V0-I-AxkbL4OUbpi$6ghcA*r2|ST z?(aeex}^P{KtE%lH$!}E<%8Qced<1ouW&g(zZc)g-qMt-C`CW32MKb&C*tR?Jd#*9 zi6?h3aCyF*e5C5Wh1mZIBQpa6U1$G^#;E_dnni}{8s0iHU>_GZvfh>ongH-teZt}B zBc}0xC&+~N9FCpLaJEYDrG&r3iRKnKtaS_QgG)e*Ms99;dK{<d>efa_s?PloA8Nf{Ogj6C!MZw-pP6|X^y@hV*)U&}Oa%xaomX>H zvmM=rW(lK)`R7=d!~`SRxmfKuhb+Y)%ucMrT5dwX;-K{ zODjo$`B$zphP#zSdve%uDGNNP4ZwEAjnuW7s$lci-ODUwKJ$X-us>)FQX2^@|&|M=kEQZa_(gp6^tEdEtwB&Zy?W&GtT zW2vIPDE1nDn#^qYh}h?NPJ>IPcVex!0E>ND?dTrqFZBDWdUv$UhMACEYxzkxJe1Yx z=lxg2epSIf(PUVDHOyqSm(?dApb>mG3g`wTy&PP2Paq5zSj!10oh*O01mvS`ttaL~ zLA#Y^4KOwtg*dNrHyX4?=z#T!+cF5#3n8$V4m1^UXl17y@=I9UjEp+se8H*U6eg)? zk*+>mZfB0Pc`Uk722cp4cl3l(Z(Y&Ko-A0Jn&qXrBfL?MPb4+H+E?%9J7=i4$NZ_`P`%rj~m(gUq=_8z#{M-lveEJ^( zB)lp-`Ge(7tE2ii5{0<$Z!70nzVH4?);;(%yxdZHo0JeE;q| zBUH`E?0fnTnKFelU%#xY;BUf=d5f8aEA-+5^jyxrUFfQ!B)OgP73cIPbAa15^oLNb zzbR?%_`F(Q><(6AFC8qd9XCh1)B=*vtr%oyPqb;i^fxQZwyHYbRj=4LocZelrEi{# zuFNAR2kK{OWn?E#$0tc;^@Z=@%)kd~^Og&h z%S1#$2V~A-+;U4$|AdBBWOjG={=l%N3O|`_%EE%rCu*I2voD6*L?QJB3C$-&FLpA5t4@+sXz;A{=TN%tw`xzOL~2>C?gLMq z1a|5dY7P#ila}K(D07?(A%eEcDu{vaFEp#g2VNz-!#k7Uo`#q80-;VxQ60-u zX-U%st(U9!UBLc=bWn!7@*!q%MEpjd@N^3tGm4riDJe|k%FhSFKbd%2**SnBJj2Op zx*2!wC!VzZ_hTNfjQ5aDUc}?Rbw>J8Bh5B=kc=BTa>#6T!&*^m2<5gdc4V)za_*0Hw(5 zwm7`}z$KyW`N5J?@a;*hxIc^dWNtQP4AQ)(A=d6_i(*uNHt)^fa$vI_3Fub7*mqOn z7F+k=wtRe2Z#8ZH-8TlET;Eh~n4E6@(&$ktr-+T?8$~)@Db-fLt7XqxJR)t8jO7)HgT~qh_>dUYlC=}ypC`;G&)-2 zT0wmOj?(p&^L^S2^JPzG`A@zOVEP}y^>cn}IEwoOoQPl`=5;b!{periyJ=zio? zd3gbYnmtJqr~osrP@>W*M8vo?!}DimYFHq z2NkY4>?rzFR0v<1V@+$%3yLG{tNVc~;c3Wvr=#4`YM0}ewDj=zb_1s(Z@RUp)@+Fk z-+Z~SqAStzO*DM4tH6a zl+mSTABCQ7y_C_mtNfDaciy-fUo3ddS~cip@gPYCZF|?vD}pzOJZVWR&`&C90>ejx zrFIL_WqLj%+aqvK#IKF@+`!L2_tLsP`|&cj417EA#yZZY+4m1Pl-_U{QOCIbisSyL9QvB_lP1aP&G90HkX$* zMvx2&w~%rmUPYCH)@|qCBX;4$t1Ur}DMRNZr|@r;aZB479+qOaH|lNXyKd@dg%%W; zV6n3GQ7_oeC-td^sHb(*FRn>@V+YJ}KW^!{z@?S8L-DPkhJ}YTlZ-r${78_*On@gb zG&ZY=^I0pu(ibbMG_X0F(IZf{fnB!yxH=AjZrqOu03wh^QM^c*nNxdP>Lb2Q$2Pqs_s;8DCG9VYe zmiC3q{OlLJj>L~?eQO4Ma5A0#=e=RZzlGJ>n2&$skqFe9GCz*sSu|>k@_@XCxhWbK zl7CtNJcf@(vIMepv+LL^y}u)-^*vMU*$P|7 z{F8{1^z?B0M!zw9jC>Qlj%SA5Qfgb#ru=!i3uQ-cV00yyh~T5(Z#1UOJhH&I#&d?| z$AyNl`)|d^y1E|^ z&^pRo)l%y5eO2z#D|l51)2-oOsNI7tS+4Dhno)YTzXK|@oB6a9${^`AlG8DmDhRm+ zrhn?Kp4|eE;TDji%+bCEmY|i@hOD2dvM1J}s&h9kL|rg;ScbiN`W=T4na_WI?vUyB zpc3gk8E(SMSEbOGK;%Hf#wOEC&(4^@Yk`U^Ns)W{Xus1)Ld z-7Cq+S+Ahj@OkH7)OW4+B1Dj(jg-vZl^j zC-n`s9TL3G7lr9KfWT3|escaG+_*ZBB^{m)!r{%y5RCe~D(D!7G?jZW81!71 zy#SkqN{cCp-nXigEluGg);}MIm$9_^sdCEh;{GUu{o=!-JAtq>fXE?*-XCz6ywKkM z-rQVc)hVQWvmRO$ZrQJoUzgSByFOX`h|ptr`1!pT1Ep3B(^J1ZTf~VpJ&%r@mxqdF z+Y41#5S^UG?y{;g_)``eq+1+dEL?0T7xgBi)VWc(4W6m?NNV<1Acz;WNPG9TZ2($} zJtd*u_8m1}f!WA)U~MdI*R#LMU1j(MdO(5Y`JUx$lYA|W%ZC%R6cXog$o+Ez=E|-n zF8yK=R@c>YVY=g#FuouC=Y~jmXzZ1nf|;UDDjmMZ+`UY8%_FecDjT`DR23i2&m(V^ z?Q2|jH<5pdRm`RYgG9dZqkVso*GOFXDUpLF^nb1qz0q7Mci3{pmBq$Nuc;{rZof|a zaLlvr>XAKqnb;kX_>0kDLAw~#~z?#_`C*!I3^=k8BSZKHgCLo;SZuU*3%1Co7K z?C~FZZz~E!$`0gxA?uo{?+lpj>=cvw+CNg zk<3&KMn2{NRj>657{51Qm&iQI>AK;kofi0&t20)}sYo7!=*bcE;#k?v+8VHNaB^{R zSk1O!b@Vr9uu&S=&6cVXJ^S*q*pSw}uOfP}FB8FYZ$2HaJKQTi&$1EFG4$u|d$z9B zCRxt}yS#hdg$3rofL+vSVSV;M#`e~2u?;ODp^k6yAbDjLcj$XEKcf`(r$DiRNuYpo zck;f%wBfgi$QcV~8B=G}tj{cBk25oePp^x@;D%i+xV6E!!dg zRi$}Np>RK)IP0-+FQ%H8&=Qx*uHaNg7V%ko!d1-q_MEr2EoAdXJfZ@EKd*A>Km71W zByikWoGmw}A6`*GpXHgF~&_4P`Mgnt!KqI8n<}>Iapgymj`c^Y+ zfXlyk5>r^s^#g_sAbJP*;{RGkg0P^rxvZ(Lfy+}oW`>?$c55j z8n^etkd4&kDV8M~5vT4M-b_iJ!jz0(EFbfm%Q$Hqe{Z6_tZCyIy~cmaj;XIz)Hzx! zbBG!D=}v{wt?Da-M5zF6W}xXAJL|oHQnQ+{*d-TzSMsEVoHg-oAE)5_MVskt*O446 z1IyFH%|kq?Wk>Xf?NNT$3IU_$_#O|Vw-FjkrI~oop52P*r8%&op#Io zPjB)+VHGjdY0k~QJCe_h=YzCHe0S>G468A*!JFQx7PhU`7SrNQ>_xB6fFA6^t({#l zCl9tI8~(U`a$ZTSz~xNV6}uemwLU6Jj<;R(HTT-lwWmAzD#)Y6Q2cL2HqYF(S$$dY za^{dMuq5X0eY;O=-FJU(>8K%Zc^s7F#-muL-=Z7L(vL&`*xC@Dz2fMRW%h+0B)_U3xeR1JFtNe?D@Z^*ImIYmp?5*d=OZAr?ti+w4 zi@l#hT6J&0%N)l7+z|HOyIqsIoi;#25i8nQ=CiV6^@*Y@WQGU{r|0yE9)2Jqav)2@ z7xfcS=&X{8&%+UaJ`}`fV`@y$`Qmhzc9x(j`fV_OTkp$(om|UD(j-+Zmm=j`=mAIV zc%Fqz=x6)s%sJuk8&OM!FOi1|`Tu7_Ou}6fH48PyPtR6dr9c%)s@56|k96HM3J)3a z6kscMd+q-#$N|0#SEt+eLZdRMKzV1?tEh^m`6=|P^+gIkOS(TmDP+XtfX+z6s-4>& zBB6RaM{$x2a**Bh@34|?6n+|-`@S7Ow2N9;d>xc^jp%6WRvlnrC55#G>qrvhU$8gl zq`%1@T0y#6f+Hj6ir8eaodKTPPrN0HlNZ-b;5La^)J5p#of3>@xH+EKG{YO<%z?X! z$W&PwWw5OogJq-&X@CREl!{HpY??62r}G62!RaBf%rbMeu1t}Z`3yLGsY+-Czj&>k zr?g+RXHNvk?EkaQ$Z7uvn_Kru`UpNPlCtUdFZ~bGr``#Q^v^*C-)fQ9L8X8(uk41x zN`rEcJ$C;md5(ickb5;wm%6`4-=s1;*%^_j6QbT8QC6b|@xDD7Dyh;CAiOwbU~zV^ zA#?~;qSmu%D0KAW6@&}A*F`m1kEHu;DYSt7s&XkmfQKFYHbwgDWpj)!JlV;2j2b_K zjtx5#{HOIL8Aj-(BM^qY!=QUXbx{RmIF66_S^c^+f8MhD5aEKTaS&lZLC=0g4+k7K zpxkb3k+2Mx=|L(F1O2aaKYY;C_=+G_T#S%UP0V^L4a#UN{v5BlO@V>fMqLu(>J#iI zF|8N68>aaAeh8uPxs~#)N;tsK{SNCU&(`K`CJ!0rKc99XOf#*irv2pM82=ZQuoISf z{e0ZsP2(3PVfWRn#kb?7KZrL#_6o_Mo7))U^H=hx=j|ANSKZ_Xkj{L4GWfD;EJz?o zgcWn1+~}TPbrh;KYpKOaR{L#4BH;fZ(dpEDvxi8E{=B->_OA+e7v_|``+s58*fG2T<-C-+NZt|JA<`%Q4X3oVKI;cdf2FISD`U# z(Rp~-MwOpbS_bSnf&K{qd+3xNi-P9HH9jF>HO>)^m`M+GinQm?Q|6Ek+)T~#zWu1? zsgO@SgyiH|^`;A^FW)cL8}`?LT#{Y}TrUx<>RzA&(v*|6nY77zcXgvh0)0MD6#bQD zsb~%R(9~W73O3$4`af*a9K}i4P)=4oUHfm3Z9^Y)G=v^(+5aY&C_!w1w77@+a(^jK zt~H5gnhyIH$z|2VZ+UYhn`a~7eN@L#*RBKB*IFg`YO_D@sZdK_LIQx!AEQMJgZPdS zi2!_;+JQKD;40LBALXpe|2;c!+PM>M3>fC?43}8ss%3>URl<46VL2^TlDz>$^5i@e zk;ixEVU$9E!6mVh?B`MCY~>w98>;-$%Dv(JWKL%waZ5)P{B@llfFI#bnQ*>)wz^vk z(xrgLwmLAJG7D)Cp{VVht;wH$g+RYgWsgWjlV1iGkNAU)ihFEc>SbH$8FIDPU|`Ua z0%iJ3@e901<5^;2sIHP!Ghd^9mfWrcusIVNRo(sTcilCT5&x8^TX%v%tzz*H8DZqP zrD8vwp@X8aIWk5}uj5HJF)f}a$G<(R)(BJra5OA7B>KH21tLcOJzK z)mlY`ID$p>HLH3Nud?4|#I{>t(%-R!T42g)x2lnxlEU}999T3C;A(xAm-sJXVc}9z zYAJ7Vi<7|u5oDQD5pz6xhD9wBN2sT6dyAT4xZ}41i((4N8 zIuiNPugLJ&>2eT$JR0X}X~b=*nl+5u$2*l$*DcsBl_~>OmcJj0oZ~N2YyFLa>fQIDKx(|)nOynvVFAg;AFhb12w>Rj39zM+ap9*s=vpHHDHa)HN30r;%LjFPJ zi(V$@-2tQU2){?H8f|rohNCd(CTA2+vwyUWWYbjeHeVoiLD=zbNHHS@4Sd=arVbm? znt4rEF%VQ2UEQZ+dk^%}O^YLDaIek^#|9LL|6W2wjaAM9P~=Jt8?KzzR=@X1$K zrDyb%R09&nt2u}m$*lPPm^C^}-}1SZxaX%@j~+3RwQ>x#r^53Kp&tkm%`eLRZF0l< zQXO1I9b#Z>W0$H^G__TZ{VKx$P&S^w_azB%;}5BbusI?9ptqOZavQeO>L#iccOHov zWN*xNZIDboDKc_O3v1^;?=p~o6<1QvkA5XNS zckUEJ=xTFBFp>3sxkZBfm(xISI3Gh|afXgwAqLRlxz@!~kpL?AY3I+~tvL6<1^oHx z`T3U@Hd#KJJ=P4>?3c2e<+GX<;b&`o;4baLLL2q45jMCm%afgAx-1k&qnt{iJbvVYI^6&f)sId`xjsiWSS# z*JqN`acA)@LxO$n%Qz4-rJ1#Hwz0HhiM6>xEf$kaSwwaZES}gK{YlX?debA2xJH|d z2x{GexSXCTGb!&Cpwjy6XKgN$=wg9;a(YwQ!gl2ETa_Ia9vlp7wGGPf*;S|PH(HN$ zSaCYu^C7=7_i9|@-#x8T6_fnG0@gfjc8>oG`H>l7R4%bHQS5R(&poN`$9?dIR@DTPir+c zMn<_(pY?b!<=&xearz#1Gk3t034LK0R9HqiGojGU-C!qD|q__aTu^5;_{~oUT0qr!KwOY zM>Y&cesfgHICc1Mw{F_Hu@671=0)lkzocI<9|rg4l0}W-3|XFjf+&=@|3~7$?hm%h z(x^5JNep9GvSy?}GA-F0jy%UMMmQFEF4>x$bn(!QOCqen51m^C{|{wv0Tt!eh7H3A zGJsMND%}l=O2+^q9g+ePN+YGDQZp6`(g-4w5(3iQC@Li|fOM;*q;&uLnE{XIeBb)k z`>%D@I^Zxfd*5;0*ByI5SnH>70VSf>nMrD zt6tI`^REI&OC62X5~br)3P^A4S}1{@`OcC^Q|zIQzgoE16H!!DqcuzJ;gu%Cb@6)! zbqwDx-#EH!+L7@1`m&=5m4$old90{>v*9OAzc_fvmB%g-N6%}{oqgVlb&m6K$k91{ zTd52=nW}Sx6S2YZB%7QlV)%?B!;@&Y6CmF^4Xqx20Scq@^{)i5VYCmR(uTP9$)kI* zahCwCTc8hlK~aqd3Q&QdCY(t#X>|&F1Cmqm!@fK-XyQn8(;qYV;(vIpHGo!x51IxT zD55vK^hIQTYB(5Ak_o-mx5;AnsYZ0ahg0-m&W%*x1#>7KWI&>D+k%y>UDq2oVJdyn zr+p6}q}YK+w#cV5S8r;8%e{6=W$Lw;bxtg{=V13%tx!KY%WO-3z^D~<@@F;a4c8>S zpI*F@Kf(|-|1j4YWg*P$&}BYg$ERE4j_QY7j1Y76k4kTdLkGy zv;vXAq@(B0D-^XLS;%^d z1hq5xu3jG$w$z}f)vCB;h_MjV7k0G6%!sY;;SY4qXRiHL_ux3SXNwH$RdpZ1vG~dy z$}JDB%f`2!MVJp@{I(o#jkixO$Ud3qf?q6SCDnu3>q$SEiVM|}E}!614oIgVa7z9v zX-+sZGWwW$AOhxApTGniD+L)ps9moAH2mvM;UySGv(OoN$e$lvP-}IDgJ(acl$YOV z?tpHyP*-;>9{w4e4INn$fnR+H&J`ev!2RI-jNsxeh=-KkJu|+@HvSZGBS_!2Zrph; z)}&z|J|X5Ywp-`=?;!xm4w`%EeQ>B0&rkx3{?vqmE9cz!Pi&5oW17mLKd#GF{cfq=h0pz#})G*`=k z#LnP?5a#++U_f4ppnkD*$qF;8y3CIImUykRc{6!$8Q09|b3dCFCoEonPccVgxnC*D zYB5{qlmM2R!uet9xr~9OKN6qh4qe}AsYmmSj%7J^QgwO?JOQWic4IH!@H_j%`J50V zR*yVzY!iXBCIvniGJ*afh|6LOyPku5tcrXUl=P&r!en8dnm_)nLSShEQoov*Ymg9Q zoM94#-@rqaKsmGT$^5}h=ZI67-q>kyn}u7$rRfkz>j>?iJ$W`eKoelNngo_p7nMI!G9D>CfoQ2NK)e1edC0r{^bbSK(YVp)-4H zB&S+l-13v>c_;fUqFL6~DmKgbvPxI-?B`m+7ZP}Q@a zu6W@)ST6o|jQPt7F%NmqVls!LIb-Sqi+&x1zJb_o@mYy;gngqA-{|GBdanQSi(x#@ zBLrdB>8mDEwwHLx(|^{4qc!N)^6=y@$1S5snZEloXicXq#p0_9%j8O5&4aaqelMH} zG&V1y#e-3PK4QgZTJOB9VCd{(zDj$q_*v&~-z$0QO*+8%!a_PR#)seHnnab+WACg% zLJxaTbPKIbe^`sY%2mFc;!sjo|^fo5n=Y=O(tjgn<3)bg7SQy;tPS z8i6zGVMCd30lq~9q6W@3>O=54^n3u8ZI+rAlw+Sj!nE}V-T4LSdnY~d{XgL9-ue_~ z2M0HURXPRKE|5ZnJ;cBzJq&0|9p8u0;YB!@DOe3dgx29bb0EB00;3SXy)E#NnqgYl zBh9IkMZs7T!8?i{r7}Hp%9cvZwE4L#EC!k2BT^jA3XUQ#k_&-njH1ZE^FG8MlP0EN zll#9<*(=p!rX0H;VM~Qt_z<)o1+9B5xOJ>Yp!XOYhu;XLpYq(k$c&K>?jbW-!tnVK zGfy{afo&IMIRrs@DkJ=KEo^azD# ztxmDq^Ju3|!WjJuWA=-cZ1njI0s7ShTx~cQ8b*ch5+u??6>hL<#{1eXW8(;W?U!L5|d5Zk!>W*lFg{tJAM>TDb z!sdH{bLF0vrH)E(E#D~?y8)x)oO*MXf6Uw3B`LvTx zbKs_n7<}|?aUJ9azcseinFxj8Gw)Af$p;w%vO@H&ix^7)54r;>nRsz~Tn`|Kc+x;Q z;Hr`FF{bb*R;jh&82gKLu1?0X&6>yD~@N?anqIJ z>oBAz#5)8uuN^;iGY>e|!j+?Evz*poT16Qr(a>DksvQo)vu8oyp0{MX=}oM`7Z;>+ z$DsFedu7!k7)Q@%>+S|QQ9=f|@El~mV7q~1o9+SC%Oe)(R{gB*akH6rW` zS|SA1Yjq$gUxNsyuv=z5g7y3CMcASs45e#Gn7_49z9;Cmebq~ zB`s|s*|OoVx&L$+&`4#bl_?3d&o|MZzJ(M6&TTo9_DA=c!tr78(>VyWjKz2Tht5%X z`#M}vbjw$slKS9~AFd)PV%DUJ%$u!g8j&)()Ie)wm+{u5i;~$%A116&6ziDbIhZ_f zvr){j4NtMCe3xgWt6H|M8)n^Y< z1-AvSyTTYcfmj9#qW7_B3B)?oL-6$R;{&K<+L*f{n)xVwiv&{bZ3khORprpKcxU z=F!vpsQz5~uufo`Hf#EPR#SEjV~QjfjhZ`YWQjvv<8A|O{jtNF?;$hX%PbCSR&aiB zqPR3v8%Yv-#wHnx4OLVaf&qR)&lh z?KWfW!sn(_3b0XDwB2Wa-F$!+-hy1LM=db?Ki6sTPutuuctI5SS}qMPCBy)z1&Y0b zb}jJsc-1Ym17*Mb@p%!==mzv8kkmUHo@R&WTTG2hh>?P`vgr`}~gW zS`58`T(LfQcF^D~*<0RwK4I+g=keBlRwb9vDTBEN%y=~n95k81krGWm64w=AjWtgr zjvt0pUj;Vg9mDw+S}H=G>;m3Qgw#;@6$>AEhh{0Iq+UF2o0=!@NNAWXT5eD-4eI|| zzljwE*&Do%k;ZR#e%0Xv1;*H>52Dc_T0CS`Y>z`wM10kb%e z@%Dt7y5FDPKXgreZ;5)Sti)1ii$fk5_~LCTQe1BW_r2}sD;>o=L6=TY#gq!b_hTON zFKXB!$?5NA>(85cWxbWwQ%q}lhX0r)h3rD%WA>+EQevB~@vf5dN)+v4+x$zeCN++Zt%!-viRBPbDPCnvsxj2RfZfH@|+`%35f%HPQ!!~@8zm-6$clO z%q1EJ*Vd-(kv$m#`n8`Ef%7^B7kVKPaT&+NtkTqYv9{Cqv{r#2-aU@t%=u(i-Ge>J zg{=ljvo*CyIP`&y)H4qn99z!$20!%n%=9~WW+6CEXhZaKO@F7qVuH*q|Mn9YFNb)M zMwT4-4j(4-Diii@@4)#D1tBYT>6vmz{=xUC@VFHDvTFeceaT83Vyn;M=qX<~?HJkj zGZ$^XUC!y87)tpiQkny2%qx_#X|eQ;!6^V0bH z1M1(xI9Pdoc3ritOXtS?v_8~HEp=+_cj}K9hpSXs8kG;2&-(M^uWTOJz7Ze?G7BK= z*U4z1d=WJwYHYnpOOo9_Fxii=W;+${`+$uuzE_W9?Z;am5~6E;&V&Rh>iaR;>zv`{ zZaNi3v`!s!C$An5Gx=a-Kg^B58H{&*YY$d|gX$+FLx#k&OE6>ip#%1DankYR+0hG{>N{j1m5Oe{}5c(EZmd5 zSisD%_)R8 zWUB5z`xb%&s|AL(uxo&W1Icw0hL_}fNQ8sg&$uqwk4F3{cW8TK0%WHV&aoE_*Y6nA zKS8qMKag4-o2cv!X3R;aH>NjaRlo>=O(SV@*dXe)!MmrSi3Y0@q#TRp8iCn}mYD$+ zf%6=+4$=Et*7#ZapVuXYfmr}s7Br76w0v57Zu{f!pycO8$hPxb?xO5II&NE2Gb9Q^ z&9RD->q$c?akbIsJ(}kCZOtwWesg}|TGBo+YJDn93>bv%^oz$TkUI2%kvUyCM~u;w zBnQxx#fda}NK?2=a5CgZJKroGF5VtH*oi^)+T&W&wa0a@GmQJ-KgU+ziLXh>TZL*E zOd6}+)Dd~Y0*T<0Dbug{TXT1(PZSEj8x)fXv+JkbmG3Vw!E>;W?rMzY3L8=^&Aevx zAXDwqs$s)Lx-@s11kgDSS9Qhqt@W*uA z=0Q&3Vzc%G{KQtJ0&bSUe*7)ziF|33icW#;3|whbt&bmeDQ?l74J7d$>U9dsG^|-F zwSD5}bmyk3-7%#3>#d!`ZrI*! znW!@qf??gp^nr@0K7uR? z%>pcn|MqugjGK@G587CEu{#Zvg{U6^XfOgM6(AkS!P0(QYwBI5jjul4PC2u&Osvw} z*7wDm!vWDG0{t8u({kXdlLBa9NVUiAk+9yrUkcbVu zEaTByF|eV$Mg`u1Y{YZOkQI6~)zs_5T(n^w>aHlkj2q`y7!}P}!7c8c6!lv043P@s zgsVB1cr}D)``0o(9_i9-XBS){3@G7{Pd{XY%W&RIH~}<_>L&ttoWog#@s4s$U}C%0 z*FIxbCQS}tE>gCe0|xifW_sY-9(^uSug>EMr*|s%ChG>LwyzxW4LuACV9Co=jKHgIFoB10 zZrW&H3vKFi1OnGHx~Ocg;iFX0_T!vO;yS&D(em9dVWqM%b!+!_^Fx zZ<9Q7;LG9Se4weryU+w|UaCf2k2=->m zd5XlK@aYdUxFRxzhtZ%76lgbm-jQH5*a+ddqz@E<`-rceKu@w?(%WCWle-jfvYH!x zck88ivR6cwfuOO5v=WTMcoro@nO*T6b)+&-&n&iqo)EH5MH*(^q=Y_hn=l_1)B^mf*Eh$TmO+c1Vi z$A_MMczsUze&zeqS&I{{<129p4^&rBVz_c^L=Jc4_OhbinIyA3!k_z*-wq8TVA>Xg}YinWbDPPl8r_3=O03;)IV*?XP_&_N6FiwYM z9iqT<Cx`k3tFXkG42WC^3LSiAj~*khPkJGpp|6eH6p$;d{ijXz9dzIdiHqt3Gv? zpF!9`MlQPj!RA}Cf!UQDf8$_Pzmq|X`1c-U%dcFTXn#~Ct!3WB@28t&lLvncYaNT{ zk4=q!;#<+t}qf8u*+t5OYYg*ep zzw3tFz|MkDc2KCRNc66H{YfF#O~b*R(SNui3ibeY{G0+%Z7#cZDBj%` z1mqyVsdq%u&vKsBToLa!TbRgXUkjb&RV+DZB+q|#UCIH2on-!~7Y8<(eJ?5|@>NHE z#3<_-|M2JH6xC*O8B|I$5#qmT?9w2KFU;>^8Bh77{vy5+EwX)v+kKlrnS(;eNqW5Z z+Y*1YwkxaI?sC?r(XHWWkJ(SoPL^XU(ZxIM7NvgQ2;hjakwsC1K_`RewFH)`Rrgr+ zO~z>_K1C+rl9ktBoyiy0L?&z@jGT1Ux=>jlmo>(tQ>2|WL{@u6+|9dqVe^feHsDC6 zLXgo<0x_6KBU&&~SJVkuK%;uoNsJWWpA?ZeZay~$sDOl&q7awyOvIfYJE*&-giO-m z8L=Ou1V42CbDaGEgx;y;-&yr@SxwE+_DoIAVjLP%|H?oRt)Gf!*3mwT)5{XpX z_h)_$nZ;;}t5ij+jEU(GJ$X&bn^q`8XIQ$s9&WR-XR@_Jovv4!2jgrz*X^SDm zPYYcZyFf|5UwSc}y>a;zMg)&QJ|p2J8inC#VPrt8gtw;1FnEk-B#6MNT(^D?Wo~cS z{vpw#nV0Ql%@dD7r-Zi8t|6z78Dm)EcTqowVe9c_qQh1TDTyj^@TvzsKl$wit=1ga zX--F;7H$;)XYD=YgL+rUU?Jo{rj<*AsUKTeK1_Bngw^i6End2#IKxBv)YPL!SLgip zlwqhU{VwByd5_WT+eEs(b*=o0Fgcgn{9WsI6w}gx0r1b20 zWz@d!&{R`s98cQe_H>ha=cB}^Ld{?wseZDG<_dX{W;TV|(qF!IJ&wDZqRs_T(X`w5 zUDbb{oQ~26N4stxzU&>Q-(Hd7ixPk1m4Dy%5PiDa*zEb6*dET``|(RkiFp znLm(9nr3?fUEQ5d$aY5V_y>IluYa|&%4kS27us;)?RN%ujk+)1C!o{LRBw$DThc64 z?-Al{6iwx6L5#7=`90esn?>38%#Z-SX&(YqE;k0Wr)pYp9plxF!1{K! zP7grE0zi<;K^hc7%o_(~H-u-N9dKx`D=ua2C0CvC5FlVi8=-49_nR&e3DtX3? zx&|jDLm{Ler@)O2r>fl-nl#A&Vv zOtF-i1#&yTsKWIWi4lpbDc>eim2Ny}}U^2}TvZwh@o;Sf^|)8Ou&3XPf- z(JQ^3`St0n26vD+nW$R*M!5;c^lccrnij$`0zm4$&7T!RagfR7Ca}oRpinG<1V<%+ zweC3#oP+T3@jrE!i{y&;PQn~1W<>W?;dK$G%N`S$Vi z=xrm(^F*#~!Z?i)__hVx799}>r)QKLY7X7@)k=`A=Cd;~g7Iv7$ms9t?b#;N{l%BR z4-I}cPCBdHSrilfN>60x?_%|Hm%xbrdy6UiEP{?j5TYL6LKpp3Mmt+mTW;hmoO* zOf{P>(m{^)zY^~b_*G}rsE|eBTwm_8n%U*=Qvc;srjOhngAd%g$@KQnaPEplF5sCS z?WC6HH+F75-l$V&n*8qla@b#YOJAwV=OIil8%Mr=0QMY?2>95RoOD-v>LMRWIj;Dc z<&5=ItxOEejv$YCq_+Bd2Eo_`-}g9cDBq_}Q6wW;^gBkKsY{8R=3Y~(%dC3(Z|E^Z>!yj#amDf?i+U3)*IsV{^INg}lx z>K`Wb;A+CyUh%j4VSs-AoSGH%quDl^aV-WCvUx1`jfznjwbtPMZdYZ;Ej@1Zp+{bi zN0mzYCgnhUUaLc8-N>(G9J~+?^QxO{-M>fxWUxSxp$I{SWmqu^G6}Rbkd0%y1vB^= zV8{ya4tg^)4~TA2Fhgah+Km(sK_9;VK!&%pkFnXPr+3_jIXU!BhSb6wQe3i>=xegP)qB?7#O4+o)I;6$z>+(eHl1PAry%J@S8523~4B8G8uJ$<` zBozm%^VfA|4)1U;!IV)A@~!-Y09d@GXDgd3f~mr3Gf!lOGajxJWma(ft^uatDj2nM zs3N4SJwrX0Cgb2s`d%~zNxw`RJAA8<)~0pd?*uy@9j|$nderO#F;J}0c!nv~^nwbg zQ#_3(D}-g5M@#%*4%UHo|zH`R32p7azr& z@bzG_kYbf2m#)k1wJya+HER8w$y!9nu>M3D4&QBu zp&j!cS=h#|b5p8iYc5Z;-EasAEQBiG*Sgg*Q3GeN;7rN|;2B8}oiU#N+>MdN=oui3 zn%FL^cK-s%uSsk6M>C#6)^u7|G3GWT3i#d+C+nL|#Pqgp#PPq3j zg_TzGm0ZE0Ct^&jnu%M^Pp#zddb-`UVUYGBL3{Lxc8qIkS7X`;ql!s;@Nj9hO-b>> z6}#O#+FZ!JkufE^`vGG(BdaGf`$Uzm*$=YrJ4O_Hj!gKzSy|GaK5>9fag2~oU|KLN zIvfC&B(Hhu75n5Jy-^YzX&R z%|2KI^`=Y6IdNQfrjMfDYbws3=-nI}hsDa5fdD^AAV& zx(n<_EBLQB-XnqKP&dW8WE2L3pxZxp*zG9z{CBpi)cs>tKIlBadLH9>cE*EM8abWCyl z9gLf1Ec@rdTNdV-$upGijGj=#+R1J0aKtIC50>pSH*>Vh3c`m%W#S+L-KENP)~B5@ z_1kchV^gx$-G!Kd&2yDf6&*R@(yp+$1gxzX4fxpbR)(Syo?s!(4$2-z%m&T>JZJItz zEX-Vb$qV8+csKw_-X{`26^^Pvpw{UIL;LxG**si4NlwrbaAi$n zhKvZM57mj-&xT^43osUd+|MJX=)h}CwSQ$CpEfUeD2|Kbsa;Ed(C&Ywx?wC&!mQMK z>F)d&ZOrFvP|vu1;Bt?nBPz$!lb9wDI=$yxQ)BaeV^zmrHzhUlWb?^5s~9R?t*Q@g zG&{=2vj7YH*JWUhoMD&LS{7*sSl!}Q`*_o`N&=Q*J9XxMlZJ!1o~~P>F}OZjmPk(| zC!(jAFi1vt z_;s3OP(3*&0SijJo@9Y?kO!qLDxo&KU-wPOl*;St3DVFxeaV{Jab2&yDNJDmi!}M1 zr(T}hG9Ji!DU>*Zdm0u({Rde)by7s3@A)5*l?EUyt*3+D0KdWZ=m{JfVmI!DRE>r_ z-Opy!cUmp#+&l_&F_kbET~u*`ukISUXu?HxL8q@}{s6|0cbgTo5oRr>TT-o>^FqN3yERyVl^gy1Mz7E?l6G?j@ciCT?tqCjazl@lILe=yyQO1UA4U_Bw-rTdd?vb z@g8p;nPJ)Wn-I}R6y*zn8UX+`k9smLOg@%m0_p~3yfOh;6LfI{DygOiUX1j_OJSaA zlcCR^iXW=(J{#|)!IU$0j;DJ1`jsf>&K<&-2e~qsTGk$mmZ;rpaWhe)HYzK7uiy9T ziq#VdDd2B})a+u~NfN1t*HN%+CuMXq9jGkKxmLM-4`m_q?o&Qo?MNyvLjH^5x?Z6R zt?$HlVA7fT8bc_v8Ub+_1_)0IP+cStF+pTQD}Ma~i>7ckfIM!u--zJ@{bN$1nuQNl zx>b8MSLvG1!HW%(8uw&)!@|?te<)_#HTDWGHDK@?wLz}b&aX9gKd2$#s7=V0v|TSU_W(Nwx0 zim(SB;eWhc;PtsQD8c0i1Z0GQJprogku4YE;Mxjm#*9K*z`My0kf7(sTQ6Ww<4h=9 zoXYQMoNMbToM_qlPS|}Nznrfh1y?XPERqO;xnAno!TyFJqPrHr)=U=V6PR^^+d>AOVWkl&D z`l%|%4%pw=NPRt)*e$K#lI4uomFsT=mG3`T&(^3~zTVtP_dKrvL@|#XYx+qNiEWG{ znZ|8#hippKHfHgX=%v^(1pV&{7TGd1is0N9>4cGpBpZ;Ud_yV~5O57hiRmBqdyQy~ zdE<;bfPz70!m8P6nhNW$<~B5{?wIIAK6q2$9fGR0r ztwD^AZA+lKZe#(ZZvgP0fUjx1xRe1&`Z>k3r+?b<-wNJ5Ld4+_*$8MEg|axlc8}W- z@Xk2S*O^veHPf{z->T(~s@l<8FwxFLm{`qAX^&hrqv(e(v#GYWIQ+%YS3rzaId1pf zsSPvqF3Nk5VYo>Ms`OSnF=T!oV>9p0g4KwogOyoOtN^+Kyt@%Nk+)BMF}4nGiVH(8 z#?!xqKtPcKfL5!jb=J;EA3_e8B7J~a=9xfFyXo)K#l9a-{4qrq*tz`R5GH^)!UD6oW;~D11#OSjB`c5WVFq>= z4j4amzKKA@tUCej40X^76Ij|f1GJV{s+W-a{Hq`g#Q6g>n|+5LJ3udq0?viZ^;u9@ zFx`6f*8c5TJQ6CUS<_UfBIj<&;d24sdDUZ`Oi#dsY}b3|zOxuSn|5KMdsV zyaQ9VG0pk5>U=sNd;ZHdk%Q5A3H2-#MSzFY9X?f4DV@){9s6aW31g3rDQbPKgb0ZT zDwL4Oiq!$?3=Q9S0)A#1rw22Q1!5ebxTDO|gVc)k)QaCQP zh_V1PEfuHQqc(=C-v?c&jj?s(xQ$HwO;Sd~`j-mh9rOclq9ezSD3KkQJVW))s3&34 zMHqY|7*`px3;UWRR=7T7rN0^w^8Ml0^ovya`%_Jplwg1-lP3-mc{>@v%@<-?_>jsG zyHK7aLv~%w zg)885^i zb$Yc(CkS;7P4`~F=!q?9dD2L8neZ02GOsfM6<(`PC{jw7Po97MT*#f)s3^*YT&WzI z{pjBGbMn_Hmn48p@Hs&6__H<|81Ht;1?!w{f7*gU9v=a)&S^oM1y&@I6F&ua#)O!$ zJE6~X%`)`zB>!=R5;g<*f9QXBu5H8m|KZtvWmiu?N>i%0-iQ|SPIlP$ zi0%2D#5C@OYplhmb3+Yha3wMY0Sr9J5lTy@zVKj-{jVXD|3H&m-F5q%7Z`Xj1hB&W9?aFYRTEWbTw;=zfvx#xYkXw?;1&p8oXrC6U(3&zNTaEiUJT}y)mo(*a#Wr0Bf7)zAo0_%Dt zpT>@ntuvGjexaL%0U3$DM$DFz7hdVXVIKE7R`r43$adisykB%O7l=S0G$UNw(|ayN za7ur*x5wV=;H25QM$saG=3Tv0OTuH6D&Y#0e~b3P*DZquE)ilY3Vclw)iCU)5TYmuGNMZ$?!ZB}C{RlIXwJGXH#)^s)jmkO~cMTon7IwKkV3EWPlviUu$vLQf<)c{7+&S!MhVp*if<&j4Z{b{ z`*jz8Hka&oI;N1i8#8WtwI!(|bK~Za8Ka&d7WIC-^j!BE_+r$vzkA^ZfM3M%)Z*xP zG&|AzxQW+;+`uOH_{~=pTh`)uj0<$F8{GUY&^5exSZ;1|omT-9qW@P-i@?A%Vwsdz zjD1X905L3trio7I=KV8ET?wRPy)m03i^u3wd5k_sb%5$of&KexOxthns)%{s+!9u) zx?2m2qxO0)4^b{bqJOnatNU4`?yJ>XpN^XKmMN3*cE~M;6imkh##KEb$3@gH0leHl zIEj|Qh|mIvP{QLfCDb>iD}!1p+k-)aHOmD*Mng}NJu5q&mI~e8b)RnSoe$m&pU3p0 zTqsc*G%vKvn!BwYwPo$^D}bb1DmLb`?{UGx(y?g%cN~b?leHWW1M^`$8Z%t%J8*oV z7IqjB>HKu*`!z?|0<~KgacyZj!ny$JprQfHI6bH6z?z~VFvXY*RcDO$a{+`d%&lCP z1WRAefzo1dt@fa>g^&@vT#m`PCGVw}*RvLe_}rGV=<*cnKnNzPxmUbxgS8LC+ zj|diA?I1UOQ^5G3Fw;$ob`>Hy0vJjDKgRuD z!LRzCuy1|QoMl$U!r@&=2wS1Na4vT4pecyR(sFjGFJ92Nfj@X<&Dt4kYFr8SBr-j7 z^~u|w>TKQ9n!)&lxL|y1O+Vnf%|~B6UVX0o+bO%=DJMY4i9-Hqopy2dwc=$<^)R-1 z=^WYTgpG4Z3^eeBdIZF|D)&FE^8}hoP%1f(Mv6RAY5))A^&ezct`4>EhxC9tfp=8C zUpAPF9%ipPQ1>BQe*DMJV~+g%d95w*ifZQLQS0_TE8&r);Pjb~tFY3f8|nG4aEhln z)gM7EdqHqLKlg1c?kynhyx>mUO|7*g7^vL-q!9EB*vsC z0Evv@pDi#;gtHlefRyrCj1;`4RE<~@Nh$sM>itd$FNGNnCky%{>J6bMkM|7R(RUAb z!Swe{S`TwV%tr6vi&HBaa%cWr7jhyerm`Zj)lTaaXj`m-ZhgN{JX^$~qxnQtPz{rtAfeEX`kJpU^})7$azol zR;)|hhd?T#_pfHQqwN4qe#2?5d6wtWav3HEqmjr%@W_pG{V~bar;y$KHS!6l#B~Ub z?qR%~XX&wT88bdUaWMd8epnOcWT=Az- z>1>koblQ2j;^e~apWgMblS{W8zVKeVU`{tD$dRwsCy48%o2O!rP>^H>3X$2O>J9S( z7y}O^GN|8=lS5#EO9M@8t}Jsw-+*A^0A^|Nv55mK%ulAkEa%k+$iZtaDZngKTd+q8 zJa0e$_PG8QjC&;Ln`1BR$;aJ9Q-54J%)9PV99P$HqX%VP#0*plX>b-`Q-$3{5}=zSIn9+Dd348E^g?;)<4ZYvI8GWaD_ z>;ZGxV8nzN)A=6v1oHFqKQY4yt+~DcteIZoJQ38*z0CvKoJ&SquQsYTZmVrtU&8y& zttIM;>UuzF*ZqE|*mFQ)MKZ7k^2afv-yh(Wza99Q@HJwVckn;$@HQ2=W(xy+}6No}8jDWaM3{6cOl z5dA$2RJ1ece_Svmw8+Ou=F{tJ+<;F^Up;1`f6?l`??^e;?JGuUPKcetD7P95$iwAlWFZrE zOzjegr9QC7Iywm}P#4qGal#|g9zC#s?dztEJl=Qq<4*aE7jBUtw9vmH2Us)k>yPim zFatt3sK2}DPEbeqsBckGL1n+0d_3)TgqYh}$Y_YF_7fjxxHPUT8tNV*J0Mth7%#>$%U3}A zrvEo)sR8RGTboJ@(OYeIyet01k^ET=BIdjD+~qwLy*;afQpt_he#ZI`>?d|T*tp&) z-|@78w?xx~w`i9*kq|8a&J%_0yrp1|zpT^?h8gP&QCWIn7&QLVN5Ra-t8G}G0izS< zCt`(cYSp&H$otBf%u*h$JiEKgLs^bfB*{zyks3 zcSLNK-{uvlb|Fo6BzFs8 zoJJO`4cp!ZpYRUIH-O}6A%w1?gkU_shp{I6cfevuH@5?LPTp~W`lXb($xCPc=N-)R zfne`jh~s*tr_tdTHGG4^W&)FL7MLSh(`?RKfvXju>%Tl(_~?6{s^5U%dYNK@Nr`_}jY!&uIy0*tPyHZ0eKjL|l@5 zBF4*?JD5UfDe#%cS#Tw`xMSy~v4bWJ3NJw&GvZI3|0J}c0I(uoQ8yz@{Zv#5uuDNa zNTB~=mx?G`c;$RM?YHvnRnde`z3@-^0KKzzSp|9iX+!lh)H^}8p^2yAyTi|JWu1L% zAkyB?KSZ-KT^&?;j@_KZXP`}!H-Ey@aqPuQuqoqzInY)w>dOeXdADZtteM=_K>QEP znZWUKfa;7Q%(T$b;N>@gnYI!rVXLmA5Dy+1=z@l*TrU6BbVAD2>%qj%Eb4Bc$pg*X{3jNSHd|$3fvg0KV`A2|e|N98zI3U{4flQZ&$7KWcG{$!;RtIABgqM;}Zo*R! z-d$DZJRMQeR@mySpJe~iJ1_%u&20^!>P!4?;h#ePf)Qx|E7}Nm$T>vq8kl72{kQ_< z+2iE6Ff_wCHb;y&i$Ol_7B_nXs&Qdl7VM!fW&{dOoJ7EVk_S~9gTrz%J#NPWa&-OA zD2-jO<6zZ1eJW{XZJ1m zCqNa=h4Rn166V11)(OLEKJd?ON4_-?_oJ=lq89VG_&*TkbdT}{_{dKh5Etefz)l** zLl7kKqrY~S!7N=S~FzU}e1Jqv`ejR&I!VC(oR$XgQ&O`@})5~BbwU8(&~bab>R9LcP*{>0z@A6+g>)`* zi3h9m=RoI)r(O&H(fNAXuae0{+KZ6RW96UnI)68@=Nd~{KO^97vX3z#HkCi@Q`5|# zJA0FD?nb+8Jq>28@^c3lx&Tp{iS_)0R?6D5(&{W|*m3OxGX?n;pVtcy*M{(TLR#Vu zALbk-8$f!ukIiCG3kL!6GQi-4$yzXdD+CiL%Dwi4CO$B-q^ID*u=&Bdvu=wevb zB~C}2yR2C1SM_!7wk4TMJo2<<%bV@OUvuf$(sMt^Gec^)B`{36Topv7swssMjGanT z06Tqqs~gik#DijJwPkwNnD1#;pp)hJR{xZCgT1RqQ>sn_gPx&~``GpuLmY@s7OH$4b`opR;_r;K*1HcpQu2=)!^*!T;x+!c68V3yb zZ0Y{f2AYlhW%Y26CdOxnr@YefPY2^cASEV|`5y_B1%yW6MB$*MADbz>T>H4~CqW~V zu|Uk=Vns>`D@cL9!|E_GDP*xixK1;%gM(f z9y6Fc762=r$H(>FVTt_-PF|Rv<&c7;*9fjE*b&7wg!&Uq;}39Q=v+qT(->#>(gWHz z;8ZmOVn(#$gIOa-($TcR$)yq>W=$68OR>ZIa}ZQhe;l zjibZIpa$si(lZ)haxXHMP#j#_&98wfz^Oqh#sPSV&4~;XU~S`YsG2=_N6>!rV{RF5KomJ_1x)pznSt%@=K4L<0;){=ZWu%-z*AB0!eUkqh@D z)$-yjd81n#UM)uE+I8OnqdQk)b7RgRHwMiyV+poz0XhnQEWnfw>n{N#mAa&YY0i@^ zzXnUrQ;+fkxQXh8hTe~2k5L^iFPRGxF%>q^66Y0jbP$4Gi<}+O!2++#T(>hfI8Srh z-&?lLd2Foqvx_*)kMa+Rr+h#9zP_*kIzWl%!+l(m8(9$YHrVb$rjH1k6G*a0Mr+~> z?!Qe1_3r=Fjs&1~#rKKpP#X*C(1Vc^?^-v^{DdwTm=&m6J$c3HpgOJ9iv(AZ(9L@b zKket#oud*>NLKJ|Xg^npj>dHaXdUzymINd0#-|3Z?zmFJuA}O?8=^dB=a)4fRUIm# zUPjgfvhXPIevHfBL93;^sS0O=FM=^ifaS@?p?%ISPnRGdR*36LzZE zfW}q3Q)$3w?2Ks^>#P&o<{+TiPad-ZcHr}A-U-?Gx zrkYmU>&XR!Q=E{cFR=Y#o;Qw|r-a_e0zfVPUr7>Mma_v+p1=S`=D@cBRtTItE<1Ph%sHO`^{>4b-PBVJS>UvCHyoVqwW-ZUJ$o(CKf-cTv*ia-b$~DJTuhfY_EC zwVcBJO?QUQ#+tilZ<^!6G|2KREG#R>z}yI7LlP#Rh3WwGmrto+e883l=xyO+dom{K z!Rf#WzO{m2FQ|^S90Zjq_dBb2{AZk?#ybP$(QLbICqEkhhkx$8|JjtE;1U`O%ec6- zDGvN!_C4j^0dvB>xnPW_RIJ>mMZSZl#)feqox}IyL#a7MoNBkNeH?Px3{Nws;m^w5B6CM@&Ig4t}*bD95- zv9}DX@(tca0YN~d5k$HKNdf5=ky1cXT0{itT68RwM!KXyK)R$G0cluETDrTtInM%r z`@hfru+OHNA`s$IGyT0GV<|IU3C2LZdUf?RZ#zAR~oQrqpzlKo|Mu1yYTV zo-m?(d;&TO%Jd(c?sQ z;XZ1F?cUI3I7ze6yjkr_^-?ye9hFN29ZPr~Bddk8E0t_vKl1%B$Ai7{Rui4CPW zdj9nlbQfLJ;xYd_F~-&mGfp~mKdf3ueiD`;vfY@&v3)Itc%!t8-l6k<^?Opu8{SlE z8)pxM&H8D4D(Ff{$fMx6lFk!a;XK4Q!amb;(j6$=%so3Pk`pTNix65inIFWoxcY+J z&P-1P-Qu>g;qRb0<0-w;=Mekf-lWI}uAj}7VvIn-xVj`ji)Hg4kTnN#PCMOy8pafD zm0b=>%7lyXcnQeV$*DmZJi|^uMz%9XSB-U`Y7$xP4GKyDN%0e1qr2?pm(SI22?D4) zlr2lYLX;lCuLG@Yy(~8n^MAa}NW?X9Jua1@?S^3mHEULsc8>q9%P+!U10iBPLMAPB z>sM0MvDf@=3AP6+ji*>cmM721$zOr_5__1=a$Rc=8>Af9J$sJqkpu}uJ$C#nd#+~hpw*P$N9Eg@A$1JWPr;8wEwj-xz+x-=|;ZrLJR#G!|TTU&UFgh z0DFAfqdu#GHg@zG+DkzOG;~YrBnkFCCIAlw~1H4b!}Lp6j#pb zZ0;8x*TbPi(pl|j+{+J1HX(x7GhCZjMPj*Uk)dOQnPiqw9G+pLlh6;!%BrPXghL(` zf)i#;-eboB*UHrOU(8h^MXy&!d8gmGvkDiXrQ+V7>qdHmNmLLK9enG2@O*Pn~K-x1`6J>}~o*XGdzjFmG$g(4 z+XBrJwa&Y|ZR&|MC^wyb|N^ zh6#)S-jb5y`M=h4_!`%T7?XZlyjFZvtzlBeHs5eJLfA`RcX z-}61v%Rc_>_8w&8ocUvRUVA!^*h!k4A#w&O@_oi-Bl@Loj}K^8g?{H1k!i zr>AtN7FnJ9g7!Tx2mG0%We0<0I6uay_>Z1A4nIfHooVdfvrH8?H3aK4Ku<_;f+KFy zkoO>e7yOZEely(xD!u`HxxFtU2|-`#<$h4>Pi zrU+zapKw((@Q zx3$->{qqL5cTMG{f5+G0u22vg$aN&2W>avmDV>%woHtNblREt%!dQVr((D?(*#`I5 zq}al_6O1Pdn-jLxmxJ2L|2!@$JStU;vKfn;-5x2_FTfT%-!*{wHdp2_9^LoL;JaSJ zQFA{zdQ&hyrfm25jLm2NBhE@34sA6k0U;I7bYdGz*$rV;M6YmfVPTynFkwByHN;eVOC;Zq`> zr>;gg7k({k{tZEgMr1A1Ld7X(uT%0qUasv}Y@lC1FUfVP$_}hg?7`J+E&JLnFQlxAMy1uP11!%@ zUS4m>k{mQfS+9(p5gcqaDmJ9cBrNIGR?nmwD+G<0rIMEHO%q@7O}TyxArr;kc6}#) zlIn$;aJ-3s<&s@AePymcdXl{!pFm`84hMij^^bZw*TwCTL8 zwe_>wuG^=aq0(v=7AHcHQ!AKwE+i6CL=Tj9zkg?Pka$r&@?3?T!W^24fq}vNx|sU& zXw_#D)#3|glzaCkm{Oyt+3@6;Xfk5=#mw5d6XRY*#C>=ix3{^x8{V@~f26fNMab!F z+#5%Ps!>o_b5Hv;Zp%lYC^6ly*m0+x_at~<4dozVz}jWg6TWgP;NMV}-YZpW#w0xoqHZh}~@z&q8tq7L%KDw6Z z4Kur|Q)gyxdvgWy!>6Q>C7@tk2%|Q8RQ;qq6%CE9N{(mc)LDl7PdhXIc%x=o z)x;v?r>D7?8M>`>QfqMeYhzZ47yCgLN75dm&*$c%&DmS7zGjY>VjN`#?_(xd@A!De z^7b0S(A$Tl^7u4J96a>|2>7f17`k#k1;bgDG>>*nx*T@lmi# zM`mHcQeT~Omg4*C6E9PD`*Q`8lY{$1otkrUBqow~*%hFcoK|Sh=gF8mhbDdxPtc5n zg)jPVpc#ZaD!QL?hH%7vVWz14J_QdLE^H(9eEja(?sBk`STi=(FX};%&0GtX?)RX` zm(kv5!^;?fg(xD7-7l4*NBdt3(N`3XEg!@$$|3Q-Oy4b{t8q6z%(SNytuRp!;48>K ztnPY)I$Col<=0=ThBAlI7{LVCDJo6*+Niy4#qx4KlI~cI*6{^l`8m#;ehUvR=A-*n zEn^V=3wD3orb{$WNX6FLsW?@!gg3eM$p3{o*jZ#h>{ZV%JpXAS zD=Y1^=NMn7)FEKm$m8;xe(m04uX(CEuPDW7wef%#RAM`tW{eKb?&SJ{8X_7mpnWjO zu3TJex6X~`<(gyF;g;X<#6Fann1ktv@<|I&Ab?|h+f0*UUgFH!qwz(J0EWHo&t`q$9_;#<7 zQW`3gxCWD@<;$Ca!!thMTi4mNrwq4q)CuswF>%JdowH1i|I}j^^8Oc5Mv=Ze*oZQK z3YN1z$%{!-51sOKWMgMOh*8h5FrKQG(L7Ct$j%4s<3auoNqN7LMk&)gie|5JJv%OL zdqVV1%!ioVoK7u%#Qzz~=hEtV+umAAU;E8y8rwYk59+o@4@R_Vg@R7vE{5%gGDn5w zh*GC@f>Xcc%0Z|2a*KMCKMD*^EDBV8B-iTEEUaM`Vu_E<6t!D6H5MRtY}@^kEOn^8 z#Uk9;C?wE5@zWm4Zjlr`VK%a;`Qpg*nyC(Vnb+e>OOdelTshHjuQB@<8TgUp)~_kg z>CieA#z7VJC-tdFvZajFkjZ!g!-Rc%`>VpA<|h-Zt@c%VY%B#V<@HDwF=s~g>3!oz z6TK*9kOuq7t3`D3c++vnxLfQZB$_`Xt83t*%059<*y3xsncF8vFpr6G%SA8ftNLWh zm+$Yx>bH1^%+H&2(@6bLWl}$5qUsM&(NLVT?7o`5CT2w^QM0}~5du8(0g6k~cv?9n zuE-{ziECTc&nP?Drge-J9?QFr?xTGEo_2Y;%A^-d|8G%2wkog}%L6e!FbN!NSlK~A zj9;F?`}W@+4t`p3ur22E?d}YGFtJ@>`X?o$9>xDMr?aslO_f|ZSOI6rxvk>e#;44> zH_%5bwwbtg#Z1Sk3lz$2jbVS5cV_D=dPwJ%18q3S6lqoaUG028ovpu;bPJk=O*@ z*3tysuX9Ada#_P4`c=F58HT4?e)mPiq*z4?fsg#7rI1!}0*;AXz1h8&aae0kRxJz(Qoy0GhwwFzOkSSg)c-GaqXb77}Z+v6j)MD?wewxWQ zjyuX6^$Cw#MV}(s)T4{TU{b>y&4uga0E8RlsTV>>F)XJtl|EltJYzNHJ+tKONkqL! zgnIPeGr`}5JBIo?Tsevr#Vno*A=j_InAx~Xz3G^$#h9wjXA<6fS#Lgk>%%iBU}`vf z)12z9&o>#u2K|Hf$OSo7 zGj;hx9((5!dly3{-A}{rQx=1Ouj~S5_^H#$UIY3b-=Y<_{FPv#nYh z7#S6e_q#JUvw-DE1viTMKr9K(_n}PY;4(HcYm+_eGN*ZN@8O)H3=?BP?AY=KEyqK) zsCT+EOe$m{?hiOOg>=F8?RA#aJ7w8^RiJOjHc5332RrA(*z z<|H5~d6Q0zYa#-LO2s3PjQqD>=eJ>YP9*ZdR%=LGGEfJf%#ERw-)R0d3v%NY5DH_@ z6BOx>ie;jf4X#TeJ#DCY-*lRtNm0s9%e50PEMnq%t*DtSsXAK{4UO)>*@z3Do9GDJ zI_AHe;)|4X71(hG?~;Qt)$b);-3ZFt_u9`nI_^{m-(zzxiZ$*%kfGkecv~xGOyyUR zZZ(7a?ze}Oc;yR;S~rG+q&sOwo0Y>q{951m9_2-TwOZK?|LX-{5A2mc2t~x%HbEjeDci0pdlj2E|lt5 zvV^0+@5(Y^iXn}3SH;1qg4n=qR%yHT57k(j=!D@V>wMmPCZ9WaHL9kN&u+O??1*gN zaA7NwvO2qj>NpGDpYOqe5VuwG!?&_6J@ngyHXB=xwGfx| z3^chJm{8>Bdc`TTfj58uh-M}==CKBg%u%`!4Ao8+OJdjhFkR_781C3 zyCgb6@)Odz$uU)hkbh6R42H0`^AL*F^tL+{pMH5DEFo^EA*r}-Fmo3C{%T+f_8(clr~d#}>jG144v z^EnPWf8aNrIM~Fl*r}A(j`0-`uagF)T#NeqHdnOuuhYxoi?dW* z2AHaB6R^*Dsb`86wR#p`5=MawBZIhE{70!&V|ry@oK~z~H(O0p9|BuA^V|{^lq4ju zX{8Z4Kjk*ynPDn{f?m48`x~EJMeS+45QH}h9eh2Ig9QK@P!2fIJiTN^G zY?kzEsrMfRds6(_6w1q?McJlsv&vcJCrG7>*Z=xhW!j6F{JVFL;dXt9%C&oA>)VeK z{O;|<3hEkH``ZHG#sIu%wHWO<3b*)nR>GzEEh49@X7-#oJ3#m zq2x&T#nLkw5<}7@$nVJq_@3H5nmF<=qOfD^$b#-|g;f2u=e-+Naf(jv;#>yF?J`)9 zmpkG0EwwH0;gE&0W64YNWcPLNtBYe{X(-qDpZ8Z!Orn%kYnP{w)SZ?mxj)4ZXmQQ6 zuh)dege=k?qoj=d!dioil8!|TX6b5V_sn+ZK3+6J>kKHFnztC!fQ^f=Dl*6@9onmSs5c^ zxVSG1T(5Ej<>d3{<(J=@Jqbl(JAW%geuqh+hsQC6H-zD`vX}phPJ)tVv8n zc#24Y$?~+#*eBv=;e1c!wG>DnvYp$%U=*la zKX-RPv8RcwytgeUA(6JwkXsy?<^1ip4&=e!UNJ~B8773d&DTgU$D(TUtqzZ3hjF_1 zAZ>jGqhgk++-dS4@HGG2#o8ZQU)VU-pPBfvO?2+kq9us>_IwQkVf|N8ACo+=>#U(f)jfYev42LIS}KNY%=et7qfB8) zat>;m1l5{MmEvVIxH$yKVswDCz;L1#fz82J)hj4US$9VjNKS9Qn0JhuD#V~`{Eo4jfR$E*?WlM5iJnKmFaslrRDe}K@43*L#n3kAO|frk6j2S zu-A54y>4IS5PJh7VH6LV`D?zU3<&Pe-d{v4$E|NRNS(4=ru1f>5wAK|tJ7#xc2Csa z@f3lir9+(2R_+?=sXwoP5G_bT94Yq|6D;AqdY4GE!P>+MEKK748<;Y>m2FQN7IR<^ zLgaFFck~%}VtM!aGO{1-DZ96E~ zEWQc7l1JZhPd{Vc)qAP=miN&)b8|u&^ARL{&&6)c=fu;I%5hL){N*cN8;;cmmcM7d z$#u*8A)}1P8-j z#Tl1d-HT5h33fiAY+P*&w6`x%;K36Vyw&R?1YZtvREDfcb1^=ilFcO0Yu?7;Ca&cLxH9XK+D;)G`&gL1KGPrXU_vey~Q*zO8T? z|4&_cu(FqGDlgr&)9Z0WZrXBtfJASgVo{V)?@%&@DPtkrT3$&tMh<| zt_?+^MdlwX>yv2X0vjoN3$8;7Z$3){_gApamvjE;7N!B4e{pTx@8$?pw}&F60-YKo zqXO7yt7eF;11-7s_xJgyoqrRx>hG%+t_Bw0eLXY}1Sgxf9BS$ISC+gMC9fHcR*6_C zl6>T&>_gd^n!>9&<~EK~wC7(wYkY{^-Viur%2N=!NKe%^#kgH!V7S?DK2krf3AKHR zos!^_U7Wud~eEW4PC~ zJB8?IFICgcH8$gMTAz72>d3jN`LTkR%g_*A|rTJ`PRxEHr6^B9ODK( zuZ2qelF6)TlfkNb$M8NlS0}5NG1V1TfTXK{>xac;lJh2{)>JwDZ>}_(fX{U#A+LqBDLfrE z<0nn=lwp;oJWaQzZ0Fk3o?>h|#a~4o>30`=_O+UZNf+FRp&N2@G$;^qM7zLKtlLo0 z1yG`9Z`98C-#KCmN5m1l+YkFO9yVeKmD}U=73k`X*@FehdWvA@a+2K~(-BS`A?>y= z-zTq&{ZH`EpQG{R_d9sx4_F}cZu)skazvlDOa1!Gr-sI)tqyd`>Io1Zvvd_g>gIG)=T zTTw5dV8<`|4KD`49I*vd4{QOw*}qul52X<|rWy@OH>5iL-t+AqW>gYLMFl?{y~v2K zIf@Z^KT~)=M;DiE=}H>X&t5nHndyI0z4vlnU)uh>&s5olqNXzhwFfo#Djj_dHwmMj z8aK|${!5G`as;0@DvGao0kQvz_Q{X%&vv!%{+`J+MfE+GP5p_v0| z>AfU(OrB zNR=4aD_Sb~{MMLGSm4_!TY{c1|Dy5+23R8=eVYVX`vPmGXbGY(53@Ud#9R)8ju2*Z zTk_IsRkj3#PPKN1P9L1P)pJV7JJD;^?=!H5|LMQN@%s@hF}6fi$EjA-onv{Or374n zxhTKU!C*Suuby4{@q#WY?YNHDV-7ae?{dRJj(0wFPDN8AmXv1Wq5RT)Nu6=|#Yfke zaJebsK*DFE`?U%3SK8F4~SFv0VA*oLv*K3{4N!kDBKB)3l=1~o>c53KsPn-M)}z%sUK z#>ntz7s#GZf*>GfIe0n1(C`BIs!XwoJ{Z#&{eFLpiVbBl2#!xTZ7+m=e3Mklef0_h znydNV8RMDL(gW4%v%5qYlu}3EYr6>p&44)ImMGpq!HqXjC!dB|520rL)OhYB^(qCm zE)u$SHDSY07WQyu+)qN@?&6q-;W?ihQM|p+m2370qtJ8LfuG`}XIe}^|39A3HKu-;oyLMGJ-kva+8ewfJcP6jRu6ZM^t z4CrH@7be&-McF|4@91AW#`{Md8oG2iQTVIE&B2eMe1lRx3I>&mcL5fd_0%MzgM?Z~ zB}k8(`(>NBQRUXIHcX^N$`sNtC>-++KLx^*1;}2q0cp#W(WIBrCHTTzUlve_9wRyb z;ao>{A?Q7wxVX3g$olZF_a#KNX3@-QN{t@wgLxXb@jukwIaFvDXqDe%(I`~Km1`Kt zQk3qE=V4(>sdqho50-roU!voX`oWx)|&NzHB zNq~95CP}xXY+?YZ-@B-=nhwz{{U{KvZDPW-)o^ZUzdbdXbGns$u-i^$xH(qNobNx% z{jn!o75NM%cCAWK!FhJP9jcHdSY2!02G&_xdx57Wd1u3X1He#y0&oCg+q=Hs+V}$T zsVBeG@Qn=hK(Yxhb$?*M+N5doLFp4m8n1iQN@g>q{?!daeQuSHq?hZIkcDh-BC&Nc zl$f-jMhso*H?`}e8Pn*I*M5*dB%lLDm?no~c?xi@dwrXqjn?TrbUA|PyaMS{`KWLT zB&=3)FyRh3ECa*81A$(OJ2vYKzt`VQ6dNRynvZHPPgK^8ReSMBZ2pN^exP2~hZSxz zuTn9I?lG&?v8wr zPR4)_{CF*CZk|6rSNo_VS+~*S5?)N?@+($hfyRPl5vhf3kxg zrlMC$Z~u~ge!{eZ=G@_yPF6mO=Y{g(jrf(4`iI|8 zQGB43>gZZoFn|SM#OxwDi^l2^ZP|q<&pq2zDt+Y56Go!6ZmHNHU7FO9DpIXTPEkg& z@sVs}#yg)HNgR9?CRI_r^vVql{7hDHDE>}7cww1j#<9!$sUI~|q*5EQPs!kg<$Vl#!7!`q5G^ zOFaV+59b7ohq`$aI{**SFTfqP+xKL}0N$duqOUVTXNEcwfL)GdR3p?zv#Q&#A~eIr zNimAC>`7B?FhMBv!80kbe(-#LF1&VIdZFNvE{&@#A^0`Zw0QlS&Zw2EY2Li<$M@ex zXq>1c_r##qeT91baWa8e`FXr&D|>N#>B%8w!XdPR^h(-FL?824!|-KwS$aRroQdfB zfCtMM#TWtR3tkqY?{o{(vCpwWp0H(TCs&fB3PIMquP)EWTiKbInu0hQ{J)^%YEf0b zW&I{#_anlimyUq}P3-D~E+R4#|IwqsT(!LK7ULCFCv!m*ODxNEkahKqiE6@SSW0DK zj&^0CmP+Zz*XuQ<#<2I(4eq8P_noI2upsK{#0{56+R=F(e}W(JGzard`5zqElk;1P z7vw2t-qR{GF$k{py!K#F@Am)t^~L&d0SzQyv-IwAUy_P)sl9{cz>nb9*v`(*qa}uZ zT{L`rBml`&4!gpZ0RZ3_Fxr+aJbLiJ2b+v{=6Kpu!)|VV{!hKDqqm=*&*uK#4BGYG@02|W81$HH#avie$To^NE+5fbw_bHJKpUc<*e*iN6B8h!3EJ@z`kR9z1W~yq^CQH zMrv!tQN0jBD{a&o&bWY$5&d^)BF=ST(++U^b4*UL+vB8&pjMxnzbf7oBE?aRKpCUv z>rB;G1ld3d6WyJA22kcvL*$MmqnJ)HAd15w?Q#fLl( z#4pnbhdBI7r>e{)IaOt5ToLyJTX&NfGy|wOw)>i=E?+1d$6H+bA zKh=yutb^E31j}&n)N7SOc(Hr8%$6P41-td24Qsi1JFSF@L~-9hATwz3ebPDj5X7f8 zw#te3moBG!izj>C927rj_X=Bi9LWvR?I+dty|lv>Il%L{Jk((5iT7Ke=6un`>$`B!MrM_LdL&7&C8-m$+~XRfTAIFJ znsQy_d5Oh0Vf{r#qf=#KV?KTxD)Wc#<=5im?aWxc+^zHp15(?{g$pTaheOLw7yMnH z+Vpd}?}v6U5kG%_48P+yM-As&wYz_fQ#2brWj$!k$xzCA!b>YW2cUJ~;xAlCk0%|e zTn<)d2T83X3=yn@`!*u|Uj^G49@PF}_ng+{9t*MpfuTn`_qncLiJyV(L6MAvG+uiI z*?$}{a;L@!SA{BOnocAZvD*(3xTR!?63oaZ4oVT>u~E>8#XDUTp~&F>yNLbY=!%FK z`sf6f))D75+qdX&s2|44=8{C72ik$;_H%iyjWpeREy~_UOnP@K=~72FvDg}lrXil} zo2k)wY+Uwj4bAL-;sW6Jxa4(yRDQ!LkeekV>f%m(kZKev6-1m9(%OcXbK1$6qN+b8 zw#<|zv|UGdJYg5=A}2_PODQ}$);sczBO;roX&ehq<$1w5T*!7on$nZNY3N%nS!QqU zu@q-47oB2MAk#;yNQQE-4-*T`$jDIU9NYc`QxG(kN4Fq7f<+TeG^`&r`(TxP8u+2S zAC9>sBCkcgx6=_$SHM+hAKcf`QT#Keym|g`MBg!&uq-j0vFdL-57ud>?1V28n{K*p zy>{cpUQk3zZ;KnrqRncbu*Zc{UaM6@Xvk>yy5zTb*q#?UWm7@rlxdP>LnW8v)y3&B z&a#3ok^=K{kmqrr-Ovp2RN%=JD}2yHgwzYNKEzUEJ=bTiZakSeTKvdML`L_V>Vvr^ zuE_rL*k%8tBz*VD0{@0wte?0WzyFkkYM3TZB%)5piU)mt-ZB!~LO>dPIe(Yda9Q2a z*Z8(F79jq1KE~u~4c%ulMI!_iN6(2aLf(r%4poNQ`d`CLnvawuOaV|a-xyC(>owy{ zdL;!Em)`X>T|o+$Dd%_c942TF_5-9rfOWRk*&;%&-y{IU3q=9yfGQ1Bxcf8oPTV2tT~dnBnrk(pAI#H7P`u~JWy`E6)327X?gulz~RZTeVhmCJ* z*=G5x6V=>jhwE8O0r?4GVW}?`c`e4??ncpz2h}kXg)Z)}WevRa&&loXuedG*&oluOZ zYB+*I9FR4g-DVkeF@S3oi9C9I({J)Xff^{UAIvAAgFM~go@-T*>#)18@!j1WTXj6i zK7ThHoZpkQJDs)fFAb$RR(kKV+=VUMq=K3|F-FL9jw8_*kUlE3qo8QfQg!3$%>P5q z`M+%VkceK@4EiJ@SR5R+%w$YTxM#qL=jPft@9>=!!lAJjfW z))Kr7p%7A+&DE~7{5?@^S0E5A4ZS*Uybfk5ta?6a6P_sL5M!_LFGSrv0YWSj z=Geo&d+^^95AbzA=xfY_TKwd%UNz*ir39;&DWdM?U3Q0-e_@U5g|*fIUh}@uCdl)x z*3}6gmd90IYIeHgS8Fb~8p>qZt=6$ASL{A=n)M-pr%K%EsDH4lb%eL7)u)DP8?py# zm%5@J|7|-z2bAypiuC7g;sk0tfbuEg#u(jDzDU$PSQd@px=V(YW@wKEiJ<)5p|6q) z4@S~VkCQP1f;b3z@lppobiPFSkknZ4SF>e>0|6!bdW;bxpy11b0z(-`W}HV^osiIFVIJo)p=a;7 z#46Cv3Bb0F6yXixC|(Ls6#LX^q~TjmHB%0(>ALynDJOz)?J#-uB#nnvc(8F*d(r>BWd8x>)CFD>v6PY8i~P03~BlmC|cIffXF7wuYtM( zv;c$Mx!=S0rN)Sm$0l^E%MPR{A0Vr?;fh^AkEdK=vjq5I?O#d1eC&ACGnt=EC1I7gwr%{uc=Sv6T{zGE!XCfIQ&Y6sP0BsutJYOa;DvC(>a8PBdj&)D6h_;Bs(S|0&n*8!g z4P;#~`VM0>D0n@y!ubCYKqqc6Gf}^h_|y6@_4S~Q*#*GNH|4GzL%RY@f^Dnr*qCRn zpP$I+Hx92t5@k>t#8dmK{`#9t;ylR{Yu%M15k(myu{90>7HUwO`F`9et)zPYU+aro zBQ>HaMd=CZ^KE@->fKGO%+7*42D0b%%6l_E=w~)j585tMc~;Ryc#y~Xo}YFl_)@yE zz-QhB!l&$+M5BWA=0BReZd39o^yaoxhgQV;GYt7rx?u24IT_+3*JzcS;u!UP{d%9_ z@kpKqOe?3Od%JEQCxl!;Im5*@r;H!j1(q!GP4KXpu~FA~G5VpfQ!!663q@)#*H2XI zSR@PLAo(t1z;Z|HoJ+fOTSuR${76+uYUcaaQCu{nX`uPgYP9&*BkA{*7URU6oSY}X zOA2fYOLygR(}X8<@Kfd2<2N=Ye{R>XnX?1=fcE&!mK8|D)ckBoe@{xE`zQ}&$VO71 zKAZ=SnLoi@h;fu;fAR;=S_=MW*}{*EO+JJveiUHi>>k^7L_Wu0wzqY_V|U2j$7Ow7wSrn*p;7QWc_w*s}XZxkj#t~ zibVNZ>g;+-c2NeF{Z!|NpFrrO_PR%-bVwzlUV@d0OZ#FmRMbu4pL)j~&8^{&x9mWk1twiQL`&ydHUs$-L54emm~+l`EvDY`OM zoIkZ_B5Tc!HhO?%X6{FtWgvqs+dQd@1jr|Z88~ojxC;acX%x{S{@3)nj)-z+m|UI+ zT(o{g4Z3x*J$sVkTIld0ix7kWMmtuj1P)vLE#xncu2T--_sTg#keg>m?~d>wpoFu~4|>G^W9ufqrYvVmzQyS1Kz&zLJW zbu-mX)4G8A&nh5I*^nASU>kdHTSr${b5@E+pjG4Luy3SuvT&vOU#|6i9@D`ld5(H- zkeVg%5U{YazJl-)?;e3Dh`_eq#Q#9Gz2~{5P4g!S31r{rN)$LMV1376SUjN{mGI6e%i)DTmjTTkWe~L)>rzLu^BdSUas9Gt6{^oXQ@pWZNn9Q2nV)rvP4)+5!DS@IT zg;)G+{d2L9adyFt)M>Vwbj(c4u_b{L{aUe<$J0HW{1gC5; zg_(@w_!tGnWwHT2cdqPFm{D3xlFEP`&Sm7k6BiMoOkcXPVlu=zf+sh+cMx#iJDIiur9>VCkAF*0>q1z;pFFk z+gT3GMZ(xctnrN-rOe&WT!0KesI;^+JS^-T;o0{fc4aPGppwdeSXDsQ;tdQ8eD31n z5-!qBD;~RO*_$LpqFp(5CA=9S&o0s8i#>Gw14w6cp<-7}(HeS~)sb8PO^q7TMG_zM zv8;}NQM8mt9%Bp*mc7mSst|=)zUB{1x7rSYH9}I|%IJK11C6@~Xq>$`VH!M4TS zEPafp%8m19#8G21S#oYpB<9=yaE}VyJCWi>_}R8*ih~Xx zMtvl_e=ir5aPKLH(z^bcL{{eMrU%6#3>1mj)6*7s}hUc)P zfp#H=0;_=^*e}06^h!;oPWU7pLjJ2YfY74mSTN8Kqt-V=t6z^+TK<(`QK;w{hQ9k@ zv=%MFcG;%^JTkJp24c+fIOF7Boso<|-b8P-lSzJQ`Pyg4D6|l0G?2(1>v!t=YKFuV zZJvJfng1!OF_xUbYoV;0M-dDZ+S!f2rNdc?;Jxql#BrAxw&P?K`r5-NdClJj*vaRm z(es9QI~$gEbjSd;@9lQDCbVMvgM~+5qPgZ)jLaF~<5%LgwzdHf#})W5X7N~iDhjj` zV**0LFBofD*yGlUMF{q97U~;-VE^I)sQs1s z(qlCo;nf!NKF+h@{xy4os+&`U2Ep3u4<$g?7Vo;i2g^w%gL7Ltf@~&~L;Z79ni5FZ zMc=E$tBaPvv6yq94xm2tni;JzIb1STgA7-4NKQAJ?WH(O@UF%9ovDQE$hg%QChCT)Ge6q0Nce?Yyk0qB*%ILs zF^xHa?a5jal^?I3aNfc9&*a{jbez_GZ#LnL;&P*q!NA3`Z;&je)Jv=>Hy zM_BjcBM}p8&kj}%>HG?{%H<&bF$N`Xqgr(k;xE@}ZHw!6y&pivHb5fN&}=!npe)pEqM&#P#SM$eM>m?&4DB*C2Hl8yjyeY4_Vjj3eN<@#;+e zcX-HnB%@+Qj@oeJ;jp%Pns)2*`F5i|=Jb*qP>-Z`q6ISvD>x zW**vp+^A$Cv0G%C?l84@m8?5WpyTh zt6SYy5Eo>|Vu=GiSOs7;H;1?i&Rq>0^~qt z@)`>beqJC%`9cEdFUym7sYGvi0S;$jdW&3$vX-!6EoSOpV}ds9tjZ5=1UrH#E=tef z|5F#0->D(*j>nT)`5Cd_2yy8qg}-M{N7^)&P5^g|(xpRl3%mPsG;7WRn^hK`3&9XiyyA!f;kfmq^-|o@^BQPXq@Cg1-I zgJ%BU9>m=_-lIb4mv!n0qmfgtUy3(Vjs1jQL`Xoe)5|ygb~{e>V$?8nwr0I>e{3$e zuNl-`elN!A7osk68~0_0w6urnp8!oMvV4TNrIpAFK`$Qh$aPL}Wdzw5>D9}$-vKYk z6^U8$wupB^1Wu5e2JM+L}Em?b%2zimm5Q#mzEPA(wIQr%!K>jDY0h|58Cn7fFshEW^Is(|78-3-9x ztNreY#VEa0>g9i-XG4+eupJOqb<*{!q+`k#)qQEe(Z=C-tzI-)Bn`47-hY)sA35?r z=>6eIH=@{tRO*_TOX?Lo0FJd6cKVXfL}26DHhaZa&|5wO{U3sO@27(Jc_wa|o5%F5 zF6Mm{m!Tv07);~$nl>dgW`5cViAmjC^qR3OJt#HlTI4B?XjAUsI__unb3F%7oMO9U z)oR*rAhjas7pcy81F-8=0`F_c%;9i}{i?DX(1BMCba@g=+8_E;vQTd=A{z>ZNW`AbTh^NlzcH?zOMg~2@jGRUPuQX5)!7-DUmHh>z zv+qlCjOeRcv#T^>^pu?MQ5Vu@KUD3fBayJah4v=!kvx&;Q}CD}CnH;5-FtWStAype zD~VjxjXxvE|0|%sX`a_tl&}$PJ|+d1mrnHG3+r$=M;xVJBpgk}Hyp;A{%h1I>WvHt z2W{S}wa0H%8@Jzl*qRP*d?~7$tfT|jgg6Q>surt`54_50fq{YA@f4{ak$xeE68=Z^ z-0vw|-|M!L6mDSTqeix(PSvkQ)p{kr;y2|JQ#MMboEt{Y?hmg|MU&1ESq$zGlv=qr ztN$nAwkzW`a?ST&=c^w5nvTuhm@*0q>=n&sMfJp?!h8N2-LQy@wqUZ|qj4(|ZE00i zqPw7bL7u(3RZ(%Ev1_c<825)lk|~>91|)n$Kv)v+UE?aQe`Wn`L|=!H@$Xl+5-ZAA zV4)^~oz3w|!{L0*;m?3Y2Lr-Ea+;QLv1fR&@`vC3tc)O)MeaKrOm@`KGOVzDug^0) zu~*X6_3Csvnw3pbkW&m4C>H;Y<&@K&;gIq6oN=0K=t3SOJI!Hc4aYp|yh3;5s`R)# z<9FW6hzMj^+Yr4vG0fMkRnKI0{Mh!DG%SQF6Z?FNW@}D)tYPZF?NfiLKkN-f;qi|s z`JUe^DDDTDX&qPGzl`@jey5*d1vqr?@JC%x*r=e4hw){H%i0M*| zDee$Zeo+tGf(W<>(tw5;ihFEZ>g(!ju1z-$P-I$LHi}tICzOx>71yIuM0y19T2e$@ zi9wdr1~^u}*mB{Ubl(UcDe|Len%8n6lp=v3>&5kzISZP;V2jn)pi~es#`r#l$#&Uxo`U-!J_0RRl0G?cKLNZEnJ3m75aM#xhZGPT#B zHqtX0JWUb1pM`G=>MNATpYb_U@4dJ<$lq`aA+wdhXY>6z7Ji=7tErPV*1}YPK`q}| zdc~&q_L5YM%lbssT&zywyhd_RGI46gN=ZvI7aJMAz6X-$>sQq}ZXI=W?XB1@I{G4+ zg*PBId+^{vG8Fiom_3YlkUynfg!jJj<*-H9ALN0!-SRo}Y<=9pJZ>7p$ z#f5Z)dmG0^Un^b~EL><5#Q*`%(68?g9yRGBlq`3an<$>uyfNL2gT$ zs`yeXUmwYk8JJ`@Qho3Y^PIlL9JN2efHnKh<-gZsDw*aV`Nqoqdba%GZW+!OE-1_B z0znGM7JXM&Eq5bafEAY9UmMT2yBX_AIT3L~Qgy7SM{(EA^?Uf$#?!q7VuLxF!&d_0 z>b!-d#Q=Y+z`@03jtKgCUCg`ANi5!S?N*&(E3xPK=|0Otz;C!?HNu^s`(`R~8<;({ zHLhReSS3Eqp;RHiXg$sVy-7X0#u+*C(V$VZ!g4tMCr(@-jkl)P%jA}!t@78opzmKn zc=KgB^o`CmUbuyrri}jC}!UQ zz->p?`pjyu3o8$~wLC^LJ)vqY!Lpp*%hVRrRT@6RYeJRo=B(dAga3vD#^0?OQGTm# zdHH5s@Vd>5*lvaDjlu1w`UO{daw`G{y&JSY+PI-<%TITE@^cVEQN*rK zPiO-+`_P`rb;E@u%$=hbsRIph<0~ElTpF{B@leoqSK3`f`V{g zCMX%eR9k+2RKAQw4VHz+SJ{$O)s;!Pe;eH}BID$Gl{2 zGh)CEqAI|@e7PAa)L~SEekcc!FMbrXh{*30|6ml+e`$CkIYmp8Z_w*>cj#c_%jJ;H zMo`!z+#C(BpQDt785$BBBN z^{!KA8!l`NB2}Azf}m1)y@XQ%(5l9wS|3rI`Etg69+OIafHAPvP(NMW(0$V-{P;OGa;ikl1I%ZL?(fMT}wZ+ znoO(V?xC--o~RpUEO0!Lla^Kv`%@l}yDB;U-spM%W6sSz(RED5r{q?oGBti}vmeaJJ85Wgp!iT@276Ef=mu_jQ4nQgi z0>)(EJu{NR+&DeF_mYYwJju{UgejAPv=VtICwuMh@JkI@X?#BmlwKOKBuLGa;jE0Tc3Px39eNdW<&X ze%UuUC8PtZ64CyoQf&hCG5EDHJgz=)emTx{k3q@yNJG>6x^gwHoeR_nTyH04DtB}b zLOrfeepq2s2Jy@_jQsg>b6g2ilUB6};rj2LJ?~zpo#?trHYGu)1L&AQEmvlZ>>xov zfO`nR(P7?{hr?Rv*8p3;hU=q7SF*8L1u%Q2J*nt`s9-3^$jJE6iImJw%g~f40EwmK zreAaU`g>3)tvZ}ffb3u0c9+m#GmXdU9bK1kCuu@zQO_zh`nBE+d}_B}M7u9skGsB> ztg{x@JqN(m@T)!$v)q74WLara8q>ge2u9Z#g$)__P$?-X@ou8BVNOT1NRENew4$Q= zxK;B6Ux}aXtqudm9GkjtXh?`k`aWRt-7)UCS|0bFpl6<7n4VO|n*KoW?uRY~(ZdJD zd;yN4v5EeLE!|t|0uJ+t8WWi;L-C#Q5~GmF{x=5t@j`UuBqSg2Mjdc{(2r=7aO`et zyZ`hl{ezcr+dKi)7s@u@jwRKu)!>g-Sba$o56pAujC7E~D09T|S*u>i6Oi@=K}9yf zn8)6#64mE7U87rx{S%pT*RT6cb||e409s5iOxq9{KTA<fHAVEkV>k1a4p0DV5(#T%>_>FGMts6LJf;#P`i0#VyF@DsDM>H?^el&-+`JXwM+jUP0Xow zj@k~v?uHvBbe)3BXzcf^UQN$G5mVp~X<@ZAe8t9g^5H@y>lZd^nZH^~-FKHW0tj2( zrkeZ)OWCBPV?%$~b7<(=Nfg^5u}mW}Gk7D4Bx1>M$HHU4y%b`PqYJ;A)2j?V%V6Uk=jSOq$=Es^fl>=0DuW z@Rms(Y%(Eo@N)UE{`2{TS?oirBsM^TYO4R!v-0sQA%3@O96>ROnAZOcAwP=L7NYRl zzkgr%Im`1xqA!}JU9FUCe0&-~7l4<*SxQvDO1Cq6%c- zsc`EYz~;j1jdoC0-6{KFyd@{1`|X`CBXh%)vVzp-z^MSHvf}*`M+Z^+U$4ZOwY)!x z*v&jhDCi`X5mb@kTN|~mz4YV958mn#(DPwd|AC{MLBu4sYi^=$<1>DaMfIIkA+Hci z_TF-w(TCU$@vJVU6LoIk1ruByg%=LrfezH6t|hF8TcF6)_9^Q-kgOijyclzg2@DHl-X6@EFO zczqxFBT&JZ0%Ya;UKnYi)U-hXJY7#oDJkJHJ*5bkY>T&m-kd`dnUj#lPLubKA^6ejrG=^9 zng$$fj*OGmcL=ljW%i7OsV4X(+vhdF1nXB7{}40w<_Tvfh2Co&<-RKtc*mRMi?z6vlc>?^%=#g_r48`&L&QFfQFUBm(4oat039x&OEh~c$w*Kr@{ zxvPavIl-IejpWBCPZyul0emq4mSZ zeDFMUu@Vm|%AQa@p0xtEL%2{*5KYpiVoO}0(zuTwn71ZPI zO;&cLo%z1T#wMsfOhsn&Jb%xO(75ek4d2S*2Rh#zX_I&@;M=%}ZQ({Z6hZQzMmXw6 zxgavFVYqya3-j8wYZA^pAz6DfA7!n93nG%@Wn#jH2<2Zci{)XOA6s|yG8}?R6TinE z+dFPE45D<9F6Hi#x$Qz^1>iylhUS*KR`M3Lb(y9C&2Nvs7`+T|&F1548HGGfKqS6L zT=mszq>OoasPM8|*P=V});fs5W`XDW43N3C+ezpbE~bKN|8jNYmTe#?!K$?<1I}5% zRjb6T(*4iFcc#>G_D(o$q zznOTC6z=UMRK{>#)qrHzmkIap+swk_|3VHmM5l_hCKQi9L^PTTm(^5?E6Dj)lv>*4 zx#)0tQ@^5joTDlFn^bc0{xN)k+0+mOj_+=k@I%T)iw9OU6hM+2^e%;TSZmY`ifMkFc zMc4x00a)9?pvvyK`Hg(=ZOM9~fJ6UmS7_wdXW1*i(+i_~3qbMys8?HYiVQ#^N^ZK?HRHe7OjOq$G`ig({Cb7;0Nhj|gdD-+uE1r)#VH0brqxeia2e28M5fYBkTqwma_159z)`v+5dU%ahr+ifG8tsf6(4 zZ0phQgx7?5c?U1%*4tXfW{S`u3PH<8il_1|;x@uhTFZA{dK@3S_sQ{1rv*|gFG!$| zT$n_(5%q?rhIP6V#OoXuf0;wHW{4tEN9x1UkG#U@7rrXp3|+h+@`C2d`i182BvPsO zasT6Hs4mhPK0cs4w0uJ)$zX6Ud(0cg^J$JcQpc_uLLRy*h$my((M6nA<{9)k3mIV$LWjx;93I`2ZgMeaOx8jwfb}Isuj|tzJ@TNy%-)7DCYd zGP|5x_z-l{5P{~H^W(}ilfFDlLYE&?$21)YB0m;cY$jat=jz)wuFk#;kD<=f;#n6F5I3j4oLQprgDW*K7PUo)^wt5)vD!jdOwVZ>KlU#c%;sUv-N3HC1 z)vMnj_oF7L!P<81z8OYY_|ICG!bp!dbjsU+UXVBLJ4c=rLdO0%;1Yw2-J77GPXH7# zCrw3Ws0K}D$dC(fwcIdg^&t8=Mpcu?^eY&R-NW;6E>5$-(=BK;$W#c#a<4Gizv!>> zx=8S1vzSd(PI`wJwZ{&x3W20c7g)87SZhw|gl=gvpi_=&= zGoIFD^xF9$c>s>3-}6{VMH!i~ISMKl`rd~|*R@8KlrLZteB~L^eV<&i{?m#KIp?Oa zE|DGBgquMee)rDW_p~SV;VGZPXgEkIm=3u8!UH;$e3t3ezMR=zh$!CvoFM60bDI%R zSwTaG+WC(QyMgkmJ_fCcJ~u#{T@WXq>O~;sA8%v0n{t2lVE1LHVAy#s{J8ynPw&3^ z&$F>tn9?^=HLNb@pPqb9xpY&QfPMCJ!mx}^`+|sMQyNZ^2gOK)#43)S{HpsSE7LfR z^0TpygZ?u6fH`|eeZW84M^KZ)MHuJ!KQ%d6D|E2&$&f#eFnUAKIo~OIvLWsXg63tq zC3|7O2OZ$~DeQfW|oqw+F( zR5=M4T@=jB%*z%YX60E z_8X++Yw5tHi-srlO*WY{ z?E-kLfci=ZTpvrMJm3@2Z8_-bChiJkYpvzonLI0Kzow8RI3PF~@1YcX+{{w}-5L42 zz;MzUgn1H!DEFX|*gd9}0Azk}hbp%FMFvS95sN_yjDo+L22p)Gx>{}3P=q^0`u`KJ z?Nb)=C!#6bzZ`r~5M<0mmrr|Ydm_oO`H9w9Q|QZ%yC2waQ)uT~gBwh|%U%QU9r_~B zzHh4k`)-N(@g76(@n%|AnI&ui!zjDVr?Iv#UH0Bqe77l9+>EDK=K# z_E_th2L*cK1S58aJEd=h~@gM!w}qKBOkB}d|v2Hd6h_hDM;gd}ZAC#mUH z@BQ8VoVnWqR1#e0P51tH1A^`sqE0S_keQ)<$%N_7vPBvG#HC;k{aNT-uIP4X5~z zz&u@&R6We^5Gw%u^Ogj;#UvFoKB_RYK@Ogt&fV04uXu3fgDz`A-N3On-pVBeV5>iB zOlk&4BGm(zl&*pMCz~{I|3?SBSNUJ_a?no%`_9db5;?bH?k+r!PI){m8fo|_wHIem zZB*Ps%mCDVfa=~T?zNx(-bK{It^{sy*u5-ay6|?myLV;JpKKDq*6jgd@Wr;im~8-} z_}zpGMV|%`cB#?a`V<9VoIv+b`3TAl!X|k_26R9>C@|hII{>VrTX%1u^AUe^UVs15 zd-8pYfE`KDjU$Nl{W@a zOz(%s1ZNYmh>%x--ivysQX#Cu*w&iP7~g_>v?Noh+%JtBPPS8zg=w%@$FZqxRc)4% ziE+ebpx8IA(B%aB_Jp#iIu6(nMc)GMow2vS9fLI7bc3Siq^5(bP~Hmt=3gm|+S3q& zi$OP4$msHv96sco5jK-|=Jo4V34oM!j_?%?xL&Mw!teLJF7}aAFx)eR{;ykr)~*%Z z+`dFj-P94z0Pg;|95|TDx3lvAkZ9%AMWs_Ui3Gham))>YdRZZ)@dt%meZQY%2FLt` zP`xgfsksi?8~__h02!)%#6|E2F^&hPz<0q270mlRg>HA6r#b&p-1_BFFeb)x#G^0s zAH|#^a-2{i#6!Dm903HyAMiF!2TlcUv0NM$YxI9EXF~+vzz2v*BHR?y^<+)Nqr~p_ zsEg*5OqV=PGeyZ}#xZwtkZI*9g^~SNr~_jo7RPb#)+*zYu-;EOzcTVef+X#n@nfYP z274X>)}pcv2@@)#sEPt_=+bKlx1Q0W8$dT~k}JFsK*hG0nBZv8?K;@NrOdvVbX0X*kNC>n;9tP$e%NWu7>(8Mu}RL7bOj@ueWD_o1tjY z$#KdwtMJn7Hd}-aSnW0bI`i3E6Bf-mnm9i=7K-vBHuI%b{9uZ!s)*lGu92%ztTuvI zuYSjrl|3Y8PuuoftLM3X+Q+K?j7N%JgH72<^Ltn;*}s|Fh`CLKN>JvHae#UJ zP&484uJqaV@5=cNLoJjp*?Cip@r?>C-^o5!lVYgryJYY4$6Ff+*_IEz=uvMR=3+3o zi8da*5GVtWCW-{z?}F9Ic>!qP4)<_q0AcBR$H%K+zz3q~2KXdm-%|$7bL4-JDu71C zxp11xN-|zPP8S0vre$Ag5wi<#W0Y62*1CL*KcM5ibzz`TC#mL=)-^DSg|5f!C(iD> z#J4>|{O9+xD@KT%l%Scm;dtnizWC8%o;CH3mdz=@bX-(eDxSz;8af?bj#pWW98hJd z_bQh?WmMJWKoAPrHK~8X<+`viLZkEDU^AuQ8#M14jP7y-bE@RyxR2rc=J}z4Zz>7_ zHSnT@Il;W8?JzVnXuC$R-ih~=b2fg|iz)4G5W7wvF7MYBcm61;LH~)(@QMGjrdQIS zfq=5Qh#0kKlF281oDVvw-AD&gezTA1wUxI{9?W?8f(dK1Q^tOYrG;v1;q9woZh4oJ zBi2*I92{zQV$spt4cL;-5@oG}@;WcKsh$g7P%ARZ#0C{v^?}?JTTpR^@k!D+)6v8 zjh>09-7_`I^G8^(H|+Hy=#12xj&3GQfc@pOCQXKH;igB z;h@Ov4QU=_XinK}iM^DQotXV|jcUtjDU+j*I=1ju>hj^fX?IChX*Q3!1e%{Z-cBO7 zUdBSGDw}FnPojg48+jZw4Q!b6@f>Mx>eB*Gqf^6g^u0NoT%X4 z){=AT&B2S;ygkdKgfPacBY9cj{yJhwAYjA6m`1=^5*&vxJCK{cW`%9|?IXc7gR8J~ z(V~W%i=al<>vHr^`i5S#*!{#qTC#jNQ{Emnb_ID@>s*;7N=|Uqa{qeBOSR(!fAf>c zZ`ivje2b1T`aF7@3qITIS4c-nK3x&z4gzz#?c3Zxp4VkK*QSY`$`DBAaA^SFDBWq1w#OQsRgvRT@{K4R`jw;vqrJ20aSOZm$C#_Mj)x@i z@-J5B$9RcGwy-`#k+=OKx#H_QIV&Rx$^Rf2cii>veYzs7H6)PM5V5sGqj|u@LnU;K z9xBpb-te65Bwsh->+tOpCM*K!0q%os&`#7({(0=EUTMe*XsM5BxVJ4 zuIx@YP1-$`>3<1^Ns!#S?v+ua=bn*g`rwj7VEaql)AFduQ6LWqST(V^wjK1fFEqu= zJ$+8qd0oVj*T{+jMCnv|6$V4+xDt$wswgU4a(vae9xaP>Io&hOUDe^L_jz(2V(Mpd#Q?QyP#rDtFZED^~<$qlUHe^M_vVA)3n;AEK*} z^b`-B?KJf-960Fh&lIYjk3D~1sdH6vXvyK%x_zEAyO%bNsB_qLw?$lZ1w7B`)|f49 zX%ek-Y@X9@RRxM3Zm>&)u?+w;jt=^3C(tFG6Qd!{fb4FLvKBcyX75du-Sx~pP40mWub`YzDKw&EO4e^|JB!(53g_4h zFb)hFd_F|{jDfC^;U=hiJ*6$=>Gxiz{-IN+1wIE6`PG%$xTU-lBpRXk5TMTe?&RPkZ z+1*B0vRH2Ku+^3xI8b_;#Xs*B;ovE=qSt%;YmVh?elGZ;Mfq7GFoL!ZL)Ncr2e-&a2Xjk-(on&xi+$xupzG65+5^I#we;5qD~#e_ z6tLG%bIk3ENgNyKWM5vZDjr|4y@7#asGe#%l`ZJ~FynNBQ2Rt&YjmQ;^4=;mu$2En zQyZ)Ly>GgQZAY!a5+BrNjhKESNjiJT&~jop@5CJrGl2bFQs&GI$af#rwc%y zL~L8i;6dTGs^BPuY2i1=fgDPi_~n2SNVYEHa$~1nKikZ#=>CO2N-cPlXU-$KTfLKR zx4g59S8FXaRb^dnKHq7+-M=7yegA*k+_r$HLDL7IMfB(Hq#aGnMG+$%KyZsXw$RAQg03zs@hf!M(Ou;cyC%+k=;l0>&O2Uy{mZcCWCxKac&!!S1zO6$Sef? zpcdm}QK7HNm{vZ*1B&dE28}UBREpMun0bim4l{gYex8eU?C|k|qh&iaHHob~;RuVU zMCSSU%M_6V-Ciz8#GrGL7rC~4A5xJ=(EMpfsnW}+g<6q-g+9E^0l6K*M?q*RsVbk_ z(xnIwIwYQ{xo^69WE?n9442&VSWg(4&h8FmMZUEg%H4RqO){aBAvff$qb{OC6lMF8 z%@3iC8A|0-UlUp zUwMPvF_~Agx;ZKJv@pLP+hy!$L`D^CwjKuuBbR{B38MG$QJ3?nyZhU0g(qQDFDR&V zH4%Z3MQovE|K8IPPEO3csI_QjAsuzwsE$b{wC4zIECQOB*5TRiy2d8vVwWw4P1~2c zHz&i+%h>c$x?!jdqLEAm-&1(%6&JLmKBlHK)I-X9AQB6M#sK^Js$jm$LJT#Wq&us1 z*-LBnPv3(aV*hS!6tZi!+o&&;1zBqo{Iu5PgYK81jD#9l56y;j-<*ZX_ag1d@`uTm zKzyjKEDFzX?Y_0GKlT1`dx4efNoJ*sY;-LVq6r_v?frb4&sg{a9QSd@L+7(De5<}$ zCCohi_eO1nF(CfUkEgvdpYYV}G1m>-pR|sKVI39ChI=6Blelv#F!vSue&DUzYXHaYJYd)R7rcT5Xdd4Z_YyS3wZ$4lk0$$v)oJcNLu(*-{EYqr={(bII3Cid zeCmMTJEA|4+Nb6|;ONl}Nmd&B_1+q>1Ug^DC}tb0fueq8viZ@_N-$e>juoE+5BUBm zC3Mz8O)OG}Io1^>RG;{3ZBWLK5o@iFv6b$3r_zSo0c)U{y}-aF z@C{p3tW25mrSXx&_pl@kSaw3ec-ME5@a(%E8V+ZFxByKnz`)g?VfKi@t9b^*O=!>b z7BroB;{(tY5x3P)Q$gFop?;%|n}-(|g0j17MO8Z!&($4QJg#LIy6!x{YB*x|cTpXt zGtEs7D!C?r!z(eRf*GtJq?3|hA9mXCspQB&Qpac5bA zOG$LztUN`AqwM5c(1wGQn3h_IQHAiY$S%__moQ>E9|xxPk%Fa^UQecQhkVEwaN{FM z3(^{}IOUTA^>$}1fTyh?X!F5x`r0~;;b$rIO(dq&5svt8(|tkmr1p4GYj1GV*Iugk$B$s~Nm($pe|Tw{$rM!bfHNmX1iytr2Xyd{s z>toGF#RuD~4?uq%DZ+=Lp|XgkA7EKjUcw}>y_zxt%hDJ1f~PGeGK1YWNe)TK30Cl0 zvp>8UlX!ZmHvi!6P}NcQ$obdq4;M}365Fpk)<_q=vmUBm8nIz5GkTE_`dpu|#oRAB zDl>OyEF#!{h4ko9Kx-WT8#MVio~%X0=bin<&_^#*&jlnKE|VG8+}u+r_8l;L)e$Zb z6xKXht!2EPqEdIG{YJR3-}{Scm17Jl`|1h2&yE}ts;c0Gn-+5GcYV8J;ZqHThO2#? zO}&ab3{f&LqqGk`im3ahCLO_8FjsOF)E=$DLMsy}-5)W_>9YknUS(6MkXzmxWq=)ydMnP+8AeRHFS zwb96LpW{i3PQLXnb+`VCZE^SU>lkdlt3z0OqetFvp0;dBWUUEr&qH%uh)XT3To9*o zXTg~otr7~@aXtX=;W+Yf7zaL$e+TKnwW6CQL;sD2&IA&Uk)W)|Qy!;=6G=EGi8#1R z=Dxq4<96WOEaxSf=(u#rg}LyY8Ly#U8sG~rR>l4jM9{WlwLLV*wvN+hW~EU2GB(Zi zq~Q)-dsy@qu&(F;^eD#r&K9};mb&CAk=cN2{M18i)rYvPf3gnsPKtOZ4JHq_L2+8- zzaWw#7YhK9tQB)*v6YEQzG-}Y$E+~r66`Dp54eF0r7(U?fsPxeN)I^4QH8f>u%48t zgT)R~Q~5*B3dkShm92#FTV0ypTeAS+;<}3U`ZbUd?yo*G*WC0RF<;zx=#L&VzWLHq z0v)M+R3_@VnoPji3QnQN+i$ClJbEZU>mBd8M8ra&+4=o32z{ZoEkX?0ld7t={UUD< zUX26&VT^5j@l{KAijVYfIE-bKP*loTd0rC)}@fbW*IGh@YSXT2evet7xy_lumwQk(_ zBtF=3IQ3myd@yn%!YTjQBPq3@Z{eqtjn|a=K%Q=_lZfJN3~RzgZp)YMat#CC3TBBu zX{tKNfQm(EV65$H-}P-1*7Jl?r2Es|(O(|Or_KEj>8P$0)fmt^%qS4kBoxNesx)Rl z!?)+dARslhBCK&ca@bzTg)+QUc)BqyEr@h6VfD}l78be7K&nNc@r)eCOW-&N;+OIG0nuHJI)G^9gip8xZI%XwxDa`QyTO;s>)XW z$tQ)Oo~lbBEXi2;VDP&Zmrxv&nNjS$rfQ79i)jgsKSp!BbTW^~mE!>VvpP2Wo(tM^ zKQeG0Zj`VP)q(8?BxJNxSity!NR>Sc3-}B_6U9R`)6LK=?iUs)Iu1GO5+0~R0g0-h zdEJS`H)qpKGszh9`7Tx9{8HR)cy(<%s#erozq>i(xSz({FdEo?HeEVB_VEW5hQtMh zfz7)t$o<%!8Jf0{y#OJK_fXo_ftWWo`)up8Ji6H%N6rof3sRHNf2lIo2Rd#PY zFhfaRTA!^`ZSD&IXR=VY1O=S7?}2LbC9{aYCZG%qtaj8Xs{&J*p`~(ztX=*FuMX;& zOzI)NpRAuXc}kWwmjpVM2U0f55W%6 zQKP?H(5n+((|a; zH%24x`JIqoLYaYirkdI!_ZX}0e5)<-`tlw=e6MdNE; z@L}vTD>^;2I7z5?gGGdP$`LFy)|`wGTe4PZ|TvjiDW!f*Gv9BKAa;0Y59Da|6V>y z$tz8+t=(&K!ccFejgMNd{L;Nij&3?cb>|Yah63=C$hK!0%&-FR0vyiz0$Cgic?*{Z zt6Swk_MmUymM+q-i&wzy$#){xpXN6bjprk#af?j;n^W+U7|E|Jw7 zuLti-B4lW*O~j4hW1xnN@FuqJ9x%dwY{aGlRN24NaftyH^AgP8>9{JW4|ud{^5>06 zT+Z3#Y*ZK|)2f#L?b*$L*69Pw`v^ynRUslhiA_=e@cCBFu4>;PPcU0UZ)=9~bx5Gi ze`8m#K+<$-d6*MdRWoU6*|kM3^J1YTdM8S)^r11;WZk$a`$I_2XK|UQttr)}dD5KJHicJx z$mn%=KW5rzf@JTeT^yTU&h6ALzAkkrHeaWS%US+3T2e;T_OQwAk7>QqH&1@9I9S1# zsBx1Nk^*X?qOD*x#XA}eCEk0-B@=bhnF0GoOjM0dy-8d~Chd6Ek%RKFL0Czu)aA6{ zO6ZwlCebOKuvZfV*-^~}*RfzI1en4D5>vqc@EsJI|EH~8BQ+JkazCzD87MmHUbBkr zBEb2YB^oD}m=4zozNNevF<}`fnsJNP#yRjv0=bLV-=PP!C)grf3@_`H+$Je;Qv5Y# z(+R%FB6=A}&2Sta&{99=sGGrp(C8mUW$w>qZJ$ZT{+hUntLar3A+V+l!Rn(L?fo{= zy=`nS5PSG2dlY#ve@W{5+f|!j0$6T@ZveTuD=GILJ_SiaU`pS^rqtJ09Lnx?9^ZoN zI#aJOI#p6{2<4XVzWed0S~u13;Fi->JBK zjw@u#x^QFMDlX<8V{tK^-Q2W0euoRto8y~32N9TgbdAx>i%)!Xr4Hg3P)Oh?&;ygv zASD>EH4pwLnEY)ygG)5uMG-?(%K=iu-1fX!90 z?HY2QjH3mz4_Ur!6B$#lxBJb;cAc@I_~Xbax3ucIv?OgQ7!NC_u~dD-NaBXM=Tv(< zd%!p>6a>V7(C9|;-0_=}IqgJk;iyF8E8n!%b(7ZBUk+t|QDKb=s;18En0)Rg5V_d~ z`#1g^;0LG)VbL#yME~dt;v7DZP*R{4Ki{X_hRxA?oU%lWdaGqut=)Tdx;J4{w8;A%L=j28_lF~~7;wAo7M==S;K0&&Wee3!bd zFlX)Iw{3>djj;$t7$!u#1ACu!EfI;@d((Wd_k+@QRFJju?ZX7+K93Z=R4$97qSXN3V$U4fN=L(6YMgfF*#)`nTjWfiyBSUm zk(wN(X0hPbNIFbGmdCpktbHDdr_|qe7DCPKVK@Vk2?>&PvKM@ui2!RJVP?8V1)l>B zB@8{oNi3}n5F^*CDYnO;&;(4=;ER)wYoArRRfoSa(tG(E^faUPN30o&wK?HMWEbrzuKbs{Ui zqMmC!!Imk?G%JjMVOh{C^h7UoU_y*TZQw;E!!xx(MAI%tQotLb*VQB`W(oS z#iL|1LhuqT#(uyIYy^`VZiN_0eCb`r<+?XftKyb9NNydmbmzYMtg~6C>*wz5ug1tc zQs5T;Hh*ZL5pN(x>fJv_!B3Hb#SliqM;VBe(FGRUUPTEP8>NGwU{&jHBk<0&5-(~OJP(!@!lbhJ z80+TsTDFWsE4Nf0-|xcoLZ;vnGS_ICZyH#zK%CpB@scQXLk{fwxZ}GW6lg;Y`~p&G zmKs(R%wFI#1TVE%qS82JP)>40wsV?m%;iO|eVb_|dZpmSQE!?k=p{nL@;c?oLA^`) zd4v{}(k04i&e8gfc{7dDEgo2`T&T=3p5uB6>b5u-hh9h7>s|^BjJ<_bDuW{onsA6_ z802fygw;kPI$pqA;ZyIK+Ze|XW1y~I=bE4;1b^Y;(O3LV-$8Rarh1Y+T=qc%Zy0(zrSG9uF$GKNK^T>=| z;*TXI#UEhiUKk@melCIcKAX7ZaDSb3e`lS^`*TZI+#FycRDzc758X`{;m@jr)khAtrmtEN=~byFadCB{9#}8UE2rrnDyQjo&&Pm>x(y@Vzn8` z>%2YCOx|#i6sVq@!x(HzX?3KKJs6%_ko5oy_l*Pg$788%2@a2@Y=JPjaiC18?MJYx zKMuRuk0eVNDA{N)&D1>;Vu<##X3dWEKF{05PgYwzUJs89VV zQd}Bjp?*#PMo5uh;CSBrUx~sKR3X$KhH6;mq1=stcDXax(0rohvwWhGz3@riCkI1& zncvp*F5Y`QOv+o2WB!U1I6V96(JgtN^x4lynHVzpXc$(+ARA!h;DF`EHVv$SoSKCl zUPF~QNTh|jB2WtyJu5De^>ZHVQ{?iDmX>@I*Z7hD&aNArJsU1N1cU_~6%Bk)V(=BJcTP zL~0DiV7NgW$qukLto2n8Y>faX39NpzfD!}r&WL63DXS|s2KE7ji{U`>2{!HS!Y=Fu zrnbDs$esNxyoQpodjoET(Wq*QDwH96o_Ie0?ZE<4_Ysso?f!|QCqT7o;O^3(U-JVg zvw!6R<}eVG1QHn7ZqqVAl{9;`!j zQ&Q-;s}@{yDmY>uTRUbHU?sMdV1HdwILG1r^#ppbsK7Uahq69gzG zUVP04U+$f2@rhp-K5d@!enRnv&?`Y6=G-pTiw&QH2M8r9HA0VnhjGPVH6#~Gh2dv_ zIn>xwh2pE+8`0IiAP~sSA%JAN(d2h_#mCwj~ee-xfzET;RFyuD_0<`|I#O zWh)03YBJ1F#>aC`ao3Jsd*Sw_xT(XtJ9Z01I&ZS172vP3f-1da>;*7DfuMZ@tWe*p zPIdU1*%i~X=g)q-tuo}ww>L8?DKeZCS@H&j{2SjUHaynNCr>MH?+S!aMeVyG{Zab2m;_d$!ZqU^f*Cg5|X;I#xI*G6V{+xGE}^1J`bCfykJW({SWN z>Of6abm3Cu>pMB`?r5dC47zIGaLR8+WnyC`)O(D@wvU`-$UZ*#ww*m19izgCz!5Ym zV_UWLd)91FSa5?giuBFLCu_Fxwn<-DGlk)wcE*q1QT+5)0zfGx>2zkhq=46i)bFz5 zBldP44eC_@1?k9pTuhTG2j7Fk&V(Ka?ipQ1>0&RaNC_s5tooxttA79lMP8WH90hbC zh(RK70sgy6JZ=R)V5&dnBrsK#cfQ`;jSu;rvoo`~cV@SeiPR}yKT9ATt-tY%r`WC; zYwKcCL2qv6C_eIZR#{ENRi~NU2n&;v?VsZ9xvP@gd4lU13dX6@Otq-SYi29C{+dU% zy-xHYz^xlKy$Zqw&hS9$NF0@-cS7zv7|H(l(n-8*)+bpXd0w^^*tGCN1^@S-)mlj`Y9!MOmEfm=mXjG`y(-{+} za*TK`lj5kGPtq^y_xx^`N|xQwDBo|~da%L23g3^7@b7Z1{ve7qgP)W60CoC!2N!iy zPo{%x+=B-4qSi0j_=aEcLs#V7LMzf|A)!z<9fQsG0DshGqRat9pr4K>wE?!*1!$_N8U@z4CTG=KWTf}%K7IVJyssvU8YZYdsO#c zn#aL}rDj*8FtVz`=6+9sh&F}LgVee$tU0HZ>`b5ff|khK4cIPjgd@6!hge)%jGS$M zieiBGE)n9q4KIj0!J3y10G%ZF zXU;IjfJoH?S~>ddyBz#X>t+w-^8!>D|5hSKC`K}U ze}QP-P-3Ct(LYOndW>INeCnZg*CrMs?>r&p=u}6)-!trP-#<>_CtBI9HuWJbcwkL& z@dr_UwLeP0bb&eh!!BG6bJ{&}0c;(;!MW*Cx|7wQXPK=exSDR`MggMF3MaN21wNPx z#s0Qyv*5k%dSjBnXCD3pDB(3xvL)O zL4u{qYnOu|-d!>je4V$hLb)7Zw3j{+6n0|_-vE}wqbpcihx1=V&tM^={N2H?-GefA zP>?Z&jzT=5TRCG%FG&@?iN&oxPGAJ(psDK2Z_#)t(DnB8LNrS$?3;X}z?KRvaestZ z0|?qH(5t6)CBui0Q+6MOxUAt-C@f?JYt_v9A46y8rI2lzy3v1Ejn^*t#4qw||AONC zz3xVtX`aGNd!0e&A~ZTvY#M@$a+%bH4@)c}E+6tTizsM>OZ6;lulzpF4wJy2QK_?q zfG9|F8dLp;3(&Fh%rM<)&8$d*>1B$ZTON1JL-bt3@Q&7frp)g?JCoOXt3*&$1=?^T zXn&uWsKAB|8^R2Fo+#o$-;ajD4m|y~Fl@nHB~sn+91Ts%EA;P^Al{NQ_OAQ{=(Wx;b^-)^96Np^`Nesl_lk=@Tt6P+8Fb;&V4lCFrlYUJb%A z0vt_oZ)TOA7fap3SKt>-2GJ}sdp1)GHa=fKxB@~-2=n_-wj*sg%oUt4Avc|j#9|)4 zp+nvY=-9yORkCgR>#`E7k4Iub6~~H-2jk4(D&Zsy)mYhD#PA~P0J4`AxnC0?U=V>@ z>+soRO&S>jA-9Q{0W*Cn@Rc92z?*oLP;vWAvo@hdRuhw7HqmZ^HCk zQ!k$T61831a5^4}7$Up1_bI1rU}4=O)V_gVy5wp8WZy!Z+HqR60sWQrEbG9}?KUFI zr)LdcqVJkUd&%{^GhnSTGg{f7mBtjL4fiVQ4&2{%HFd%0U!lZf67O|Aq>o`NKzCgy zuzeNq2%pbqw>bZgDs1bX^T);)7-!xFY7>0Mo?K|-Pse`-uHV|}-xsV>xo#7NomzPC zMzu$3uwj3oik9eNDA-9swX>*MKU0~A7?)hL&KX{giL>_Yt^}5IDVo4yomypKG%F0f zn+Bm&$pnqI@6*@o?Z1w0bH=k86w>XbNb2XS_8BZxIr&FZ}94Y?gm{{1-jL`vuPqpxf z92T~Ga#MnPD5{gY$FkPn>~h}6V~i-bX(@6`!(G{zu#72eoK((*g7GJ^X{v^OCLeZR^&9Ds5%%~W#?oJqy*b-fa5m+$D%`_N#g~b3S$pH$ z!(Z{No}P0&VaMJ<{(A113TNe)A#DBPkE*t^^kbAh{x6jCmS)BHM8EA>7W*Jq>`G1> zCAYc1jjL|do2)Jkndd3ZeqR5n^4^Uuoa0{s-ML5FP$TP=jtL)59I>pG)+aQT_?o9C zEsg>q8>OR{-=Qk?1fY8H4jZN${Wr{qRsy3FeeqyR?JgthPS-mUGM`uOIKRqGABHYl3>Kk~vCBkWgU-lP5$AdR_ zll;9Ep}~6Js#JTXN;jrr&5J5YTtq@wbNl4+P0!=2V*uBEYQ0xYO7H7pwc zt-{Vs0>mb;!cujh^NMm+)OM`#a_M&0%>-6@On~|=)Q^N*OwO4#Q62ddv$1}rQ|xmx z=z-&Sg6sDJqvv=+WA?cccERSpn1b8n+X$RhUjP28#oFM&50|~>lHFoFMHGr(GzW9% zEafuV`K|kR(eqZ)^Au58c|wk3stt+6Z#t@d2+M(Sq3k+ovnOy zCiMQ&03{Vs33l+nr3;Jaj_`QC4dajsB#?hc!x6eRIQl3tDjY;lvk2mh<+)XYTWa4P zK)SUUu^<-`t-6xAvr9oXW>^`yF$J_GQ8wCZ5hz(q9OyU*6@&dyJtAA_XdX!Z+N4+( zwyb{KO`D}{k|#v~Z8^v5GtNPaqVn539FRd0p|cT}M;disM_TaNP z-`|9K%x)!>%^8TQPwtW>RT}Ud47t^5I>b>e`J|TJbf86HBl^?ppcmEi(&{`sq)#(V zGUfJEKB}@R`VkxYx($sNVi(&D>E>Z#kjM z1aK|Tx7`m$#Tcvj=0#9nD*ttfE{-Z7&md%tP$&gp89MxozrtZ&=>qYTVMBUH&-VVf zTmGr&$$Jkb*`QO#FQB5<+5Jb__gv0?TcF>kXvKPDbtN1L33|faxlT=0z59ACByxbb0hNI=bom@l>^8y?6$F zE;-(q|1;}W&lYj-!_=Nq(~VO|Brccu@@VwX+ozu{b9?rN%2v>Hsr~F$^0ePjCDEA= z4V|3`jdR|gGRWT!?;BOeq_`1-^N+6TTFI_$wJ6ybv+YlSQDA)}{lwBT9W3Mm7`RQ7 z+%t0`o|3VN*r7r`M>MgGKv}#f`M=w8AY_k%2cbi+6~PlthlV34pbN;Or>oAHDyK_R zX+XEuXLwDtS{G!RoM^$dPoi#T`>P_mynodNWxebX_RUj)(vF^&m?E26cx^Ns8M@%^rFZY%UL*}_Kr`RO32iXf~m=Tw%(z-lFA=N{lvc-asnsN2bqopD6-_BRU5P7L_T9qM+{5Z$lb7p+}RBzcr5S$ zu^x176$8!Gy|OxU}e?f%cn#&@NzEWqip+%L)maLZD!TcLlVul zD7MOW@`g&G7dGkQ84GB&RoILc_K7upH3Iir4t_5k2?odroIg^Kvv+}6>;wP6Tg3Fn zQ_Ck)9A^@O(6bEAruNWJPxZIY&3IcTzNE)cQTS*LCjOLNXEj$2b_$&^y7XWN$F(nk z&nEW^deM$A*=o4c=sxKoDEFPkx|^K;A|>S~OHVA4%O+GmFJ5hq(Xl=ITsbm2s`T>m z7s|LTR~R+n!(zD3f7o z`~?++z;q1YJPH80ez4l!CkTV}kP>h-iRkbz(EeT70!XAp6k5E&)j(@@(*evrFk&Pi z;<8#ohM#qim6QXMAq>RkhBqSn$1*O{HstnqnbS#P`bXfnARx}iqX#j^6pzaWDDy&p zCfwY%L|#r8gnIORTYSF1y4AxTxE^@|FPa=tVvu8X6x?%!U9K7Qr7przh%IP%r)g#uJB zx$RPHd{Np;4oPI@(3&lS;f|x{NHp2R@7KG!^38U-bq`;~ZP`21j{89#BP7ec7hcx) zrF*SY&7{WEs?Dq^DiDgm7Zsl)OHAFk>^JiCfeJR1sL&hPvd8;F0G&K^5gX1IK>oo3 z{kL{79}Zt=vUM!?U}7*qy5rKk9ob)P%2Owk+5#9IcX^|P6p%z!pNgnZWQi;&111ra zqChQS+k1$|0&d6JpxUnqJyPG4jW@P;HHD}%?oTHpxipL4zc>jKOBlw#(|XC7H}=QFF)VolpZSLgsNDK^haA;x6H4X-lMSzXf#Ii zPLj|&o{G1fVhHiE)I!Zr!hXvEep{ z2`Wif%9qMm%_BSqYm%)l-VChePdACRlQrQsXx%mfFg-?A(Z|6uA5* z3Ck@&vb*j%D>fjmmK8$QEt(?!ayt>^m92y-5>YOy=h;z7DwYi_A>;@tiS{jiGv#D6 zq|wn5oydmkoQBe96Lbw#&rFFp5? z$UHBq-4Y(?q4o$H(xi~H8MuZhTf+21nTp1*_GjgLNC71q&y%~+Y6NU?HYbmSo8^|yWs3@=cAGA{STMrK!gND*r(o~vHz zbfD9?rT^-p#hv^dLH19D30+`P9oPsdY|>;9)9#H%(g@oNn)elGC*$H;{%=Cq2bEKM z#`kIm?oE_G2G;l+R=*j&^)Z~(%IKg^8jL?08c2*CFSRnBjoW$Dp;gO3MsuSj?C)^Lv#}g@b}$EtoieFa@#s;Hr6%@UGJxfDTpkPB!4=r`J%deoReDY4!YDBUli|e)L)P z;=Qcqs2@ zR~6;cZT}@eu~-+aWbV^EevOK7AlIXyV6E}A^oqo?!zd-Ut{R5=*h`Yb(%bpdH4Sf9 zoSG!}b-l_ncPPj<#HR!>ljj)s?0>{GTpnX?QD&>nk;ILvm3S}$&E}QF{i=Dfa_s*7 zuY64G_``NdA3fP>Clhi`E9-|jmJw*d95)bS{hCo>hr9h_nCj$hTnobOA;42@TM;p3=Sl-f!NT_`U-72HM8P zUbp(;KSVz7MfGp}_`M^a5d7v)Oc!Z%=$v^WI+5krX`MXR;8TC)_SnH?G-ix*=mcT( zgOP?PjRKANv{TZti*oNer8f;*!n>{)@lp*{zb^I`d7ST+()et3TX|Z)a5}+%bNQ{{ z(M9dIlQR13onNo8^WD&rH$3P1zMNMb$Sk#W5@fDKW{7`H^7>Bjb}#LlQj~=+|GBL{ z)8(NmJ`~v|H5q8h>!Cyp=occo;+kJ-7BLtW21?BSvi84y(V%-}e%O z`Wu{*7#FMqgdxWMMy=_$d9(y>DZI+regu%sJ+l9`z@#Jw1*YKHoPuqVhigc-&~7>C zI&Wlk!!S9;h+2}NZu+!yv>cvf>wugj77ZcmwamT9l6PL?*e{g=CJ!2IacoDB2tfhC z1H(M#&}5mJvIdpk1b5Yn3BsQ>fB})7olWt?^7v)`lLLFw3!hn!j?-?hd5M|aK%%EA z?Mq5$PvB|CM9C`()5oWd_|lF3!0i4;`_CP(COLc6-+=?{Ko^%a{a#baFRDO~$L_@s zbI-EjrW4l6^Mq(<0Ra4SaSuKGzir(#Ufq>MUPcf>nqoAVN~z_f7gLv-zv&xn2kP{L z{BEHA9X~2cfAFEffSu&=PeB#k^@$FtuR_WY||5!(3EJuX(MW>PK=q?!g z#+Jw!NkGV;ib12>#Vwvh18$IC6v3xe8`wJxAQSoHgJ7^pNH2Ir2PH2=S5NqEsq^Pv zl$ccCrWAjimioQZP~8TqA}~0d`7tz|t=Krv#OeznS`>Q^6B|KWC?XYxMK{5yxSt zgnC!<%jo8BoOTgPF8Jq80lC$*s>WG3Ts|_3ck3kTnaDL<=5V}TmNr~^(4W_*J-i30 z-K=1b-;Vc5Dl-qKf~q)9*N+4#rNe*Q$!T=~Gu(j_nN z9DUhoLo6}l5ARF>0M87s6>F-^UUmx9S0zOl`yPqNl5+63@RG z_bsABK2Unh{qi0ZPaf-wJ_CTByuk?@%1*gj^Hs$Z;!dD)8qFS zKbjFz&qgBHxmf(~=c1h~jAl^cU375Uo5y5;G|@9149dNdh&g&{bGtwDd~XXj)k~T4 zB9dr1(+?(32coe$dA|P4)eceh5+@zmxCLJ{8-K;-2bn|jdK-s75YrAAykN#gieX8P z-(XfPG}}86;J7FL?}_l=WkEtxK+u%@Dq&z$z_k{%Ds@*o zuKEtSvQGo_nRBae;=+b~OV_(^VSSOGj@fo@p7q#Wn9rV0**S>yx~x>!Aef9T-q0C7 z|EnxZmp~}XHtj#+6IlfMZ5?rQTuN-cicrEC$l7@!XEv}CsbR}7uL>d(tQQ9!$T*IA zPd@ud(>PkgRRdH|v-5-d^u6_}4IW_FY$4Ux?}7>T&LMd6y`v zs;Txck|1%Rc+&#Ye;#Z8+Ihab-RGyS^z7BK_W6&a*mHo*!kXyp>}I>+WY$)1k2|qG zSgeWX7oD}J9`gq!c_b4)4D=gVlI0cSW;~0>ur7!1tj!ms+7W1o3%vK(a|e8)-J7$6 zB?K_NaSOE5f%YH*L@S1AV*l7T$=T23HJ20k*;Z~>xEs=XO~`w#I-ikE2_o76^6kF2 zUqY(UqbR)+a2mXQnT8twDRhtKOk2l1>%brLptN4UfPOntgx z&I~AVob3AOjN_%jlaOi2AMKzWqb5Aoiu0q{h9+TlzhYZq$;ndmJhl38qA>CUvVkR} z*~m`G?7Vx9DSikhZcUm^jM~z=$XV&cRKTM;o%j-hK824W564}G z1Lhc)Q?@R(>$@gM5y=qtlFP_Xl>`&Ct5HNt33EK>dL|OPiBg4DJ_sXxQTcx*hGUmp zI--WL_7gJ_7cT^D(K|q9f6KPc2A&W3z4;S#Huw2@BHp0gHiS^|8Kx&=_9Z2_@btqK zp3@fK>Y~KyULu&`K+px}V<G%e5ECxD?3;Lll%WMJ=TyIW53s&l-aw= z2NGr%=PR;tX1FZN85xs~?<5KIWX zi=yI&suZ0E4-H?`feH7vkTP1`xKBh5uOXe=&bj#yTq_J+`?sB)H+BeJX54SF9lqrr zY0wb6wA;`*kYg!(z===tcXUR=)_d2arDIu7jw5XJVQ}Bm3Ck_2C>k z7%yz%coGBC3WPt*`QC{p*sb$5R_DM&X5Hc zyn-QGAl_2!3W1*%KJdehLe$SRh+V_9`g^zGDW9Q70Op53cUwkFw!aEY&7 z{U3sXa!XpS2aPMBMs;4I-g>S6zTx>FEdaOpOf6f=w3uL-@Y(pdNtb2wx@FIf*7kA;Y1g5OCmt1{oVI;})%udg8<_c`?C`JR&HctRc`7FYx$CTT|*mo2_Lsh=ol zbD_7JvOr`F4)Pg5#x95X4Or*OZ#f1fi3YUQ!FQEN26i=)n&AlBm47r0$FL$c^>1%O z5jx~TI_cl&A?)+GUspi|a`o!Xsjldk3de*4F}{SX?xgHi^pRWBYrP5v=|3L@C2`8( z?SV|PF(uL;Qm_RfGuSct(BwxYP%v~_VyE2KwThqD{&SN^XtULQ?LBuw>QzHWEbPjcB&K3 z(K$fTrpz=g?hl(naENpAf=*s|^&a(0Tb+z`eEDtZd7v`0@MivUeFrv?4p;;s*I9>I3Q=h^w=-+hZ3^9BlfIdn!WrUk#H1@yfOy88#e^$jp-qm%af%vb!S}Xu} z+)wBq0ToY|gUH>OqkkkIxuNIx2ahpb+Q-xm#KZFeq>b$cVwNy*z6^H8tX zyY+lOoNV%3-HoG>1jpz zh04hg?@IVkJL%zL@BG3Q{0|A8Vr$ZKSYK2d*;hI4TKLXxP032Mv%Nblf-e^d#SZ32 zgKyFhbB}{Cp?n_c5Tf}U^9)>*C5E{u;ta6)pve5iCAwqjQE?jd>Pwwam!AG5M6Qkn z&yhK6Z1Dv`2xId z70tIJ_qg9$<JSuvsry`0XIYr?BgB*JZ}8^gG^|} z4?tx@tH1x!soG5om!oX68xC7}BlkCS zvVR`FPxK*u?_DEr4Ebf0H<{!bxH^<)wENvfO=Dt1Rrf$kY zb2<374q+tX)Q4Uo*xiHYU_e*^FMwRx;U{2+r79)x@BHM@@z3v6yJ5LZ*=<07E8Z8# zb+sHS4TeZ1UyZi`?rL-7^K`;c8t2)#H-@IS z!(snF^XZ+U>0+>@_}jo+!C>y5<&7azj-55r8I7%w&9P<$H14?Ra9tvN0Lrj8C1b7}kB zHq9#Oq^iI1w?HDfJJ54Tv`R(dbXDt)*4#BwSi16{Nw^1jUWkF`%Xl>js53PGJRPJT}vVVlIi0>=r9HR63JQ!wFus*zOub5ec zzg`BJZu>KPl@YXkm*7gu_J|m)oB3fZyo=MO3#?7Y%Y_v7tQf4{>mLXxH1FZ;0l(Lm5lv3i6(`P;H}r z$TyS^O0M8~y%i{{>%&dK1bco`^OBO+po{73M<9X}fDnUh!$R~X4W6HiRRJv0q@%tM z&jHURL6)LW{6Ggcxn4#>0*-Hn->+|+AKT&-c<|GX6=R}UQalVw+In4(IgC$+wpBez zG_&*!tFHw7tzP>$wri|ZxdVVO(U_RJcM-Zc#-akhj5m|%$Q`3rrm)xXA43v$d?`(kt0O`lKGd2r zG~Oy9l+`-r!?aIFLPz?*OUPuMa^d)Ut$WGkGZH#01Q|y;`2yt{WN0epuCgC^uNv|k zmj{U!^xsz5U|%u>pkMckn*M2KO_~h;dqNlFZnhpfuRBo+b@ZDi$C3s9xT*}vDCE?y zS?c`W&p%^VS1$KPj;9{NbZM`a=bFnaoD@S|{Gn*|{NiPc&9%H8qT3%jevFbsC{QJfdGh*LKQBDo^U z-L${((MW5i&(l$G`~}82X3m|AdV}crV>O12dz`~8GJzBEye?>}_H>^yx8w8)NNIVs zgKvi-eoPYb{U(E5BlG*ar#Ws5{_hAewFYWjE#*R&FW!G_-MAe*{2LR?{ZZZ00vc%; z2J(m_olI&trEgTo&u7tpP8=gSP_YXgejSZQ;I61`q_y!8ch`8M5s5De9kvnDWIrf6 zdqcn7PH3m{>$)EexDEn1K@XExNVuOjcP~&6CeKb#NUOiF@BHqviQJi&%5YoY?L{eW z)m}#OS)<+5t(l1sB8v(ev8OgK94>y7v5P-%<8dt_g#X)NO#bt?`L6R|r}vk~bg3FG zsfIP>`J%>Ti7}2&d|q@OgZdv`(1j$Qr+2jF} z$%=Ls=p;Li!kuiMS~S9+X7G+G-s9RHN00$#1z0Xs=s#QCawR%$P56d#MO` zc_+tRYdhnee0fBD8Bi%#puCrK;wI*_sN`QtfoUqHxC-^xbe{CPnaVkyf&baNee1jd z$@~lAwBqmo!^}kIXA1m%wjh;{QJ>us9mjn&exE>csTR49n;YGRQ&HaEfh^`0bEkHez;me z7b69FlVYROz`n)vy}E3>rB^h=OY(lKC7}lN?{EbUD^Yd?C$Wu-zP?Hd9Y0nxnko{` z^?DgHn@3x7!({a7Iq7bh+RTNq24CqILHr$vV>s#k9@e~=S#lWV8+;7+YhyOBd~G}Ga1i%^K}q27 zAZ^IXE8d5HNxGc@_IlAjuYYBGchS|Ak^Kl!S`FW$w7MI<2}3cyK{$0v#YZLnU|@~? zhitoZYP0y+`d11|PU9+D(x+YB%JvhHz z1#nFt-_IR;5@DjY6?&@e+haW)K)S8LkZ;Y+M|u2(YLSaO&}T9=#skwk;rsSs>x2Uf z)o=RT)!QTW*ur}mjUK;aX4az0QGT-h{B_V`Gf+M^rZsb7Wn4;BXo&dvV!sGE$hhAl z9`ge&j?Q=`hJyx@dG_B6UpQ$~PEAe@&AL>>6rg?%aY0|mxgH~@Vm*9=S2@p#<;>LF z{a}Q2P!fI#M4aG;WbC;=rNVB=Ul;h20WR~T6yk=kVAl9qdFdm+3!?FzJTxzpVJc>*I}5x!a#X0R1fTLC?IWb?NI zIdd@(u}e~(Ot2A*iR-Zl(<8c>9DGnJ=k;iEmLTpkvzLy{e(N(PSqOndw_p3mo;j0lyQ3VcbB98v?~8rBeMFir_6ARdB0L#V zh;Dkq6Gq-V&>FC`v~D!ixDUqzeki|gf$fxT2%RFflMM^ZAFcxPb#*^vi$J?;ohk6& z3nST%N6F*YWJ!d1saW(!Y#) zl=(A%XBf04NT4rZx}6GOZyn_PiPI-{tJVdQjiL>gmQ1fq|7J{lFve(Bcb4sd1R{S@ z;>)^KQZQA8(*;}{-+#XwOP&9KT*e=Q)AlW&Fd=D3LNQGpYWgD_?hL@N8exFuxk)|@ z&iJ8xCpSVG9X@Sdh3}Q&B@Euo{xn}hm>GaK+!hAtp(;GC%*wjNzo{x2(6h-hseHSh zU@Wz6$=-}*E4gvIA}S!uGJEy1=d}*2eiaitXGD+7;4A@A+((R|B2C{$r}t*%u=zmsBX6dSljQI#{G?DNxn6Ej$w1u*K|0-Q~VmxzqDiM?~(@z zznU?J&N+$0JuVr72fG6zIArs;pfExb8BIbuP=fC$gbeJcP_MZOu_Gz;dyLD)m%hPo za5ElQ#My9+qkX)$OEWvVnt?4M;Dg*+>@hPKV7T^fN0Tfds%}}8e=Ey==!W?P=|is~ z!=V||CGv;MzX&K4S3x8($J0 zVxNAJ;64PFzZc$ye-6_|c2%WLev*CI|MEWT`B7ll#=FSiP)M_Js_}|*9uBd(%_%`g z+&yZ#V9d`Q@4Lj*33at?9Nv-6Oy7-etT%Bc)LbO~28 zDL~?<@bG*ENtncm{`mcX{T`+#(+Cf4%9=%4#F!(^)6P6XyZUPRc+Bq&VNrOt@xKcT03`pH0KhpdjIL{4Y}9e?u&^Gz>^l?V`o$({kUF zy%37&$=|wuTJygVri+IHyrigZ^MOr;o_fvhH#?&t)v(>BLTkhHgCGm{(CjgT-MjL7 z_5?L_+C1o1HyH9h5E{fS)0e1bOWaz#%8SVm2e5Sfd_gUEP)44EVYFH?NIkktRpSG||%Ijh`)e zEHbN`5fI=xl?#%DckflsbkRt5`Gtff>xiT^*Z+^rIHKPA+Rv&`#zBx9Bvi?ss~2Z$ z7iuvm7c6B42WK>c=Y`L4)Zu8x6fu=SJA+IOe~nOCc02Gcb7fKkXk zOu1^8h+%+RDl*QLi@o}L>AD^hyIWr1o?-N$F**K~T`i+D2=7-3$x7^3F|#m*&EF@G z=Cex;O@{gsrPnSH{i67k?00fxD~iXo!V6X`^k>Dl!HUBK{W{g)Wmp^R9*)Tik**GV z9~J=Guht)=2*G8uh&v#z&(ORrwbDu-lz%;+h9Bk5N?y#_ywpGexo>&57b))+r2qF; z^aGA0j16`+sjjnj*2$v}66uRHNU9-Gkky|z)O*rw+V>&97^|;VvC2&NB12p&IOYy{ za;HUDkjs7nd(wz#>#Kb#pNyLRq2R%YazpQOH-(=f|I`^odgA)%%hA+KIT`lGpr% zL;Uu~_2zA7+KSJsmOXzftrpk#SIzfObiyTM^sT7kg{MBxCJ+T(9eMww#_>I_ZwI{% zQEgbF`&H~=rD7uFf>0^&py2tRB7~9?QG{F=_>~}l$2Z(ewWL#tYid?{13C8! ziD##?!?yGUegrIw=0;a`F>N&^^rgOd~Ql@%p``I za^o)HSPFl0H}Z2C`46;2(76OqO-cXk>PudW8sE*jU+7wmW_RlNmYYub@P!bfK1fl7 z)g0wR6JZ-};j3c3NRWbt|EN7pT-zJ?)OUf9MgX-wfF45hiSuihK>mGPmhGpDqhq6$>IP*7*lt+!7aGa z9N3G`t+_wG=>S`4)LpGV*7yKcySmxW{3yyCuFDf>eolbi#n!WY@hGgJvI2)l2$6+J zag+TXT4Q(Grh;%t8}X-taEVQI*@u?UXi6|5FA-Q=i2n9L{u zLDb~ZS7$%VzISK*Kf{a(Ye>sYv>OA{@`@=>J8b5!)MTYpP$w62LU<#Gq! zq5$UP1Pt0CC{IueMjY^mN&Sd9j;U+Ct1}f5!fC>z_3!g=+--bG^1GKp3`ug|BZ?Dt zBdZAl$05alFr^?++F@!+&HE7dQ$Q(BUI2QW0gZF?l&Q%2oSUr~q zZc}{Q_T3~*glYI8!%)I>dLc9XGuD4>;6L{l>&Jq&FuFN(k~!AKn#SY-9xTm*=1xOeh)_0>WaDDrb};uik`)OX!EZUN^(YeSMQshoSzE--6FOg8i35Y$s zNvQ{!(XrfC(1XEz~6lx&~ss-=Q++d z5!ZtR&;>9!+qb~(Vg4dh4EFY_wq`vNZURlZU^j)6;^YYUN^~2Jhjxx|)uxX&*RVEY z^N!V$osLEfo?x8T$};ZZA30-pX~_8>HAKj+-;c}Y2|Z0)A)Me2%{pDMD!m~=02r)H zwa=;NRxT|@UnGQdgx@td)0=L_TCf;j!ndS+A0R!2gcBR9x9O8N2%vcDUYJc9k8`Nd zOh?}leh|zmDCzYjOwX(6i$Dn>ieW=#EWWi$KLmgg%3omQw*#D9U^20g31M^ju>0Cy zw7PN{U6@ZKiq&hgR=)%}M#YUg@{u#jVK&a9G9^zuu|zI!ygyJN z2rbqz3Bm=55HLVk&M3{@MD;^9(TJNd1UIuiCGCc=vwadHq-tMZ8blBw#d;66jGVgg z4Y6h91}p%Z$S@B-I}8c|LQ7|ZVi+r4242TzV`8o2-uhbSE{o=7brx${OZGyEE2Jl2 z`DTklx99bg^&cecEgFJSzbUbdi<&f4gU-mpRVtl=cRuYo2M$}?wkBwOow3}0&T}UW6kiwapcvmkAX+@;f~7} z{MQ}u0pt2@pFZ+EZgtM5`4EzSfS{HM&(%x&9)AG91FUX54{$bBCz)w<$88G`<}nDpyg;a<6uS64dghKFh|R zFs3>)54+XAIyskQI@j}hB<5iDV{6C`?N#Bj+PJfkgHsb)uN~8Tq3C@`LFtFJtErG zy8U3LgRG2-K1whx(vw&rpC+Y=I}NuWz(K}sT9oE6j2{L*uwvm|jSVrB6v-4_RXT0# zd0&*7?1`aYMgx@CYi;QU3?dUbx{h%aQfG$(pdY|o`kk%`0=eaeKB|P;fsb5%d#k(B zSXo5witv>w1HPzIcW#pizfvR~q@S$_TAS5K8RQPU>N~fu2oU8+So$lcNOf2g0u)Uj zTL(H7J~f_PlC_54+nJ>viEECip($UJKU+zRZ`EVj95*ecn9iAg8+Rd)$vLpfMFdz- zOqX;!Q+oLQi+L);?}Cb1%{%E(!|e?1A*`Ifs@d`wl-4oaID=Waul2l)*A&h$z<%ZN z<|Og{C_z){zFU(r!!%0oM{E~Qy5S23Ww+~XACX?Ucr*?zz_$atq<&Z|I-z#LKscX0 z*i^IErM4I%qZESe6V+DPATkP*Y9mR2+uuUeI=n41|GwJ0=I;D6{kP)hMw}0JVjG_^GLX!vJfgR^HulUM8fB~O!$lnYg6nMbue=iHU@u*`Q>uE#lr_jt$_ za}`e#e>}fFE8}m-{0$axX|agxHTD)jlO$kWka45M_k)D`8&l2;LdPsi2ighD)?z&= z4U8cK@yCGMR*ClQfEL?1V+#4!-D!4IC-D$aiMPFT5LSS=d0k^-H1N3$K*eRiuamou zgC+whPr!KP^5G)aQfpF_P@*CELQP-=)l?yfhXupbRuRF>gC65K2)p?WjOK_V-G+sy z+QaAp1Wrc-CqVo4Q|BPUSDykn%117hd=-+u9dvy6<@m$R*EJhF37LK5e&>v47V~EL zl+m}T=NULIl@dQO2J1J5UYY`T{R$1qs<|MZ0nH&AU0z(4p-^+}+n;46^o1PDcb!b5 z1HGoqefMV(grku>vfAky;SiKhrk2i0eX7sSgDQo&^*y?*qy~(#gI;42e>4@H5G_qJ zMTnkI(qe?u7E1v6GBJ-QVJ*>`-Hpsrfg~Z0F;gzBtB3l5gn@Vzt%NWCFTKJE+xbmW zdj#hl1`1=5rxmf0h)`S!+xezw+X*5R>!QQz5lvF+de{c5l8b3FS2EC$ipM zLXrw^D1z7UVVXbI@3>K_mwZ< zsoVa3$7H(#iTg$P40k-AH_Y}1#hL3?%(pP}|2$=(-#>c!8^>7KMx zMg;)|YZRH+7qZY=_+^3+#S;Y#`uhm3CW7bxOaxAVZ&Uvr!ts?;!MFUxI|#2&_A>^T z4{;llQxT2D7pwMQxqpFSenYz>_@JChWeqWMcEz)87kd;lG zAfnQHjuW<5!w4&DtCDN1AhF~~61M}}rcg#UHNzs1PhJ%2ElI_Xk|ZiTcsRgY#v)TA zsxG+MdoL`{U9wV+>5FJN5j!&Yn=_zLH&)CPI9tz>6AAY_-($oXTutKW4V5gtPM2L= z#q}pO4}h-6&(;9=?o$jv$g_Z=3`@Yjy$&O(n(gp#5mX#b|Kn*FtZD@Bz?-SeQOQ&D z2!XajF*^|GgJ+Ftwk%{5WKnr1QAHy5rWpApsBIn&k^!(8KExY1s(Tx@F znIBa-QSu(zh9w#HNXYWRB7*wdzt|T~5Zk32Fmn+JOo{`RnLq4H z14w2Djt=xVNmP^Bb$rJfb`_JpX0zD;+b9oQ13t|F3rjmBSL1GU{M#r*; zdU z$*`RuI0LLLCa3PxMx`7^{f2WYHtt&TlxEu#ww{_Nfo+$!99kR~b+Oz2J@o5F&MA;) zvNLd>V9H2o<~4UG?(EK!Pq(%*jJrLwwq|ffk&&WCfrmTLMIn3&JAhhbeMB;s0{G0O zt-=reijvC)Q0Ai&2I4pv&d}8@&_Jg$%`m?uOKT|zs-wj{faWo_LpujW`|&| zWJ?XVYAeze4Bb~Fp6FaemaxIM)BrG4UTX?V?XXjW78VaXpG1K?fJYLfNGXDnB^cck zcqW&R`7**w)%Bs^n{YUGxr?l{J>tE?Nw{-jna8_?Yt(&8XokMD{@@@9)%a0}i?E;l zEp_U*_;;fUxwH~~OqlV>NLACxPo3WW_G`d+f+U=v-p@u1dA3&a$20Wf($S52dxxG zzR=2a%kGne66E`@EI|jYXzX#~{ct1=MQEFBexc@$(Fd@ea5>;QErt=t{Jg|^btk)P z#(e9rw2R58yN|H7LDl~CN;8A*wP;oj0qLu{kp+fxEGx7*;Ma`?ccA+hOy&5{Y7}h}U-i?59M(-i(}h zcGZEvajn$iM6K61Sq~6(3ANl#V*JRQBO*-}WXHdRr_DRsWGfN1+kzTl`yJ6B1mWl6 znz$GFtDSa2tsg3vE{JScg^EFVC4SioKc@)W+VXdZyPnJ&Yb5hG`fuwUjhqV44lgw( zn*Y=9Z}1l0Lfj|h8>}oT((C*V&yLBlAk+;JzpS|8r2}9M^1_xXx+~Y;hV{Vz)z_b< zSitcm3ET3)qr#(4U38{vH$ED%FZO+(`3Q%YgUFt=FMfxi0v*I8dcMh5FNav)>dCq`K*y*f| z|Kf{M+~P{eiJ9Z`szq1meDXx0?H3Un!`w$?gUio~&kly#yEQ(W?%0W;8C25);%-za z(4wD{No<4^v4zGkutRD`Eo~BndBdbwMpn+8SLRIszCHD8L8Kr+tuap@w>Y;msFet^1;G6Z*bfyFAlDM`y4nkN$jzy_&x-;eU{+507tYm^u#)^M#5dQRBVO&0oHX0S2 zcz(Y)B?dc_r`T=RSxU39se7`Ut zf}6JOi8R)^GFeZY%)UJ&EXHXBFIlh@K|^QZKP-^&%Vk}@ETX2C=D>r5(ifkvnqcpf zmp)9drC!*4ZYfZBU`zjidV4Tiayd0rx$?k=#_Q0mf!tcrGOC>WS&lI6R6Wj+7Vf!- z1PcOVHe#W19O+kidd!p&(%SVY`A_as$y^BfTSk?fFef*y7(9?>{<7v(a;OuQn&a~^ zP*67iimyK(Ioe<9hPZPO)L(m5qRx5a({JSBTiJaX|4Q9LAY7rEcYZ*ChI=49;Ya&C zeFxtpVKD4GX3|T{;O7xW<=@c|#C7h(saPk%V&zFt@xY{4FKfG`-AZi+`842>!`1|m zovn;b-9Nx=LXcP24MMZDSHJAj7)lS;HE6_OT#=*GIeWuz_sIm4n0xc&`}%R5RdlQ( z^Kl-+*a*XVz(D$SsUxB7!kOWAyF*O}WBmuLnU^sI75*dn$v?BDdg2s;obY$@+CeD8 z%X-|=6aBXLD8>6|VS5th$t2w(tTcM4QBbkA^i5>3vwNtwtOMwX4eF7)BG)WU z8UB!)t5=LshJSVrlx;TphS93;F(tR&W?OfTJLqkb^sjW^DVI@SKfl(sUbN30dnMY0 zph?ksAMoA$R2sN^oO$w*8IhAPz8EU5*7%jCNxMMh@mxgZ7|SJ)jHlL4WoU?qPdYrRj_`LvjvXgOS#--1M}#6lr*mPG&Qtk;^w~#0)&l{%B+0XyJP+ zV+XFZCN71z8U)c4_e>qT!2Nc32&t57BQ--QeqsS(6x=dVU7bx79J*UEf>6yF^ZZXYloXhLs8oWrDgx66aDzw&LU%yZ z2NNJ?q(5V-oc(~J(bOHKVAxn>L-+0)GsFJ`u37%_q$7xRS`6ygQ*+BHIeG9ILzd@V+D{*st^% zN9@IU&Zzdb*^0BvcxXl$2uQ9g22Q^ zI+x;_i%_&a@pC?-C$Bge6a=PUSEv^bKb$d-uD*95T)0GuRYBW3O4SyR^eP!j(D_$= z^#4Ii`k|N;DKnyb-O+E|RS~kLQSOM##cyfuy%N0!pkC2gtR2%Imk0?hIbZQy4E3=< zM+mAMRKIz6C_x9C%y8*~g>;?|(wT(|KpGe)8A{z!S+ERzjSlUw;SK5TWQHYU*V+! zln(*;YaZmY%c~FVMYB)UX3RI{mx69fhk!65+Og|LPag-=U@o$^S>%Su4i+G+-0<`op+O)8&~%SVI-Ks$aW<-3^?a}PaR%tK z)p3d;O+8*lH76JVAznj4)J4R75aQ8`(Bb&Y<=QR#$aybyf8C22a z^SDB*#yDXNK*h}ud%?c5&L4If^4oC>f|ngW(G^a>Gw7>gexhHYHa(=v7eYZJDO; zD*i|?I0(`IKYYDqRFz%WElf(cfFO-XhawHqk^)Lemq>SaNGTvCph!!1ZMsoX*o1&| zcS+}lv$pWO=e*yKZw&ryH;m!9*A?@cb6)FKx)WUTqQCF#shXAmV3fgE>^UO!&ZqY0?uZ~(}(^(v3xS#Bk@@nM$-Xp%Q&@&zq8yCuR8c8 z;S~8yG08g%}NDrnEC@*+L7~%6yE0NK#HL*9b3$F2!-rNN3>f{8M_nBYH z>Ih1mcBu*d&j3K5EpoD7csB}q4$jOktZ_g0TW-eLKg7CNYx}_=cDaGSDz$q%`T(fr z0{qkUxaJhMOc4Q`CzY~c{Ps^}50E7U#8IqkT+`i@JiuW%S9VX@j$LD6t(HS%2qeuH z>kpgD93koN50}+&MH~A13~w2;dA0#{OU^;KGzuw;$Jq_+h_0m0hyCHIt1N*(nN(}T zSG4Br*zDwt`8rkh5htQ+$_DMn8B}L$x8)9zMAjPDspgx}F4qG(eY~@tVWj!oQI;!; zk~X8SlQ@}|k{9C%@2w0k&eIS>mXDe-yKk+e9n%b=lGY7)?Rtw_&l=~_krv2(Pwaaa zXIf8MBx-k57`1BB?hWOA6NhM#+yUlVkR=b@?B0;w;u;x%Jm&eGh;Jjp9}2#`RP03j zmr-H?Wkf0qYuQffGdQ05!JU3&h1WV*vF`fyXUnXWuTDl~jK+0p?^6KZY>zUB+Dbj; zN*Oez8+2qo=s~O6mrB9>D7^7Gs`vcPgX!^OO+^=}*WT6fE7DD%8|TqftsRCt$?zr% zX^5}d=6khK+>(Z7#Q1A&@9UOa08_NsBtv!iN_0m+^y%}{UMeEm*vYM2sI50eW@EH+ zP#emvx&HV2O=%&+$>+m{#1+Z)=(mOL zLM9ypGsPTz>v4uD%M=}&Ol2Gr`w8h zduxmp);w}l%Gl-FT4fTjaLPoE^_g-vSavt_KefR8ZP=Go(_XQ#q7MaWy`tP9PVW!q z`|t%WPEVhfV-5NW25E^tNh7@t3$R-NIP)ZB^nV|v8bF;Gx<)DU`}d@{ionN^8S=Xt zb3d=9wI|UmV|&ZRGWCZLRS0Cy-*T|kyqtjI!)uNDE0o#%*1kWBu}p>?%@SR z)X?qs{KVIIIQ=tsK2_viX3;Zjmeb-NVky@}>KQ2r?7n=8q73%^M6Kl_VpHN`YoZd* zWL1KDE9m(B-e9aH5CcQm+{d*UcvxoY(Uc1qd(8xY8H3R-9uKA#l@$(h`)cDXd~7V$ zNo7w=*$a_vQM@6q{MU1buAe<9@%wLqY5dgU-~Q6W5+xF~N`J*|%%O7+n3H0*CQgAz z*8X1f|B&rT)?$|y_>uKwE%qA!Y4GLXInd4`aNPDETDT&(tka5g$3%|;vb~@2{Xek8 zgztg08%uY8fE-P8Kv}F2HBv_D#d}x1fr-2|(kUS0SK(Iy6@R%6rGY*i=Oy*mfIlR~ z>h`VW7dHGFEyUX_wfgL+kIj_`h0_0!XBG><$M`a7facWI_OJCId2GwjoMMGd z)TSETtYSa<_(ZBvvIQnMxE%tvT#F#sLpXA;F+ZOqne+RUs#hMS90(tQ*u6P9$8??VU9YEsNDq; zF1uP^Uo=wAuTN!>p7MC2dlUB>pLRsMjMe1%r(REI;{4b#IVu~`sEKvz#BkZ-{=Z_g<)G!3zDBFEAC)7TRN`#(fa5&mAuY=QtWL6X(m$fl zoyB>k<}*Er8g$}8C9h9C+h|Vj{Om#xev8kyTF(D{hpxHo6M10DYI-AppYXO;Zv}r& zF~SqiU^~#GRB;DmXcrff)v#<9W^*cDd+sF7b=o=($?C~TyGo8GCI+}RiftBW+v8rQ z+Rc)|*XP)oKkW_9-9=FYAOD?kn_Dorxgb?a5k!sa3F?e|_}#QG;cRBlH}vf6EPeFV zhyyy@AWm}=lexPQaR_o3Ug8Bp4IRZTl z+bOhdb|iK5)KtI#LBK$aVvg*C-grLaZC~Hqsur%jmy>p*mFvOJ^cU%lG4gWprdJf| zLiK%BqQV$ZuwVv-zIRDtQ$*_l$`9^MTEVPru6SZX!eS-#xvKbhL1N#EgoFf=p!2$a zR#p~QyxBxEI-7PC`ke3Oj$MfP&CR#9R4-g+X69x^(m}5po2d{1r&agy2fWq~E{?ZI z2YKMDjreci=>r6u(#X`_|w7!u46^!i=zYT6pw1-F{~bhHkriyQWsY|I!T#?rAtZ~g6DQI>$aDTpWvJFjTN zhlQ;BiIrcy3tOaj+1#_vm1sD0YpXM1NER&$w7)-YVT%i|CWg=M#&Na36Q3u?bf}cQ zN<4Dk-VWiVLJz4!nK+9)@b}O^_&2T_g>~A1(v^W{D9FY6$i;rB5{v7~d-6r66s6O(GQ3j%K;Bb4fO?#{tS#ekUxx23OU1Ky_jM@P;S zBA)kgLp$sd*Qx!k2)N(<`fJ+>;x%%%$xCK+wTu;0>I3}AR18_)tsem7@QfPw4p9B? z^@DUVcGQoe-joazc6kl#n%7h~c6Fr*^iUt26@2Fjzn1o%U{%;tyGP1|cdKHMbq-F+ z9&SI>Pt=ji2_4ORTYo0PwWt2%NGu>^t3hpjLJc~VMv+lhGhzv z4aaxDVz2Jgj=x1$VA&R}HfF+q)@_lp=6|H#_iR|%x~gk3+R*wUw>}0F8z!Dg%&->9 zauYJ3^@`Jx7RkQT3_QG_P7D>X8O7hI+ihNsRp4@5?oJ>78W)Gmp69dNO^__?K}i21 z!vCi+h9~6<1N*J9Vt)I1goA^F!7?Mss|{tp*QJf>Q(MR523?G4-iuAJRIgoeXsXC) z3m&Cl(7XPm^JfM&(GBqewJ$^L1&sF4ub_S{L1)LS<_~P%vT!ZG{rC8FfZ_R)c%P5VH09fBqoJs1~ zf1EswID5FKW`uW|JJC8>LtmjqW*2bYlc;95OU>JMlzKgPUB4{dL<1lVUjJKQhFKT# zd%2S$Q%#0mwT%@sbb2(^`*D8q6ugwS2m$lt%;%*N9AC7Sf^xB$Wd^DR{(i19VZ014 zvJ9`}vhCk3$04q-+unRq7p52EX>jg*-zwnMsov!9F@Dv=!Itj~s?nU)Z^!Qi921^_ zm?s+7b({qV14Bii++H2=g=OxI>OI{RrddJ^%j$bCuf`)KXg)}Dv@wF_b-Mc#joRCv zh*8OX>qAsjS0E}@pfBc8g=yd4{VwW4!78!6?TN~vEV;OJK{B5wJ0{kPKR&QLD$&zM z@Ek}Mc)l|VO7i}gj$Qu#<2a1N)qY81<8>v*(w=0*^`xLPU(6u51$&{!?9Qxv1@Ccw zA_BJtAC=aBuply)=&t1jKAz`bZvPOh3Q*)jd^@o95k=FiljdIp1=sWxfn9__01mzs z@e)&&aehHLou%Z#Tc*q)GLH=m+6TNWZ>@5QzxQgu;3(mIJa7ZHJ0C}SmYKGF$7jTX z)n|Ge3Q8@#1v@*fN0Z0CDGi%%pN`$DqC}~pM2|_{@Ts|cOQkDX6y(&!lD@7YW;MSI z?NiUX z7hDr0y!o)(9ry?P9Iu_wxvq2@x+JMCb@6~kHi}?jgY&F~*_=^A6DMZY?*?|3c5_Y* zGwIpsl*AJW%FLuYwqy6cns$QHGBB+0_3zBJP(S3gRyh?+QF_F{VASf5I67O1!@2kKJ;1wf|e8>Iac= z&X%h{y#`lWK0eL7_(DhMsPJU= z=x~Xi(B4LuHk0@1?hK1=5o$2xTscKBTS<9LNq+ZtJ`w0Bxt&y?Y7mi~7_Tgdr4!K)3nGlJ&1vR)SxHq0II0+y6NJjGNb-enZsrSul4$cnS2B?>p#Q zxAVUt+$&@4P$F~7y60ts$b|$g+T0>H#P{gt3v2CKOY^zy0_>Y69Hsc#mn*@aW(&~ozUNVfU=_1)6 zJdS-*Z2I{NJWam~iXXf4O<7Hf{CMl$MA1W}bo(Iw^zdF-(Zi!s$$zeboCJCg9VV2w zx7!r3*pv78Q@iiMK5gdbJcGCevpH%+k7a{a&eCLD2`fekz8$PA+#p%=rOO})g+qy| zGbAcoF77ccBcn`zPOv3JH5f7yERsl4mLlZFQRPw4u-ka3r0Y6iYSw54yEt~=fs7Am zFO(T|sQJIqxrvdX5;rnB_A{J-SZQ7zm-?xnzWm0Eqm6!Pok;SfX{)56kyf8Q5B9eM zukdfBtHW@p&->;@7zcG@9D)>sb;RJ*YyoKse$(sD(}DIS93QoYK;;s8WOG&TRj_FcK_>kEKc|L{i&B#W&1?R!Wk!7mYnLONA9V`(Kb`n`9303 z>O5!7t~=U|=d0h$nrm)sca zRG3P9A==VwtyA(J3xtA8qlvahks6dmVO4_1ZyKtIG8q-Wq$>$LAJ0a0(ScZI+YYV% zzScV*R`MGQ{GD3ph~NqO3%}#CEM&xrQQeAB!|K?=$y3RCY<0wvjgwQpsHi}Bbe$MCAW6y7^xTee#a@~~(!s=%P8MoS>Hw`Q;rSiMNF}oN7KBskH0z+W+@v5QFu*W!h%@gIRp^Zg*C~G+k^X zNZSrm=;c>5nqE3?CYR0)XeeI$QPhSnaUy*3@O**C1#=Tnyz%HMJsfv=IV`4``7GklE|!efGHQW5N-+Q??J(C7Xe2rZ!{QMsHZa88L$#ChOvC8uLc zlP1aDy#r0;U;}sM;1ch|ZGO_sS2Y*xNO^JJAoite6UJ&!koL8p0*swV=teHg%e zDtm{z0Pb}>v};^|)sS2@oz8m2BqoM3tLC(BI2WAiIrcC-5OB=8*z5nsXVMmkI{PGk z?RVhs$;$?}y-%M%-*<^3QS)7i*ZiAyb0q`Q!CLx6#(huwfezMv9X1m6rMc@9KAsms zK5wu#Eyr_Sek-$Ikg&tkw!67(x!FposYW#4`C+vaw48)An5gfWkIC=0K8QG}eRF-< zvfqIxI^X%wPO2|~U417Mm$H4iC$1@A0Zam>D;V*b;O(HDFz|a_3G6!df9E$eJ@P0f zpZi|bCar;AED+uKy_v6?TW~WbEPR-@6EGz4+pY!1%WKUKYYKL~aMjjMIvA0d55=SI z{2uk(vy(exr)CWF(S}i{Wr0^ZIx-LE%1yciqeeW*g3Zs!@-eNQRmI)A>F zCQ8o_MR0BsrL;%F4AKSUZL}RC*1tFlz=s#6MV$GAJFcM;$gKTlcYKtgH{xXo50kc_ zCh=tYn!5Q_VmU2q60LbkGq}!$>x!Zxw`>>dzndG|mtZeRd&CCD+R}Do=XeJdAeu>dW%1V=!a#UWr0LH=(Tcr!QlPz;w^0m~R7Jf4ORd zLT)Pd=k+{CPw2*>3|*nydpCM7#UNSBQoomzXZ+xLls48+y9aM0P}l#-Ky#H%Pzj1r zWycj_ejwW+o9iT?QA{CxroJbCvW{gM5h!b}x+iTV2pg{yTlrgd!n9^0m4jlJKasEZKQf-S*a5Y>{duGMbW z1-bH8AxYV5#t8Mi4ZpmY4B?V@WRqyot=5ag2?mw<$U3CkK_y)Y6p!%_k?-&L3vnW* z>%T6a-)`mdYL#4xkk2|^m>Rs-kctn^6hWD})AD@tw|g(ivbkS`TC&!b;QhysMcUsq zqB#!Tr+yJSUJQorx&YJ%$H0k9e8*R01Uv}gJvu4l$9$lZo-^pQ`+~-fK4=8@s|Tf2 z;(}-T;m8wU&FkD{4=jlLz)o|aG}6*ZJ%u>(X(TuCg~~UA(T}%#vA%+A)w5s>dH70% zJfAEiEwbui^XThu2vx4_rLMzvD}4+0hQIS(&BjGQPAwS4x;i@xxT;)ZD`#vqC9C|P zNjz8pxOEPs2<-!;3(M(t-I;_#+d+vE_0od2>95>op2{92-leV=2jd2Qk$cUTO2NVX z@3Hx`UcR^uOt80|NIGat|K1Q!AZDU8?V zDE+cdVoDu(P<^eqU-ea7C5bQ`b|%SVWm+*R8Q8a>&gMf@vt**Ec5srtB>sS*rf{Uz zZO(_ZP&4g%iFjvu50C{O8*;~=c)z}pmUa5;}$vwzfGM8<&jUT;ihl)`PnzwIv75g3=D1jMBIfGZk-sKH)UM z`tz7Q5b)^#sgQJhUr7FrqBji zYR=4l7lzGrc6`)awh<8wTm!yDvIDPkg}buc3a_))hIjf81O)T-WUb2cob3 zR!uDbtA3=4!x{XIL>PHa3YNpiv@RXSpB$DtX`eh9y1Y&btecFyxmpw5Z$qO_u1pX^Nq_k`PB24&nR$cH z3QR_)Uqtume2}91`XBEG({e$cyZ<6rQCS?a)*u5nA(_CX`_AuJ-uKIY0D!$vywB zEUNUaNZ9)Em5n6J_ z4j($SoEqE1CRyajXwnnZrx!@{*ab=f^{BaV5# zfCAd#%e@wZl;uXlHYAsim21OFw5eQ1ftbyfi6pK*f7{TSa$%NsBY`86`F)c&!kW_3 zsG$G*hf;a2N7Ps`@^I=@|MHS|UI`IqM6+U)vC@2rXwI$(J8ijvVH530y<=A_ZYnJ* zQf%VHM_k_wY@O6bMMdrHTXFQ*65MM%9IUp{*`9=8$$X-CWhbhMP`^3-0#i(rRJPo=C2Q*2& zIQ+RgG>=~5f4FXx{DvR3Bsop(tZw7a*D#wHvS~WtZP%68ef*Y(Ica6*8&3EQ$}QUtD&*MnbS&5@ zW9q1x(#DnC8ji3EGH|@@kUb~BIv^CzgZnDPRN!9uoZ}TPy+KNFGm04-v%)7Nk2wj{ zR6JN$uH)NP7ks^tn+pL)Y$>hf=1G5LF7bM;ce4mFF7J0+ws^v>>;kKvCguYh&fTVF z{a>put}lzA&J>r0|G97&LD%n8{y8C$B`q!efcqVG6+-3O#bMe_1Z!#IYnbY#dlJ7x zCSP|Us?J*fH@D87eu&Xfd+VfJ%jId>waHp9;|nV%HC!=G5eKb8lgTQJ*?nzuPtZ08 z+dC(Zf2)F*X}XmlIPc9iIe@Xd@QHS`+tK>a?0gj`t*J6}uj!PkqO!6HCDpL*B;<6? zkDA)|EWK0(eI|@siH(_q0r{g(hv%nDj0G`(- zJ7|Ts6aPFMFnK$b+{t@+@$iY?c=6@`6zc!&j_9Ok>_~QehtA0qd{!%)6`HUKYWu`g{|(3% zu(C2SCce}`wjkXyGH1W9x8a!f>pi@1-&Bz8!qP%36ia|@)+qr zK~p1lrfR(AN>L;B>ei^tPt}`0hKI*QN2kwb1-nC{BnwA9J4ND^lS|0`^~;S>$BG1C zm_o|J`zTdJsSt&43YTuSwj~#CuU`|s8%WMq!hY_sh|(EFjThRHF{{b5T!iW_f@rsM zWXWD+RWtR(1%b)n%dt2#0_xr!;2QA^};?M9VBdg-a_tLGJMjK<0LjL!iN3sBdpGv;BK&U*oH7dLGVIsTac zamQY3*Uuil@wy;wN7Un&ibDgE?r-NX0_F9EtQ(Hd4N=bEypeehRudbsPScBxLH0|D zXM@OeseN98&I2UrVt5LFfh>Ye6P=v>uLlq~iJx*~#u77#l~B2Zxx3xsRHyCWfEk~e za)Cn>b%YV`%tl{HO$gD$*B~tX#kxTu?(KqsEzKTgzCUKE+rK3=yk9%Og=N0n*ek{5 z02nP{aJ`zcFYaS+|1m*L1ntW=Lr6aWEIKYJNhvByDJw#?hSXT?ohF|Z&Sat5LR2#$ z_|9^27_QrYGTMItK%I=K)N*~Xb+#O*JlO2x<-9SB3P?#NHa4|3ZFcV>J?(T2tS44R z?{yxe-ihsns@91?2{S4kCl_*iJw2yBJBc?_o&H z8%d!C91wqs(q5xB)0C>D>25trdSOU4PmSwMT9Z>iT;24|*&11RQ{5b7IaQutAZRm+ z60MdL}g{!BK-0DQA)ML}&W^bsDLx=?UG6M+r?8hgSx3Yi6Bx zUE90c+rPH$-aUtItw?i2S1x@-p?ftAJC~;^W5xTh(>YRYNynY>QfiLoGvkgDHl(U1 z!s;KKfsShfDGnDKxep&RKw?qMV`|_jWM^vqb#J>8`U0pJ<(|iuveNIA;|}-1zes#R z6B?+=tXi`MFu5a{Z0-eOeHP{F<)e9TfIw1OWFn$bWc^WOX&ON&!K+Gn5z!ZkUu;>!Bqg>+CEiw|o+Idt7`)CeOsQC>i=k$L zkVuf)kRhRsmiMC_FLpyxNJ-5@AJ4^5@{h!5WP_v&h4l<;;->&X!iF?qeBLnA{KD8M&hq4gwoGagu@E;ayU^ZQ!jO1lH~C&@c}>kvjKSEQ zPn1G`|CmG(%U^wDE#Vq2sbWw_n1_t(vywzKWmd}gbJ+UlI+o=^fq)kPSnTiV>FI-I zKYmEbuB?|fUlgchZ!WH$L=cF(4QI){sj;15o?*~$c)P_aHns9@&T=%h2aF@81@vgc z+fMiSPGjh0xSZEjN~_q3YtV4Wm-UQC3)DkG?X2dSMY1MczF`Q{$~2SxQz)ugh{3aLf&8P% z<%up<*9*L4t{0XCl6+T0gGWdTVc<%(LCY6mv-J;9TS`K7g4XH1Iv(KUJ`UigpC?Ft zn1ZFLjaFO0!{!Y$-9bAk6{Quqxj)PT{TVZc(W9aXt=df#B56OaJhrRuCK%+=mUN-A z*=gGoZ95*xZ`WGRT#(PEO}DCkZ|Rf>aqFtg7@Nk7ztOSC37cyEoMz&*#b-Agk(=t- z`z=}REFQDxWR*3;bJ>XCeYRZoESS5Ab!u#nvGTzr;SMk;ElheizWH^)M2#Hkatmz7 zZhf}tl6mh#9=l^{lSHMAVuIy}UDGiM3ELYLb6qg|4duO}S4Neh1Fm$H0R!)SRH@8rtls8K=U0s9pn7y& zogem3onQ_$!+@yy_TXYAQPuC-W~_)z%C|(PW|z4Sg`IE`}(`rL--L^hgZ;L%;|=FLu|_{HqHH7!Q!>M5(^5yq+Pj2X!apI&`QCpspqD!pnv&{=K~V0e7;SU)z;UWxJ1+;udAsGUAqsFkJPl=%5N*kbx z{`rxxg8Bta6tO|`ON;uzwd4D|h6sPlKN!1>inSy-95wul9!5R`lqwdasdM1)3uMdy>cr@GRANM9lO?Yl~C#(KBplw5YNFXDk>tdQ=+2{#nkd&|5STT z(l%c6;p*GhuNX0&*$fN}=kf1+x^`w7NIg6}@L$z|Nj>jPd1g&`QH$N&bNW4A>pz2+ zsYMK>3UN<*dU}F$;svBx61)PtC+T=X3n)c>DS%}4#0d*4>KVrkyL#q~ZOy`?SeLvc zpO*_P0+&Ii}A&>_tT$u#8{)^eL*g*YqQ? z_5AZT@5kHPQ@fC@_d>?Rrrn26C7k21lre|mRk4bVg4SW*=C57i&vo{$X_ueaOAv-> zBSCaBB_`|ac{cqqEhy6ou@r4n3O*xC;lC_l-m^X=k}I+QWYaZn<=EWbUL??NG4 z3RwR!*@~(xp{^Jr(YPBlj%j3jg(MU;$j_Eo0Wx&IbyjRGj{Soxj6Z@N=Af6pdwx~WDTb`HBi z)$n^b!bbNRR%b(+_Z*omX7BKcicsQ@XCwBHbFFweb!jJM!V(}@O5KAA_nXN0EBKOW z9c&5hQ4sZ*iAx08UuC>Ps~r|>RnJvd!+Yw=n_=k2T`uYqyNA-yPS&U%{w5 z-luYs-y_#T z2plDj^~dTGXBZ8+bf@}#@Ja=>9F~t?Uf~uSI?;lA6C__`DmSRpDYd!WElQqA0X7h~fb zyJc&WD3cr41`T&7OmJa>k9nq6NUf`F4Cb`)Adh~7V4+_clV~tk4`K8~sS-~R=2YwI zD=YO%N-Q@EaVJEA;gQz(@Z?lRMUB*}dkYxx2Ttzb^5(mMp$W(YC~$S-7A%Ch0VuHq zL*eqf{kjYEiJd>iMuxZH^hAQjt7k3efZMV1)k4+dJl82MHEVCnVCVz6n(k-GY~rM` zX@`z6BBsxdQYp)u8J;8>Wb2QAKUf*p2^>ju%4oTwS#=a<$Z+D63id^2r)AO|O}oSi z6#Oo7v@dM9YLM~C^yhQUP}2vp@#Yv4s?6GZbIuYGv)B|9TV>V{loW~bh7mw^y;L`2 z7)@D;O6whH7o(m;q!*-~HBxs=XfY|;2zr}WXqHqoy3NmTsV_Nua z$>H}$Ks86RMv}ZkRfv8li!c3s0T+QCqEW1!0jv$1LbWoSuL{63fHC@#;&;dS} zfFFOn0C%EvfW0&%(|s;aY5|M?Q3MYzvH9Ix8mQ%|AOgD2{7;!tIoPg~ zRZ-t7{>`!C@X7%}EYRtVv|94y7)k(iH@>-sr47eR z^d1Pg7S$=ARg3NNh_jQo($w8_rv(L}bo0=ccl#9Ot=6seTmnUs5AS0csxr-9B82~F z(IjV+8vv@6i-u_LHq$oc2a@zDkHj@)t==u0X*zz4VRl?o?ARwZ_=&%BCdXj$cS+WK zqI3JZ*9E`fC1-h>_oD()15e7|9;7OciQ!rZy1~eH*91)J?D}|-+%Fz zWoGkT-i4l0*!E4Z)lyzq(bi{aCQ%_%#s_G3DfNR9q||=h-mj#8oqPTf_$Z8X*Qw@J zkoH-`+%|t>yuXLT0$wR}eQrj7=9wfL#MyKd8-oGk@$!oaG~EX5KUTj(7o}Ue)p!Z6 z2o6K&G4OEA1Imt@GJA2K8!Al1i+Ir;L+?HxfOaLHeIg6jeSz~wARY4;gV`HLymQkH z`Y2(f82xNH)O8@^p*|8r<1Sea`}18Gquay%pog*CW~zs!nr=li|2696$qv@KQMmoj zo0BQKr9-IbsgmExgqg{ovP{-YdDN}*!?kbMaAS#W<9?@oFv-Z_g@z9aZRKQfN3=?= zui~2C%>2!le2alh*JK;i+5kop_4gy5SGuT{}T^nV?I7!Hae)_9d zMz-bALet<^uXMK?{4st34*^0@Dhn)qRQt6UG|C^X_2%1;ihTc*UL`vaT8%t$S=@rR z<1d)1_vr(_o5jo;PTogm`#mk(@k!E@hvpG7IYd^-q{0~LPsn!ZH|$}CKJAD)NBD!F zGrLM=ydGhTfsK=?G`y2iMluci9h;UGDqrU7im|NP-CITxdPgUKtZiimqv)Z^Z4Uns zf}g%G(ihR&j5Yy%hr`n`L3%jfo%Cle@uE}=qYBy*gkg|)i4E>qd4o~C*^ z9rRh@hI~{YnA^Pp#b^CzIe)c<9)BXMu-j`)OWbc^A0xkgvs(W1@n`opZXU-ir|f8g z!4Exo2kWdVJTK- z!k=NyMC*k$?`ZN)rqicm3x4YWf*F=O)+KJ>*7e*d9745Pe(%nJxbvgje>rcXmZjU`E z71Z%T?v;rD04O0q6yaUwrC}^0;RWeQX=zckk|AQ(C-K;LRKn&Y1Oyep;{hfuV->G8 zR@Foq9*Z9FgBS|w*w5bW>Mos{{*=5De&NPi`Tm`6(|=_^J)D9zC8$<5p~ppLBT&^! z;tSszaU*8(c-0K4&k0ViBu3@(sfrIjf#c&o^<*on%%CRoBefMwM|Ps z{^I~nzZKO&U9Hc^^&@a}Drmex!n5uvDtzncqb^wtR=0(?F_Y=EF;duTfj=*6(teFP z;NtpKULe1_eZh23C@(@v>^t>9CE36R8dA#{5tRuYiH0!AcOyI;2-=^FSIk1U(K`O) zhuj~76HIkWtGh)y=ZAccGEM%N`nag9cDUV;~9Q%ymvLVx{IgfAul z>#;N-#T2EjHfmh9G}H>zdcGA#>_5wQXFZgq?vYzo$>;UzBr{6~e?IFFpo`m#RJF`H zT=UFhZ`Nz?SYxL6bvEW>S7nQ-!rRjcO%Bw+7<`G%IzKClC^a2(|%2>E9Et( zpWC}{1IN2oGs{qop7bYF5WaIRQhQG zEOu+A+0~*{VNT@ppJh*jM)&f%0n70c8`=8ZCgzf^)%4mFVmkg)m4ii^>5^+*$xyY$1k3!uEuXkoK%=}eG1tJxVFFUvq=2q z`&|)+_GZKG){+~ZJi{`kYIBsu1ePg2Kg z8awGF4O15v)$T~YbN-YRz3HV4>)Wjt_sV;&TEx9S^OgoerNWGwH}vbT%JEdf$M70Q z=UD{?LCij@&b~t#g8C2z8u)!wUx2 za~;ZAf^Pd03`E5L)iou#=yTB%{Gab2Pp0&ga~haKf_QsKwPu`;w4N7!c7q0;yI1 zgZd(VxkiwI-^(D&n9#V`*hV{GqUjTAkqz}b?=$%8cXR5epRbCdMrN|d_@056pfLNx zm$Rc0Wzw&q=xucRsjib2hzRzq~g7+w|!X=K_Oc zZEjDKM2THYl&Lb)8+v$d1K^R3jbVl>u|9;L#cOKZj=>CBeSI8YhNOLWW4YHI^FiNyt76zd2y$)paB+)Xt;)X*hVm6_C zxWSf=_ollXGv4U|*3)=mG0A_I3t(VqmZxi$9mF%TLFW7?r$EL0;}95 z$6`#5NU2wW;?!jwH?R1b7Tz%Nc&~0`{YNz|j%%;C%Ev1b4r(RFS?|19i+@>D7amsn zzi0IIJvVtsbCcqCpTD->IJF$Nw&$W*)6SiAbInabqT{qfO3bYmtw0X1HfpU6(&|~3 zSbT-PuJk?KG6h2~8n4J3n+56_oycB~zTT-R!Lwo0v;A*4{277r@?4;PfbKiP9mH@4 zbe|xV>sNtWh;biqUeBQa4Hf*K0pN(`>oh`y(Je~*_W-#46fa1=&BkBI^HY4xIyXBa0WzkX-3&|N+5&H<_u-G`5CEHB6K^Z(E% zUB+#MPn}j&9E*4{q&eS+Y{%Dxf9pt1U9ZWjUQm(RIW_3fLb*pRW|PSoyTkHKZ$Qdwm7*omOE9v>_9sSrF)yA zvQupLYeM09SB#rJ;+1R#93mYs_-O45L`UMLE7vlt|K38QTZwJffXsKG#T*~`0H*y9 zX|8Mj?^9m2U0V#!-E%u61yMK4yo^Xz!qK#?9Pt@}&e#vWUy#R7MTf$pP_QMtMY}W#l{8Jhx^Dax=M?yw=uSKG zDV}N}FEP+(Kc=9V$40uNp1r=7Ba{>`B@?_M%S^x0z2{CLf5*2z!si75wj(5g=oTGG z!Fl*s6|b=4{>`v7*Faq3@PO_FRvw)cr(2R{`2;sEzI|>`uD#j}rW1#a>_l>hH!M>h z`I+PWrHvDMOS#Pkj_!H)^Ni1fd4`X$GAx?zJucZ(l!*yORxN$tUOu~=yRl{IlxHw* zcxIhQ6Hb^81xpGc|iF*MGsJf*12$ z!4lNwqeS5y;s{gDYhYr1fSdZ*xTYz#e3?@*kxeUbT;HpIYOi|AwgW7_m|yF#n3rlp zdM{ID2Y{JIbU^q}kzUR2Pg$E9Z$j^%;VX6jgy*T2bA$jAm<(1~sO}|8V+_8YsMRdh z|H5adPir*I5qz&>EKQizL5{(EVX1T&61MB;>wB@mXg7UbuzfMrka<9K4{Szu0ZnYZ z7ox70fe)qWtR^pjSu(!c?`#2WFP2W!i%Kk7er^~li{dYURx{_@a9)!f$73~? z4mS2yh2`T4W-8oLuMbkykV)(Gu4gOFqBcnL-mr~_sL>~)kqM7>OVgalPViX%<`O{h z(j#FIQy_NxpjYA{z{nt?GJk0wXy`e{Umw2@drgR*h?4T>__bQYu{cqr5GUG%>NQ4_nGExH6SrJ^6`XH0E?LJI z4|fe}#Ba6;a)U@t_<_oBUZ9gc=>loiAE-m@rPmD+5#j*M^hE))3eHpq?2@GRc^%(k z21#s=NTGs@#kq+ckCIwC2W@+W#`m$;Mp`WFq~j;V*UrQvqZ%m_LRI&lI&sY(XD_`x zwmGGqTF`zb{DqnSu@s7P8ecj~POHy6V{LO9ex{bd%QBRsx>NDdEkmCs9U-`mR;KEp zD?s=^gMLxdmCL=~C1fiPUQHy7Ssc*_ndeFR$*y|FkEL$M|(7wP{O-KUM+tdnJFtDf$x zv^ooT2}JULUI4tGE*r}JRKo6D@b0#FY_d1Mw}2j1WF2Mjr{!-umaLKzZ-B?A z^7K^6rlopC+An@_XFSPl9zLU??Ccex=^zSHcx`>yJG-8nmsiTz)-6!gtR6TqI5NBS zeZ0=W!0Ll~bf-T3c;NIkEa7H;c>xMc7^;VmCc{n9jFX&1Kb4p;8c@qw8O3qZj4K@M z^svX<%VWADtfUYTefpjACfOI14DOAON6Co)z#ftmb9;z9T8lOPwP9Y{UbO8qJ>tv) zRo-I}HaVv@Jrz`el?OP9V;>+Hp2_a%o3etsqQWnkUdgx04z5MMmzS+5DP>>EI3a~G zn<>3ie3HO~Jb?5m@y;J$51r6eVk zl$I0_>Fy3e8bpu~K^p0lmXvM^5A*h`F8Ehd;@Ml;TVIuQI^j)lsXVt^)Sji@B-nO@%7`Fb^L)S z>;X&E1`u@jKBX+Y!x-E39!EC|x3o+)hT%cN3kG^Qb%UG=#+axq-lF=;{_Bfy4f(6> z+MT+0K~v08m8~X)XiNyTftwPX20t~7RdUR>aQs7Z<2U&fjfX&8i4()9@k}nJtZ^{= z>09>|;wQj_$YH}|bT7tni|xGqanDk+bX^l;|`2(4@lU14aeY#jH~6wTD$_h&1Hw#QpP&J zkd+C1L%sLTiG|WTJdEJ+=|B3(KX6w}wg%I!KR&>r>gXB$0LguJgd>BK6{bss1P&&i ztg?JjZH{4*tI)`?*L}%Q+Vq#x!Gnq|SD2K_InYCh+v%Z+&~(TOyg~BCOoxb}Kh38= zHP413F15;UOwMLAh{~=|KN>>ChaZscusjplC@;W*j;Z{gESsJyt?#H?#~J{x5iP{vLDq ztQmkOpZ#%{Rv_aHcm9?IHn2-KWhH=jbLqH6KuH>oaEo*QDM_22Nisl!nO1RPUk`&@ z_OXmXwdm>WI%H2|_l`ITFM@e>KP@fO_Rt5KwT}5tE;v83K|Az5#E(omnoZTl zxyAq9hxYfQkKbT=#)NITU!vCSdC0u7u{kHknEbWOs5o)>kz)*P;Hs~z(2Vtb&DpxC zWq{n%b0IUWtSy9a;Um|~Zmk|=92U7C2|&$+vJl?On6|Qn5<)Af;cJ*cNvS?7*VTM= z1-iJpk%1+L$OZ$KH5wT13aB)kdH^x;D6@d}T})QKs%f-jNepcE41;$~oA5;y z(I4;{cOQwW7V))?LS@6l+y!B@f!8fWB|mGRa>|b#<^*@~bZ3=N#_N*lxe>nF zT8DQk<44c;2_YO_e#z@0C6Sd19dzImD{p9P{Uw-+TwX%{iLV={7@yEj%Hx@VsnUHc zYqtT68*&}UgB05!^n}$in|{9m&jevjy!77zmKcm|=Vs)_2mvfd9MI~DxwzEiyxr6x zRX1UgUEasPEA~kET=p|)=DDaPmC)6^SQJ%RWW5M7&Vi`msclKNjQS#IO8TGdsZBG7 zz*!dNF;)jwRog5`?zm761sgve3Es*FDn@$n-$9~U7zklQHsCxH(JCFyYw{4vm=+6F z-@&dziQAL6-8x=Jbcz9DUIa6$r{{q1)&jDvQgyn3Xrr#t-hg*~xEj{Gf%N9bMu2Ml z@vY~Cd3MZuUwRoYmTm{FK`|_vJEj|RI`H~4>qFV$IV7y=6Yk#z&Sl%K#FsxKndQ*e zyPevW*68jl2^`)BIdkWuBtwGG6Em;ccwhd4RaW z^T11E$UKH{T-__YNai|rAUQu<*hTJ2pc19Hoqhopf;&mkWgHkU`APgEXede-;H5v4 zn3d|_Gc0_?c4sG~Y5)IADd)PQyE7_46M9 zPkiu5BR6+KM}iS4Jd^aF^V9lFM&Al3!tvc zG(m@;Y!|k*Ey;OxIc^%eh#LyG#rQNh&kd^Qlu!+Bm*L`W)bi1EP*m$6OcZl+vJlOl zB>ib6*)FW}_sQ=C6W;MS(^Tj7RuwfobDdly*Y@`exOCLiC#1g^*`ePwu)r76dvwHZ z4fv#HBe^k7VK0$aUyjFC!fm-KNMFIqAi%9%7C^UU@vBT}+`Vu3!cRvjT6X%|i~PN- zW1!uph^cS~<;|skxZoMe_2rHydcDJ>W#v2=b^GmzVE|G;`9$SA@)Lz7rT(ZsbFG4I zWwZg@8r_A|;6vL60aN{%{d$8R7O+<7g>CHh(GpD^OjUI$VF}=1SWUP9V4M9JCF3dJ z@DUCwM(4FociF1<+BOJfmx7gG=u4&O>cRHblb({qRp+a3bMqsbmvQibG1b;=Ds`V# zgf1(6xd?159?QK-ZM-3{WwP0n{J@i59Y&P74A9)$Pu%fxG6;6VUMl}wf40v>F6K^5 zmS8Y@^+fGb(t3r&$70!_i&3XwLl~h(ofSfcrDfndTaCG{35WHW`$_owdqD_grH=X< z76=ZVrK5*se^O2#+7rbuKUaiM)yvuJMFflX*dTSjHnNn@21oO){Bvj9qS84Cn#vuL z7jQZD?2=Y8RCQE69H+LQQ2eE90Nw$JD!TtWG>GYDaiOk!7<#1fTVsY%(JNNAt?|OP z#MV$-`yoK&T!Y28v|5}B8ZVYutIpQH)uW!EO*l4d@ty|9t46A4THq*jGYE&EJO*PH z(JZ}BZh(o%=6U6Ymz~G?y6ZkweeAGXo2u*UWk78p!r5E>`DMmj{PU+^D6DnN^eN1q z24k11)z2Y{T8hg`va;+W?_hPn;_|Y~xh`mKS7#d=XR$AXdVtEReWS23j7CoJYESzl zWc9IyH2MoK%veij^ns{Gl)hAkF3RshS0@WI2Aj?&fq@&{vn<@_XzT3TK+77SMikdI zlaP?`b+5AC{SRDiB$-kAXvK8?`-gY|*NS6@95iOt3e#}@cR#csy4AMDzv{Bz$spLn z?i%_)1JhQ|;u+vdYCQ^5B|QT?|HB4a(8KTZE6*_krwC$$zCi;pAnfRj2XzyHb~ZQs z86XG?H+o!B?3GS&YzcjjDUL7o_ z^~-PbXG`jXL9Y;ML~&uf=QoLm^}U50>5e=ruEbsaDsELoynmqgovr8fE)Eyq`3D4s1MWtwhF}b)qfB)k!U3pa zpTNNC8r` zp68fD*-ESj4QlwY4j;yW?(@;_7hnX`$~5J+B=cYjFmiQW*0Ll^2)^FMB70hrCp{I; zzlUOcov9AG$Q~-YNyfL`u8xLJHQ{+RE0&mrT?_6RYUXQm_N4GtM%29_oVY|SwYBfik?5g3!GOPmC!DH$l-3=+8SEnY- zk@J;r$9;hErG;fFb~$+>OSix3Wg+as+1_y{uZtj(K#GI9GmfDbg0Gi7&;qaOth3Fv zC;TCBIhEEZ&HYHrPVc)tXvi)j4j+k4f{rq0vX9g2=#Zy7^+dTpXz znP_tvp-8;oyNNK~T8sUye4ei)$k_iiS_dva%}@4i6JRV=N*@McE$-oi zySIUj2;5D!iVXRH8DGh;w0ViDR?XJ0sQF0*E`m03D=_cC_BrX$pAQ%m~6{^@7(IcKfqOr*3qQ zbJGI9G{nS(puYsVVeH8ADq5aE<+p_=+G?J)@{EmRXFz4B2YFc9XruZ;n}I8&>akI# z_CA)-g|e|U*-tG{?)Yrr)Cv@K^HWNMkZeUB7?%jTpQXQ>ZCEb<+%D7jxlgv}Z3v%h z!`m%Na~T@~D0OwA@X7#YuI4!X#!INP5y9 zePbUtWw2B{Ft20%+>tdxN+a19QNK|doe`|Yk)xj{Dr!?uj--7X@q4&eCNp_M_UA=~ zH?o0)cOSVA@!y)ia!1!qo7(USBoZ}8U6tzq98vV+t9#b&`_kqCrJjMPt8Wz2S)51D z$XuuGA=7k1GW4x-HZ`i)126zU6U(tSJhSD{_pm&Y*#&j=(^ClMb=lFu-yW=s`4N>+ zWdcHs@`pXU>MaC9+Q0KMu&)%&w~ewg&feMbs?Yr7lUq12s7UbLG)WjmpD(VP>|z z1dh94Dz)@@@Uxmr{o2|L@)SYFRXKz%4i)Hw6v|ih= zApX?-Y%RL+WlUGC=hc2%@5AOIFitoMo^5!`TD^#SuroWGN3$Zupx0gfi58(4<;qd< z>ZnD-E4GwTy>f|ULZ{TE_X%u*cJbD82SCg0rce#VSdN)O1EB+8(ly|F=lpnwOa12- zd%k-^2usZmHR0p@w@l}J7NbnhnWqfo6cj#4_cH5LF#SH7)7cv98x-V@-(Zh8mkNSE zv&YWRx7|;+F=T{Vf^lJRvg}E4&nC})!};SqJ3#JHdcgWyj?;0R&fJ!~79i%mh@?lQ z+paM5Fx(qv^ig;IaDkHD6`EFCc$s zrQwuleKNcS_jAJmFJzykV$}KC5#l@Q9{UlAAL+o$SvlrgQ~kDH)o2ezJU#Use){zo zCiL^XO1#MChrHWNoQF}>@PNP-RnlDY4~J$Hv1g1MkHJXmlgam@dV`jANB=jL_;A+b z{XW{`SY7UW&%aVi$U>{&%y`fk9sxRTX1X2e-}=rw0)|+rCMSp9L_RdoHimsyF#2)R zQ~nmAm_ah5+sT#oZ@j+Z!^Op=@Ui;%kn=+JbCj>z=U5?1$6$H-7!~&<=}e$U@D7B4 zx|wq?Lnw!5Sl(D6GM0w6_WomBV@JnlnP-J{+l8+jAx4p>#(I(IA95}tyZZOCt7yO5 zym%42#`-&$o8_8iXZdM`BN+g`k~wi2mY9H4U$}KrxIcY2PPS=Js;}xtbz2Hy&JUKD zpG$5s(H7F}pQtTe3vjfgmg6`W+5GJayEkeu+QwrnM9GG+Mff>5@F-~r9hhZOZE4-K z&d`n|P{#(9$POaxsA9eYcQVb~`&~xw?_+l$QxZKz8 z2H6Dp>yA#3&r{{#Zn)1jKf|eAHo@er@Pze`$uJ$GjJW$OrqD zYi{w*u`fV2P3Z}nuyC3Kq1u*XEKeg7;G zB8#yP08~jZ$d}vfz@%0tfmgzJ%DIzL`JQZVr9tr}n=pm*i5(>zxnu-LkG=QBg(Tw9sA&Ou@n-)WtwQ```VZW7c!R5g?sIigd;K4O@KgNuktHCe*NXQ ztGqamJJ4U(=yEQ%{RnmXj=rDvwTI^DeCAIDVJ9NEL(^}vRWAEotBSN?U!V^C-ZgK1 z9O^yy>4&}V*~qu>^q#n(4g(5CWORCz>RcZ` z((&Rv;9}aebw0n;BJaNYHPovMUFqtqJwsWc&+A;1WjN0w9Y_`MO=*dV;HO_dQJb{L z2wxGaZ)2GERTJh4ky`bJA$c*HLRV{`&(X=n-yeJ@xUuY^-^0UYZ7Oj!7@n)o)*gIp1O(@94~( zEzWp#6n{ZPojM3YmAzqpkP^Lg^Uq}UAjoyWt14xmJ2TOA6SX!Q$Hqn zH7ajymWlDL49R}FPdWcx@zK$k3Pc?$Qr&$;5nrH2Zgxox<4B{N-^>p|><~u={eVib z0!GwLRtyE7H~@zw`?du1E&Q!O!Gu?BE7m%j)pui~1Ch8@Ka4v4ya6*t z8*4koprzb4m&z!#Bi%lPF=Jx-&2%`S5K4?I1sNOnGt=qMtZLm2qgQWXs;-{mV)mjz zoPpjmkt{u90gTx4>0BheJE+>gDtyLb<@HES^Ih_>|t}0%fpFrWuZQnY0V?Y`|$2-?;&TF^H)ZE zx*`623>EJ&CFw@IYktwl#ZUc49%ilUOSUJo|3IDIVGIfGv|f2FnookRj%_-d#%(Sp zN)jTt!2+4sVnXFLg4fmQKrZ(wuz?@2y{{$;xbNvGw%GsP`%_pLyjR;wbaR`(!?au6 zYqnOm@0}hI9Q$jpj*MG2sxU$rEd{%;YF8^g?g7w6@bJ#O$1M0yle<5Q6zf6e#7+6) z^7Q+R@^nE7Qi?N{@RlB)Q(l7gOCdDc z+AB?t1@K1iY-OCu7iSi+lKFIL67Fg`+LOUgR|u)qUd5(^yuN}=)Pb{h6S!+eV}Xo5 zimc;lazc&ZwG1TpV+Q)3cTBj*5~;mOdT8!2(9kE+h|mEQ*&HjD*kv(wy0d+Bv+}+C z^T$goUJ=E3|BmxM>|?Ygbqw4br>H16PU$DMph*4Gs-Xyg}2PV?7!(N3y_ucb@M?*NW0P8p1AUcd0Dx0s&#medU)8Q58HT<+IP{e zW%4R()ER%b+0jIS_H(4*K3w1y5r&%G8*whH_Bep0D+axomp=B-;PuLB)Xp3>*2~__x#zD zj`nEmzgz$}^{&H@Vi}3a@W;g@RafrLet1i^KP7L{wOqW$JN*Zi^Bnr*2sPV0%5e%s z4P+jF^0o0I1;UvpnQyM$vnl5UYvzZW=|6~q1H1%}1tBh^c@}1W@{k{%*ll2Ddr)o1 zkv@vyWt(<37ao~5$&VE?Q8Lg^$mZvh^RJ?d@G=0G+xf{&xBV*x)OYWN;Cs?;Dw|?h zZgR9BBKr5E3Pc^FF-u8#O>G8vF@YNM_TIREcrlCAL(?hFC}(RY_Zz?iuC{tOoMOZ@ zei6W9?JguRkpHTYnBYw>7|gYYef~KggymHAwo< z{K7vA&qC~Q*KM{0v49ir7olXRNrBEZhI(VjVZG|8W0gl;x$;-uYUBYEG&NEDu6{O` zJMjenzEfCLwr_unNc~^bD~_9^PoDgJ8V9lj2|8QdM*GCJlb&h>tcX@rr2Z#0`d)$r@94Py(Pp`xXv4Tu?y1jJxh5)ysW0lbJt#vLI?j$ zv3VGUC7+uh)NCOtkLYOO+P5QARfLspCpoylD+CDBWU6|waJ*Lh3-wZCe}vuEg#tE{ zKcB^08CEaICMJjcIYBQZQEBjuQ4DPv{(V%)BMMbm6izx`oBVMdN~uZBRrsoMM*3pI zGWMeG?W5hF#F4r)Y!(uEXLjX@%3`U{oNFst{4M4+JD$9x=%Y!$+vA(7i@fcy^S#`} z-wyG$u{R#~BVmAEz!luHLm=-+#d(zeUnKu+E7_EQzVv|LCr}`fMQ1S3Cb_FJc8KCH zelnEAba)6~+Hn(#KktW`dtFQo^tfRExZ>~|dS%N0FLh93D}sC4A`@qK%jAP4m!Cy) zp^-N=1q-ax?zS`?{P!;e5yYa z{_Bo0G>8S9lF&cnCBvs0wSq)I1t z3RveJtI=Tfe7GLYePN6guocv3eXu5w(O2_xB0FV2V{k=EWEi9P>EHN^kDK~fD9)eq z{GY(8^&$8O#T8$AZeY^%GH{S_u|$9CCSgAimBO&iSj7I7MbZe8`tb6ct3G;@k(>?~ zYE~6gMjvC+aj)5M@h4MF)jd7z(25Mz^D=XH8> zY}^3sGwZOrhxo6Y4aA18McTR&KpZa&3z#XT68+WzWykMZ^IM!GFIima-SC3awG(>b zjj!MN7-_xp+}~Hfk)#020E_tUbOpLv8hq@J8klOJ|9b@iT^K32Bu1vJTM4Tbml+d> zl?;g<1FX-YL-+FR<8YMk@in{iV-+B~y==>w%&{o*U+14V;{_94-6RukPPKM?B=~O# z2Z+k3ougzH_u{(oTjfb^a>AeIRt#%*H#ccG9^E9wFc2)k-1q+NNB4sT&myYjzsDtv zpd#GFBC?UpwAhmx?Bl@rnPP7hRfUfBOV<~mGtX`UaL4gtq;dczP~trbRnv2&(FVo=+8^i&=u*j%MDpCpYP*Ag7!4}JwaE*??$o@fLHdcXmvhZjww!lqq`&tKXE#l ze{&tr&Wg^QA)zCESiFi%`|!>%!wX1gw-}-L;0=9P zl)OK{CFGYIHVP?^I8@;7dI{>Nz;`HND|Yg5T3ZRHpWc~1Jel*14aL9DdSBKV>kwLg=gF{9G}77 zVSQuIjROyCo^gP*`Msr>JTB?Y00UR;0iKOtoY%Luap?zpey8u8+R0WsseZ*OihmP2 zCPs3Qbd_^-tLGXn&Z}DLYn7Aw?};GR>WM2~tnefFvm~hu%(vEW^L~@WZ?hxh8q)ot z*3X5#mz+PDa@e?1R$wh{=(GCMdi-YNXnKyiiYC)E?j)lA?)6OOMbGp9auu^dl<$3h zV}pRb0|H0KIqJ)+o8t@v)4z#gotCEmoK~b4j+Ua^q5~*cBz;C*H6L?~G0Tu$kuYR( za*E0{4||GkDPTF~LdaHfu9#%1xbplqeAf)SrEbiDI2v7t5ULs;5>}LR+ichqdl7gChr=Chnmr&5DPjtb_(l*i?zh+zw> zq1=;3>}qYsRr{D?`ED4w6m(%h;s)!yH21g{Od!LOqnu8^&aYRy{c!&EjuBv2At=sR z4f<}X?f>bDr3j1rLmy2i{#|7n+#)$_UOsdlyRV-C84b6iSj-S1#zil@E6(6uChp~u z?kcNLppH0B{*~LBgYt^r+fIHvD=*#}R;y}`-xMeqx^M5S!FXuNq^(FKzcdlJ++S^N z`8#EJctDE{+g)GQ^b;%NKcAZ^B`GLpZRf+3S}9c8L3J4YI0~JF1^&~Q-e0(S2$BoN zG0ogL)I`~rR?Nnqw#)pD3(8ioKu_$#a?=;iVS|`OT7rY&dz-P{z(-n6_{)I=aLH%X zlNUbS=LeRHo|1-4a~#iai~{VPOv!v)_pBjPCwZYnKiB(XqP-p|iGX;2IjLmr{$8m` zryX>@&o@L4Jv*YB8`Jce ztLkzUmG))zkc6^8e(vOn8^&-S&FioOg9)7qIbFY-`zls*~?;*e?rlXPldO+R{1S?(i1O+pXJsmCGlI zF^_hBFFeGEzI9mxf!-SzXBV61HB*$G_TR$fmxBv^>0tq+Fe~K`ucUNew0me zzy0S>_ZhF;c!c9C@_FskynV#5eH4dm(B$-$ZKqh!iM_T8 zv!m>jGsw==+OvB@^}^k8=I9CK-%1cZ036)b?!8y3kF&HbM<1?tC^uJ2xWI+A#V7%6;Fz37Ww-?O7=d(p8l5-ff zleJ)_KP?=XYH>IKKlPst_3AVXs=cUe;tU#ed8OtD5Vag!mfB5rYFgSm zq!UM5lf`ex**VgZ#{nrf&b%QValR=6Jm`V{Jm`o59Q5e5R%12i1ANHh{i=Q2c`_j+ z253!MyAh+>rSm8?(3ALkG8s{CXKZUJ(t3xF^t!<5-vrPIJbiuFZX=+S=Fc@-aW$( zh0q!+({u?Th@Wv+zfI|e{HNQ;D^2kUyzYP~+LhZ>DhXc07aJ%M$4x5Lg<)MamIRT^ z92`R!4D|F*_FmiAPJz8Fk37ZQHh^9E+F$#yo}XZA#uPA1$U^@vQZIpVPhD_NZu-{A zf>sPC4MyEm%hP0IdO*%=j{?-yE#X2}W=PPk7{(+aAi@=ird1dKV{%zW>U$oE?|DUU4@7XPkS^=MYmg&SD2fK2EX z@g*5sEFwc{sYt8T#1QPspmnT%rxgFBc?!?RG9#6BjGLPUq)gnhp41!AgY4|X=lAWc zo}uDx6)RdJX|vY`FApnKk`=~9S-}xOpH-R2(@*-*gpU3<$(sWcW8Q|%-WZ_C+>jaU zFk23UqtW7KPjP@J6?E_`_A9st1Zw^Blj;uEN5up%l_~{xU zwW01jfl1gD?*S^0mzR|zv)V)(E$-~j0x34xKMxr2v>`BU8bd{p$gTW65;orWzBGKB zOq2=0;UQ+zHBvtia4D-4Ee_qBZ4_bwQ`yF7>1!!6XCz8}Sv;E(z$_u+wWk-a`ZSvJ zoDSpRQ~F&BlF{djJ<3Z|b%5*Z3-~cfOn_e({Kv4OGM1owFiYs%f&$y!*EKq zL*eqTdxlLA++`0(f4uBMbA@t0;ad_CLP3PDE?-qmycd$7Q~)kkt{$J)c_M34aO?7h zBX9qQ91s%qqXo|d)G|;7-x|BnwyPVwm|w1ijO0d3 z+qP4zrQ};=Ub2?PpNl+q^ur8o%>P9r+(22_Td|!ax)~q{qrfu%BYDNY12_OA0$S5k z;4Ny=6VKMd2e}oSgfgv7Vv=xs;ZRA&8x#S5IAlOidlr)hqplUg>5T@L04YZs@QN%l z?I)wcfH4}6gEh0dnW||a<#Q}uWzAng$E4j|lpv*6Wk+vU+#m<1I66t_ zDb(rTDv&0okYgfxa{Kv-{#8=c*f8Kz3@-Bd4T>Vp2?}MEdUuS}o1QxsoDa+N_Sp-g znA~t692Nr%0mTGBcM$wORc+V1p-Q8jD1oQ zjN~0=z0tN~Om)GMU_i*zaM%Q@G2%4Ot7@*tIVX%Gsf=onm#qgtTa$QPShLPh26DqE zNS9>+(8uEeQb(4SLEk3OR0cc*Ur>j?nMF62VZMQKUEp}im)Bu^ZY9mL9SC`M-07P= zm^%^C^WaD~tt3{el+n9E)Z)!)ml|#$&q_H@gIaGUoqW<`IIO=HQ+r&&fbGdcc-D>e zYXSRy+gm7DvjlqWE= z%QD=*!~0DB&Yjf>QxON(DO_%-Lcm15pXO&TuWdn8hMZ?p$j;z71a$EcA**yK2G$s2 zK?tB)$2`@JiWiL$W1SHR|AFU(7hwf1Kk%ylQ$EfyffGq7ClB?%%{MSt*tn}Fz{V2) zn?~UgX5GP{oWjy;SG;ED#UGIo3C4Q@Z8 zjR}9Pc&d}wI`UP47vrE;dU?m!$OMi9V0+eRX!3)52M4ewYx2vJ1-U?pK9ZJy}~ysTlR0X)`^d>N@Pq7#@OigiQHa;EqbpFv~cg4T3c}`m>6XP;l z$_y=6yC3Hooy=E#C)ncXDoP1_BfW=w?`HT*8*x3sv+ebzOf9G83etMtRbQx-Cipd~ zq47ncYm#YQ592ZJJpDBRnJsJFM(_Sy@Mbe`XfitLnvu05M-c}Uq+;VvTszCo2T>Mc z1jmkg1U(4W{OfBnvRi)b<=!Axm;H;UF z^05mlLl!2e^?fbI$IO)ISbjla{<0N<&ayi?@X)W(Y19OSa9xjO^d6zYy32_z1*D^$ z-tNcLEdS<=!U$|INT=s54c;xJ69ozYie{U?c(-2?`28RrL68ktPc`FBxulTzv=hZW z6&w@`SU1&vk^RFCk5>N4t65N%?KUA|5y5LG{`f%2H8Bae4ixyV0_tzvs6M@E14~$~ zGMq0C*GBV`oVAvnfv|Y@^7u+M_kqbBmSN-07G6p#*nevyjP4AP;N zi_8K`vRt}wODch(hk%4hT*LFP@@%+OjkFiyuLx~if!CToymqTC&JZD!<{YUba4aD< z)SPhLsSi*REY7VstpMrr)j+z4Nx1RO*8bViq0`kx?qgOx>@E$y#`ss@{7SUq<);Z_hIp8wE=2N5R6?++Dw^U8AwGlkVLRnTX)7TkJ zm$U&j!1LC#jSFC)rqg=9ZIJ2+v-XYR`4rZ=9gGxj9&l>T_K z=&@5BM@Y;xYkwc!HKrQitsjx{k2kH=Lg&$FZ}}-xN;g9RRH&*7+dJxSLg?56Z`omv zUs{bVhs&HQ&4D7k;V|F_#?3+VRB+U94W%bSI2-&8JWRe{b~pkzTr3l`upo**yj;1B zA^f5f5y;f9#_*3X&2)2#5Nd|#A=;+e=M|3ZYRe{jXjCw5TW5dHi{J3(dmN<1x4cVZ2PZI`?%ve7b~c_xGL*boZTEdQ+W2>8|_R` zlsxwTq$Av9@LK9vi==~rinZhCmux&zn4m1W!2&DWctf7uQLZ_viJ>G{K=A6sNIp$a zz)WQxWuSteN$3CvM`zGHMGV(>Ytif+wu7lTD^CB-6_Kod1+p2ALyGO!Qu0V*V2!gH zElabc9?#Qeg%i;6k$6SUhv4@fuv6yZoB|@?27B#nYjY^$|B1O z?N`>$Q_65zg#1SG2$($>%rDvwrJAyi4_R+*3AhlZ$r!~xy6kR1p-$~$Q-q%&P@3MK zxSX&!0~^8OKTW(88?*(CJabKrYBV4<~JRVNDHi6phI9(yk)PHXr zD{9#iOU6HL(a2T$S21%C5FQf)+IwJRM#`}!q#SpCT5$yIS@;l{meS%pJ7(b2&^n(d zA_x>-@ctMNekFaM4&XP)9DUi+%cX|pE$FmUe8E4N>9Hn-+bed@)0LyJ-}@y(*}lYs zT7u)VMF}s#a!aa`uXXS-iD9n}6FcU(PuEy2)!JEaE9aF@#deXb8*-*x%VXI=2!ft!4 z7%_y9wY`ndAT*KFLR4G@haP6eors-q6hxQ$rw-_Hz2r3G&Y)In=+E4SX?y`~lpSo=A?LP+1C9{+JnboUj0SiKHNZB@ zzY=94YLKyG+*Mp$PbM|CJnlM1fKtrw1&+aofV>vqrnn{t7bozTvLN%BTqC}iZD24f)ExA$xJB`#&9lUzo_KqCZEk)~IeOPljsw1?qrp7_~^Z+ZFDhL|+^s z?TbSFt#3b1lY4hc6}Dxnxwal%cFG|DV1zAbqtEoSj#pp59Ys9cR>4w1?KXSo4!ih3 zY(LmeiT|RcKH1K8T9(As#;k9$`YrPP!pZw>NtI%<`$LbfGq#;Q^sNynGs)eL;5k%s zCdtHQLyou`%))4LOjA6(bLTXIBOi3VXno)-MGQZCelGI91H-3_mw>7bU*Um@#+}DP zf4Klko(&5)kgkz=0UL}|t^$U{ug)WWFihf6ESoW2jq^JQK|S+NciF;-j(xAsbm@g| zs0{U#bpcLI9M=cv!4d`!7*QmJxoYupwWT&@11x5}C-w!rB_h07V&7y5YM7auyxy}z zn*Y!67arFd%yN2}Zzcy3o1lB3JI8!^ebe)?!F17Av674ZAR^8-kQZ<-8D?*402vU~ z!wH|4Pv9p~N;VYr9W>Ts<+p~lbr6o|GJ?m(K1-m_s!={G05&AYraIz>bb7(NjC+}O zezIjpQX1m#a4@&#KN%qA`)B@=WzQE7PyY1DD3WlWLmU&|#tu~e9!i93n#LwtTx&J} z3~4Acm8p$c)OxUe|D{fZLmJio4<1lH70hm&>M)M;f&1P2$f5Q)ki*?+YoeTp?Ui4` zEVES&jl9+|&`vDh)eEyr7KJ>QJc5QFupEbODpj65Fq@Sj2d%mkc&=`BDM6#B`02i! zWSbIjPOrdX2IF_2%I~iN?4aZ~sWn2#+JmP{9^S>`*%^xpNsj4y{ zLRlH7wJk37sE*|`98Z|psSDrRCy6-qMIAsVU}~}`tY2<{=4o*RA~AQKojy2Q#Yvv1 zK%GH!otthzrF+422Qw9{^{i22P)#fs3sRhp$4DV>a^{vA{k6Mr848zd`+J1md3vkC zwAAUEjKtj%=^(7vIiBqZOQHT4^?o6ASk^O@o8SlcC4%y%2Kg!4m((lWFM`9f+m#Kh zdS}mu2a_AuDECNh+r??qYr{X}PTDQAFw}tj~a%)a>5IvU|q5!#UO3wFe|` zXm+K|fUEO)F^)Z7xVNl~FV{Kta8yTzBF(Yft4MA46#aWP$uBFwj5i;AtTUkpTS%5UHX#<3C?V+p)dIpmlED&pH*SP7l>Vp^M%>I4 zhFZ|K&T_WkqyrV>pK7J!RZ#L6Sb?nz9L=z`xP@S=uV_V}2{o4eRH$W9ip*=>jwKbB z37OVu{LX_HDlVk~(qAbzgDH08-(a@(3-;H?mb`%ZtDz3`8HwvU(*7C+8($7sL~{Z+ zqv$QMvXdXmf5(VR8m3=s-%HEO3H7~;^$Q3yxvquc;g}EWPkx0&AlW{!dh{#;Zc9D} z)3pEYMq4MvfK7=*jSonGa}qVHq@DotA7{EZs&aFBet*yghco(pej~ z-STwy^1H;7qwPaSK|7H)%Y)tr`RPPhY*1 z=*Yq+d2|NhLe1ju)cBLCg^d<>@zSSVSwUg*s(ec9$YE+qbnEn`{1h+`9C6gHp_X?7 zW(WYC>tmCkhd%>%t_>!}Le@ibdQ*n758JS_lMJQ}iNglfvzbEUVtcASfy3;gBXcIN zvI#3`@NNcWfmQ450ie~7^~Fy7c9XO3fVXoQi2ub zyFnQ4Za+z=#Q35!)JGEOf9CLkX!t?4+u+O|VnH{wqQx=O62vO#!;%m@82+)pO>K1g zDj%CNn>^`&Uv2bfl|-goR>pzy8VBjjCewSV1FlYJCqK1i{g|&2@KTGPn$ zsS@$M1ME?l9d{~JX+g5v_CP=_w(1Z)oow;Eyo(9{IahY4n{oE@nbkO|Ppf)?}S8cB#Z{=R#n{#Ao@kOKQ)p?ZG z$#)oCQ&8xJ*K-eFJU&eAK(w|0D&l&))BF=EDZDdA5=SC8ElBjZcT#Jue~1nNy&2vDId0iPvAT|)2el|U!B&YAKy>A|cBc1Blt9`vh zwc+X&ik0CZc$p*?6(D-ykehV;As5WT-C_6dK6mDzrZo4Xgale#gfg88 zr;wp-<5!-a->0WeQRY5Bx@WIgL`VQKoIePGXWRK;!I)U9^#fqAk-5X+$%-W{djh6> zc6u+iv1BF`<>dC=mkXMi&qChMHhOxd4O`Gj%e|?jmYH0Ll4J2kX*#klwKvd7CEmLz zl29-$7H~Nb2JmjnxZrZUH2MH#(aOrWW6M1*Vb$qM%Sn@U+pqeQy(pz%Va2InoU7h8 z{_zaP3J*oJAC>SVG?oxe@M2eNb_P|=Xl$;9fA{3rAVJM+M^Z}La~zHS=e8=9m}{5L zc_I}zy!!zPrqE1(CV95*PxP#UD~kcVWZW{6c+OLYKVrv-a#xW2XLVsle^)EkcSm&iZ;>p6dZD#hSD!{m#2zvn8gyM69(@2}mA08!|NV z2sM%#5be>B@7p_HT9SPN{;{t?8F)VeAWaAei)%Mg&jz+`X^Qm`@eKn-S`9=!^okP7 zE*=^&*JqKa*FXX;GN_kA6%Tg_T3zDPUY-EyL~n8R(~NKqoH2KWQ{6>@>~u@?z9X!U zQ$gQB(bXu!c`t_70!p;XUCFfii8T&5+7CKy%`4q^Dhx(xqpS@+F$=%wDyntdV#lpW z3EQmuKa9NvP!!r5HV%jaBGRCQbe9s+u%wi9w+JF3NOwwul(fWxAfbSQ3(`tRhjb&| zT@nlbvo79yf8Tub&41>OGw687J$ud@&-*;jo0My(=vgj`FgyQZKQo>CLuf$nTKj4v z9UtFN+tjriw|4SSI=z#PT<>}wZ*96Y1+yW(--)o9qgZEMe22xf9-7rA05lxPj|0?9 ztp4|$Gi(0Gnq1;g9yA6f>`O4+G=+PvhgOuS$b3xVyE&vnO*34VWj@^iR;2zO$ht63 z={N@(%$-CdJb+&ryn2Ai|9Og~sl%99P^a1a?nQh%JP!+FoNkLux-5yW(!%rDX&yAu zhoYqB85zBV`G%Xmu39CAcWE6aj#IpFGWMg$`EReTuFl$0IVnBC>^t$O-~+A?p(q@% z47X_yS?Xk(855~dRMenZT+GsPPsFmgJ0R#T(w;yG-JX{40fs*jb;jm&+N zP<9n!#EN4nB0!e8m)IpHc6i>9?P~YBf9UBk_rK^9eL!@OzMIgAxGT%&GF?XKx(U{h zM;I*s{b8uk^SX_exD<5f5mIQ!P>5Tvf_wd7g-<7(=F6$IDXXu6gR$?e!c&?LQV z8Y8ZPCc>1%=+o<8D$a>_;d%8PBd@|+XcMNvz)~<*FK&htIJ)}_B&X4q7-2R ze9^mbebZUKa5uEY&~5;K6G9v^-uv?T%2?{raVOG_nL;ksw^KEnI}l6pFk`P1Ll?dA z{WsCgSEW+SEiLEsvm7t1k3dLD8(f7*mK>b)N#Q;Lx9s^y2_?e4{3bCgH67ixf&9x| zwrV4+=I`1=%4$jU8^C&$3T8dTE!vwdIFNjcZCSA!vCS3OJck5hlOo*Bx*rtpto3ET z5>y_32AWn`_vBp5xSvyHW$Enlqm7rKu$28G_VSm%o>WymPwK;L1sQ zjg?tAu?LH@7#^k4-^V7*|HQ^5WWxLs8}7%RYbrZ4CyoTV zc+s(4-ff~nOWm2)7J02_mI%7Ie&TT(oe;WdsRq=WeE{G9`+$Z-2p44ToJ~89;6=FP ziiv+d_ewXc!esLM{ewS`ej@3)7mGSD+5K!iTL-}}^fdFy{CIbJwwaVlqTgLn{NX*; z%_xz?4W-Wmk9Zt5rj{M77w1H}@i$*78lG4t)UNevpYH2qLHzg_#u=I?4;^#Gsl?EG zzhYq5$@*-+EZ_!}p(|ddTM5U(`Yu|y3Z!xkduTj=N;dl)cJKTdNj3O|J{AyHHtT_krtid;C>yd4%*G>#xDnkX93?ZoaQa`ihM4 zWab%wUPk473KHy7zy*=@PjaHCJO>uix7?#Sb|TK#l;&?U9@)**Q^trMrKoV?@>V%z zg)s{QME;HUCPkh?BKO&&H5}ga@b>}HumNisRor2f`!ud#E94z+bGZ_IxDgK*+83v( zrbLBTU=|$cMa_93Al#xW$kiwMtAu9sMnce2d56ki*SLI!*ZNDC4*}mG$iS|OVT8u+ zM1Lu9SsGwXl2gwF#c(U8zu&3R*qU0;$g+GJ*3&3`q*nl3HUaqft!|rssKKlyVyV9Z zh4N#xY5Q*WT1@jYKypl2zf4!P@aGlj6EX<7JW?pH@JRBZQ`2GZc0dA?1uTdXQVrCV z-igZ>TGL}r`Lt*IxMtiq`dY=oJU3z<`gr2PZ-_Q3sHq&q(ZM~|CREw#*)-{^eX$G3 zFQ54Iem!_mkY`Vf$k&c|eHkGTzOMw+PeXs5{4Q<(=}h2OXfShqXhq*$j3YV+Yy?nW(r)r~o83Ik=NDDr}Op%`Nc?wnU|J5yq4qI?2&}fxwllXSOXpFc> zpLAdA__#gjFO3J0vsHOPhfIp&W}Jwmk{~Q%qBCHo49J8|ANvX<_(1zGU}E?-*Yqru zTNzNoYcPXp*Y1h?PI}X0H3FuHS9B9SC2)&1eh}Vx5n^zVh^`yAk>3AB{PQWo5)aJP zogTA<|D+X<$hC@jxt8$s6(y5ZGw=deicYYSFG1|?1;!wxbk8QF2#Oi19`?n48AmL* zD80kke*_w6YXbMCyYb$l77D*|739gcfL9*A`qa~ty+!x^ZhnWAzHGxR`85YXyn9SV z%R3>Jy9&DbMTO+VUIu(m@TW`ePhbEEaZ01die$bkr<9bdAIHQHH#{RSAH}1D=2qu< z=uH(F#9CI)0~0h1a0kS?JL10Hw=d!|r@-b=jmnJlbt34iL%N(x&|7bQcpTr$Kr?oa z)=2Tvk!w`yj=V}4F2J~7)U(@gN!r~Hm=K#u4Scar((_&R6P)AtZ5>yJlN@*X#}94W zN204Sm#N7t9wT;-#@N7bGq5EmEa}+lvKIrOz}wFIP-=2s|L$A-bTOMjVny< z#Q883PR6HiQh0z6I^nj57CE@3oS9_PUcLt$-Pxp-V-g*#CuGxgc`;f^eQ*+e^!u5o z-xEgg+lMABZJOl`77Wb-sOVAVUCcz6TP!*Ul7%0zIkAQOijNClynSigzuzbP@KJI8 zOU{IcD}qEHTuVIOyPHtnwk^BZQdm->U+v|`4JsP?=2_7&hO;L9jGGJ9D+bU4eb_aJ zl6JOcPS4^Dq#aw=z92BF zWYVn59G;mqcrW!L>%g zOqOMNf=_KVj!|8HphJc4|8cmD<-fU5634jLEN)_!vjJf&YwtQsbrL<{+T7|7% z6GN#~P}4Px+bNgy_}aSR37mm>8G)3x$~8<+m@eC^(e=r_GBbqTXaW0_f~%~mE&sZO zeQC{aCNh<*{|0GIM#lq)ss`2LJ7G7&cF2I~vR`H_mh;utKwIR?bB* z&iOdKWQNr<+qoA`*n69G@3l5u-el6@{86YSp3Yfrdp(!eCN#k{L+zu!?baJP9#QT+ zlRn`JsP4c+xtjg#u*ciVRh?<)Ldso{I1d;X{A7Bn6!e zQ5Q&kK5Tr9Zt(bPq4QLUDu*3x*zWr~)zC^t!3Csg7cne}`D?3PcK{GQJaw_TGZ@Fb(lXoVo!7xDWbHbu12Sy z@&R1y`p9X&OZanuLpw)eI`EwYlw70Rj`NZ{L0D z$ux)3`zW2lh8q-=p>15g`LrN|ggGrfj(AXZahr%lKArb>-a0S8a(O6qBxzO`>VNuRnB)&FyC+uEKuF`0uGv2ZVtt zn-V`NJqVdeq7i(#`Ie_wtzkGY@pLvT<*EUKvoH>{_ymBa`ca5_4iYi4bkRME=Eds& z%nOX301&GjsRC9xjX5T+=ygoy!a9nvAj(c-zrd(_?+mlPCv^LzN> z4Bh%`%dW+N8?RXhn{Dzji({V6jn?$e4|cT3^n0$=sX*Q9-h-O1`7`84KW!o1Fee$f zXYqxQ%Y3Lp-uD_CK9Q_xLK`_#Wl#G=T!WYWic$+=9$1|kVU8>Bwr`6dW*xR zJGmAUHbn4CaPF1=7Wd5}B@Xv;zfjAbx?MHi4_y+FN*~N3Z@Tq+hGI9?jt}J@$tByM z@}84x?()7DW13nkfAaUV0^AXsqNlZ^4v|+(It?UQIl@KntLTMC1Fjeydi=m2LdhL; zuw^L<&;d`P0Xs?9VK$gF#NpY&Z9&(KJ2!6K@dub$T4bijQYzzTp<(*X75v%6Jp~B* zEMa5=;%P1jz`zS+p03T14~f>ftFK-fBf`^1PnG<&f=j`5D^5qmLu@+Z1_GQlf9!FM zwbL_>mh7Ewd4*if)38MKuO1u+Y)v^1V<`=?ak=7d8#i3!-4qE<=hO-~_Mc`FVn^Yk zRVyeK+12@YJ zPy&51Irx$|jmSU~rPy|8su8RRp%M*5ywQb@7A!g`s=Fs#E0hM*+-~C;xWt^0kqzYs z%{6{8@~@8Ubd6T{R@AMSMV&=7^@VC%%V#Nh?yUW)mu#>TF{B<}?QN8v5vC|oy6(<% z+{Ckc>i(^nY(B`}ZiuwV#Y9o^?3Zi-VXA|=U?)2!DttKxs*u}swl3*T62sZ1DZ<}z z^(47<4($vudpnZf8KQELVgX%UhU$=ze(yA*WspBV@bP&j3Z3QnR-XlBgS}FakE!w_ zd}Q`Q@b69+aC_(x($?^boQ*37z*2BJ%ZYblu2eMv%!m}p&{uowiorzx05vX~q3U;Y zPHDEAUAsi1atNn!C6>ryZ?v8Q7yvbed+_*k6TkfN>!(b-*`{)9XQnXmSeBn^fmI)a z{aOscrV#mqR$(97Pro8ljNUyb(FSEeH<$m~ZYZ>RN2WlF>QT9cG23@6f$PutKHCJk zbspKGo$leQCcbStn_zTbx<#8JKnLY=$1Acn00r;&{Y4`OZP89*G)And{W}E-yzb?= z5*!{BYlEMIf}VO7|0!!%aHt@gDcD9Of|>(0gk>fV|5M?H%YwL*Q_OsZocXjN_R)GU z{FuKoPoP!+C-MkOsPx;%zgz%bu78BSrkL)>+Yj6OF3g{6!5G!Yjc&$eM{0ebvx&No2^5HS&V9U=#0DNyrs|=m{`yx7p~2x*EDYIvooi(0IBQXB!^eq_ zjwLzBZ!dO-l+0ih?FD0v@Q@?N5PxR4(um;mQ#%2U9OEtkH=vbTg8ALQ!G{3^pLghK z$^VRf+hic|*)kzwRgMpoi%)5mmo3 zr58k**PqT4Q>{mT2~fAFxEgfCC$iBZTt2?45+2+mrX zTi3?)3+!3F6Gs}O@BxyCs8d$Fn%39B#gXFhL1R6GJTc+6-d`s(%C>gl8FBKxEOO%r z(&tAV*SPuo(0)MtKQAQ~vVj1RYHXT1kf>1(f|2Shu+RFp6S4&7vL6-2ggiFzD-i)| z+-sE*!ypheq%4-t4`<0hLho8SWF?OKK#9vIpNeW0v_2>F(`~rl^ zgwwg}x!_1EzKVOa^u5YcbbSvZJe{NI-omzlXQ6YejT ze@%10=HqsaD_4l+l!02cgNJtrc#)KqLBP4@iJ=Tg5Fz94sSgtMlPe-d&N`oeqk zNb*bmconm2PZhIqsg?9NU*RAdsnmkyc|~uR-rRUS^H|j*=_RfxdD@H{#YMx7fU5IW zy{>^O$gPX|jej>Pk^Jet-Xio={6%r=aLbPO1$A;DI<3Oh$c11-r&bYFD98D!7q?O2 z-9ciyVp!In(#DpwYt0eAk55PfRyCsEWHAptVyDXk))y0E=vwu0u%ymb2)tfQSr`>9 zPppQ#pNTs_<}zgOnbb)Ay`pgohY23+|0oZo5g+`gP6`}}eFq`@<%no}|N73zNP}a- z4_LPN=j`^Re=Sre3RFEIRxUQd+5UkNs6BRbC*gy6dtc$IY*Z4yQZ&g=eJbGy4RYf^0!0_bBAvi3x{(AMmZ!%>2ZV(rjK3(9@5w)@L{YJmPg4C2C;v&v zfI$NO3xJ|;1U=tAdMp5Y!E?~VflsIX(TbeNewc(|+%0@G{byPM)T)mq*;%S^-L8CL znNJ*bTZFW@e|}CV6QdQ9Sd6(nE4339sZ3DrYkCVY@IWTnufLjU=Og_~{1`NsX_8Px zi^T`Ozup}}`M~ji79%xsm@C-#f{MmTrr(V1czamJ4StK14FUQzCQVrM@V@(|u&P&m zOjom73d7`}rC;7vg2`~bt-1avN0oyMIeSA&Z)0^3fk7dv_3BmpA1U_de3;Go0owEF` z$NeQQqRbf6+lgMmO>|)|(Ubo2dtW$5x77FN<15E*XiR>Ri4Br2dHUer9 zbRZow5u`>5bW0#Uyn>YQu2gBn!A~$$^&Y_=s;(V8<=x%=~ZLeW8< zxTU28+znIHbrxIxbb40Rg7ur%+#L~nL*hJTk5qFys4z}|^-G3Yrm|lim(}Jr;;Uyv zMkfBOI^@$c55MzRs`l@PJwmB=CmZD3PU)}n()m_yt|?OSJ?)Yjx_%T?G%`RiUa1s1 zE+qPFjEMelY$`$QD~WZB?!Lv;xmW==j#-8M)u;ON4YwnlTewSvypRTCFTn@vh9kdw zAY4EU`lC2+b^a&AV&c72?3;#ry#yI?cIuN*>qbi&OlF)?D$4d9e`&Ci3OhWc?2xb|1X(KkcQr21X(Kq=EA-x)L`nG)`#*# zw;#!VF(-q+1X_&>7T3)RA+582=nJVhumeC}xEAc$U8`II0z7Z+^&(9Vr=k-aG=)W% zG{e^QZjJ1U9)C`?+s_a0YbtmKEH9v6-O@iFFOCMpIc^F;Y$Wb{j!2LVHmx1VF!zUL zj&5RF@#wFh9)ji<#)8(Eq)|p`)mN=arhrR{o0w#Wo}|%xj=lCv%+U#NCr_NJH-wB| zKxnnMZY#vPuRnfl8jd{}H)Tjjz)XZzy{%agpEo;o&LJ`*X2d-5EBCV^q_Q5n=qD`c zn?Rn<21!RpAVHtjIK)U`^i=ri;s@1<{bz0vJerOkK?^@Y&`>z= zhibMI-Rtl5@X-V`(t!k?YJg1Ovqqsjt@KyW7ZB<@y6kBuZ0%OacO7mSq4vhBc?hRI zYNbG(I-)7qd(GbNesZT^W`xx0^*>VrJwHon=0CT$mU!*ax)=4-Z_a|7%fwbQwF3V} z=U9Ik#OwgMRR{8an;kr;;bs4u!of$o84Q7b5!=qB?0b5TJ;CP3e(t~JNdLf~pTy=l zOD2BV(H%x;=TN}fVKr=oBsySRKse-sg;lTwM8^hq=tO+@Udo?D{KPQCNjAXW&IMPq zxMx`3_rwiA(m5}+jB`F=u9V?qkBi&BKSm}T>~(dC;$JY*B-jZm6CU zwgs=>WQ*qcyEa9Q_Wn2Wsv?|vNICqBk>2~z6@(7*l+P5bqDPAKl2NWdx4ZSX?M5Y# zQ$|w`Xvr1lO2HD%SS=NFl~T(UPgc5qDt=vy6$kLqW={?>7bc+_LagY{iAk!WKlCLh zKGLXqY0EBF*UD|+_5Go##RK;lcKLd?pU7*d-o=7^$W%njuXS%`$` zfjjxs)k^oTCJIr30v}E>8=RQdrzLs(&wdSl30D=aBsqo6&!Qo|vm^BaarhX)>!m-L z;hyT}AD{p-I1IL)8X32zn#6RW1%~1>)Qc zk&F*9o7a+Vze1E#+t;*C8bvaCU;R@Xfh$If;5VClI6g#v(%*=V4D8kXLehx?%?8NtgfD5z6w_X_kg zIG!AKHawC^dL2+fSdD&#Qm5Ia-iE<;jMe*E)B~J2gNuf`JsF7tes35m)!EPtR%7*L zszW~bN#$wFt-zi+{Tp-fI>C)@-CO%~bu!Npm>Nz;EpqaQg0+Ac$9O~LSv+WW0H12E zldGY*SNt*x0BFC>d*c}ta{y_kK6t+@n^$ku-mva^;0XNl6zjs%<%`yryNkb^H2r~4p5w~8hpkG zA!Z=@i}>Fgzujx;#;9p;%jk_(z5G_yG972TBF_nqua2oan?zKT*{p_h1g&5K8)PyKQ?<_ChYWRVeySMSl39AVMT_5Rzt8{t z_c$SF_=u}z#w>`B4CLvE6qb+OT6UGfvcPdRo6P5|shTf4%>Q@-$l)}K%wb>H#S_kY z{VrYsBl*;IIWz$AzQd-6JaVj$?I!(>O69$S`m872s)QZwpuATsa&NJi%F$6e2J&Tu zrvF&sNnCs~0|4ai&Kv-G1`}s(Y{S;qPwq~}1UrwYlQHWaT+0{pybj=^1ypU#zf+R< z=xG40(eiktln>C-Kui6IizG$ekL~>}fB4fD29R=i{x43#dK#!J5rDaJ&t57ox5>*L zLu5ac=s9O51v&bGASEeK~$o z9_86KCb(LgWuv-8+W!fx@(9c%o)X(!!=NFe;zuTn}gGkBd3s_#1(4+Bc+eXvO) zUC0HPiNv3J0~#R(m>P+t8d;%X@jLAN{y zGI_({XGSI(xy&Q;=k|-|2m$?fIU|cxBC<(aE?6# zl;LOLADy;CI}~zAQ)rv-ljQ$=K^4e4)22USp(0_S&lNywzCvacV4W;UtP&}>J2sX) zeN3nMgAMUiBmE>2OVna3JUIW8S0Q4cvhTs*%|zNk#j1j*%QWa%b{84cq!CSGoHoxx zPeF${bOccQ@#9B|>r?LYufKw2oxgV7yGCLtg+oAiGXn$1QJ4+sJ@;RzGnO8!^!@6V zxyzl3Tt9^#g5&#g8d13}?L}$!#J)2U_wskExHs1$U}62^d`uMBEtuBRbE&l{60)$c z>{ir%OhzXNL6q4uM~!Dc-9g(JwE94YPA2g$qJY+qL=+tEmY1hcLpA!d?cUmLRuOMY z7N-yqx_k~>A?)k+l7g+gI0{VbXFI*V6M@eF?Jc_QGRC|(&j*O((6PVjvASKXbS?wEx&;p$#86|06=Mtgrp}mqHb1QI9=(?Gi(*(h(bLtI4kqfaCTq;AlSW zPUCwf4m@S>!5EmY2h6EoCV!(y)-gsb<5@Q!8LRbha)K9XvR-vgU{VV*mHQuwnY*-ik_$(Ndxw8_jIL61!jxJS9YUnB4CCPvLQdV?O4aERg~hh zZ1_fQYZ)Z#Ct%z1Gy8V9C!kXPwkFZuGmKr1-gphve>sZDoJ$u;XOlB<^W!S}8L_Un z{J201cW_8+LtXbZbU&58H%s<4nM6IKm&Os?BH1WpW5d>ossoSYB6G29D}Idw)&ZOB zjZ(Gw);s^F57Xl2^LNniU8qcJ(b*etD*BxnXmKF!ru8xnIdA@U}?wJtar6^@Xub@A@{yTaLZs$Da)4GS9$(GKTBWNEr1`oqAnHKFY4>QlWUiLH`VEFv2%^=!~S{K-|ttCMHhWr3GoxvCMra`C~OObbQm z78vp%v|1vOjmZ-(Lp_jUJJptfIR$T5$w7<}$>LAOcLut*U$G8Q&qWE+{3liUBjg8F zJjgH`kFduypF!O~8Z%NqLkw!i^1?eC=_x(H&U>*`RRY~dugQV|fgoh67igDWpKnmm zhK@HTdK)bW;XmFijeH5H&kvm<4EosGylHVT2--3905eP*$E@7~&;yhs({-HjVEs zfO^*Ug1u=fdB0rsB|LmQpofLIR26nUPj%@Z_MTh%7A3cNn0)$ezCBvVa`IzlR3UL& z`aJjkTzSFqH}ucs?J7q2Vn;XXTQ}z?;qB9jqU=(hv831N^8`jk&3cKWY78b}F)m{E zKs~dsN7xQGtai3?+LkYZZKSI1l{cKNg5|CExv5JY2;kHi1g3R&HZx9Wh5Jzv4nJkb#=R=Ph(C9A{h7#a%E;&nm8ch;7KyljI)#; z16MqdHDRTBa-W<#S3QWKd6ht-Ndh+H?J;mqTn~B6YpiN~beNlDQ&M#UVR!>vzkGmV z^M#GNtA(6?1- zz8g!5vq6KkMN6bOzTX^9=#*Z-}SzC;Q+{6w$G z?u~Cf)T&m+$t4L4Gw=#-=rnrKVrL$g(#4uH^|hXI5FqIQO0HyBKO5@z7zz#|cJ581 z_MY#&2_(!pLAR3xgMXoz&+1Ub{LT||O>>L1!nxfMl3}b$tbbbXmV8Nf=^AyMoh*Xo z;*8;(cchAAAAanrixi;#aZ7AQthjLati+C7aRJ3cKtj@A)Bmn|xG4#)w8YA;A%B3& z`ta;(e%6uC7)Nag?Gg!<%zffntslGdtv)%q=VQvjIE)OkW@1%IZHa*1{H8P-2;a{Z z%uZ&r+gbpX0Czl7d`vZH&A{%nuP*E@@1b9A}h@WH7|h?ApCd!YAcCVdordNf6j*W z?I_kuTRr5(*tBT=83UG^P!$E0od1yqYP5mgu&Ue4%^b2>PEMZq8uy?sLPJu%m zCK9udhr7&UV*Vm-;#zT?c)_&2cqso9@bG5kSwcFKCa!;Tmn8u zIS4{B*>?hmMW<9Ru*q&oTppI_u=7je{NikT=@Mu{Wx|Nm_CN}H(5hfWdrgt{3-Ug# zOxV@n09NBc;sQwwyjTNjWQ=Fbolifl;Q0Ag<(D-gC_~&xQilas%pYM%zMp8RS2qw? z{pk<%=S-XGs2VNk%!7v78Oas*SJXmvEq}R}P9goPLH*`8d z&=)_lD<-%^e9cZdIh!$v%}}Jr_mcVSN7#C^!tU`WiKk3g{uiq2j4CnNlTe`<eiIa;)EH5a$5=+9`{(|+5d%cps`COoqCSvL^i~&oA z=P$v)$ZgTQU|ace$v?&N2ikn5|CTUuk-3$7B}ee``lI=Js)wrg{|91OxNK<*)cRgd zClATe!d@#=8=iUa)>5K4m8gAHPzRr|j}+&XP4Epl+wh8UuH__s)1;iS}Q zAlW{8<2q-eh%Satqyk8(X~fxxrMWoWC0cDkUu0BfjtbiJ;Z?+7J0kRzWTCN?){O&I-V)#iJn<7jweP|s(*m}Y$ zxdZH}(718dXJ-YTgO1J}2%O=W+JIR4X3Gdv0{b5H*H?Vur`dpnC0J4eAX|~$X2SZ? zs)5hf7$BY1LT|FA9(;P!CMEhNeV^U%E8ZWivLeu@v>3TfEqdKpKGdTslJzmgJy^@z z;mk5p?=19V z5?)raGB) zD61TP%8;fe41;etcexxpJP3u7HE}HU28EozE0dj~k7bt6Lo(jy{$Rhd*|D8sPDdmP zN2_A>ZY+(IH(+|h8ckO>Iyq2673y3gzsv#*GcdWP2O?Q|X3VUBI{u7M$-jq-e2m-? z*B3NhDZs0H8)LKQ?J&z8iL`%D>A}6VF^0Ka#D;0$im@!DnIgL1#lx5?jCj<^jG%A| z&Cl{3*O3AS9S)#<{Cz>ejylc(NoLWwp;e^0d$y5aljYPSNOR_px$%sPslr1Uk7%-G84RvZrC)R3O_O zGxqeMCDc8zXSRRnyt$rTWc0)6KlmuUsvP(hNeOh7kq&lv{D{K1Tm7@@)#L^NI*)1B z?wnDIdh!BzXSF7_EqM4xrsN(zvni~burD&1KpMya1hoAF|-Gk zaHC%x-kp@6$L=Cp4Fq&#l%JlGg}%a~@!oW8u&{pp0yIMqgi0+-98`4Pz{BTHKFBNm z{t81X$VPr2)(Vstk)Xi+al8!5V1;juyH(4XO~6>vhvJp|OwaT}5b#==FU-%}8yW%C zrU)?2lNg~UsBI*MPMxXuyz$ZeY$jv!IzGA{czrg&F>IPSLPI+lN9*EE9`*<^oWOy{ z!M9xbH-KT8I)C>*5dJ!W3Pazm<8wNZoNw}}Md=psbZoW#y))}8GZTwTE{?G=4(puc zLHHmZl>8N=;;*laBy&lkM281PuHJ(x#c6Weo*xq2&((XF@I8g zmid+h&10ooq!7MY_shwhv?~bM|M0Ys=$-B_@=L8)qn|62>G}bA4?=El>dkO$bIiIK-v5UhP3LNcO&t z>0241c0lAI;F7S*8d0rrDgL!r^4?qedpucfKC}XgW<^mzy)zGdw07YBYGRi&mlqiF(l`$# z+e1$9p&83^_5k(_#$0ZE)*OZ}OOQlEP?hi7Kvcj7|3cy3~ma8mcI{B zy*1v^Tlc2%v6)_eCv(7V1ev7*W509h*Y{VlpDK@&206~`0rmja5yo0Iv8>$_^B(nP zEc+4#VAo|&W1s-EpeofX{}GyxK({tNw|axZWYL4MHx2--lpuX|JB$M_+E>6qxbv9L zK-+cyjhA@C*;p0|$E3NRTw|T6v>C8YpXi1Q`kuSf#g1>J8v@sl7tKyyZ9F>0gL01_ zcmFid)+SL%VqaAZCCt{}dT}gtGQVO>dY013S#t{@!9CcgVHE2|hu55csQ+p`sXuWB zAR=Qiw5Q=trqF9TM@nUayJ$VU&+*6Nl5THrw0|obSSL+oTYQ?7qu|Gxdh@{VW|1aY z?W3bco^Y!VC%U4U>L^H_j!*Hnm3S2~tCI@qv-!es2y%oTlU%%n6Fiv0%JNS(#>FblW$I=Nc)EHf

    w> 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 literal 0 HcmV?d00001 diff --git a/samples/client/petstore/objc/Podfile.lock b/samples/client/petstore/objc/Podfile.lock index f52a69324db..a3466a08296 100644 --- a/samples/client/petstore/objc/Podfile.lock +++ b/samples/client/petstore/objc/Podfile.lock @@ -1,10 +1,30 @@ PODS: - - AFNetworking (1.3.3) + - 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 (~> 1.0) + - AFNetworking (~> 2.1) SPEC CHECKSUMS: - AFNetworking: 0700ec7a58c36ad217173e167f6e4df7270df66b + AFNetworking: 8bee59492a6ff15d69130efa4d0dc67e0094a52a -COCOAPODS: 0.25.0 +COCOAPODS: 0.35.0 diff --git a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFHTTPClient.h b/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFHTTPClient.h deleted file mode 100644 index 3826b6f2f5c..00000000000 --- a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFHTTPClient.h +++ /dev/null @@ -1,641 +0,0 @@ -// AFHTTPClient.h -// -// Copyright (c) 2011 Gowalla (http://gowalla.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" - -#import - -/** - `AFHTTPClient` captures the common patterns of communicating with an web application over HTTP. It encapsulates information like base URL, authorization credentials, and HTTP headers, and uses them to construct and manage the execution of HTTP request operations. - - ## Automatic Content Parsing - - Instances of `AFHTTPClient` may specify which types of requests it expects and should handle by registering HTTP operation classes for automatic parsing. Registered classes will determine whether they can handle a particular request, and then construct a request operation accordingly in `enqueueHTTPRequestOperationWithRequest:success:failure`. - - ## Subclassing Notes - - In most cases, one should create an `AFHTTPClient` subclass for each website or web application that your application communicates with. It is often useful, also, to define a class method that returns a singleton shared HTTP client in each subclass, that persists authentication credentials and other configuration across the entire application. - - ## Methods to Override - - To change the behavior of all url request construction for an `AFHTTPClient` subclass, override `requestWithMethod:path:parameters`. - - To change the behavior of all request operation construction for an `AFHTTPClient` subclass, override `HTTPRequestOperationWithRequest:success:failure`. - - ## Default Headers - - By default, `AFHTTPClient` sets the following HTTP headers: - - - `Accept-Language: (comma-delimited preferred languages), en-us;q=0.8` - - `User-Agent: (generated user agent)` - - You can override these HTTP headers or define new ones using `setDefaultHeader:value:`. - - ## URL Construction Using Relative Paths - - Both `-requestWithMethod:path:parameters:` and `-multipartFormRequestWithMethod:path:parameters:constructingBodyWithBlock:` construct URLs from the path relative to the `-baseURL`, using `NSURL +URLWithString:relativeToURL:`. 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, which would otherwise cause unexpected behavior when constructing URLs using paths without a leading slash. - - ## NSCoding / NSCopying Conformance - - `AFHTTPClient` conforms to the `NSCoding` 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. - - NSCoding cannot serialize / deserialize block properties, so an archive of an HTTP client will not include any reachability callback block that may be set. - */ - -#ifdef _SYSTEMCONFIGURATION_H -typedef enum { - AFNetworkReachabilityStatusUnknown = -1, - AFNetworkReachabilityStatusNotReachable = 0, - AFNetworkReachabilityStatusReachableViaWWAN = 1, - AFNetworkReachabilityStatusReachableViaWiFi = 2, -} AFNetworkReachabilityStatus; -#else -#pragma message("SystemConfiguration framework not found in project, or not included in precompiled header. Network reachability functionality will not be available.") -#endif - -#ifndef __UTTYPE__ -#if __IPHONE_OS_VERSION_MIN_REQUIRED -#pragma message("MobileCoreServices framework not found in project, or not included in precompiled header. Automatic MIME type detection when uploading files in multipart requests will not be available.") -#else -#pragma message("CoreServices framework not found in project, or not included in precompiled header. Automatic MIME type detection when uploading files in multipart requests will not be available.") -#endif -#endif - -typedef enum { - AFFormURLParameterEncoding, - AFJSONParameterEncoding, - AFPropertyListParameterEncoding, -} AFHTTPClientParameterEncoding; - -@class AFHTTPRequestOperation; -@protocol AFMultipartFormData; - -@interface AFHTTPClient : NSObject - -///--------------------------------------- -/// @name Accessing HTTP Client Properties -///--------------------------------------- - -/** - The url used as the base for paths specified in methods such as `getPath:parameters:success:failure` - */ -@property (readonly, nonatomic, strong) NSURL *baseURL; - -/** - The string encoding used in constructing url requests. This is `NSUTF8StringEncoding` by default. - */ -@property (nonatomic, assign) NSStringEncoding stringEncoding; - -/** - The `AFHTTPClientParameterEncoding` value corresponding to how parameters are encoded into a request body for request methods other than `GET`, `HEAD` or `DELETE`. This is `AFFormURLParameterEncoding` by default. - - @warning Some nested parameter structures, such as a keyed array of hashes containing inconsistent keys (i.e. `@{@"": @[@{@"a" : @(1)}, @{@"b" : @(2)}]}`), cannot be unambiguously represented in query strings. It is strongly recommended that an unambiguous encoding, such as `AFJSONParameterEncoding`, is used when posting complicated or nondeterministic parameter structures. - */ -@property (nonatomic, assign) AFHTTPClientParameterEncoding parameterEncoding; - -/** - The operation queue which manages operations enqueued by the HTTP client. - */ -@property (readonly, nonatomic, strong) NSOperationQueue *operationQueue; - -/** - The reachability status from the device to the current `baseURL` of the `AFHTTPClient`. - - @warning This property requires the `SystemConfiguration` framework. Add it in the active target's "Link Binary With Library" build phase, and add `#import ` to the header prefix of the project (`Prefix.pch`). - */ -#ifdef _SYSTEMCONFIGURATION_H -@property (readonly, nonatomic, assign) AFNetworkReachabilityStatus networkReachabilityStatus; -#endif - -/** - Default SSL pinning mode for each `AFHTTPRequestOperation` created by `HTTPRequestOperationWithRequest:success:failure:`. - */ -@property (nonatomic, assign) AFURLConnectionOperationSSLPinningMode defaultSSLPinningMode; - -/** - Whether each `AFHTTPRequestOperation` created by `HTTPRequestOperationWithRequest:success:failure:` should accept an invalid SSL certificate. - - If `_AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_` is set, this property defaults to `YES` for backwards compatibility. Otherwise, this property defaults to `NO`. - */ -@property (nonatomic, assign) BOOL allowsInvalidSSLCertificate; - -///--------------------------------------------- -/// @name Creating and Initializing HTTP Clients -///--------------------------------------------- - -/** - Creates and initializes an `AFHTTPClient` object with the specified base URL. - - @param url The base URL for the HTTP client. This argument must not be `nil`. - - @return The newly-initialized HTTP client - */ -+ (instancetype)clientWithBaseURL:(NSURL *)url; - -/** - Initializes an `AFHTTPClient` object with the specified base URL. - - This is the designated initializer. - - @param url The base URL for the HTTP client. This argument must not be `nil`. - - @return The newly-initialized HTTP client - */ -- (id)initWithBaseURL:(NSURL *)url; - -///----------------------------------- -/// @name Managing Reachability Status -///----------------------------------- - -/** - 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`. - - @warning This method requires the `SystemConfiguration` framework. Add it in the active target's "Link Binary With Library" build phase, and add `#import ` to the header prefix of the project (`Prefix.pch`). - */ -#ifdef _SYSTEMCONFIGURATION_H -- (void)setReachabilityStatusChangeBlock:(void (^)(AFNetworkReachabilityStatus status))block; -#endif - -///------------------------------- -/// @name Managing HTTP Operations -///------------------------------- - -/** - Attempts to register a subclass of `AFHTTPRequestOperation`, adding it to a chain to automatically generate request operations from a URL request. - - When `enqueueHTTPRequestOperationWithRequest:success:failure` is invoked, each registered class is consulted in turn to see if it can handle the specific request. The first class to return `YES` when sent a `canProcessRequest:` message is used to create an operation using `initWithURLRequest:` and do `setCompletionBlockWithSuccess:failure:`. There is no guarantee that all registered classes will be consulted. Classes are consulted in the reverse order of their registration. Attempting to register an already-registered class will move it to the top of the list. - - @param operationClass The subclass of `AFHTTPRequestOperation` to register - - @return `YES` if the registration is successful, `NO` otherwise. The only failure condition is if `operationClass` is not a subclass of `AFHTTPRequestOperation`. - */ -- (BOOL)registerHTTPOperationClass:(Class)operationClass; - -/** - Unregisters the specified subclass of `AFHTTPRequestOperation` from the chain of classes consulted when `-requestWithMethod:path:parameters` is called. - - @param operationClass The subclass of `AFHTTPRequestOperation` to register - */ -- (void)unregisterHTTPOperationClass:(Class)operationClass; - -///---------------------------------- -/// @name Managing HTTP Header Values -///---------------------------------- - -/** - Returns the value for the HTTP headers set in request objects created by the HTTP client. - - @param header The HTTP header to return the default value for - - @return The default value for the HTTP header, or `nil` if unspecified - */ -- (NSString *)defaultValueForHeader:(NSString *)header; - -/** - 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 header The HTTP header to set a default value for - @param value The value set as default for the specified header, or `nil - */ -- (void)setDefaultHeader:(NSString *)header - value:(NSString *)value; - -/** - 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)setAuthorizationHeaderWithUsername:(NSString *)username - password:(NSString *)password; - -/** - Sets the "Authorization" HTTP header set in request objects made by the HTTP client to a token-based authentication value, such as an OAuth access token. This overwrites any existing value for this header. - - @param token The authentication token - */ -- (void)setAuthorizationHeaderWithToken:(NSString *)token; - - -/** - Clears any existing value for the "Authorization" HTTP header. - */ -- (void)clearAuthorizationHeader; - -///------------------------------- -/// @name Managing URL Credentials -///------------------------------- - -/** - Set the default URL credential to be set for request operations. - - @param credential The URL credential - */ -- (void)setDefaultCredential:(NSURLCredential *)credential; - -///------------------------------- -/// @name Creating Request Objects -///------------------------------- - -/** - Creates an `NSMutableURLRequest` object with the specified HTTP method and path. - - 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 path The path to be appended to the HTTP client's base URL and used as the request URL. If `nil`, no path will be appended to the base URL. - @param parameters The parameters to be either set as a query string for `GET` requests, or the request HTTP body. - - @return An `NSMutableURLRequest` object - */ -- (NSMutableURLRequest *)requestWithMethod:(NSString *)method - path:(NSString *)path - parameters:(NSDictionary *)parameters; - -/** - Creates an `NSMutableURLRequest` object with the specified HTTP method and path, 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 path The path to be appended to the HTTP client's base URL and used as 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. This can be used to upload files, encode HTTP body as JSON or XML, or specify multiple values for the same parameter, as one might for array values. - - @return An `NSMutableURLRequest` object - */ -- (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method - path:(NSString *)path - parameters:(NSDictionary *)parameters - constructingBodyWithBlock:(void (^)(id formData))block; - -///------------------------------- -/// @name Creating HTTP Operations -///------------------------------- - -/** - Creates an `AFHTTPRequestOperation`. - - In order to determine what kind of operation is created, each registered subclass conforming to the `AFHTTPClient` protocol is consulted (in reverse order of when they were specified) to see if it can handle the specific request. The first class to return `YES` when sent a `canProcessRequest:` message is used to generate an operation using `HTTPRequestOperationWithRequest:success:failure:`. - - @param urlRequest 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 *)urlRequest - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; - -///---------------------------------------- -/// @name Managing Enqueued HTTP Operations -///---------------------------------------- - -/** - Enqueues an `AFHTTPRequestOperation` to the HTTP client's operation queue. - - @param operation The HTTP request operation to be enqueued. - */ -- (void)enqueueHTTPRequestOperation:(AFHTTPRequestOperation *)operation; - -/** - Cancels all operations in the HTTP client's operation queue whose URLs match the specified HTTP method and path. - - This method only cancels `AFHTTPRequestOperations` whose request URL matches the HTTP client base URL with the path appended. For complete control over the lifecycle of enqueued operations, you can access the `operationQueue` property directly, which allows you to, for instance, cancel operations filtered by a predicate, or simply use `-cancelAllRequests`. Note that the operation queue may include non-HTTP operations, so be sure to check the type before attempting to directly introspect an operation's `request` property. - - @param method The HTTP method to match for the cancelled requests, such as `GET`, `POST`, `PUT`, or `DELETE`. If `nil`, all request operations with URLs matching the path will be cancelled. - @param path The path appended to the HTTP client base URL to match against the cancelled requests. If `nil`, no path will be appended to the base URL. - */ -- (void)cancelAllHTTPOperationsWithMethod:(NSString *)method path:(NSString *)path; - -///--------------------------------------- -/// @name Batching HTTP Request Operations -///--------------------------------------- - -/** - Creates and enqueues an `AFHTTPRequestOperation` to the HTTP client's operation queue for each specified request object into a batch. When each request operation finishes, the specified progress block is executed, until all of the request operations have finished, at which point the completion block also executes. - - Operations are created by passing the specified `NSURLRequest` objects in `requests`, using `-HTTPRequestOperationWithRequest:success:failure:`, with `nil` for both the `success` and `failure` parameters. - - @param urlRequests The `NSURLRequest` objects used to create and enqueue operations. - @param progressBlock A block object to be executed upon the completion of each request operation in the batch. This block has no return value and takes two arguments: the number of operations that have already finished execution, and the total number of operations. - @param completionBlock A block object to be executed upon the completion of all of the request operations in the batch. This block has no return value and takes a single argument: the batched request operations. - */ -- (void)enqueueBatchOfHTTPRequestOperationsWithRequests:(NSArray *)urlRequests - progressBlock:(void (^)(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations))progressBlock - completionBlock:(void (^)(NSArray *operations))completionBlock; - -/** - Enqueues the specified request operations into a batch. When each request operation finishes, the specified progress block is executed, until all of the request operations have finished, at which point the completion block also executes. - - @param operations The request operations used to be batched and enqueued. - @param progressBlock A block object to be executed upon the completion of each request operation in the batch. This block has no return value and takes two arguments: the number of operations that have already finished execution, and the total number of operations. - @param completionBlock A block object to be executed upon the completion of all of the request operations in the batch. This block has no return value and takes a single argument: the batched request operations. - */ -- (void)enqueueBatchOfHTTPRequestOperations:(NSArray *)operations - progressBlock:(void (^)(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations))progressBlock - completionBlock:(void (^)(NSArray *operations))completionBlock; - -///--------------------------- -/// @name Making HTTP Requests -///--------------------------- - -/** - Creates an `AFHTTPRequestOperation` with a `GET` request, and enqueues it to the HTTP client's operation queue. - - @param path The path to be appended to the HTTP client's base URL and used as the request URL. - @param parameters The parameters to be encoded and appended as the query string for the request URL. - @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. - - @see -HTTPRequestOperationWithRequest:success:failure: - */ -- (void)getPath:(NSString *)path - parameters:(NSDictionary *)parameters - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; - -/** - Creates an `AFHTTPRequestOperation` with a `POST` request, and enqueues it to the HTTP client's operation queue. - - @param path The path to be appended to the HTTP client's base URL and used as the request URL. - @param parameters The parameters to be encoded and set in the request HTTP body. - @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. - - @see -HTTPRequestOperationWithRequest:success:failure: - */ -- (void)postPath:(NSString *)path - parameters:(NSDictionary *)parameters - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; - -/** - Creates an `AFHTTPRequestOperation` with a `PUT` request, and enqueues it to the HTTP client's operation queue. - - @param path The path to be appended to the HTTP client's base URL and used as the request URL. - @param parameters The parameters to be encoded and set in the request HTTP body. - @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. - - @see -HTTPRequestOperationWithRequest:success:failure: - */ -- (void)putPath:(NSString *)path - parameters:(NSDictionary *)parameters - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; - -/** - Creates an `AFHTTPRequestOperation` with a `DELETE` request, and enqueues it to the HTTP client's operation queue. - - @param path The path to be appended to the HTTP client's base URL and used as the request URL. - @param parameters The parameters to be encoded and appended as the query string for the request URL. - @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. - - @see -HTTPRequestOperationWithRequest:success:failure: - */ -- (void)deletePath:(NSString *)path - parameters:(NSDictionary *)parameters - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; - -/** - Creates an `AFHTTPRequestOperation` with a `PATCH` request, and enqueues it to the HTTP client's operation queue. - - @param path The path to be appended to the HTTP client's base URL and used as the request URL. - @param parameters The parameters to be encoded and set in the request HTTP body. - @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. - - @see -HTTPRequestOperationWithRequest:success:failure: - */ -- (void)patchPath:(NSString *)path - parameters:(NSDictionary *)parameters - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; -@end - -///---------------- -/// @name Constants -///---------------- - -/** - ## Network Reachability - - The following constants are provided by `AFHTTPClient` 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. - - ## Parameter Encoding - - The following constants are provided by `AFHTTPClient` as possible methods for serializing parameters into query string or message body values. - - enum { - AFFormURLParameterEncoding, - AFJSONParameterEncoding, - AFPropertyListParameterEncoding, - } - - `AFFormURLParameterEncoding` - Parameters are encoded into field/key pairs in the URL query string for `GET` `HEAD` and `DELETE` requests, and in the message body otherwise. Dictionary keys are sorted with the `caseInsensitiveCompare:` selector of their description, in order to mitigate the possibility of ambiguous query strings being generated non-deterministically. See the warning for the `parameterEncoding` property for additional information. - - `AFJSONParameterEncoding` - Parameters are encoded into JSON in the message body. - - `AFPropertyListParameterEncoding` - Parameters are encoded into a property list in the message body. - */ - -///---------------- -/// @name Functions -///---------------- - -/** - Returns a query string constructed by a set of parameters, using the specified encoding. - - Query strings are constructed by collecting each key-value pair, percent escaping a string representation of the key-value pair, and then joining the pairs with "&". - - If a query string pair has a an `NSArray` for its value, each member of the array will be represented in the format `field[]=value1&field[]value2`. Otherwise, the pair will be formatted as "field=value". String representations of both keys and values are derived using the `-description` method. The constructed query string does not include the ? character used to delimit the query component. - - @param parameters The parameters used to construct the query string - @param encoding The encoding to use in constructing the query string. If you are uncertain of the correct encoding, you should use UTF-8 (`NSUTF8StringEncoding`), which is the encoding designated by RFC 3986 as the correct encoding for use in URLs. - - @return A percent-escaped query string - */ -extern NSString * AFQueryStringFromParametersWithEncoding(NSDictionary *parameters, NSStringEncoding encoding); - -///-------------------- -/// @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`). - */ -#ifdef _SYSTEMCONFIGURATION_H -extern NSString * const AFNetworkingReachabilityDidChangeNotification; -extern NSString * const AFNetworkingReachabilityNotificationStatusItem; -#endif - -#pragma mark - - -extern NSUInteger const kAFUploadStream3GSuggestedPacketSize; -extern NSTimeInterval const kAFUploadStream3GSuggestedDelay; - -/** - The `AFMultipartFormData` protocol defines the methods supported by the parameter in the block argument of `AFHTTPClient -multipartFormRequestWithMethod:path: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:(unsigned long long)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. - */ -- (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, as of iOS 6, there is no definite way to distinguish between a 3G, EDGE, or LTE connection. 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 32kb. - @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 diff --git a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFHTTPClient.m b/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFHTTPClient.m deleted file mode 100644 index 43b74a154de..00000000000 --- a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFHTTPClient.m +++ /dev/null @@ -1,1396 +0,0 @@ -// AFHTTPClient.m -// -// Copyright (c) 2011 Gowalla (http://gowalla.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 "AFHTTPClient.h" -#import "AFHTTPRequestOperation.h" - -#import - -#ifdef _SYSTEMCONFIGURATION_H -#import -#import -#import -#import -#import -#endif - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) -#import -#endif - -#ifdef _SYSTEMCONFIGURATION_H -NSString * const AFNetworkingReachabilityDidChangeNotification = @"com.alamofire.networking.reachability.change"; -NSString * const AFNetworkingReachabilityNotificationStatusItem = @"AFNetworkingReachabilityNotificationStatusItem"; - -typedef SCNetworkReachabilityRef AFNetworkReachabilityRef; -typedef void (^AFNetworkReachabilityStatusBlock)(AFNetworkReachabilityStatus status); -#else -typedef id AFNetworkReachabilityRef; -#endif - -typedef void (^AFCompletionBlock)(void); - -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 -@synthesize field = _field; -@synthesize value = _value; - -- (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); - -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]; - - 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 - NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"description" ascending:YES selector:@selector(caseInsensitiveCompare:)]; - 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) { - [mutableQueryStringComponents addObjectsFromArray:AFQueryStringPairsFromKeyAndValue(key, obj)]; - } - } else { - [mutableQueryStringComponents addObject:[[AFQueryStringPair alloc] initWithField:key value:value]]; - } - - return mutableQueryStringComponents; -} - -@interface AFStreamingMultipartFormData : NSObject -- (id)initWithURLRequest:(NSMutableURLRequest *)urlRequest - stringEncoding:(NSStringEncoding)encoding; - -- (NSMutableURLRequest *)requestByFinalizingMultipartFormData; -@end - -#pragma mark - - -@interface AFHTTPClient () -@property (readwrite, nonatomic, strong) NSURL *baseURL; -@property (readwrite, nonatomic, strong) NSMutableArray *registeredHTTPOperationClassNames; -@property (readwrite, nonatomic, strong) NSMutableDictionary *defaultHeaders; -@property (readwrite, nonatomic, strong) NSURLCredential *defaultCredential; -@property (readwrite, nonatomic, strong) NSOperationQueue *operationQueue; -#ifdef _SYSTEMCONFIGURATION_H -@property (readwrite, nonatomic, assign) AFNetworkReachabilityRef networkReachability; -@property (readwrite, nonatomic, assign) AFNetworkReachabilityStatus networkReachabilityStatus; -@property (readwrite, nonatomic, copy) AFNetworkReachabilityStatusBlock networkReachabilityStatusBlock; -#endif - -#ifdef _SYSTEMCONFIGURATION_H -- (void)startMonitoringNetworkReachability; -- (void)stopMonitoringNetworkReachability; -#endif -@end - -@implementation AFHTTPClient -@synthesize baseURL = _baseURL; -@synthesize stringEncoding = _stringEncoding; -@synthesize parameterEncoding = _parameterEncoding; -@synthesize registeredHTTPOperationClassNames = _registeredHTTPOperationClassNames; -@synthesize defaultHeaders = _defaultHeaders; -@synthesize defaultCredential = _defaultCredential; -@synthesize operationQueue = _operationQueue; -#ifdef _SYSTEMCONFIGURATION_H -@synthesize networkReachability = _networkReachability; -@synthesize networkReachabilityStatus = _networkReachabilityStatus; -@synthesize networkReachabilityStatusBlock = _networkReachabilityStatusBlock; -#endif -@synthesize defaultSSLPinningMode = _defaultSSLPinningMode; -@synthesize allowsInvalidSSLCertificate = _allowsInvalidSSLCertificate; - -+ (instancetype)clientWithBaseURL:(NSURL *)url { - return [[self alloc] initWithBaseURL:url]; -} - -- (id)init { - @throw [NSException exceptionWithName:NSInternalInconsistencyException reason:[NSString stringWithFormat:@"%@ Failed to call designated initializer. Invoke `initWithBaseURL:` instead.", NSStringFromClass([self class])] userInfo:nil]; -} - -- (id)initWithBaseURL:(NSURL *)url { - NSParameterAssert(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.stringEncoding = NSUTF8StringEncoding; - self.parameterEncoding = AFFormURLParameterEncoding; - - self.registeredHTTPOperationClassNames = [NSMutableArray array]; - - self.defaultHeaders = [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 setDefaultHeader:@"Accept-Language" value:[acceptLanguagesComponents componentsJoinedByString:@", "]]; - - 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], (__bridge id)CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), kCFBundleVersionKey) ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleVersionKey], [[UIDevice currentDevice] model], [[UIDevice currentDevice] systemVersion], ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] ? [[UIScreen mainScreen] scale] : 1.0f)]; -#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]; - CFStringTransform((__bridge CFMutableStringRef)(mutableUserAgent), NULL, kCFStringTransformToLatin, false); - userAgent = mutableUserAgent; - } - [self setDefaultHeader:@"User-Agent" value:userAgent]; - } - -#ifdef _SYSTEMCONFIGURATION_H - self.networkReachabilityStatus = AFNetworkReachabilityStatusUnknown; - [self startMonitoringNetworkReachability]; -#endif - - self.operationQueue = [[NSOperationQueue alloc] init]; - [self.operationQueue setMaxConcurrentOperationCount:NSOperationQueueDefaultMaxConcurrentOperationCount]; - - // #ifdef included for backwards-compatibility -#ifdef _AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_ - self.allowsInvalidSSLCertificate = YES; -#endif - - return self; -} - -- (void)dealloc { -#ifdef _SYSTEMCONFIGURATION_H - [self stopMonitoringNetworkReachability]; -#endif -} - -- (NSString *)description { - return [NSString stringWithFormat:@"<%@: %p, baseURL: %@, defaultHeaders: %@, registeredOperationClasses: %@, operationQueue: %@>", NSStringFromClass([self class]), self, [self.baseURL absoluteString], self.defaultHeaders, self.registeredHTTPOperationClassNames, self.operationQueue]; -} - -#pragma mark - - -#ifdef _SYSTEMCONFIGURATION_H -static BOOL AFURLHostIsIPAddress(NSURL *url) { - struct sockaddr_in sa_in; - struct sockaddr_in6 sa_in6; - - return [url host] && (inet_pton(AF_INET, [[url host] UTF8String], &sa_in) == 1 || inet_pton(AF_INET6, [[url host] UTF8String], &sa_in6) == 1); -} - -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:[NSDictionary dictionaryWithObject:[NSNumber numberWithInteger:status] forKey:AFNetworkingReachabilityNotificationStatusItem]]; - }); -} - -static const void * AFNetworkReachabilityRetainCallback(const void *info) { - return Block_copy(info); -} - -static void AFNetworkReachabilityReleaseCallback(const void *info) { - if (info) { - Block_release(info); - } -} - -- (void)startMonitoringNetworkReachability { - [self stopMonitoringNetworkReachability]; - - if (!self.baseURL) { - return; - } - - self.networkReachability = SCNetworkReachabilityCreateWithName(kCFAllocatorDefault, [[self.baseURL host] UTF8String]); - - if (!self.networkReachability) { - return; - } - - __weak __typeof(&*self)weakSelf = self; - AFNetworkReachabilityStatusBlock callback = ^(AFNetworkReachabilityStatus status) { - __strong __typeof(&*weakSelf)strongSelf = weakSelf; - if (!strongSelf) { - return; - } - - strongSelf.networkReachabilityStatus = status; - if (strongSelf.networkReachabilityStatusBlock) { - strongSelf.networkReachabilityStatusBlock(status); - } - }; - - SCNetworkReachabilityContext context = {0, (__bridge void *)callback, AFNetworkReachabilityRetainCallback, AFNetworkReachabilityReleaseCallback, NULL}; - SCNetworkReachabilitySetCallback(self.networkReachability, AFNetworkReachabilityCallback, &context); - - /* Network reachability monitoring does not establish a baseline for IP addresses as it does for hostnames, so if the base URL host is an IP address, the initial reachability callback is manually triggered. - */ - if (AFURLHostIsIPAddress(self.baseURL)) { - SCNetworkReachabilityFlags flags; - SCNetworkReachabilityGetFlags(self.networkReachability, &flags); - dispatch_async(dispatch_get_main_queue(), ^{ - AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusForFlags(flags); - callback(status); - }); - } - - SCNetworkReachabilityScheduleWithRunLoop(self.networkReachability, CFRunLoopGetMain(), kCFRunLoopCommonModes); -} - -- (void)stopMonitoringNetworkReachability { - if (self.networkReachability) { - SCNetworkReachabilityUnscheduleFromRunLoop(self.networkReachability, CFRunLoopGetMain(), kCFRunLoopCommonModes); - - CFRelease(_networkReachability); - _networkReachability = NULL; - } -} - -- (void)setReachabilityStatusChangeBlock:(void (^)(AFNetworkReachabilityStatus status))block { - self.networkReachabilityStatusBlock = block; -} -#endif - -#pragma mark - - -- (BOOL)registerHTTPOperationClass:(Class)operationClass { - if (![operationClass isSubclassOfClass:[AFHTTPRequestOperation class]]) { - return NO; - } - - NSString *className = NSStringFromClass(operationClass); - [self.registeredHTTPOperationClassNames removeObject:className]; - [self.registeredHTTPOperationClassNames insertObject:className atIndex:0]; - - return YES; -} - -- (void)unregisterHTTPOperationClass:(Class)operationClass { - NSString *className = NSStringFromClass(operationClass); - [self.registeredHTTPOperationClassNames removeObject:className]; -} - -#pragma mark - - -- (NSString *)defaultValueForHeader:(NSString *)header { - return [self.defaultHeaders valueForKey:header]; -} - -- (void)setDefaultHeader:(NSString *)header value:(NSString *)value { - [self.defaultHeaders setValue:value forKey:header]; -} - -- (void)setAuthorizationHeaderWithUsername:(NSString *)username password:(NSString *)password { - NSString *basicAuthCredentials = [NSString stringWithFormat:@"%@:%@", username, password]; - [self setDefaultHeader:@"Authorization" value:[NSString stringWithFormat:@"Basic %@", AFBase64EncodedStringFromString(basicAuthCredentials)]]; -} - -- (void)setAuthorizationHeaderWithToken:(NSString *)token { - [self setDefaultHeader:@"Authorization" value:[NSString stringWithFormat:@"Token token=\"%@\"", token]]; -} - -- (void)clearAuthorizationHeader { - [self.defaultHeaders removeObjectForKey:@"Authorization"]; -} - -#pragma mark - - -- (NSMutableURLRequest *)requestWithMethod:(NSString *)method - path:(NSString *)path - parameters:(NSDictionary *)parameters -{ - NSParameterAssert(method); - - if (!path) { - path = @""; - } - - NSURL *url = [NSURL URLWithString:path relativeToURL:self.baseURL]; - NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url]; - [request setHTTPMethod:method]; - [request setAllHTTPHeaderFields:self.defaultHeaders]; - - if (parameters) { - if ([method isEqualToString:@"GET"] || [method isEqualToString:@"HEAD"] || [method isEqualToString:@"DELETE"]) { - url = [NSURL URLWithString:[[url absoluteString] stringByAppendingFormat:[path rangeOfString:@"?"].location == NSNotFound ? @"?%@" : @"&%@", AFQueryStringFromParametersWithEncoding(parameters, self.stringEncoding)]]; - [request setURL:url]; - } else { - NSString *charset = (__bridge NSString *)CFStringConvertEncodingToIANACharSetName(CFStringConvertNSStringEncodingToEncoding(self.stringEncoding)); - NSError *error = nil; - - switch (self.parameterEncoding) { - case AFFormURLParameterEncoding:; - [request setValue:[NSString stringWithFormat:@"application/x-www-form-urlencoded; charset=%@", charset] forHTTPHeaderField:@"Content-Type"]; - [request setHTTPBody:[AFQueryStringFromParametersWithEncoding(parameters, self.stringEncoding) dataUsingEncoding:self.stringEncoding]]; - break; - case AFJSONParameterEncoding:; - [request setValue:[NSString stringWithFormat:@"application/json; charset=%@", charset] forHTTPHeaderField:@"Content-Type"]; - [request setHTTPBody:[NSJSONSerialization dataWithJSONObject:parameters options:(NSJSONWritingOptions)0 error:&error]]; - break; - case AFPropertyListParameterEncoding:; - [request setValue:[NSString stringWithFormat:@"application/x-plist; charset=%@", charset] forHTTPHeaderField:@"Content-Type"]; - [request setHTTPBody:[NSPropertyListSerialization dataWithPropertyList:parameters format:NSPropertyListXMLFormat_v1_0 options:0 error:&error]]; - break; - } - - if (error) { - NSLog(@"%@ %@: %@", [self class], NSStringFromSelector(_cmd), error); - } - } - } - - return request; -} - -- (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method - path:(NSString *)path - parameters:(NSDictionary *)parameters - constructingBodyWithBlock:(void (^)(id formData))block -{ - NSParameterAssert(method); - NSParameterAssert(![method isEqualToString:@"GET"] && ![method isEqualToString:@"HEAD"]); - - NSMutableURLRequest *request = [self requestWithMethod:method path:path parameters:nil]; - - __block AFStreamingMultipartFormData *formData = [[AFStreamingMultipartFormData alloc] initWithURLRequest:request stringEncoding:self.stringEncoding]; - - 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]; -} - -- (AFHTTPRequestOperation *)HTTPRequestOperationWithRequest:(NSURLRequest *)urlRequest - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure -{ - AFHTTPRequestOperation *operation = nil; - - for (NSString *className in self.registeredHTTPOperationClassNames) { - Class operationClass = NSClassFromString(className); - if (operationClass && [operationClass canProcessRequest:urlRequest]) { - operation = [(AFHTTPRequestOperation *)[operationClass alloc] initWithRequest:urlRequest]; - break; - } - } - - if (!operation) { - operation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest]; - } - - [operation setCompletionBlockWithSuccess:success failure:failure]; - - operation.credential = self.defaultCredential; - operation.SSLPinningMode = self.defaultSSLPinningMode; - operation.allowsInvalidSSLCertificate = self.allowsInvalidSSLCertificate; - - return operation; -} - -#pragma mark - - -- (void)enqueueHTTPRequestOperation:(AFHTTPRequestOperation *)operation { - [self.operationQueue addOperation:operation]; -} - -- (void)cancelAllHTTPOperationsWithMethod:(NSString *)method - path:(NSString *)path -{ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgnu" - NSString *pathToBeMatched = [[[self requestWithMethod:(method ?: @"GET") path:path parameters:nil] URL] path]; -#pragma clang diagnostic pop - - for (NSOperation *operation in [self.operationQueue operations]) { - if (![operation isKindOfClass:[AFHTTPRequestOperation class]]) { - continue; - } - - BOOL hasMatchingMethod = !method || [method isEqualToString:[[(AFHTTPRequestOperation *)operation request] HTTPMethod]]; - BOOL hasMatchingPath = [[[[(AFHTTPRequestOperation *)operation request] URL] path] isEqual:pathToBeMatched]; - - if (hasMatchingMethod && hasMatchingPath) { - [operation cancel]; - } - } -} - -- (void)enqueueBatchOfHTTPRequestOperationsWithRequests:(NSArray *)urlRequests - progressBlock:(void (^)(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations))progressBlock - completionBlock:(void (^)(NSArray *operations))completionBlock -{ - NSMutableArray *mutableOperations = [NSMutableArray array]; - for (NSURLRequest *request in urlRequests) { - AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:nil failure:nil]; - [mutableOperations addObject:operation]; - } - - [self enqueueBatchOfHTTPRequestOperations:mutableOperations progressBlock:progressBlock completionBlock:completionBlock]; -} - -- (void)enqueueBatchOfHTTPRequestOperations:(NSArray *)operations - progressBlock:(void (^)(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations))progressBlock - completionBlock:(void (^)(NSArray *operations))completionBlock -{ - __block dispatch_group_t dispatchGroup = dispatch_group_create(); - NSBlockOperation *batchedOperation = [NSBlockOperation blockOperationWithBlock:^{ - dispatch_group_notify(dispatchGroup, dispatch_get_main_queue(), ^{ - if (completionBlock) { - completionBlock(operations); - } - }); -#if !OS_OBJECT_USE_OBJC - dispatch_release(dispatchGroup); -#endif - }]; - - for (AFHTTPRequestOperation *operation in operations) { - AFCompletionBlock originalCompletionBlock = [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.successCallbackQueue ?: dispatch_get_main_queue(); -#pragma clang diagnostic pop - dispatch_group_async(dispatchGroup, 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(dispatchGroup); - }); - }; - - dispatch_group_enter(dispatchGroup); - [batchedOperation addDependency:operation]; - } - [self.operationQueue addOperations:operations waitUntilFinished:NO]; - [self.operationQueue addOperation:batchedOperation]; -} - -#pragma mark - - -- (void)getPath:(NSString *)path - parameters:(NSDictionary *)parameters - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure -{ - NSURLRequest *request = [self requestWithMethod:@"GET" path:path parameters:parameters]; - AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:success failure:failure]; - [self enqueueHTTPRequestOperation:operation]; -} - -- (void)postPath:(NSString *)path - parameters:(NSDictionary *)parameters - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure -{ - NSURLRequest *request = [self requestWithMethod:@"POST" path:path parameters:parameters]; - AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:success failure:failure]; - [self enqueueHTTPRequestOperation:operation]; -} - -- (void)putPath:(NSString *)path - parameters:(NSDictionary *)parameters - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure -{ - NSURLRequest *request = [self requestWithMethod:@"PUT" path:path parameters:parameters]; - AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:success failure:failure]; - [self enqueueHTTPRequestOperation:operation]; -} - -- (void)deletePath:(NSString *)path - parameters:(NSDictionary *)parameters - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure -{ - NSURLRequest *request = [self requestWithMethod:@"DELETE" path:path parameters:parameters]; - AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:success failure:failure]; - [self enqueueHTTPRequestOperation:operation]; -} - -- (void)patchPath:(NSString *)path - parameters:(NSDictionary *)parameters - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure -{ - NSURLRequest *request = [self requestWithMethod:@"PATCH" path:path parameters:parameters]; - AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:success failure:failure]; - [self enqueueHTTPRequestOperation:operation]; -} - -#pragma mark - NSCoding - -- (id)initWithCoder:(NSCoder *)aDecoder { - NSURL *baseURL = [aDecoder decodeObjectForKey:@"baseURL"]; - - self = [self initWithBaseURL:baseURL]; - if (!self) { - return nil; - } - - self.stringEncoding = [aDecoder decodeIntegerForKey:@"stringEncoding"]; - self.parameterEncoding = (AFHTTPClientParameterEncoding) [aDecoder decodeIntegerForKey:@"parameterEncoding"]; - self.registeredHTTPOperationClassNames = [aDecoder decodeObjectForKey:@"registeredHTTPOperationClassNames"]; - self.defaultHeaders = [aDecoder decodeObjectForKey:@"defaultHeaders"]; - - return self; -} - -- (void)encodeWithCoder:(NSCoder *)aCoder { - [aCoder encodeObject:self.baseURL forKey:@"baseURL"]; - [aCoder encodeInteger:(NSInteger)self.stringEncoding forKey:@"stringEncoding"]; - [aCoder encodeInteger:self.parameterEncoding forKey:@"parameterEncoding"]; - [aCoder encodeObject:self.registeredHTTPOperationClassNames forKey:@"registeredHTTPOperationClassNames"]; - [aCoder encodeObject:self.defaultHeaders forKey:@"defaultHeaders"]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone { - AFHTTPClient *HTTPClient = [[[self class] allocWithZone:zone] initWithBaseURL:self.baseURL]; - - HTTPClient.stringEncoding = self.stringEncoding; - HTTPClient.parameterEncoding = self.parameterEncoding; - HTTPClient.registeredHTTPOperationClassNames = [self.registeredHTTPOperationClassNames mutableCopyWithZone:zone]; - HTTPClient.defaultHeaders = [self.defaultHeaders mutableCopyWithZone:zone]; -#ifdef _SYSTEMCONFIGURATION_H - HTTPClient.networkReachabilityStatusBlock = self.networkReachabilityStatusBlock; -#endif - return HTTPClient; -} - -@end - -#pragma mark - - -static NSString * const kAFMultipartFormBoundary = @"Boundary+0xAbCdEfGbOuNdArY"; - -static NSString * const kAFMultipartFormCRLF = @"\r\n"; - -static NSInteger const kAFStreamToStreamBufferSize = 1024 * 1024; //1 meg default - -static inline NSString * AFMultipartFormInitialBoundary() { - return [NSString stringWithFormat:@"--%@%@", kAFMultipartFormBoundary, kAFMultipartFormCRLF]; -} - -static inline NSString * AFMultipartFormEncapsulationBoundary() { - return [NSString stringWithFormat:@"%@--%@%@", kAFMultipartFormCRLF, kAFMultipartFormBoundary, kAFMultipartFormCRLF]; -} - -static inline NSString * AFMultipartFormFinalBoundary() { - return [NSString stringWithFormat:@"%@--%@--%@", kAFMultipartFormCRLF, kAFMultipartFormBoundary, 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 - 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, 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 (nonatomic, readonly, getter = hasBytesAvailable) BOOL bytesAvailable; -@property (nonatomic, readonly) 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 (nonatomic, readonly) unsigned long long contentLength; -@property (nonatomic, readonly, 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, strong) AFMultipartBodyStream *bodyStream; -@property (readwrite, nonatomic, assign) NSStringEncoding stringEncoding; -@end - -@implementation AFStreamingMultipartFormData -@synthesize request = _request; -@synthesize bodyStream = _bodyStream; -@synthesize stringEncoding = _stringEncoding; - -- (id)initWithURLRequest:(NSMutableURLRequest *)urlRequest - stringEncoding:(NSStringEncoding)encoding -{ - self = [super init]; - if (!self) { - return nil; - } - - self.request = urlRequest; - self.stringEncoding = encoding; - 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 = [NSDictionary dictionaryWithObject:NSLocalizedStringFromTable(@"Expected URL to be a file URL", @"AFNetworking", nil) forKey:NSLocalizedFailureReasonErrorKey]; - if (error != NULL) { - *error = [[NSError alloc] initWithDomain:AFNetworkingErrorDomain code:NSURLErrorBadURL userInfo:userInfo]; - } - - return NO; - } else if ([fileURL checkResourceIsReachableAndReturnError:error] == NO) { - NSDictionary *userInfo = [NSDictionary dictionaryWithObject:NSLocalizedStringFromTable(@"File URL not reachable.", @"AFNetworking", nil) forKey:NSLocalizedFailureReasonErrorKey]; - if (error != NULL) { - *error = [[NSError alloc] initWithDomain:AFNetworkingErrorDomain code:NSURLErrorBadURL userInfo:userInfo]; - } - - 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.body = fileURL; - - NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:[fileURL path] error:nil]; - bodyPart.bodyContentLength = [[fileAttributes objectForKey:NSFileSize] unsignedLongLongValue]; - - [self.bodyStream appendHTTPBodyPart:bodyPart]; - - return YES; -} - - -- (void)appendPartWithInputStream:(NSInputStream *)inputStream - name:(NSString *)name - fileName:(NSString *)fileName - length:(unsigned long long)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.body = inputStream; - - bodyPart.bodyContentLength = 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.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 setValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@", kAFMultipartFormBoundary] forHTTPHeaderField:@"Content-Type"]; - [self.request setValue:[NSString stringWithFormat:@"%llu", [self.bodyStream contentLength]] forHTTPHeaderField:@"Content-Length"]; - [self.request setHTTPBodyStream:self.bodyStream]; - - return self.request; -} - -@end - -#pragma mark - - -@interface AFMultipartBodyStream () -@property (nonatomic, assign) NSStreamStatus streamStatus; -@property (nonatomic, strong) NSError *streamError; -@property (nonatomic, assign) NSStringEncoding stringEncoding; -@property (nonatomic, strong) NSMutableArray *HTTPBodyParts; -@property (nonatomic, strong) NSEnumerator *HTTPBodyPartEnumerator; -@property (nonatomic, strong) AFHTTPBodyPart *currentHTTPBodyPart; -@property (nonatomic, strong) NSOutputStream *outputStream; -@property (nonatomic, strong) NSMutableData *buffer; -@end - -@implementation AFMultipartBodyStream -@synthesize streamStatus = _streamStatus; -@synthesize streamError = _streamError; -@synthesize stringEncoding = _stringEncoding; -@synthesize HTTPBodyParts = _HTTPBodyParts; -@synthesize HTTPBodyPartEnumerator = _HTTPBodyPartEnumerator; -@synthesize currentHTTPBodyPart = _currentHTTPBodyPart; -@synthesize inputStream = _inputStream; -@synthesize outputStream = _outputStream; -@synthesize buffer = _buffer; -@synthesize numberOfBytesInPacket = _numberOfBytesInPacket; -@synthesize delay = _delay; - -- (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; - - 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]; - } - } - } - } - - 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 -@synthesize stringEncoding = _stringEncoding; -@synthesize headers = _headers; -@synthesize body = _body; -@synthesize bodyContentLength = _bodyContentLength; -@synthesize inputStream = _inputStream; -@synthesize hasInitialBoundary = _hasInitialBoundary; -@synthesize hasFinalBoundary = _hasFinalBoundary; - -- (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; - } - } - - 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() : AFMultipartFormEncapsulationBoundary()) dataUsingEncoding:self.stringEncoding]; - length += [encapsulationBoundaryData length]; - - NSData *headersData = [[self stringForHeaders] dataUsingEncoding:self.stringEncoding]; - length += [headersData length]; - - length += _bodyContentLength; - - NSData *closingBoundaryData = ([self hasFinalBoundary] ? [AFMultipartFormFinalBoundary() 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 -{ - NSUInteger totalNumberOfBytesRead = 0; - - if (_phase == AFEncapsulationBoundaryPhase) { - NSData *encapsulationBoundaryData = [([self hasInitialBoundary] ? AFMultipartFormInitialBoundary() : AFMultipartFormEncapsulationBoundary()) 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() 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]) { - [self performSelectorOnMainThread:@selector(transitionToNextPhase) withObject:nil waitUntilDone:YES]; - 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; - - return bodyPart; -} - -@end diff --git a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h b/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h index b40e3d50671..c1e37f688a1 100644 --- a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h +++ b/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h @@ -1,6 +1,6 @@ // AFHTTPRequestOperation.h // -// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// 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 @@ -28,82 +28,26 @@ */ @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; -///---------------------------------------------------------- -/// @name Managing And Checking For Acceptable HTTP Responses -///---------------------------------------------------------- +/** + 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; /** - A Boolean value that corresponds to whether the status code of the response is within the specified set of acceptable status codes. Returns `YES` if `acceptableStatusCodes` is `nil`. + 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 (nonatomic, readonly) BOOL hasAcceptableStatusCode; - -/** - A Boolean value that corresponds to whether the MIME type of the response is among the specified set of acceptable content types. Returns `YES` if `acceptableContentTypes` is `nil`. - */ -@property (nonatomic, readonly) BOOL hasAcceptableContentType; - -/** - The callback dispatch queue on success. If `NULL` (default), the main queue is used. - */ -@property (nonatomic, assign) dispatch_queue_t successCallbackQueue; - -/** - The callback dispatch queue on failure. If `NULL` (default), the main queue is used. - */ -@property (nonatomic, assign) dispatch_queue_t failureCallbackQueue; - -///------------------------------------------------------------ -/// @name Managing Acceptable HTTP Status Codes & Content Types -///------------------------------------------------------------ - -/** - Returns an `NSIndexSet` object containing the ranges of acceptable HTTP status codes. When non-`nil`, the operation will set the `error` property to an error in `AFErrorDomain`. See http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html - - By default, this is the range 200 to 299, inclusive. - */ -+ (NSIndexSet *)acceptableStatusCodes; - -/** - Adds status codes to the set of acceptable HTTP status codes returned by `+acceptableStatusCodes` in subsequent calls by this class and its descendants. - - @param statusCodes The status codes to be added to the set of acceptable HTTP status codes - */ -+ (void)addAcceptableStatusCodes:(NSIndexSet *)statusCodes; - -/** - Returns an `NSSet` object containing the acceptable MIME types. When non-`nil`, the operation will set the `error` property to an error in `AFErrorDomain`. See http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17 - - By default, this is `nil`. - */ -+ (NSSet *)acceptableContentTypes; - -/** - Adds content types to the set of acceptable MIME types returned by `+acceptableContentTypes` in subsequent calls by this class and its descendants. - - @param contentTypes The content types to be added to the set of acceptable MIME types - */ -+ (void)addAcceptableContentTypes:(NSSet *)contentTypes; - - -///----------------------------------------------------- -/// @name Determining Whether A Request Can Be Processed -///----------------------------------------------------- - -/** - A Boolean value determining whether or not the class can process the specified request. For example, `AFJSONRequestOperation` may check to make sure the content type was `application/json` or the URL path extension was `.json`. - - @param urlRequest The request that is determined to be supported or not supported for this class. - */ -+ (BOOL)canProcessRequest:(NSURLRequest *)urlRequest; +@property (readonly, nonatomic, strong) id responseObject; ///----------------------------------------------------------- /// @name Setting Completion Block Success / Failure Callbacks @@ -113,7 +57,7 @@ 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. */ @@ -121,13 +65,3 @@ failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; @end - -///---------------- -/// @name Functions -///---------------- - -/** - Returns a set of MIME types detected in an HTTP `Accept` or `Content-Type` header. - */ -extern NSSet * AFContentTypesFromHTTPHeader(NSString *string); - diff --git a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m b/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m index 84f2badb694..e536f5d2e1f 100644 --- a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m +++ b/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m @@ -1,6 +1,6 @@ // AFHTTPRequestOperation.m // -// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// 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 @@ -21,247 +21,88 @@ // THE SOFTWARE. #import "AFHTTPRequestOperation.h" -#import -// Workaround for change in imp_implementationWithBlock() with Xcode 4.5 -#if defined(__IPHONE_6_0) || defined(__MAC_10_8) -#define AF_CAST_TO_BLOCK id -#else -#define AF_CAST_TO_BLOCK __bridge void * -#endif +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); + }); -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wstrict-selector-match" - -NSSet * AFContentTypesFromHTTPHeader(NSString *string) { - if (!string) { - return nil; - } - - NSArray *mediaRanges = [string componentsSeparatedByString:@","]; - NSMutableSet *mutableContentTypes = [NSMutableSet setWithCapacity:mediaRanges.count]; - - [mediaRanges enumerateObjectsUsingBlock:^(NSString *mediaRange, __unused NSUInteger idx, __unused BOOL *stop) { - NSRange parametersRange = [mediaRange rangeOfString:@";"]; - if (parametersRange.location != NSNotFound) { - mediaRange = [mediaRange substringToIndex:parametersRange.location]; - } - - mediaRange = [mediaRange stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; - - if (mediaRange.length > 0) { - [mutableContentTypes addObject:mediaRange]; - } - }]; - - return [NSSet setWithSet:mutableContentTypes]; + return af_http_request_operation_processing_queue; } -static void AFGetMediaTypeAndSubtypeWithString(NSString *string, NSString **type, NSString **subtype) { - if (!string) { - return; - } +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(); + }); - NSScanner *scanner = [NSScanner scannerWithString:string]; - [scanner setCharactersToBeSkipped:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; - [scanner scanUpToString:@"/" intoString:type]; - [scanner scanString:@"/" intoString:nil]; - [scanner scanUpToString:@";" intoString:subtype]; -} - -static NSString * AFStringFromIndexSet(NSIndexSet *indexSet) { - NSMutableString *string = [NSMutableString string]; - - NSRange range = NSMakeRange([indexSet firstIndex], 1); - while (range.location != NSNotFound) { - NSUInteger nextIndex = [indexSet indexGreaterThanIndex:range.location]; - while (nextIndex == range.location + range.length) { - range.length++; - nextIndex = [indexSet indexGreaterThanIndex:nextIndex]; - } - - if (string.length) { - [string appendString:@","]; - } - - if (range.length == 1) { - [string appendFormat:@"%lu", (long)range.location]; - } else { - NSUInteger firstIndex = range.location; - NSUInteger lastIndex = firstIndex + range.length - 1; - [string appendFormat:@"%lu-%lu", (long)firstIndex, (long)lastIndex]; - } - - range.location = nextIndex; - range.length = 1; - } - - return string; -} - -static void AFSwizzleClassMethodWithClassAndSelectorUsingBlock(Class klass, SEL selector, id block) { - Method originalMethod = class_getClassMethod(klass, selector); - IMP implementation = imp_implementationWithBlock((AF_CAST_TO_BLOCK)block); - class_replaceMethod(objc_getMetaClass([NSStringFromClass(klass) UTF8String]), selector, implementation, method_getTypeEncoding(originalMethod)); + return af_http_request_operation_completion_group; } #pragma mark - -@interface AFHTTPRequestOperation () +@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) NSError *HTTPError; +@property (readwrite, nonatomic, strong) id responseObject; +@property (readwrite, nonatomic, strong) NSError *responseSerializationError; @property (readwrite, nonatomic, strong) NSRecursiveLock *lock; @end @implementation AFHTTPRequestOperation -@synthesize HTTPError = _HTTPError; -@synthesize successCallbackQueue = _successCallbackQueue; -@synthesize failureCallbackQueue = _failureCallbackQueue; @dynamic lock; -@dynamic request; -@dynamic response; -- (void)dealloc { - if (_successCallbackQueue) { -#if !OS_OBJECT_USE_OBJC - dispatch_release(_successCallbackQueue); -#endif - _successCallbackQueue = NULL; +- (instancetype)initWithRequest:(NSURLRequest *)urlRequest { + self = [super initWithRequest:urlRequest]; + if (!self) { + return nil; } - if (_failureCallbackQueue) { -#if !OS_OBJECT_USE_OBJC - dispatch_release(_failureCallbackQueue); -#endif - _failureCallbackQueue = NULL; - } + self.responseSerializer = [AFHTTPResponseSerializer serializer]; + + return self; } -- (NSError *)error { - [self.lock lock]; - if (!self.HTTPError && self.response) { - if (![self hasAcceptableStatusCode] || ![self hasAcceptableContentType]) { - NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; - [userInfo setValue:self.responseString forKey:NSLocalizedRecoverySuggestionErrorKey]; - [userInfo setValue:[self.request URL] forKey:NSURLErrorFailingURLErrorKey]; - [userInfo setValue:self.request forKey:AFNetworkingOperationFailingURLRequestErrorKey]; - [userInfo setValue:self.response forKey:AFNetworkingOperationFailingURLResponseErrorKey]; +- (void)setResponseSerializer:(AFHTTPResponseSerializer *)responseSerializer { + NSParameterAssert(responseSerializer); - if (![self hasAcceptableStatusCode]) { - NSUInteger statusCode = ([self.response isKindOfClass:[NSHTTPURLResponse class]]) ? (NSUInteger)[self.response statusCode] : 200; - [userInfo setValue:[NSString stringWithFormat:NSLocalizedStringFromTable(@"Expected status code in (%@), got %d", @"AFNetworking", nil), AFStringFromIndexSet([[self class] acceptableStatusCodes]), statusCode] forKey:NSLocalizedDescriptionKey]; - self.HTTPError = [[NSError alloc] initWithDomain:AFNetworkingErrorDomain code:NSURLErrorBadServerResponse userInfo:userInfo]; - } else if (![self hasAcceptableContentType]) { - // Don't invalidate content type if there is no content - if ([self.responseData length] > 0) { - [userInfo setValue:[NSString stringWithFormat:NSLocalizedStringFromTable(@"Expected content type %@, got %@", @"AFNetworking", nil), [[self class] acceptableContentTypes], [self.response MIMEType]] forKey:NSLocalizedDescriptionKey]; - self.HTTPError = [[NSError alloc] initWithDomain:AFNetworkingErrorDomain code:NSURLErrorCannotDecodeContentData userInfo:userInfo]; - } - } + [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]; - if (self.HTTPError) { - return self.HTTPError; + return _responseObject; +} + +- (NSError *)error { + if (_responseSerializationError) { + return _responseSerializationError; } else { return [super error]; } } -- (NSStringEncoding)responseStringEncoding { - // When no explicit charset parameter is provided by the sender, media subtypes of the "text" type are defined to have a default charset value of "ISO-8859-1" when received via HTTP. Data in character sets other than "ISO-8859-1" or its subsets MUST be labeled with an appropriate charset value. - // See http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.4.1 - if (self.response && !self.response.textEncodingName && self.responseData && [self.response respondsToSelector:@selector(allHeaderFields)]) { - NSString *type = nil; - AFGetMediaTypeAndSubtypeWithString([[self.response allHeaderFields] valueForKey:@"Content-Type"], &type, nil); - - if ([type isEqualToString:@"text"]) { - return NSISOLatin1StringEncoding; - } - } - - return [super responseStringEncoding]; -} - -- (void)pause { - unsigned long long offset = 0; - if ([self.outputStream propertyForKey:NSStreamFileCurrentOffsetKey]) { - offset = [[self.outputStream propertyForKey:NSStreamFileCurrentOffsetKey] unsignedLongLongValue]; - } else { - offset = [[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; - - [super pause]; -} - -- (BOOL)hasAcceptableStatusCode { - if (!self.response) { - return NO; - } - - NSUInteger statusCode = ([self.response isKindOfClass:[NSHTTPURLResponse class]]) ? (NSUInteger)[self.response statusCode] : 200; - return ![[self class] acceptableStatusCodes] || [[[self class] acceptableStatusCodes] containsIndex:statusCode]; -} - -- (BOOL)hasAcceptableContentType { - if (!self.response) { - return NO; - } - - // Any HTTP/1.1 message containing an entity-body SHOULD include a Content-Type header field defining the media type of that body. If and only if the media type is not given by a Content-Type field, the recipient MAY attempt to guess the media type via inspection of its content and/or the name extension(s) of the URI used to identify the resource. If the media type remains unknown, the recipient SHOULD treat it as type "application/octet-stream". - // See http://www.w3.org/Protocols/rfc2616/rfc2616-sec7.html - NSString *contentType = [self.response MIMEType]; - if (!contentType) { - contentType = @"application/octet-stream"; - } - - return ![[self class] acceptableContentTypes] || [[[self class] acceptableContentTypes] containsObject:contentType]; -} - -- (void)setSuccessCallbackQueue:(dispatch_queue_t)successCallbackQueue { - if (successCallbackQueue != _successCallbackQueue) { - if (_successCallbackQueue) { -#if !OS_OBJECT_USE_OBJC - dispatch_release(_successCallbackQueue); -#endif - _successCallbackQueue = NULL; - } - - if (successCallbackQueue) { -#if !OS_OBJECT_USE_OBJC - dispatch_retain(successCallbackQueue); -#endif - _successCallbackQueue = successCallbackQueue; - } - } -} - -- (void)setFailureCallbackQueue:(dispatch_queue_t)failureCallbackQueue { - if (failureCallbackQueue != _failureCallbackQueue) { - if (_failureCallbackQueue) { -#if !OS_OBJECT_USE_OBJC - dispatch_release(_failureCallbackQueue); -#endif - _failureCallbackQueue = NULL; - } - - if (failureCallbackQueue) { -#if !OS_OBJECT_USE_OBJC - dispatch_retain(failureCallbackQueue); -#endif - _failureCallbackQueue = failureCallbackQueue; - } - } -} +#pragma mark - AFHTTPRequestOperation - (void)setCompletionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure @@ -271,57 +112,95 @@ static void AFSwizzleClassMethodWithClassAndSelectorUsingBlock(Class klass, SEL #pragma clang diagnostic ignored "-Warc-retain-cycles" #pragma clang diagnostic ignored "-Wgnu" self.completionBlock = ^{ - if (self.error) { - if (failure) { - dispatch_async(self.failureCallbackQueue ?: dispatch_get_main_queue(), ^{ - failure(self, self.error); - }); - } - } else { - if (success) { - dispatch_async(self.successCallbackQueue ?: dispatch_get_main_queue(), ^{ - success(self, self.responseData); - }); - } + 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 - AFHTTPRequestOperation +#pragma mark - AFURLRequestOperation -+ (NSIndexSet *)acceptableStatusCodes { - return [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(200, 100)]; -} +- (void)pause { + [super pause]; -+ (void)addAcceptableStatusCodes:(NSIndexSet *)statusCodes { - NSMutableIndexSet *mutableStatusCodes = [[NSMutableIndexSet alloc] initWithIndexSet:[self acceptableStatusCodes]]; - [mutableStatusCodes addIndexes:statusCodes]; - AFSwizzleClassMethodWithClassAndSelectorUsingBlock([self class], @selector(acceptableStatusCodes), ^(__unused id _self) { - return mutableStatusCodes; - }); -} - -+ (NSSet *)acceptableContentTypes { - return nil; -} - -+ (void)addAcceptableContentTypes:(NSSet *)contentTypes { - NSMutableSet *mutableContentTypes = [[NSMutableSet alloc] initWithSet:[self acceptableContentTypes] copyItems:YES]; - [mutableContentTypes unionSet:contentTypes]; - AFSwizzleClassMethodWithClassAndSelectorUsingBlock([self class], @selector(acceptableContentTypes), ^(__unused id _self) { - return mutableContentTypes; - }); -} - -+ (BOOL)canProcessRequest:(NSURLRequest *)request { - if ([[self class] isEqual:[AFHTTPRequestOperation class]]) { - return YES; + 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]; } - return [[self acceptableContentTypes] intersectsSet:AFContentTypesFromHTTPHeader([request valueForHTTPHeaderField:@"Accept"])]; + 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 - -#pragma clang diagnostic pop diff --git a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.h b/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.h deleted file mode 100644 index d5e659679db..00000000000 --- a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.h +++ /dev/null @@ -1,113 +0,0 @@ -// AFImageRequestOperation.h -// -// Copyright (c) 2011 Gowalla (http://gowalla.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 "AFHTTPRequestOperation.h" - -#import - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) -#import -#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) -#import -#endif - -/** - `AFImageRequestOperation` is a subclass of `AFHTTPRequestOperation` for downloading and processing images. - - ## Acceptable Content Types - - By default, `AFImageRequestOperation` 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 AFImageRequestOperation : AFHTTPRequestOperation - -/** - An image constructed from the response data. If an error occurs during the request, `nil` will be returned, and the `error` property will be set to the error. - */ -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) -@property (readonly, nonatomic, strong) UIImage *responseImage; -#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) -@property (readonly, nonatomic, strong) NSImage *responseImage; -#endif - -#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 - -/** - Creates and returns an `AFImageRequestOperation` object and sets the specified success callback. - - @param urlRequest The request object to be loaded asynchronously during execution of the operation. - @param success A block object to be executed when the request finishes successfully. This block has no return value and takes a single argument, the image created from the response data of the request. - - @return A new image request operation - */ -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) -+ (instancetype)imageRequestOperationWithRequest:(NSURLRequest *)urlRequest - success:(void (^)(UIImage *image))success; -#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) -+ (instancetype)imageRequestOperationWithRequest:(NSURLRequest *)urlRequest - success:(void (^)(NSImage *image))success; -#endif - -/** - Creates and returns an `AFImageRequestOperation` object and sets the specified success callback. - - @param urlRequest The request object to be loaded asynchronously during execution of the operation. - @param imageProcessingBlock A block object to be executed after the image request finishes successfully, but before the image is returned in the `success` block. This block takes a single argument, the image loaded from the response body, and returns the processed image. - @param success A block object to be executed when the request finishes successfully, with a status code in the 2xx range, and with an acceptable content type (e.g. `image/png`). This block has no return value and takes three arguments: the request object of the operation, the response for the request, and the image created from the response data. - @param failure A block object to be executed when the request finishes unsuccessfully. This block has no return value and takes three arguments: the request object of the operation, the response for the request, and the error associated with the cause for the unsuccessful operation. - - @return A new image request operation - */ -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) -+ (instancetype)imageRequestOperationWithRequest:(NSURLRequest *)urlRequest - imageProcessingBlock:(UIImage *(^)(UIImage *image))imageProcessingBlock - success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success - failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure; -#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) -+ (instancetype)imageRequestOperationWithRequest:(NSURLRequest *)urlRequest - imageProcessingBlock:(NSImage *(^)(NSImage *image))imageProcessingBlock - success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSImage *image))success - failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure; -#endif - -@end diff --git a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.m b/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.m deleted file mode 100644 index 7023b37afaa..00000000000 --- a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.m +++ /dev/null @@ -1,321 +0,0 @@ -// AFImageRequestOperation.m -// -// Copyright (c) 2011 Gowalla (http://gowalla.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 "AFImageRequestOperation.h" - -static dispatch_queue_t image_request_operation_processing_queue() { - static dispatch_queue_t af_image_request_operation_processing_queue; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - af_image_request_operation_processing_queue = dispatch_queue_create("com.alamofire.networking.image-request.processing", DISPATCH_QUEUE_CONCURRENT); - }); - - return af_image_request_operation_processing_queue; -} - -#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; - } - - UIImage *image = AFImageWithDataAtScale(data, scale); - if (image.images) { - return image; - } - - CGImageRef imageRef = nil; - 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); - } - - if (!imageRef) { - imageRef = CGImageCreateCopy([image CGImage]); - - if (!imageRef) { - CGDataProviderRelease(dataProvider); - return image; - } - } - - CGDataProviderRelease(dataProvider); - - size_t width = CGImageGetWidth(imageRef); - size_t height = CGImageGetHeight(imageRef); - size_t bitsPerComponent = CGImageGetBitsPerComponent(imageRef); - size_t bytesPerRow = 0; // CGImageGetBytesPerRow() calculates incorrectly in iOS 5.0, so defer to CGBitmapContextCreate() - CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); - CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(imageRef); - - if (CGColorSpaceGetNumberOfComponents(colorSpace) == 3) { - int alpha = (bitmapInfo & kCGBitmapAlphaInfoMask); - if (alpha == kCGImageAlphaNone) { - bitmapInfo &= ~kCGBitmapAlphaInfoMask; - bitmapInfo |= kCGImageAlphaNoneSkipFirst; - } else if (!(alpha == kCGImageAlphaNoneSkipFirst || alpha == kCGImageAlphaNoneSkipLast)) { - bitmapInfo &= ~kCGBitmapAlphaInfoMask; - bitmapInfo |= kCGImageAlphaPremultipliedFirst; - } - } - - CGContextRef context = CGBitmapContextCreate(NULL, width, height, bitsPerComponent, bytesPerRow, colorSpace, bitmapInfo); - - CGColorSpaceRelease(colorSpace); - - if (!context) { - CGImageRelease(imageRef); - - return image; - } - - CGRect rect = CGRectMake(0.0f, 0.0f, width, height); - CGContextDrawImage(context, rect, 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 - -@interface AFImageRequestOperation () -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) -@property (readwrite, nonatomic, strong) UIImage *responseImage; -#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) -@property (readwrite, nonatomic, strong) NSImage *responseImage; -#endif -@end - -@implementation AFImageRequestOperation -@synthesize responseImage = _responseImage; -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) -@synthesize imageScale = _imageScale; -#endif - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) -+ (instancetype)imageRequestOperationWithRequest:(NSURLRequest *)urlRequest - success:(void (^)(UIImage *image))success -{ - return [self imageRequestOperationWithRequest:urlRequest imageProcessingBlock:nil success:^(NSURLRequest __unused *request, NSHTTPURLResponse __unused *response, UIImage *image) { - if (success) { - success(image); - } - } failure:nil]; -} -#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) -+ (instancetype)imageRequestOperationWithRequest:(NSURLRequest *)urlRequest - success:(void (^)(NSImage *image))success -{ - return [self imageRequestOperationWithRequest:urlRequest imageProcessingBlock:nil success:^(NSURLRequest __unused *request, NSHTTPURLResponse __unused *response, NSImage *image) { - if (success) { - success(image); - } - } failure:nil]; -} -#endif - - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) -+ (instancetype)imageRequestOperationWithRequest:(NSURLRequest *)urlRequest - imageProcessingBlock:(UIImage *(^)(UIImage *))imageProcessingBlock - success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success - failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure -{ - AFImageRequestOperation *requestOperation = [(AFImageRequestOperation *)[self alloc] initWithRequest:urlRequest]; - [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { - if (success) { - UIImage *image = responseObject; - if (imageProcessingBlock) { - dispatch_async(image_request_operation_processing_queue(), ^(void) { - UIImage *processedImage = imageProcessingBlock(image); -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgnu" - dispatch_async(operation.successCallbackQueue ?: dispatch_get_main_queue(), ^(void) { - success(operation.request, operation.response, processedImage); - }); -#pragma clang diagnostic pop - }); - } else { - success(operation.request, operation.response, image); - } - } - } failure:^(AFHTTPRequestOperation *operation, NSError *error) { - if (failure) { - failure(operation.request, operation.response, error); - } - }]; - - - return requestOperation; -} -#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) -+ (instancetype)imageRequestOperationWithRequest:(NSURLRequest *)urlRequest - imageProcessingBlock:(NSImage *(^)(NSImage *))imageProcessingBlock - success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSImage *image))success - failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure -{ - AFImageRequestOperation *requestOperation = [(AFImageRequestOperation *)[self alloc] initWithRequest:urlRequest]; - [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { - if (success) { - NSImage *image = responseObject; - if (imageProcessingBlock) { - dispatch_async(image_request_operation_processing_queue(), ^(void) { - NSImage *processedImage = imageProcessingBlock(image); - - dispatch_async(operation.successCallbackQueue ?: dispatch_get_main_queue(), ^(void) { - success(operation.request, operation.response, processedImage); - }); - }); - } else { - success(operation.request, operation.response, image); - } - } - } failure:^(AFHTTPRequestOperation *operation, NSError *error) { - if (failure) { - failure(operation.request, operation.response, error); - } - }]; - - return requestOperation; -} -#endif - -- (id)initWithRequest:(NSURLRequest *)urlRequest { - self = [super initWithRequest:urlRequest]; - if (!self) { - return nil; - } - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) - self.imageScale = [[UIScreen mainScreen] scale]; - self.automaticallyInflatesResponseImage = YES; -#endif - - return self; -} - - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) -- (UIImage *)responseImage { - if (!_responseImage && [self.responseData length] > 0 && [self isFinished]) { - if (self.automaticallyInflatesResponseImage) { - self.responseImage = AFInflatedImageFromResponseWithDataAtScale(self.response, self.responseData, self.imageScale); - } else { - self.responseImage = AFImageWithDataAtScale(self.responseData, self.imageScale); - } - } - - return _responseImage; -} - -- (void)setImageScale:(CGFloat)imageScale { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wfloat-equal" - if (imageScale == _imageScale) { - return; - } -#pragma clang diagnostic pop - - _imageScale = imageScale; - - self.responseImage = nil; -} -#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) -- (NSImage *)responseImage { - if (!_responseImage && [self.responseData length] > 0 && [self isFinished]) { - // Ensure that the image is set to it's correct pixel width and height - NSBitmapImageRep *bitimage = [[NSBitmapImageRep alloc] initWithData:self.responseData]; - self.responseImage = [[NSImage alloc] initWithSize:NSMakeSize([bitimage pixelsWide], [bitimage pixelsHigh])]; - [self.responseImage addRepresentation:bitimage]; - } - - return _responseImage; -} -#endif - -#pragma mark - AFHTTPRequestOperation - -+ (NSSet *)acceptableContentTypes { - return [NSSet setWithObjects:@"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]; -} - -+ (BOOL)canProcessRequest:(NSURLRequest *)request { - static NSSet * _acceptablePathExtension = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - _acceptablePathExtension = [[NSSet alloc] initWithObjects:@"tif", @"tiff", @"jpg", @"jpeg", @"gif", @"png", @"ico", @"bmp", @"cur", nil]; - }); - - return [_acceptablePathExtension containsObject:[[request URL] pathExtension]] || [super canProcessRequest:request]; -} - -- (void)setCompletionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure -{ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Warc-retain-cycles" -#pragma clang diagnostic ignored "-Wgnu" - - self.completionBlock = ^ { - dispatch_async(image_request_operation_processing_queue(), ^(void) { - if (self.error) { - if (failure) { - dispatch_async(self.failureCallbackQueue ?: dispatch_get_main_queue(), ^{ - failure(self, self.error); - }); - } - } else { - if (success) { -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) - UIImage *image = nil; -#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) - NSImage *image = nil; -#endif - - image = self.responseImage; - - dispatch_async(self.successCallbackQueue ?: dispatch_get_main_queue(), ^{ - success(self, image); - }); - } - } - }); - }; -#pragma clang diagnostic pop -} - -@end diff --git a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.h b/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.h deleted file mode 100644 index 5493a40775f..00000000000 --- a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.h +++ /dev/null @@ -1,71 +0,0 @@ -// AFJSONRequestOperation.h -// -// Copyright (c) 2011 Gowalla (http://gowalla.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 "AFHTTPRequestOperation.h" - -/** - `AFJSONRequestOperation` is a subclass of `AFHTTPRequestOperation` for downloading and working with JSON response data. - - ## Acceptable Content Types - - By default, `AFJSONRequestOperation` accepts the following MIME types, which includes the official standard, `application/json`, as well as other commonly-used types: - - - `application/json` - - `text/json` - - @warning JSON parsing will use the built-in `NSJSONSerialization` class. - */ -@interface AFJSONRequestOperation : AFHTTPRequestOperation - -///---------------------------- -/// @name Getting Response Data -///---------------------------- - -/** - A JSON object constructed from the response data. If an error occurs while parsing, `nil` will be returned, and the `error` property will be set to the error. - */ -@property (readonly, nonatomic, strong) id responseJSON; - -/** - Options for reading the response JSON data and creating the Foundation objects. For possible values, see the `NSJSONSerialization` documentation section "NSJSONReadingOptions". - */ -@property (nonatomic, assign) NSJSONReadingOptions JSONReadingOptions; - -///---------------------------------- -/// @name Creating Request Operations -///---------------------------------- - -/** - Creates and returns an `AFJSONRequestOperation` object and sets the specified success and failure callbacks. - - @param urlRequest The request object to be loaded asynchronously during execution of the operation - @param success A block object to be executed when the 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 JSON object created from the response data of request. - @param failure A block object to be executed when the operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data as JSON. 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 describing the network or parsing error that occurred. - - @return A new JSON request operation - */ -+ (instancetype)JSONRequestOperationWithRequest:(NSURLRequest *)urlRequest - success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, id JSON))success - failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON))failure; - -@end diff --git a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.m b/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.m deleted file mode 100644 index fffc60c5907..00000000000 --- a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.m +++ /dev/null @@ -1,150 +0,0 @@ -// AFJSONRequestOperation.m -// -// Copyright (c) 2011 Gowalla (http://gowalla.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 "AFJSONRequestOperation.h" - -static dispatch_queue_t json_request_operation_processing_queue() { - static dispatch_queue_t af_json_request_operation_processing_queue; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - af_json_request_operation_processing_queue = dispatch_queue_create("com.alamofire.networking.json-request.processing", DISPATCH_QUEUE_CONCURRENT); - }); - - return af_json_request_operation_processing_queue; -} - -@interface AFJSONRequestOperation () -@property (readwrite, nonatomic, strong) id responseJSON; -@property (readwrite, nonatomic, strong) NSError *JSONError; -@property (readwrite, nonatomic, strong) NSRecursiveLock *lock; -@end - -@implementation AFJSONRequestOperation -@synthesize responseJSON = _responseJSON; -@synthesize JSONReadingOptions = _JSONReadingOptions; -@synthesize JSONError = _JSONError; -@dynamic lock; - -+ (instancetype)JSONRequestOperationWithRequest:(NSURLRequest *)urlRequest - success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, id JSON))success - failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON))failure -{ - AFJSONRequestOperation *requestOperation = [(AFJSONRequestOperation *)[self alloc] initWithRequest:urlRequest]; - [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { - if (success) { - success(operation.request, operation.response, responseObject); - } - } failure:^(AFHTTPRequestOperation *operation, NSError *error) { - if (failure) { - failure(operation.request, operation.response, error, [(AFJSONRequestOperation *)operation responseJSON]); - } - }]; - - return requestOperation; -} - - -- (id)responseJSON { - [self.lock lock]; - if (!_responseJSON && [self.responseData length] > 0 && [self isFinished] && !self.JSONError) { - NSError *error = 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 - if (self.responseString && ![self.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 - NSData *data = [self.responseString dataUsingEncoding:NSUTF8StringEncoding]; - - if (data) { - self.responseJSON = [NSJSONSerialization JSONObjectWithData:data options:self.JSONReadingOptions error:&error]; - } else { - NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; - [userInfo setValue:@"Operation responseData failed decoding as a UTF-8 string" forKey:NSLocalizedDescriptionKey]; - [userInfo setValue:[NSString stringWithFormat:@"Could not decode string: %@", self.responseString] forKey:NSLocalizedFailureReasonErrorKey]; - error = [[NSError alloc] initWithDomain:AFNetworkingErrorDomain code:NSURLErrorCannotDecodeContentData userInfo:userInfo]; - } - } - - self.JSONError = error; - } - [self.lock unlock]; - - return _responseJSON; -} - -- (NSError *)error { - if (_JSONError) { - return _JSONError; - } else { - return [super error]; - } -} - -#pragma mark - AFHTTPRequestOperation - -+ (NSSet *)acceptableContentTypes { - return [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", nil]; -} - -+ (BOOL)canProcessRequest:(NSURLRequest *)request { - return [[[request URL] pathExtension] isEqualToString:@"json"] || [super canProcessRequest:request]; -} - -- (void)setCompletionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure -{ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Warc-retain-cycles" -#pragma clang diagnostic ignored "-Wgnu" - - self.completionBlock = ^ { - if (self.error) { - if (failure) { - dispatch_async(self.failureCallbackQueue ?: dispatch_get_main_queue(), ^{ - failure(self, self.error); - }); - } - } else { - dispatch_async(json_request_operation_processing_queue(), ^{ - id JSON = self.responseJSON; - - if (self.error) { - if (failure) { - dispatch_async(self.failureCallbackQueue ?: dispatch_get_main_queue(), ^{ - failure(self, self.error); - }); - } - } else { - if (success) { - dispatch_async(self.successCallbackQueue ?: dispatch_get_main_queue(), ^{ - success(self, JSON); - }); - } - } - }); - } - }; -#pragma clang diagnostic pop -} - -@end diff --git a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.h b/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.h deleted file mode 100644 index 714193baf37..00000000000 --- a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.h +++ /dev/null @@ -1,75 +0,0 @@ -// AFNetworkActivityIndicatorManager.h -// -// Copyright (c) 2011 Gowalla (http://gowalla.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 `isNetworkActivityIndicatorVisible` 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 before decrementing, this will stop animating the status bar network activity indicator. - */ -- (void)decrementActivityCount; - -@end - -#endif diff --git a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.m b/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.m deleted file mode 100644 index 68cbd339691..00000000000 --- a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.m +++ /dev/null @@ -1,157 +0,0 @@ -// AFNetworkActivityIndicatorManager.m -// -// Copyright (c) 2011 Gowalla (http://gowalla.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" - -#import "AFHTTPRequestOperation.h" - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) -static NSTimeInterval const kAFNetworkActivityIndicatorInvisibilityDelay = 0.17; - -@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 -@synthesize activityCount = _activityCount; -@synthesize activityIndicatorVisibilityTimer = _activityIndicatorVisibilityTimer; -@synthesize enabled = _enabled; -@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(networkingOperationDidStart:) name:AFNetworkingOperationDidStartNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkingOperationDidFinish:) name:AFNetworkingOperationDidFinishNotification object:nil]; - - 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:[NSArray arrayWithObject:NSRunLoopCommonModes]]; - } - } -} - -- (BOOL)isNetworkActivityIndicatorVisible { - return _activityCount > 0; -} - -- (void)updateNetworkActivityIndicatorVisibility { - [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:[self isNetworkActivityIndicatorVisible]]; -} - -// Not exposed, but used if activityCount is set via KVC. -- (NSInteger)activityCount { - return _activityCount; -} - -- (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)networkingOperationDidStart:(NSNotification *)notification { - AFURLConnectionOperation *connectionOperation = [notification object]; - if (connectionOperation.request.URL) { - [self incrementActivityCount]; - } -} - -- (void)networkingOperationDidFinish:(NSNotification *)notification { - AFURLConnectionOperation *connectionOperation = [notification object]; - if (connectionOperation.request.URL) { - [self decrementActivityCount]; - } -} - -@end - -#endif diff --git a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFNetworking.h b/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFNetworking.h index b8f840b92cf..68273da58e0 100644 --- a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFNetworking.h +++ b/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFNetworking.h @@ -1,6 +1,6 @@ // AFNetworking.h // -// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// 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 @@ -26,18 +26,19 @@ #ifndef _AFNETWORKING_ #define _AFNETWORKING_ + #import "AFURLRequestSerialization.h" + #import "AFURLResponseSerialization.h" + #import "AFSecurityPolicy.h" + #import "AFNetworkReachabilityManager.h" + #import "AFURLConnectionOperation.h" - #import "AFHTTPRequestOperation.h" - #import "AFJSONRequestOperation.h" - #import "AFXMLRequestOperation.h" - #import "AFPropertyListRequestOperation.h" - #import "AFHTTPClient.h" + #import "AFHTTPRequestOperationManager.h" - #import "AFImageRequestOperation.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 - #if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) - #import "AFNetworkActivityIndicatorManager.h" - #import "UIImageView+AFNetworking.h" - #endif #endif /* _AFNETWORKING_ */ diff --git a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.h b/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.h deleted file mode 100644 index 9ebb6057437..00000000000 --- a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.h +++ /dev/null @@ -1,68 +0,0 @@ -// AFPropertyListRequestOperation.h -// -// Copyright (c) 2011 Gowalla (http://gowalla.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 "AFHTTPRequestOperation.h" - -/** - `AFPropertyListRequestOperation` is a subclass of `AFHTTPRequestOperation` for downloading and deserializing objects with property list (plist) response data. - - ## Acceptable Content Types - - By default, `AFPropertyListRequestOperation` accepts the following MIME types: - - - `application/x-plist` - */ -@interface AFPropertyListRequestOperation : AFHTTPRequestOperation - -///---------------------------- -/// @name Getting Response Data -///---------------------------- - -/** - An object deserialized from a plist constructed using the response data. - */ -@property (readonly, nonatomic) id responsePropertyList; - -///-------------------------------------- -/// @name Managing Property List Behavior -///-------------------------------------- - -/** - One of the `NSPropertyListMutabilityOptions` options, specifying the mutability of objects deserialized from the property list. By default, this is `NSPropertyListImmutable`. - */ -@property (nonatomic, assign) NSPropertyListReadOptions propertyListReadOptions; - -/** - Creates and returns an `AFPropertyListRequestOperation` object and sets the specified success and failure callbacks. - - @param urlRequest The request object to be loaded asynchronously during execution of the operation - @param success A block object to be executed when the 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 object deserialized from a plist constructed using the response data. - @param failure A block object to be executed when the operation finishes unsuccessfully, or that finishes successfully, but encountered an error while deserializing the object from a property list. 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 describing the network or parsing error that occurred. - - @return A new property list request operation - */ -+ (instancetype)propertyListRequestOperationWithRequest:(NSURLRequest *)urlRequest - success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, id propertyList))success - failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id propertyList))failure; - -@end diff --git a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.m b/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.m deleted file mode 100644 index 370e12be8e3..00000000000 --- a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.m +++ /dev/null @@ -1,143 +0,0 @@ -// AFPropertyListRequestOperation.m -// -// Copyright (c) 2011 Gowalla (http://gowalla.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 "AFPropertyListRequestOperation.h" - -static dispatch_queue_t property_list_request_operation_processing_queue() { - static dispatch_queue_t af_property_list_request_operation_processing_queue; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - af_property_list_request_operation_processing_queue = dispatch_queue_create("com.alamofire.networking.property-list-request.processing", DISPATCH_QUEUE_CONCURRENT); - }); - - return af_property_list_request_operation_processing_queue; -} - -@interface AFPropertyListRequestOperation () -@property (readwrite, nonatomic) id responsePropertyList; -@property (readwrite, nonatomic, assign) NSPropertyListFormat propertyListFormat; -@property (readwrite, nonatomic) NSError *propertyListError; -@end - -@implementation AFPropertyListRequestOperation -@synthesize responsePropertyList = _responsePropertyList; -@synthesize propertyListReadOptions = _propertyListReadOptions; -@synthesize propertyListFormat = _propertyListFormat; -@synthesize propertyListError = _propertyListError; - -+ (instancetype)propertyListRequestOperationWithRequest:(NSURLRequest *)request - success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, id propertyList))success - failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id propertyList))failure -{ - AFPropertyListRequestOperation *requestOperation = [(AFPropertyListRequestOperation *)[self alloc] initWithRequest:request]; - [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { - if (success) { - success(operation.request, operation.response, responseObject); - } - } failure:^(AFHTTPRequestOperation *operation, NSError *error) { - if (failure) { - failure(operation.request, operation.response, error, [(AFPropertyListRequestOperation *)operation responsePropertyList]); - } - }]; - - return requestOperation; -} - -- (id)initWithRequest:(NSURLRequest *)urlRequest { - self = [super initWithRequest:urlRequest]; - if (!self) { - return nil; - } - - self.propertyListReadOptions = NSPropertyListImmutable; - - return self; -} - - -- (id)responsePropertyList { - if (!_responsePropertyList && [self.responseData length] > 0 && [self isFinished]) { - NSPropertyListFormat format; - NSError *error = nil; - self.responsePropertyList = [NSPropertyListSerialization propertyListWithData:self.responseData options:self.propertyListReadOptions format:&format error:&error]; - self.propertyListFormat = format; - self.propertyListError = error; - } - - return _responsePropertyList; -} - -- (NSError *)error { - if (_propertyListError) { - return _propertyListError; - } else { - return [super error]; - } -} - -#pragma mark - AFHTTPRequestOperation - -+ (NSSet *)acceptableContentTypes { - return [NSSet setWithObjects:@"application/x-plist", nil]; -} - -+ (BOOL)canProcessRequest:(NSURLRequest *)request { - return [[[request URL] pathExtension] isEqualToString:@"plist"] || [super canProcessRequest:request]; -} - -- (void)setCompletionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure -{ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Warc-retain-cycles" -#pragma clang diagnostic ignored "-Wgnu" - self.completionBlock = ^ { - if (self.error) { - if (failure) { - dispatch_async(self.failureCallbackQueue ?: dispatch_get_main_queue(), ^{ - failure(self, self.error); - }); - } - } else { - dispatch_async(property_list_request_operation_processing_queue(), ^(void) { - id propertyList = self.responsePropertyList; - - if (self.propertyListError) { - if (failure) { - dispatch_async(self.failureCallbackQueue ?: dispatch_get_main_queue(), ^{ - failure(self, self.error); - }); - } - } else { - if (success) { - dispatch_async(self.successCallbackQueue ?: dispatch_get_main_queue(), ^{ - success(self, propertyList); - }); - } - } - }); - } - }; -#pragma clang diagnostic pop -} - -@end diff --git a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h b/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h index 0ac9e105c3f..b4041a45476 100644 --- a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h +++ b/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h @@ -1,6 +1,6 @@ // AFURLConnectionOperation.h // -// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// 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 @@ -23,6 +23,17 @@ #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. @@ -44,27 +55,28 @@ - `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. - ## Class Constructors - - Class constructors, or methods that return an unowned instance, are the preferred way for subclasses to encapsulate any particular logic for handling the setup or parsing of response data. For instance, `AFJSONRequestOperation` provides `JSONRequestOperationWithRequest:success:failure:`, which takes block arguments, whose parameter on for a successful request is the JSON object initialized from the `response data`. - ## 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. - When `defaultSSLPinningMode` is defined on `AFHTTPClient` and the Security framework is linked, connections will be validated on all matching certificates with a `.cer` extension in the bundle root. + 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 @@ -79,21 +91,10 @@ - `-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`. `completionBlock` often strongly captures a reference to `self`, which would otherwise have the unintuitive side-effect of pointing to the _original_ operation when copied. + - 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. */ -typedef enum { - AFSSLPinningModeNone, - AFSSLPinningModePublicKey, - AFSSLPinningModeCertificate, -} AFURLConnectionOperationSSLPinningMode; - -@interface AFURLConnectionOperation : NSOperation = 50000) || \ - (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080) -NSURLConnectionDataDelegate, -#endif -NSCoding, NSCopying> +@interface AFURLConnectionOperation : NSOperation ///------------------------------- /// @name Accessing Run Loop Modes @@ -123,13 +124,6 @@ NSCoding, NSCopying> */ @property (readonly, nonatomic, strong) NSError *error; -/** - Whether the connection should accept an invalid SSL certificate. - - If `_AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_` is set, this property defaults to `YES` for backwards compatibility. Otherwise, this property defaults to `NO`. - */ -@property (nonatomic, assign) BOOL allowsInvalidSSLCertificate; - ///---------------------------- /// @name Getting Response Data ///---------------------------- @@ -169,12 +163,14 @@ NSCoding, NSCopying> */ @property (nonatomic, strong) NSURLCredential *credential; +///------------------------------- +/// @name Managing Security Policy +///------------------------------- + /** - The pinning mode which will be used for SSL connections. `AFSSLPinningModePublicKey` by default. - - SSL Pinning requires that the Security framework is linked with the binary. See the "SSL Pinning" section in the `AFURLConnectionOperation`" header for more information. + The security policy used to evaluate server trust for secure connections. */ -@property (nonatomic, assign) AFURLConnectionOperationSSLPinningMode SSLPinningMode; +@property (nonatomic, strong) AFSecurityPolicy *securityPolicy; ///------------------------ /// @name Accessing Streams @@ -190,10 +186,24 @@ NSCoding, NSCopying> /** 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. 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. + 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 ///--------------------------------------------- @@ -209,12 +219,12 @@ NSCoding, NSCopying> /** 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. */ -- (id)initWithRequest:(NSURLRequest *)urlRequest; +- (instancetype)initWithRequest:(NSURLRequest *)urlRequest NS_DESIGNATED_INITIALIZER; ///---------------------------------- /// @name Pausing / Resuming Requests @@ -249,8 +259,8 @@ NSCoding, NSCopying> 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) + */ +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && !defined(AF_APP_EXTENSIONS) - (void)setShouldExecuteAsBackgroundTaskWithExpirationHandler:(void (^)(void))handler; #endif @@ -278,20 +288,21 @@ NSCoding, NSCopying> /** 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 `NSURLConnectionDelegate` method `connection:willSendRequest:redirectResponse:`. + 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:`. @@ -299,61 +310,16 @@ NSCoding, NSCopying> */ - (void)setCacheResponseBlock:(NSCachedURLResponse * (^)(NSURLConnection *connection, NSCachedURLResponse *cachedResponse))block; -@end - -///---------------- -/// @name Constants -///---------------- +/// /** - ## SSL Pinning Options - The following constants are provided by `AFURLConnectionOperation` as possible SSL Pinning options. - - enum { - AFSSLPinningModeNone, - AFSSLPinningModePublicKey, - AFSSLPinningModeCertificate, - } - - `AFSSLPinningModeNone` - Do not pin SSL connections - - `AFSSLPinningModePublicKey` - Pin SSL connections to certificate public key (SPKI). - - `AFSSLPinningModeCertificate` - Pin SSL connections to exact certificate. This may cause problems when your certificate expires and needs re-issuance. - - ## User info dictionary keys - - These keys may exist in the user info dictionary, in addition to those defined for NSError. - - - `NSString * const AFNetworkingOperationFailingURLRequestErrorKey` - - `NSString * const AFNetworkingOperationFailingURLResponseErrorKey` - - ### 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 `AFNetworkingErrorDomain`. - - `AFNetworkingOperationFailingURLResponseErrorKey` - The corresponding value is an `NSURLResponse` containing the response of the operation associated with an error. This key is only present in the `AFNetworkingErrorDomain`. - - ## Error Domains - - The following error domain is predefined. - - - `NSString * const AFNetworkingErrorDomain` - - ### Constants - - `AFNetworkingErrorDomain` - AFNetworking errors. Error codes for `AFNetworkingErrorDomain` correspond to codes in `NSURLErrorDomain`. */ -extern NSString * const AFNetworkingErrorDomain; -extern NSString * const AFNetworkingOperationFailingURLRequestErrorKey; -extern NSString * const AFNetworkingOperationFailingURLResponseErrorKey; ++ (NSArray *)batchOfRequestOperations:(NSArray *)operations + progressBlock:(void (^)(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations))progressBlock + completionBlock:(void (^)(NSArray *operations))completionBlock; + +@end ///-------------------- /// @name Notifications diff --git a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m b/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m index 595ea864317..becfb83ab33 100644 --- a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m +++ b/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m @@ -1,6 +1,6 @@ // AFURLConnectionOperation.m // -// Copyright (c) 2011 Gowalla (http://gowalla.com/) +// 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 @@ -31,26 +31,40 @@ // You can turn on ARC for only AFNetworking files by adding -fobjc-arc to the build phase for each of its files. #endif -typedef enum { +typedef NS_ENUM(NSInteger, AFOperationState) { AFOperationPausedState = -1, AFOperationReadyState = 1, AFOperationExecutingState = 2, AFOperationFinishedState = 3, -} _AFOperationState; +}; -typedef signed short AFOperationState; - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && !defined(AF_APP_EXTENSIONS) typedef UIBackgroundTaskIdentifier AFBackgroundTaskIdentifier; #else typedef id AFBackgroundTaskIdentifier; #endif -static NSString * const kAFNetworkingLockName = @"com.alamofire.networking.operation.lock"; +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(); + }); -NSString * const AFNetworkingErrorDomain = @"AFNetworkingErrorDomain"; -NSString * const AFNetworkingOperationFailingURLRequestErrorKey = @"AFNetworkingOperationFailingURLRequestErrorKey"; -NSString * const AFNetworkingOperationFailingURLResponseErrorKey = @"AFNetworkingOperationFailingURLResponseErrorKey"; + 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"; @@ -70,8 +84,12 @@ static inline NSString * AFKeyPathFromOperationState(AFOperationState state) { return @"isFinished"; case AFOperationPausedState: return @"isPaused"; - default: + default: { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunreachable-code" return @"state"; +#pragma clang diagnostic pop + } } } @@ -99,34 +117,25 @@ static inline BOOL AFStateTransitionIsValid(AFOperationState fromState, AFOperat return NO; case AFOperationPausedState: return toState == AFOperationReadyState; - default: - return YES; + 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 } } -#if !defined(__IPHONE_OS_VERSION_MIN_REQUIRED) -static NSData *AFSecKeyGetData(SecKeyRef key) { - CFDataRef data = NULL; - - OSStatus status = SecItemExport(key, kSecFormatUnknown, kSecItemPemArmour, NULL, &data); - NSCAssert(status == errSecSuccess, @"SecItemExport error: %ld", (long int)status); - NSCParameterAssert(data); - - return (__bridge_transfer NSData *)data; -} -#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 -} - @interface AFURLConnectionOperation () @property (readwrite, nonatomic, assign) AFOperationState state; -@property (readwrite, nonatomic, assign, getter = isCancelled) BOOL cancelled; @property (readwrite, nonatomic, strong) NSRecursiveLock *lock; @property (readwrite, nonatomic, strong) NSURLConnection *connection; @property (readwrite, nonatomic, strong) NSURLRequest *request; @@ -149,33 +158,9 @@ static BOOL AFSecKeyIsEqualToKey(SecKeyRef key1, SecKeyRef key2) { @end @implementation AFURLConnectionOperation -@synthesize state = _state; -@synthesize cancelled = _cancelled; -@synthesize connection = _connection; -@synthesize runLoopModes = _runLoopModes; -@synthesize request = _request; -@synthesize response = _response; -@synthesize error = _error; -@synthesize allowsInvalidSSLCertificate = _allowsInvalidSSLCertificate; -@synthesize responseData = _responseData; -@synthesize responseString = _responseString; -@synthesize responseStringEncoding = _responseStringEncoding; -@synthesize totalBytesRead = _totalBytesRead; -@dynamic inputStream; @synthesize outputStream = _outputStream; -@synthesize credential = _credential; -@synthesize SSLPinningMode = _SSLPinningMode; -@synthesize shouldUseCredentialStorage = _shouldUseCredentialStorage; -@synthesize userInfo = _userInfo; -@synthesize backgroundTaskIdentifier = _backgroundTaskIdentifier; -@synthesize uploadProgress = _uploadProgress; -@synthesize downloadProgress = _downloadProgress; -@synthesize authenticationChallenge = _authenticationChallenge; -@synthesize cacheResponse = _cacheResponse; -@synthesize redirectResponse = _redirectResponse; -@synthesize lock = _lock; -+ (void)networkRequestThreadEntryPoint:(id __unused)object { ++ (void)networkRequestThreadEntryPoint:(id)__unused object { @autoreleasepool { [[NSThread currentThread] setName:@"AFNetworking"]; @@ -192,96 +177,30 @@ static BOOL AFSecKeyIsEqualToKey(SecKeyRef key1, SecKeyRef key2) { _networkRequestThread = [[NSThread alloc] initWithTarget:self selector:@selector(networkRequestThreadEntryPoint:) object:nil]; [_networkRequestThread start]; }); - + return _networkRequestThread; } -+ (NSArray *)pinnedCertificates { - static NSArray *_pinnedCertificates = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - NSBundle *bundle = [NSBundle mainBundle]; - 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]; - } - - _pinnedCertificates = [[NSArray alloc] initWithArray:certificates]; - }); - - return _pinnedCertificates; -} - -+ (NSArray *)pinnedPublicKeys { - static NSArray *_pinnedPublicKeys = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - NSArray *pinnedCertificates = [self pinnedCertificates]; - NSMutableArray *publicKeys = [NSMutableArray arrayWithCapacity:[pinnedCertificates count]]; - - for (NSData *data in pinnedCertificates) { - SecCertificateRef allowedCertificate = SecCertificateCreateWithData(NULL, (__bridge CFDataRef)data); - NSParameterAssert(allowedCertificate); - - SecCertificateRef allowedCertificates[] = {allowedCertificate}; - CFArrayRef certificates = CFArrayCreate(NULL, (const void **)allowedCertificates, 1, NULL); - - SecPolicyRef policy = SecPolicyCreateBasicX509(); - SecTrustRef allowedTrust = NULL; - OSStatus status = SecTrustCreateWithCertificates(certificates, policy, &allowedTrust); - NSAssert(status == errSecSuccess, @"SecTrustCreateWithCertificates error: %ld", (long int)status); - if (status == errSecSuccess && allowedTrust) { - SecTrustResultType result = 0; - status = SecTrustEvaluate(allowedTrust, &result); - NSAssert(status == errSecSuccess, @"SecTrustEvaluate error: %ld", (long int)status); - if (status == errSecSuccess) { - SecKeyRef allowedPublicKey = SecTrustCopyPublicKey(allowedTrust); - NSParameterAssert(allowedPublicKey); - if (allowedPublicKey) { - [publicKeys addObject:(__bridge_transfer id)allowedPublicKey]; - } - } - - CFRelease(allowedTrust); - } - - CFRelease(policy); - CFRelease(certificates); - CFRelease(allowedCertificate); - } - - _pinnedPublicKeys = [[NSArray alloc] initWithArray:publicKeys]; - }); - - return _pinnedPublicKeys; -} - -- (id)initWithRequest:(NSURLRequest *)urlRequest { +- (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; - // #ifdef included for backwards-compatibility -#ifdef _AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_ - self.allowsInvalidSSLCertificate = YES; -#endif - - self.state = AFOperationReadyState; + self.securityPolicy = [AFSecurityPolicy defaultPolicy]; return self; } @@ -291,8 +210,8 @@ static BOOL AFSecKeyIsEqualToKey(SecKeyRef key1, SecKeyRef key2) { [_outputStream close]; _outputStream = nil; } - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && !defined(AF_APP_EXTENSIONS) if (_backgroundTaskIdentifier) { [[UIApplication sharedApplication] endBackgroundTask:_backgroundTaskIdentifier]; _backgroundTaskIdentifier = UIBackgroundTaskInvalid; @@ -300,36 +219,54 @@ static BOOL AFSecKeyIsEqualToKey(SecKeyRef key1, SecKeyRef key2) { #endif } -- (NSString *)description { - return [NSString stringWithFormat:@"<%@: %p, state: %@, cancelled: %@ request: %@, response: %@>", NSStringFromClass([self class]), self, AFKeyPathFromOperationState(self.state), ([self isCancelled] ? @"YES" : @"NO"), self.request, self.response]; -} +#pragma mark - -- (void)setCompletionBlock:(void (^)(void))block { +- (void)setResponseData:(NSData *)responseData { [self.lock lock]; - if (!block) { - [super setCompletionBlock:nil]; + if (!responseData) { + _responseData = nil; } else { - __weak __typeof(&*self)weakSelf = self; - [super setCompletionBlock:^ { - __strong __typeof(&*weakSelf)strongSelf = weakSelf; - - block(); - [strongSelf setCompletionBlock:nil]; - }]; + _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 { - [self willChangeValueForKey:@"inputStream"]; NSMutableURLRequest *mutableRequest = [self.request mutableCopy]; mutableRequest.HTTPBodyStream = inputStream; self.request = mutableRequest; - [self didChangeValueForKey:@"inputStream"]; } - (NSOutputStream *)outputStream { @@ -343,32 +280,31 @@ static BOOL AFSecKeyIsEqualToKey(SecKeyRef key1, SecKeyRef key2) { - (void)setOutputStream:(NSOutputStream *)outputStream { [self.lock lock]; if (outputStream != _outputStream) { - [self willChangeValueForKey:@"outputStream"]; if (_outputStream) { [_outputStream close]; } + _outputStream = outputStream; - [self didChangeValueForKey:@"outputStream"]; } [self.lock unlock]; } -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +#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; + __weak __typeof(self)weakSelf = self; self.backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^{ - __strong __typeof(&*weakSelf)strongSelf = weakSelf; - + __strong __typeof(weakSelf)strongSelf = weakSelf; + if (handler) { handler(); } - + if (strongSelf) { [strongSelf cancel]; - + [application endBackgroundTask:strongSelf.backgroundTaskIdentifier]; strongSelf.backgroundTaskIdentifier = UIBackgroundTaskInvalid; } @@ -378,6 +314,68 @@ static BOOL AFSecKeyIsEqualToKey(SecKeyRef key1, SecKeyRef key2) { } #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; } @@ -398,90 +396,35 @@ static BOOL AFSecKeyIsEqualToKey(SecKeyRef key1, SecKeyRef key2) { self.redirectResponse = block; } -- (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]; -} - -- (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; -} - -- (void)pause { - if ([self isPaused] || [self isFinished] || [self isCancelled]) { - return; - } - - [self.lock lock]; - - if ([self isExecuting]) { - [self.connection performSelector:@selector(cancel) 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]; -} - -- (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 - 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]; } @@ -500,9 +443,11 @@ static BOOL AFSecKeyIsEqualToKey(SecKeyRef key1, SecKeyRef key2) { - (void)start { [self.lock lock]; - if ([self isReady]) { + 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]; @@ -512,35 +457,28 @@ static BOOL AFSecKeyIsEqualToKey(SecKeyRef key1, SecKeyRef key2) { [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]; }); - - if ([self isCancelled]) { - NSDictionary *userInfo = nil; - if ([self.request URL]) { - userInfo = [NSDictionary dictionaryWithObject:[self.request URL] forKey:NSURLErrorFailingURLErrorKey]; - } - self.error = [NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorCancelled userInfo:userInfo]; - - [self finish]; - } } - (void)finish { + [self.lock lock]; self.state = AFOperationFinishedState; - + [self.lock unlock]; + dispatch_async(dispatch_get_main_queue(), ^{ [[NSNotificationCenter defaultCenter] postNotificationName:AFNetworkingOperationDidFinishNotification object:self]; }); @@ -549,13 +487,11 @@ static BOOL AFSecKeyIsEqualToKey(SecKeyRef key1, SecKeyRef key2) { - (void)cancel { [self.lock lock]; if (![self isFinished] && ![self isCancelled]) { - [self willChangeValueForKey:@"isCancelled"]; - _cancelled = YES; [super cancel]; - [self didChangeValueForKey:@"isCancelled"]; - - // Cancel the connection on the thread it runs on to prevent race conditions - [self performSelector:@selector(cancelConnection) onThread:[[self class] networkRequestThread] withObject:nil waitUntilDone:NO modes:[self.runLoopModes allObjects]]; + + if ([self isExecuting]) { + [self performSelector:@selector(cancelConnection) onThread:[[self class] networkRequestThread] withObject:nil waitUntilDone:NO modes:[self.runLoopModes allObjects]]; + } } [self.lock unlock]; } @@ -566,13 +502,87 @@ static BOOL AFSecKeyIsEqualToKey(SecKeyRef key1, SecKeyRef key2) { userInfo = [NSDictionary dictionaryWithObject:[self.request URL] forKey:NSURLErrorFailingURLErrorKey]; } NSError *error = [NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorCancelled userInfo:userInfo]; - - if (![self isFinished] && self.connection) { - [self.connection cancel]; - [self performSelector:@selector(connection:didFailWithError:) withObject:self.connection withObject:error]; + + 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 @@ -582,91 +592,13 @@ willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challe self.authenticationChallenge(connection, challenge); return; } - - if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) { - SecTrustRef serverTrust = challenge.protectionSpace.serverTrust; - - SecPolicyRef policy = SecPolicyCreateBasicX509(); - CFIndex certificateCount = SecTrustGetCertificateCount(serverTrust); - NSMutableArray *trustChain = [NSMutableArray arrayWithCapacity:certificateCount]; - - for (CFIndex i = 0; i < certificateCount; i++) { - SecCertificateRef certificate = SecTrustGetCertificateAtIndex(serverTrust, i); - - if (self.SSLPinningMode == AFSSLPinningModeCertificate) { - [trustChain addObject:(__bridge_transfer NSData *)SecCertificateCopyData(certificate)]; - } else if (self.SSLPinningMode == AFSSLPinningModePublicKey) { - SecCertificateRef someCertificates[] = {certificate}; - CFArrayRef certificates = CFArrayCreate(NULL, (const void **)someCertificates, 1, NULL); - - SecTrustRef trust = NULL; - - OSStatus status = SecTrustCreateWithCertificates(certificates, policy, &trust); - NSAssert(status == errSecSuccess, @"SecTrustCreateWithCertificates error: %ld", (long int)status); - if (status == errSecSuccess && trust) { - SecTrustResultType result; - status = SecTrustEvaluate(trust, &result); - NSAssert(status == errSecSuccess, @"SecTrustEvaluate error: %ld", (long int)status); - if (status == errSecSuccess) { - [trustChain addObject:(__bridge_transfer id)SecTrustCopyPublicKey(trust)]; - } - CFRelease(trust); - } - - CFRelease(certificates); - } - } - - CFRelease(policy); - - switch (self.SSLPinningMode) { - case AFSSLPinningModePublicKey: { - NSArray *pinnedPublicKeys = [self.class pinnedPublicKeys]; - - for (id publicKey in trustChain) { - for (id pinnedPublicKey in pinnedPublicKeys) { - if (AFSecKeyIsEqualToKey((__bridge SecKeyRef)publicKey, (__bridge SecKeyRef)pinnedPublicKey)) { - NSURLCredential *credential = [NSURLCredential credentialForTrust:serverTrust]; - [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge]; - return; - } - } - } - - [[challenge sender] cancelAuthenticationChallenge:challenge]; - break; - } - case AFSSLPinningModeCertificate: { - for (id serverCertificateData in trustChain) { - if ([[self.class pinnedCertificates] containsObject:serverCertificateData]) { - NSURLCredential *credential = [NSURLCredential credentialForTrust:serverTrust]; - [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge]; - return; - } - } - - [[challenge sender] cancelAuthenticationChallenge:challenge]; - break; - } - case AFSSLPinningModeNone: { - if (self.allowsInvalidSSLCertificate){ - NSURLCredential *credential = [NSURLCredential credentialForTrust:serverTrust]; - [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge]; - } else { - SecTrustResultType result = 0; - OSStatus status = SecTrustEvaluate(serverTrust, &result); - NSAssert(status == errSecSuccess, @"SecTrustEvaluate error: %ld", (long int)status); - - if (status == errSecSuccess && (result == kSecTrustResultUnspecified || result == kSecTrustResultProceed)) { - NSURLCredential *credential = [NSURLCredential credentialForTrust:serverTrust]; - [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge]; - } else { - [[challenge sender] cancelAuthenticationChallenge:challenge]; - } - } - break; - } + 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) { @@ -701,19 +633,17 @@ willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challe totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite { - if (self.uploadProgress) { - dispatch_async(dispatch_get_main_queue(), ^{ + 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; - - [self.outputStream open]; } - (void)connection:(NSURLConnection __unused *)connection @@ -721,29 +651,33 @@ didReceiveResponse:(NSURLResponse *)response { NSUInteger length = [data length]; while (YES) { - NSUInteger totalNumberOfBytesWritten = 0; + NSInteger totalNumberOfBytesWritten = 0; if ([self.outputStream hasSpaceAvailable]) { const uint8_t *dataBuffer = (uint8_t *)[data bytes]; NSInteger numberOfBytesWritten = 0; - while (totalNumberOfBytesWritten < length) { - numberOfBytesWritten = [self.outputStream write:&dataBuffer[0] maxLength:length]; + while (totalNumberOfBytesWritten < (NSInteger)length) { + numberOfBytesWritten = [self.outputStream write:&dataBuffer[(NSUInteger)totalNumberOfBytesWritten] maxLength:(length - (NSUInteger)totalNumberOfBytesWritten)]; if (numberOfBytesWritten == -1) { - [self.connection cancel]; - [self performSelector:@selector(connection:didFailWithError:) withObject:self.connection withObject:self.outputStream.streamError]; - return; - } else { - totalNumberOfBytesWritten += numberOfBytesWritten; + 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 += length; - + self.totalBytesRead += (long long)length; + if (self.downloadProgress) { self.downloadProgress(length, self.totalBytesRead, self.response.expectedContentLength); } @@ -752,24 +686,30 @@ didReceiveResponse:(NSURLResponse *)response - (void)connectionDidFinishLoading:(NSURLConnection __unused *)connection { self.responseData = [self.outputStream propertyForKey:NSStreamDataWrittenToMemoryStreamKey]; - + [self.outputStream close]; - - [self finish]; - + 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]; - - [self finish]; - + if (self.responseData) { + self.outputStream = nil; + } + self.connection = nil; + + [self finish]; } - (NSCachedURLResponse *)connection:(NSURLConnection *)connection @@ -781,67 +721,68 @@ didReceiveResponse:(NSURLResponse *)response if ([self isCancelled]) { return nil; } - + return cachedResponse; } } -#pragma mark - NSCoding +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder { + NSURLRequest *request = [decoder decodeObjectOfClass:[NSURLRequest class] forKey:NSStringFromSelector(@selector(request))]; -- (id)initWithCoder:(NSCoder *)aDecoder { - NSURLRequest *request = [aDecoder decodeObjectForKey:@"request"]; - self = [self initWithRequest:request]; if (!self) { return nil; } - - self.state = (AFOperationState)[aDecoder decodeIntegerForKey:@"state"]; - self.cancelled = [aDecoder decodeBoolForKey:@"isCancelled"]; - self.response = [aDecoder decodeObjectForKey:@"response"]; - self.error = [aDecoder decodeObjectForKey:@"error"]; - self.responseData = [aDecoder decodeObjectForKey:@"responseData"]; - self.totalBytesRead = [[aDecoder decodeObjectForKey:@"totalBytesRead"] longLongValue]; - self.allowsInvalidSSLCertificate = [[aDecoder decodeObjectForKey:@"allowsInvalidSSLCertificate"] boolValue]; + + 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 *)aCoder { +- (void)encodeWithCoder:(NSCoder *)coder { [self pause]; - - [aCoder encodeObject:self.request forKey:@"request"]; - + + [coder encodeObject:self.request forKey:NSStringFromSelector(@selector(request))]; + switch (self.state) { case AFOperationExecutingState: case AFOperationPausedState: - [aCoder encodeInteger:AFOperationReadyState forKey:@"state"]; + [coder encodeInteger:AFOperationReadyState forKey:NSStringFromSelector(@selector(state))]; break; default: - [aCoder encodeInteger:self.state forKey:@"state"]; + [coder encodeInteger:self.state forKey:NSStringFromSelector(@selector(state))]; break; } - - [aCoder encodeBool:[self isCancelled] forKey:@"isCancelled"]; - [aCoder encodeObject:self.response forKey:@"response"]; - [aCoder encodeObject:self.error forKey:@"error"]; - [aCoder encodeObject:self.responseData forKey:@"responseData"]; - [aCoder encodeObject:[NSNumber numberWithLongLong:self.totalBytesRead] forKey:@"totalBytesRead"]; - [aCoder encodeObject:[NSNumber numberWithBool:self.allowsInvalidSSLCertificate] forKey:@"allowsInvalidSSLCertificate"]; + + [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.allowsInvalidSSLCertificate = self.allowsInvalidSSLCertificate; - + operation.completionQueue = self.completionQueue; + operation.completionGroup = self.completionGroup; + return operation; } diff --git a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.h b/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.h deleted file mode 100644 index 4130932e698..00000000000 --- a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.h +++ /dev/null @@ -1,89 +0,0 @@ -// AFXMLRequestOperation.h -// -// Copyright (c) 2011 Gowalla (http://gowalla.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 "AFHTTPRequestOperation.h" - -#import - -/** - `AFXMLRequestOperation` is a subclass of `AFHTTPRequestOperation` for downloading and working with XML response data. - - ## Acceptable Content Types - - By default, `AFXMLRequestOperation` accepts the following MIME types, which includes the official standard, `application/xml`, as well as other commonly-used types: - - - `application/xml` - - `text/xml` - - ## Use With AFHTTPClient - - When `AFXMLRequestOperation` is registered with `AFHTTPClient`, the response object in the success callback of `HTTPRequestOperationWithRequest:success:failure:` will be an instance of `NSXMLParser`. On platforms that support `NSXMLDocument`, you have the option to ignore the response object, and simply use the `responseXMLDocument` property of the operation argument of the callback. - */ -@interface AFXMLRequestOperation : AFHTTPRequestOperation - -///---------------------------- -/// @name Getting Response Data -///---------------------------- - -/** - An `NSXMLParser` object constructed from the response data. - */ -@property (readonly, nonatomic, strong) NSXMLParser *responseXMLParser; - -#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED -/** - An `NSXMLDocument` object constructed from the response data. If an error occurs while parsing, `nil` will be returned, and the `error` property will be set to the error. - */ -@property (readonly, nonatomic, strong) NSXMLDocument *responseXMLDocument; -#endif - -/** - Creates and returns an `AFXMLRequestOperation` object and sets the specified success and failure callbacks. - - @param urlRequest The request object to be loaded asynchronously during execution of the operation - @param success A block object to be executed when the 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 XML parser constructed with the response data of request. - @param failure A block object to be executed when the operation finishes unsuccessfully. 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 describing the network error that occurred. - - @return A new XML request operation - */ -+ (instancetype)XMLParserRequestOperationWithRequest:(NSURLRequest *)urlRequest - success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser))success - failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, NSXMLParser *XMLParser))failure; - - -#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED -/** - Creates and returns an `AFXMLRequestOperation` object and sets the specified success and failure callbacks. - - @param urlRequest The request object to be loaded asynchronously during execution of the operation - @param success A block object to be executed when the 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 XML document created from the response data of request. - @param failure A block object to be executed when the operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data as XML. 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 describing the network or parsing error that occurred. - - @return A new XML request operation - */ -+ (instancetype)XMLDocumentRequestOperationWithRequest:(NSURLRequest *)urlRequest - success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLDocument *document))success - failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, NSXMLDocument *document))failure; -#endif - -@end diff --git a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.m b/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.m deleted file mode 100644 index a97cd88478d..00000000000 --- a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.m +++ /dev/null @@ -1,167 +0,0 @@ -// AFXMLRequestOperation.m -// -// Copyright (c) 2011 Gowalla (http://gowalla.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 "AFXMLRequestOperation.h" - -#include - -static dispatch_queue_t xml_request_operation_processing_queue() { - static dispatch_queue_t af_xml_request_operation_processing_queue; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - af_xml_request_operation_processing_queue = dispatch_queue_create("com.alamofire.networking.xml-request.processing", DISPATCH_QUEUE_CONCURRENT); - }); - - return af_xml_request_operation_processing_queue; -} - -@interface AFXMLRequestOperation () -@property (readwrite, nonatomic, strong) NSXMLParser *responseXMLParser; -#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED -@property (readwrite, nonatomic, strong) NSXMLDocument *responseXMLDocument; -#endif -@property (readwrite, nonatomic, strong) NSError *XMLError; -@end - -@implementation AFXMLRequestOperation -@synthesize responseXMLParser = _responseXMLParser; -#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED -@synthesize responseXMLDocument = _responseXMLDocument; -#endif -@synthesize XMLError = _XMLError; - -+ (instancetype)XMLParserRequestOperationWithRequest:(NSURLRequest *)urlRequest - success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser))success - failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, NSXMLParser *XMLParser))failure -{ - AFXMLRequestOperation *requestOperation = [(AFXMLRequestOperation *)[self alloc] initWithRequest:urlRequest]; - [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { - if (success) { - success(operation.request, operation.response, responseObject); - } - } failure:^(AFHTTPRequestOperation *operation, NSError *error) { - if (failure) { - failure(operation.request, operation.response, error, [(AFXMLRequestOperation *)operation responseXMLParser]); - } - }]; - - return requestOperation; -} - -#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED -+ (instancetype)XMLDocumentRequestOperationWithRequest:(NSURLRequest *)urlRequest - success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLDocument *document))success - failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, NSXMLDocument *document))failure -{ - AFXMLRequestOperation *requestOperation = [[self alloc] initWithRequest:urlRequest]; - [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, __unused id responseObject) { - if (success) { - NSXMLDocument *XMLDocument = [(AFXMLRequestOperation *)operation responseXMLDocument]; - success(operation.request, operation.response, XMLDocument); - } - } failure:^(AFHTTPRequestOperation *operation, NSError *error) { - if (failure) { - NSXMLDocument *XMLDocument = [(AFXMLRequestOperation *)operation responseXMLDocument]; - failure(operation.request, operation.response, error, XMLDocument); - } - }]; - - return requestOperation; -} -#endif - - -- (NSXMLParser *)responseXMLParser { - if (!_responseXMLParser && [self.responseData length] > 0 && [self isFinished]) { - self.responseXMLParser = [[NSXMLParser alloc] initWithData:self.responseData]; - } - - return _responseXMLParser; -} - -#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED -- (NSXMLDocument *)responseXMLDocument { - if (!_responseXMLDocument && [self.responseData length] > 0 && [self isFinished]) { - NSError *error = nil; - self.responseXMLDocument = [[NSXMLDocument alloc] initWithData:self.responseData options:0 error:&error]; - self.XMLError = error; - } - - return _responseXMLDocument; -} -#endif - -- (NSError *)error { - if (_XMLError) { - return _XMLError; - } else { - return [super error]; - } -} - -#pragma mark - NSOperation - -- (void)cancel { - [super cancel]; - - self.responseXMLParser.delegate = nil; -} - -#pragma mark - AFHTTPRequestOperation - -+ (NSSet *)acceptableContentTypes { - return [NSSet setWithObjects:@"application/xml", @"text/xml", nil]; -} - -+ (BOOL)canProcessRequest:(NSURLRequest *)request { - return [[[request URL] pathExtension] isEqualToString:@"xml"] || [super canProcessRequest:request]; -} - -- (void)setCompletionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure -{ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Warc-retain-cycles" -#pragma clang diagnostic ignored "-Wgnu" - self.completionBlock = ^ { - dispatch_async(xml_request_operation_processing_queue(), ^(void) { - NSXMLParser *XMLParser = self.responseXMLParser; - - if (self.error) { - if (failure) { - dispatch_async(self.failureCallbackQueue ?: dispatch_get_main_queue(), ^{ - failure(self, self.error); - }); - } - } else { - if (success) { - dispatch_async(self.successCallbackQueue ?: dispatch_get_main_queue(), ^{ - success(self, XMLParser); - }); - } - } - }); - }; -#pragma clang diagnostic pop -} - -@end diff --git a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.h b/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.h deleted file mode 100644 index bafb7901ea7..00000000000 --- a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.h +++ /dev/null @@ -1,78 +0,0 @@ -// UIImageView+AFNetworking.h -// -// Copyright (c) 2011 Gowalla (http://gowalla.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 "AFImageRequestOperation.h" - -#import - -#if __IPHONE_OS_VERSION_MIN_REQUIRED -#import - -/** - 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) - -/** - Creates and enqueues an image request operation, which asynchronously downloads the image from the specified URL, and sets it 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 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; - -/** - Creates and enqueues an image request operation, which asynchronously downloads the image from the specified URL. 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 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; - -/** - Creates and enqueues an image request operation, which asynchronously downloads the image with the specified URL request object. 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 executed. - - @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, with a status code in the 2xx range, and with an acceptable content type (e.g. `image/png`). 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 request operation for the receiver, if one exists. - */ -- (void)cancelImageRequestOperation; - -@end - -#endif diff --git a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.m b/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.m deleted file mode 100644 index 839a2b85722..00000000000 --- a/samples/client/petstore/objc/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.m +++ /dev/null @@ -1,191 +0,0 @@ -// UIImageView+AFNetworking.m -// -// Copyright (c) 2011 Gowalla (http://gowalla.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 "UIImageView+AFNetworking.h" - -@interface AFImageCache : NSCache -- (UIImage *)cachedImageForRequest:(NSURLRequest *)request; -- (void)cacheImage:(UIImage *)image - forRequest:(NSURLRequest *)request; -@end - -#pragma mark - - -static char kAFImageRequestOperationObjectKey; - -@interface UIImageView (_AFNetworking) -@property (readwrite, nonatomic, strong, setter = af_setImageRequestOperation:) AFImageRequestOperation *af_imageRequestOperation; -@end - -@implementation UIImageView (_AFNetworking) -@dynamic af_imageRequestOperation; -@end - -#pragma mark - - -@implementation UIImageView (AFNetworking) - -- (AFHTTPRequestOperation *)af_imageRequestOperation { - return (AFHTTPRequestOperation *)objc_getAssociatedObject(self, &kAFImageRequestOperationObjectKey); -} - -- (void)af_setImageRequestOperation:(AFImageRequestOperation *)imageRequestOperation { - objc_setAssociatedObject(self, &kAFImageRequestOperationObjectKey, imageRequestOperation, OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - -+ (NSOperationQueue *)af_sharedImageRequestOperationQueue { - static NSOperationQueue *_af_imageRequestOperationQueue = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - _af_imageRequestOperationQueue = [[NSOperationQueue alloc] init]; - [_af_imageRequestOperationQueue setMaxConcurrentOperationCount:NSOperationQueueDefaultMaxConcurrentOperationCount]; - }); - - return _af_imageRequestOperationQueue; -} - -+ (AFImageCache *)af_sharedImageCache { - static AFImageCache *_af_imageCache = nil; - static dispatch_once_t oncePredicate; - dispatch_once(&oncePredicate, ^{ - _af_imageCache = [[AFImageCache alloc] init]; - }); - - return _af_imageCache; -} - -#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] af_sharedImageCache] cachedImageForRequest:urlRequest]; - if (cachedImage) { - self.af_imageRequestOperation = nil; - - if (success) { - success(nil, nil, cachedImage); - } else { - self.image = cachedImage; - } - } else { - if (placeholderImage) { - self.image = placeholderImage; - } - - AFImageRequestOperation *requestOperation = [[AFImageRequestOperation alloc] initWithRequest:urlRequest]; - -#ifdef _AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES_ - requestOperation.allowsInvalidSSLCertificate = YES; -#endif - - [requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { - if ([urlRequest isEqual:[self.af_imageRequestOperation request]]) { - if (self.af_imageRequestOperation == operation) { - self.af_imageRequestOperation = nil; - } - - if (success) { - success(operation.request, operation.response, responseObject); - } else if (responseObject) { - self.image = responseObject; - } - } - - [[[self class] af_sharedImageCache] cacheImage:responseObject forRequest:urlRequest]; - } failure:^(AFHTTPRequestOperation *operation, NSError *error) { - if ([urlRequest isEqual:[self.af_imageRequestOperation request]]) { - if (self.af_imageRequestOperation == operation) { - self.af_imageRequestOperation = nil; - } - - if (failure) { - failure(operation.request, operation.response, error); - } - } - }]; - - self.af_imageRequestOperation = requestOperation; - - [[[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/samples/client/petstore/objc/Pods/AFNetworking/LICENSE b/samples/client/petstore/objc/Pods/AFNetworking/LICENSE index 42d32adadad..22508e7b74f 100644 --- a/samples/client/petstore/objc/Pods/AFNetworking/LICENSE +++ b/samples/client/petstore/objc/Pods/AFNetworking/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2011 Gowalla (http://gowalla.com/) +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 diff --git a/samples/client/petstore/objc/Pods/AFNetworking/README.md b/samples/client/petstore/objc/Pods/AFNetworking/README.md index 4d2f226d4eb..74104f00f5d 100644 --- a/samples/client/petstore/objc/Pods/AFNetworking/README.md +++ b/samples/client/petstore/objc/Pods/AFNetworking/README.md @@ -2,18 +2,9 @@ AFNetworking

    -[![Build Status](https://travis-ci.org/AFNetworking/AFNetworking.png?branch=master)](https://travis-ci.org/AFNetworking/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 [NSURLConnection](http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSURLConnection_Class/Reference/Reference.html), [NSOperation](http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSOperation_class/Reference/Reference.html), and other familiar Foundation technologies. It has a modular architecture with well-designed, feature-rich APIs that are a joy to use. For example, here's how easy it is to get JSON from a URL: - -```objective-c -NSURL *url = [NSURL URLWithString:@"https://alpha-api.app.net/stream/0/posts/stream/global"]; -NSURLRequest *request = [NSURLRequest requestWithURL:url]; -AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { - NSLog(@"App.net Global Stream: %@", JSON); -} failure:nil]; -[operation start]; -``` +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. @@ -21,171 +12,363 @@ Choose AFNetworking for your next project, or migrate over your existing project ## How To Get Started -- [Download AFNetworking](https://github.com/AFNetworking/AFNetworking/zipball/master) 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 in the wiki](https://github.com/AFNetworking/AFNetworking/wiki) -- Check out the [complete documentation](http://cocoadocs.org/docsets/AFNetworking/) for a comprehensive look at the APIs available in AFNetworking -- Watch the [NSScreencast episode about AFNetworking](http://nsscreencast.com/episodes/6-afnetworking) for a quick introduction to how to use it in your application -- Questions? [Stack Overflow](http://stackoverflow.com/questions/tagged/afnetworking) is the best place to find answers +- [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. -## Overview +## Communication -AFNetworking is architected to be as small and modular as possible, in order to make it simple to use and extend. +- 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 - - - - - - - - - - - - - - - -
    Core
    AFURLConnectionOperationAn NSOperation that implements the NSURLConnection delegate methods.
    HTTP Requests
    AFHTTPRequestOperationA 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.
    AFJSONRequestOperationA subclass of AFHTTPRequestOperation for downloading and working with JSON response data.
    AFXMLRequestOperationA subclass of AFHTTPRequestOperation for downloading and working with XML response data.
    AFPropertyListRequestOperationA subclass of AFHTTPRequestOperation for downloading and deserializing objects with property list response data.
    HTTP Client
    AFHTTPClient - Captures the common patterns of communicating with an web application over HTTP, including: - -
      -
    • Making requests from relative paths of a base URL
    • -
    • Setting HTTP headers to be added automatically to requests
    • -
    • Authenticating requests with HTTP Basic credentials or an OAuth token
    • -
    • Managing an NSOperationQueue for requests made by the client
    • -
    • Generating query strings or HTTP bodies from an NSDictionary
    • -
    • Constructing multipart form requests
    • -
    • Automatically parsing HTTP response data into its corresponding object representation
    • -
    • Monitoring and responding to changes in network reachability
    • -
    -
    Images
    AFImageRequestOperationA subclass of AFHTTPRequestOperation for downloading and processing images.
    UIImageView+AFNetworkingAdds methods to UIImageView for loading remote images asynchronously from a URL.
    - -## Example Usage - -### XML Request - -```objective-c -NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://api.flickr.com/services/rest/?method=flickr.groups.browse&api_key=b6300e17ad3c506e706cb0072175d047&cat_id=34427469792%40N01&format=rest"]]; -AFXMLRequestOperation *operation = [AFXMLRequestOperation XMLParserRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser) { - XMLParser.delegate = self; - [XMLParser parse]; -} failure:nil]; -[operation start]; -``` - -### Image Request - -```objective-c -UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 100.0f, 100.0f)]; -[imageView setImageWithURL:[NSURL URLWithString:@"http://i.imgur.com/r4uwx.jpg"] placeholderImage:[UIImage imageNamed:@"placeholder-avatar"]]; -``` - -### API Client Request - -```objective-c -// AFAppDotNetAPIClient is a subclass of AFHTTPClient, which defines the base URL and default HTTP headers for NSURLRequests it creates -[[AFAppDotNetAPIClient sharedClient] getPath:@"stream/0/posts/stream/global" parameters:nil success:^(AFHTTPRequestOperation *operation, id JSON) { - NSLog(@"App.net Global Stream: %@", JSON); -} failure:nil]; -``` - -### File Upload with Progress Callback - -```objective-c -NSURL *url = [NSURL URLWithString:@"http://api-base-url.com"]; -AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url]; -NSData *imageData = UIImageJPEGRepresentation([UIImage imageNamed:@"avatar.jpg"], 0.5); -NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:@"/upload" parameters:nil constructingBodyWithBlock: ^(id formData) { - [formData appendPartWithFileData:imageData name:@"avatar" fileName:@"avatar.jpg" mimeType:@"image/jpeg"]; -}]; - -AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; -[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) { - NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite); -}]; -[httpClient enqueueHTTPRequestOperation:operation]; -``` - -### Streaming Request - -```objective-c -NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://localhost:8080/encode"]]; - -AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; -operation.inputStream = [NSInputStream inputStreamWithFileAtPath:[[NSBundle mainBundle] pathForResource:@"large-image" ofType:@"tiff"]]; -operation.outputStream = [NSOutputStream outputStreamToMemory]; -[operation start]; +```ruby +platform :ios, '7.0' +pod "AFNetworking", "~> 2.0" ``` ## Requirements -AFNetworking 1.0 and higher requires either [iOS 5.0](http://developer.apple.com/library/ios/#releasenotes/General/WhatsNewIniPhoneOS/Articles/iPhoneOS4.html) and above, or [Mac OS 10.7](http://developer.apple.com/library/mac/#releasenotes/MacOSX/WhatsNewInOSX/Articles/MacOSX10_6.html#//apple_ref/doc/uid/TP40008898-SW7) ([64-bit with modern Cocoa runtime](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtVersionsPlatforms.html)) and above. +| 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 | | -For compatibility with iOS 4.3, use the latest 0.10.x release. +(OS X projects must support [64-bit with modern Cocoa runtime](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtVersionsPlatforms.html)). -### ARC +> Programming in Swift? Try [Alamofire](https://github.com/Alamofire/Alamofire) for a more conventional set of APIs. -AFNetworking uses ARC as of its 1.0 release. +## Architecture -If you are using AFNetworking 1.0 in your non-arc project, you will need to set a `-fobjc-arc` compiler flag on all of the AFNetworking source files. Conversely, if you are adding a pre-1.0 version of AFNetworking, you will need to set a `-fno-objc-arc` compiler flag. +### NSURLConnection -To set a compiler flag in Xcode, go to your active target and select the "Build Phases" tab. Now select all AFNetworking source files, press Enter, insert `-fobjc-arc` or `-fno-objc-arc` and then "Done" to enable or disable ARC for AFNetworking. +- `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. To do so: +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/): - $ gem install cocoapods # If necessary $ cd Tests $ pod install -Once CocoaPods has finished the installation, you can execute the test suite via the 'iOS Tests' and 'OS X Tests' schemes within Xcode. +Once testing dependencies are installed, you can execute the test suite via the 'iOS Tests' and 'OS X Tests' schemes within Xcode. -### Test Logging +### Running Tests from the Command Line -By default, the unit tests do not emit any output during execution. For debugging purposes, it can be useful to enable logging of the requests and responses. Logging support is provided by the [AFHTTPRequestOperationLogger](https://github.com/AFNetworking/AFHTTPRequestOperationLogger) extension, which is installed via CocoaPods into the test targets. To enable logging, edit the test Scheme and add an environment variable named `AFTestsLoggingEnabled` with a value of `YES`. +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: -### Using xctool + $ gem install xcpretty -If you wish to execute the tests from the command line or within a continuous integration environment, you will need to install [xctool](https://github.com/facebook/xctool). The recommended installation method is [Homebrew](http://mxcl.github.io/homebrew/). - -To install the commandline testing support via Homebrew: - - $ brew update - $ brew install xctool --HEAD - -Once xctool is installed, you can execute the suite via `rake test`. +Once `xcpretty` is installed, you can execute the suite via `rake test`. ## Credits -AFNetworking was 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 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/). @@ -195,13 +378,9 @@ And most of all, thanks to AFNetworking's [growing list of contributors](https:/ Follow AFNetworking on Twitter ([@AFNetworking](https://twitter.com/AFNetworking)) -### Creators +### Maintainers -[Mattt Thompson](http://github.com/mattt) -[@mattt](https://twitter.com/mattt) - -[Scott Raymond](http://github.com/sco) -[@sco](https://twitter.com/sco) +- [Mattt Thompson](http://github.com/mattt) ([@mattt](https://twitter.com/mattt)) ## License diff --git a/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFHTTPClient.h b/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFHTTPClient.h deleted file mode 120000 index a88168d71da..00000000000 --- a/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFHTTPClient.h +++ /dev/null @@ -1 +0,0 @@ -../../AFNetworking/AFNetworking/AFHTTPClient.h \ No newline at end of file diff --git a/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFHTTPRequestOperation.h b/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFHTTPRequestOperation.h deleted file mode 120000 index d51daed27c1..00000000000 --- a/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFHTTPRequestOperation.h +++ /dev/null @@ -1 +0,0 @@ -../../AFNetworking/AFNetworking/AFHTTPRequestOperation.h \ No newline at end of file diff --git a/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFImageRequestOperation.h b/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFImageRequestOperation.h deleted file mode 120000 index f7c5e913d35..00000000000 --- a/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFImageRequestOperation.h +++ /dev/null @@ -1 +0,0 @@ -../../AFNetworking/AFNetworking/AFImageRequestOperation.h \ No newline at end of file diff --git a/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFJSONRequestOperation.h b/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFJSONRequestOperation.h deleted file mode 120000 index 4dd9622727f..00000000000 --- a/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFJSONRequestOperation.h +++ /dev/null @@ -1 +0,0 @@ -../../AFNetworking/AFNetworking/AFJSONRequestOperation.h \ No newline at end of file diff --git a/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFNetworkActivityIndicatorManager.h b/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFNetworkActivityIndicatorManager.h deleted file mode 120000 index a09102c76d0..00000000000 --- a/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFNetworkActivityIndicatorManager.h +++ /dev/null @@ -1 +0,0 @@ -../../AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.h \ No newline at end of file diff --git a/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFNetworking.h b/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFNetworking.h deleted file mode 120000 index 83dd518f7b2..00000000000 --- a/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../AFNetworking/AFNetworking/AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFPropertyListRequestOperation.h b/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFPropertyListRequestOperation.h deleted file mode 120000 index fb82b5c5706..00000000000 --- a/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFPropertyListRequestOperation.h +++ /dev/null @@ -1 +0,0 @@ -../../AFNetworking/AFNetworking/AFPropertyListRequestOperation.h \ No newline at end of file diff --git a/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFURLConnectionOperation.h b/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFURLConnectionOperation.h deleted file mode 120000 index 360459d4c03..00000000000 --- a/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFURLConnectionOperation.h +++ /dev/null @@ -1 +0,0 @@ -../../AFNetworking/AFNetworking/AFURLConnectionOperation.h \ No newline at end of file diff --git a/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFXMLRequestOperation.h b/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFXMLRequestOperation.h deleted file mode 120000 index c5c354bbcb2..00000000000 --- a/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/AFXMLRequestOperation.h +++ /dev/null @@ -1 +0,0 @@ -../../AFNetworking/AFNetworking/AFXMLRequestOperation.h \ No newline at end of file diff --git a/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/UIImageView+AFNetworking.h b/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/UIImageView+AFNetworking.h deleted file mode 120000 index 7c7e6c38e96..00000000000 --- a/samples/client/petstore/objc/Pods/BuildHeaders/AFNetworking/UIImageView+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../AFNetworking/AFNetworking/UIImageView+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFHTTPClient.h b/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFHTTPClient.h deleted file mode 120000 index a88168d71da..00000000000 --- a/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFHTTPClient.h +++ /dev/null @@ -1 +0,0 @@ -../../AFNetworking/AFNetworking/AFHTTPClient.h \ No newline at end of file diff --git a/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFHTTPRequestOperation.h b/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFHTTPRequestOperation.h deleted file mode 120000 index d51daed27c1..00000000000 --- a/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFHTTPRequestOperation.h +++ /dev/null @@ -1 +0,0 @@ -../../AFNetworking/AFNetworking/AFHTTPRequestOperation.h \ No newline at end of file diff --git a/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFImageRequestOperation.h b/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFImageRequestOperation.h deleted file mode 120000 index f7c5e913d35..00000000000 --- a/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFImageRequestOperation.h +++ /dev/null @@ -1 +0,0 @@ -../../AFNetworking/AFNetworking/AFImageRequestOperation.h \ No newline at end of file diff --git a/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFJSONRequestOperation.h b/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFJSONRequestOperation.h deleted file mode 120000 index 4dd9622727f..00000000000 --- a/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFJSONRequestOperation.h +++ /dev/null @@ -1 +0,0 @@ -../../AFNetworking/AFNetworking/AFJSONRequestOperation.h \ No newline at end of file diff --git a/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFNetworkActivityIndicatorManager.h b/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFNetworkActivityIndicatorManager.h deleted file mode 120000 index a09102c76d0..00000000000 --- a/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFNetworkActivityIndicatorManager.h +++ /dev/null @@ -1 +0,0 @@ -../../AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.h \ No newline at end of file diff --git a/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFNetworking.h b/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFNetworking.h deleted file mode 120000 index 83dd518f7b2..00000000000 --- a/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../AFNetworking/AFNetworking/AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFPropertyListRequestOperation.h b/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFPropertyListRequestOperation.h deleted file mode 120000 index fb82b5c5706..00000000000 --- a/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFPropertyListRequestOperation.h +++ /dev/null @@ -1 +0,0 @@ -../../AFNetworking/AFNetworking/AFPropertyListRequestOperation.h \ No newline at end of file diff --git a/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFURLConnectionOperation.h b/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFURLConnectionOperation.h deleted file mode 120000 index 360459d4c03..00000000000 --- a/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFURLConnectionOperation.h +++ /dev/null @@ -1 +0,0 @@ -../../AFNetworking/AFNetworking/AFURLConnectionOperation.h \ No newline at end of file diff --git a/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFXMLRequestOperation.h b/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFXMLRequestOperation.h deleted file mode 120000 index c5c354bbcb2..00000000000 --- a/samples/client/petstore/objc/Pods/Headers/AFNetworking/AFXMLRequestOperation.h +++ /dev/null @@ -1 +0,0 @@ -../../AFNetworking/AFNetworking/AFXMLRequestOperation.h \ No newline at end of file diff --git a/samples/client/petstore/objc/Pods/Headers/AFNetworking/UIImageView+AFNetworking.h b/samples/client/petstore/objc/Pods/Headers/AFNetworking/UIImageView+AFNetworking.h deleted file mode 120000 index 7c7e6c38e96..00000000000 --- a/samples/client/petstore/objc/Pods/Headers/AFNetworking/UIImageView+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../AFNetworking/AFNetworking/UIImageView+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/Pods/Manifest.lock b/samples/client/petstore/objc/Pods/Manifest.lock index f52a69324db..a3466a08296 100644 --- a/samples/client/petstore/objc/Pods/Manifest.lock +++ b/samples/client/petstore/objc/Pods/Manifest.lock @@ -1,10 +1,30 @@ PODS: - - AFNetworking (1.3.3) + - 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 (~> 1.0) + - AFNetworking (~> 2.1) SPEC CHECKSUMS: - AFNetworking: 0700ec7a58c36ad217173e167f6e4df7270df66b + AFNetworking: 8bee59492a6ff15d69130efa4d0dc67e0094a52a -COCOAPODS: 0.25.0 +COCOAPODS: 0.35.0 diff --git a/samples/client/petstore/objc/Pods/Pods-AFNetworking-Private.xcconfig b/samples/client/petstore/objc/Pods/Pods-AFNetworking-Private.xcconfig deleted file mode 100644 index af8cfd47a49..00000000000 --- a/samples/client/petstore/objc/Pods/Pods-AFNetworking-Private.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -#include "Pods-AFNetworking.xcconfig" -GCC_PREPROCESSOR_DEFINITIONS = COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/BuildHeaders" "${PODS_ROOT}/BuildHeaders/AFNetworking" "${PODS_ROOT}/Headers" "${PODS_ROOT}/Headers/AFNetworking" -OTHER_LDFLAGS = -ObjC ${PODS_AFNETWORKING_OTHER_LDFLAGS} -PODS_ROOT = ${SRCROOT} \ No newline at end of file diff --git a/samples/client/petstore/objc/Pods/Pods-AFNetworking-dummy.m b/samples/client/petstore/objc/Pods/Pods-AFNetworking-dummy.m deleted file mode 100644 index c50a8c61689..00000000000 --- a/samples/client/petstore/objc/Pods/Pods-AFNetworking-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_AFNetworking : NSObject -@end -@implementation PodsDummy_Pods_AFNetworking -@end diff --git a/samples/client/petstore/objc/Pods/Pods-AFNetworking-prefix.pch b/samples/client/petstore/objc/Pods/Pods-AFNetworking-prefix.pch deleted file mode 100644 index 133fd577e8e..00000000000 --- a/samples/client/petstore/objc/Pods/Pods-AFNetworking-prefix.pch +++ /dev/null @@ -1,19 +0,0 @@ -#ifdef __OBJC__ -#import -#endif - -#import "Pods-environment.h" -#import - -#define _AFNETWORKING_PIN_SSL_CERTIFICATES_ - -#if __IPHONE_OS_VERSION_MIN_REQUIRED - #import - #import - #import -#else - #import - #import - #import -#endif - diff --git a/samples/client/petstore/objc/Pods/Pods-AFNetworking.xcconfig b/samples/client/petstore/objc/Pods/Pods-AFNetworking.xcconfig deleted file mode 100644 index 13e3dff0366..00000000000 --- a/samples/client/petstore/objc/Pods/Pods-AFNetworking.xcconfig +++ /dev/null @@ -1 +0,0 @@ -PODS_AFNETWORKING_OTHER_LDFLAGS = -framework CoreGraphics -framework MobileCoreServices -framework Security -framework SystemConfiguration \ No newline at end of file diff --git a/samples/client/petstore/objc/Pods/Pods-acknowledgements.markdown b/samples/client/petstore/objc/Pods/Pods-acknowledgements.markdown deleted file mode 100644 index 0a417941f21..00000000000 --- a/samples/client/petstore/objc/Pods/Pods-acknowledgements.markdown +++ /dev/null @@ -1,26 +0,0 @@ -# Acknowledgements -This application makes use of the following third party libraries: - -## AFNetworking - -Copyright (c) 2011 Gowalla (http://gowalla.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/samples/client/petstore/objc/Pods/Pods-acknowledgements.plist b/samples/client/petstore/objc/Pods/Pods-acknowledgements.plist deleted file mode 100644 index 0c9d23f5fad..00000000000 --- a/samples/client/petstore/objc/Pods/Pods-acknowledgements.plist +++ /dev/null @@ -1,56 +0,0 @@ - - - - - PreferenceSpecifiers - - - FooterText - This application makes use of the following third party libraries: - Title - Acknowledgements - Type - PSGroupSpecifier - - - FooterText - Copyright (c) 2011 Gowalla (http://gowalla.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/samples/client/petstore/objc/Pods/Pods-dummy.m b/samples/client/petstore/objc/Pods/Pods-dummy.m deleted file mode 100644 index ade64bd1a9b..00000000000 --- a/samples/client/petstore/objc/Pods/Pods-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods : NSObject -@end -@implementation PodsDummy_Pods -@end diff --git a/samples/client/petstore/objc/Pods/Pods-environment.h b/samples/client/petstore/objc/Pods/Pods-environment.h deleted file mode 100644 index 17dfbefd837..00000000000 --- a/samples/client/petstore/objc/Pods/Pods-environment.h +++ /dev/null @@ -1,14 +0,0 @@ - -// 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 1 -#define COCOAPODS_VERSION_MINOR_AFNetworking 3 -#define COCOAPODS_VERSION_PATCH_AFNetworking 3 - diff --git a/samples/client/petstore/objc/Pods/Pods-resources.sh b/samples/client/petstore/objc/Pods/Pods-resources.sh deleted file mode 100755 index d6513b83d87..00000000000 --- a/samples/client/petstore/objc/Pods/Pods-resources.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/sh -set -e - -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" - ;; - /*) - 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" diff --git a/samples/client/petstore/objc/Pods/Pods.xcconfig b/samples/client/petstore/objc/Pods/Pods.xcconfig deleted file mode 100644 index c06def56661..00000000000 --- a/samples/client/petstore/objc/Pods/Pods.xcconfig +++ /dev/null @@ -1,4 +0,0 @@ -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers" "${PODS_ROOT}/Headers/AFNetworking" -OTHER_LDFLAGS = -ObjC -framework CoreGraphics -framework MobileCoreServices -framework Security -framework SystemConfiguration -PODS_ROOT = ${SRCROOT}/../Pods \ No newline at end of file diff --git a/samples/client/petstore/objc/Pods/Pods.xcodeproj/project.pbxproj b/samples/client/petstore/objc/Pods/Pods.xcodeproj/project.pbxproj index 1a2a2a848a2..c2189c75c3b 100644 --- a/samples/client/petstore/objc/Pods/Pods.xcodeproj/project.pbxproj +++ b/samples/client/petstore/objc/Pods/Pods.xcodeproj/project.pbxproj @@ -10,7 +10,83 @@ 46 objects - 08AD1E7714834BA097149FFC + 001404095FADAE5510F05A76 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.plist.xml + path + Pods-acknowledgements.plist + sourceTree + <group> + + 001593D1863E0105FE381DA6 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UIImageView+AFNetworking.h + path + UIKit+AFNetworking/UIImageView+AFNetworking.h + sourceTree + <group> + + 005E1EE894A96827E2C616B1 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text + path + Pods-acknowledgements.markdown + sourceTree + <group> + + 01AF2EE53149403F58618DE1 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + UIProgressView+AFNetworking.m + path + UIKit+AFNetworking/UIProgressView+AFNetworking.m + sourceTree + <group> + + 05634B081C1D7A9017A542B1 + + fileRef + 743E079C03FBBAF7D6C143CB + isa + PBXBuildFile + + 075F316292F4259B17F220C9 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + Pods.release.xcconfig + sourceTree + <group> + + 0A0ADDDD43F5AB6D681E772C includeInIndex 1 @@ -25,78 +101,14 @@ sourceTree <group> - 0A30FD7007D548689A8CFA96 - - buildConfigurationList - D83638CD2B874305B4E2B366 - buildPhases - - CAF06F18CAB044D582844864 - EB343EA5DF6345D7867FC8B7 - - buildRules - - dependencies - - 36E14D068FBE423684F46265 - - isa - PBXNativeTarget - name - Pods - productName - Pods - productReference - 4C14728A19A84EAA9AFA4921 - productType - com.apple.product-type.library.static - - 117F23A7BDB2475BB504D0F5 + 0A3FA40774724829EAFAD6CE fileRef - 4BF878DF59B546788943B1C4 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -fobjc-arc -DOS_OBJECT_USE_OBJC=0 - - - 13106AAC07724E9D97A8B49F - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.xcconfig - path - Pods-AFNetworking.xcconfig - sourceTree - <group> - - 17722A4C9883485BB1BF1C34 - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - CoreGraphics.framework - path - System/Library/Frameworks/CoreGraphics.framework - sourceTree - SDKROOT - - 184B9675055042D798F70DD4 - - fileRef - 41C954074E9C4774989EE939 + 4903498DD92A3765606E0F79 isa PBXBuildFile - 1A32B73F523240569574D287 + 0B58AE20183B8DD15DEBC4D8 includeInIndex 1 @@ -105,176 +117,39 @@ lastKnownFileType sourcecode.c.objc name - AFHTTPRequestOperation.m + UIRefreshControl+AFNetworking.m path - AFNetworking/AFHTTPRequestOperation.m + UIKit+AFNetworking/UIRefreshControl+AFNetworking.m sourceTree <group> - 1C472D5A8E8A4F08954C4AA2 - - buildActionMask - 2147483647 - files - - 3BBDEC35F3194F569BC38755 - 4313834545D74DE3948659F0 - 7643E5EF1A9547E7876DE986 - 475DFF9ECD7746639003AD4A - F71E6F37CA9A4629AAC2CDCC - - isa - PBXFrameworksBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 1E15FB759FAE49F89C5CB65D - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - AFURLConnectionOperation.h - path - AFNetworking/AFURLConnectionOperation.h - sourceTree - <group> - - 1F5E1B3B5C2C40B8B5C0D3D1 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - path - Pods-AFNetworking-prefix.pch - sourceTree - <group> - - 2043689D5F07489597A49188 - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - MobileCoreServices.framework - path - System/Library/Frameworks/MobileCoreServices.framework - sourceTree - SDKROOT - - 242B94135C604951BF12B255 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - AFNetworkActivityIndicatorManager.m - path - AFNetworking/AFNetworkActivityIndicatorManager.m - sourceTree - <group> - - 258C9862D1A340E494399953 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - AFNetworkActivityIndicatorManager.h - path - AFNetworking/AFNetworkActivityIndicatorManager.h - sourceTree - <group> - - 2B63AA5CB8434020B521167B - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.plist.xml - path - Pods-acknowledgements.plist - sourceTree - <group> - - 2C21BED5C48B4FE187F91AAF - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text - path - Pods-acknowledgements.markdown - sourceTree - <group> - - 2D0AD3E49325490CBCD844E7 - - attributes - - LastUpgradeCheck - 0500 - - buildConfigurationList - 9C1681924E934108AE569B3B - compatibilityVersion - Xcode 3.2 - developmentRegion - English - hasScannedForEncodings - 0 - isa - PBXProject - knownRegions - - en - - mainGroup - 40736C2ECA4D41A1B8D721AA - productRefGroup - 669C06BC945D42D2B942A283 - projectDirPath - - projectReferences - - projectRoot - - targets - - 0A30FD7007D548689A8CFA96 - ADDE8DBB9F9E475B90FBC797 - - - 2E34FB5F1E3748149252B6AD + 0B6DF4B1BEB35611E09154B4 fileRef - CF4689A092504584B06A11F7 + 5BAEB3AABB09CC8C5C319381 isa PBXBuildFile - 2F2767F66C604065872045DE + 0FE769CA77F05940D7784E49 + + fileRef + 21D6A1C44343AF4B8631C0B7 + isa + PBXBuildFile + + 0FF1B58C61E227943947FE95 + + fileRef + 88468B42DB06FB1AC0C7D037 + isa + PBXBuildFile + + 13D74AB918AC6F272AF91942 buildConfigurations - 44F295FD071343108C2F4714 - 7351BEBB632E4B1380FD70CC + 7C795AF2CF87F4DDE452AC13 + 6484AA189FD04056985609E1 defaultConfigurationIsVisible 0 @@ -283,15 +158,96 @@ isa XCConfigurationList - 3396677D4F7D47ACAFB45EA3 + 19A158837425391AD65B266F + + 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 + + 1A47A9A2FAB3161998BFED9B + + buildActionMask + 2147483647 + files + + 99CCF682993A678D8D92A817 + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 1A5CAC354FB74758981DF5C4 + + fileRef + BF9D11024D4FDD4DC0615F21 + isa + PBXBuildFile + + 1FDC8036F884F9E346D55F1D + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + AFURLRequestSerialization.h + path + AFNetworking/AFURLRequestSerialization.h + sourceTree + <group> + + 21D6A1C44343AF4B8631C0B7 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UIRefreshControl+AFNetworking.h + path + UIKit+AFNetworking/UIRefreshControl+AFNetworking.h + sourceTree + <group> + + 2333D6EE84EBBD9D8A292577 + + fileRef + 587B32E096C1C0E7C8FB0E03 + isa + PBXBuildFile + + 26A2515EDDEFD7E10CC6A3FB + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + AFHTTPRequestOperationManager.m + path + AFNetworking/AFHTTPRequestOperationManager.m + sourceTree + <group> + + 270546A695186DDFC50C7969 children - 17722A4C9883485BB1BF1C34 - 41C954074E9C4774989EE939 - 2043689D5F07489597A49188 - 6D512D4B085A466E829659CB - D69A248065874CCE8D755FFC + 5BA2DEDEF56DF393B2A9AE6A isa PBXGroup @@ -300,36 +256,7 @@ sourceTree <group> - 363F02FE962C4D5084685024 - - fileRef - 928DF5ECB0344C82B94E8F18 - isa - PBXBuildFile - - 36675631701345F4AEAB7DBF - - children - - 928DF5ECB0344C82B94E8F18 - - isa - PBXGroup - name - Products - sourceTree - <group> - - 36E14D068FBE423684F46265 - - isa - PBXTargetDependency - target - ADDE8DBB9F9E475B90FBC797 - targetProxy - C9B8CD7C05314612A2434792 - - 37D3C638E91F452899FE87C7 + 271CCA9467C085468BF546EE includeInIndex 1 @@ -346,150 +273,36 @@ xcLanguageSpecificationIdentifier xcode.lang.ruby - 39B010F2F8A5405DB8788FA9 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.objc - name - AFJSONRequestOperation.m - path - AFNetworking/AFJSONRequestOperation.m - sourceTree - <group> - - 3BBDEC35F3194F569BC38755 - - fileRef - 17722A4C9883485BB1BF1C34 - isa - PBXBuildFile - - 40736C2ECA4D41A1B8D721AA + 27F24B1BC46541BFB2885FB8 children - 3396677D4F7D47ACAFB45EA3 - C22DD5E647C44918AAD0EC67 - 669C06BC945D42D2B942A283 - F9B38E093C8243CBB847A0CE - 37D3C638E91F452899FE87C7 + 5BAEB3AABB09CC8C5C319381 + F6341FA343A3E01C6434232B + 546E0C394AC5A00140D5BF14 + 2A1B2460DCF6AE16EA5E0567 + 9CC995AF27D24A9E05E05516 + 87050FFCE87B7D24428660BC + 803FE48E0516C1BEF0EBF097 + B9BDD72518C9E49FF9D29B94 + 001593D1863E0105FE381DA6 + FCEECDA077C16FBE854E3ECE + 483C8007ED4BA7D8070B2EA0 + 88468B42DB06FB1AC0C7D037 + 01AF2EE53149403F58618DE1 + 21D6A1C44343AF4B8631C0B7 + 0B58AE20183B8DD15DEBC4D8 + DF08625FA1731E8A4CCE47B4 + 9C93A585DEB95A2D35C8A321 isa PBXGroup + name + UIKit sourceTree <group> - 41C954074E9C4774989EE939 - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - Foundation.framework - path - System/Library/Frameworks/Foundation.framework - sourceTree - SDKROOT - - 4313834545D74DE3948659F0 - - fileRef - 41C954074E9C4774989EE939 - isa - PBXBuildFile - - 44F295FD071343108C2F4714 - - baseConfigurationReference - E2A06AE6E23349F7834ED6E7 - buildSettings - - ALWAYS_SEARCH_USER_PATHS - NO - COPY_PHASE_STRIP - NO - DSTROOT - /tmp/xcodeproj.dst - GCC_C_LANGUAGE_STANDARD - gnu99 - GCC_DYNAMIC_NO_PIC - NO - GCC_OPTIMIZATION_LEVEL - 0 - GCC_PRECOMPILE_PREFIX_HEADER - YES - GCC_PREFIX_HEADER - Pods-AFNetworking-prefix.pch - GCC_PREPROCESSOR_DEFINITIONS - - DEBUG=1 - $(inherited) - - GCC_SYMBOLS_PRIVATE_EXTERN - NO - GCC_VERSION - com.apple.compilers.llvm.clang.1_0 - INSTALL_PATH - $(BUILT_PRODUCTS_DIR) - IPHONEOS_DEPLOYMENT_TARGET - 6.0 - OTHER_LDFLAGS - - PRODUCT_NAME - $(TARGET_NAME) - PUBLIC_HEADERS_FOLDER_PATH - $(TARGET_NAME) - SDKROOT - iphoneos - SKIP_INSTALL - YES - - isa - XCBuildConfiguration - name - Debug - - 4575990AE6344B769BEE7053 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - text.xcconfig - path - Pods.xcconfig - sourceTree - <group> - - 475DFF9ECD7746639003AD4A - - fileRef - 6D512D4B085A466E829659CB - isa - PBXBuildFile - - 4ADFF8D90E254C66B692F502 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - AFImageRequestOperation.h - path - AFNetworking/AFImageRequestOperation.h - sourceTree - <group> - - 4BF878DF59B546788943B1C4 + 2A1B2460DCF6AE16EA5E0567 includeInIndex 1 @@ -498,63 +311,34 @@ lastKnownFileType sourcecode.c.objc name - AFPropertyListRequestOperation.m + UIActivityIndicatorView+AFNetworking.m path - AFNetworking/AFPropertyListRequestOperation.m + UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m sourceTree <group> - 4C14728A19A84EAA9AFA4921 - - explicitFileType - archive.ar - includeInIndex - 0 - isa - PBXFileReference - path - libPods.a - sourceTree - BUILT_PRODUCTS_DIR - - 4C2A6ED1A9944D5DA6403F09 - - fileRef - E2E82489B82D4CC180AA87F7 - isa - PBXBuildFile - - 5125B97E5E154A638B6A2552 - - fileRef - D7AB04599CF5422B80CC2E77 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -fobjc-arc -DOS_OBJECT_USE_OBJC=0 - - - 520A1437FB9D4C82B7F0BFE8 + 30BBB047F567ABA49B6F8A73 children - 53995F8949DE49F9935BF848 - 9450661AED894042BEE72962 - 2C21BED5C48B4FE187F91AAF - 2B63AA5CB8434020B521167B - 732EB3FD102147BAB5999C96 - 4575990AE6344B769BEE7053 + 005E1EE894A96827E2C616B1 + 001404095FADAE5510F05A76 + 92F614A973710C3B5F7310B1 + 97336B1D0E4A079BD538673F + 439B7AA98C88082A76AC3BAF + DE3009FF17C06C20A7026F51 + 075F316292F4259B17F220C9 isa PBXGroup name Pods + path + Target Support Files/Pods sourceTree <group> - 53995F8949DE49F9935BF848 + 36B794D1AA934024745F8628 includeInIndex 1 @@ -562,31 +346,157 @@ PBXFileReference lastKnownFileType sourcecode.c.h + name + AFNetworkReachabilityManager.h path - Pods-environment.h + AFNetworking/AFNetworkReachabilityManager.h sourceTree <group> - 553E8882F7CB4F5FAE46BCBE + 39C147BE7EF48053F47D1D7A - fileRef - 39B010F2F8A5405DB8788FA9 + children + + 587B32E096C1C0E7C8FB0E03 + AFFD5FEC414986F8407EEB24 + 7549538CF18E4F55B7D08A1B + 26A2515EDDEFD7E10CC6A3FB + 39F8A3FF746D7E377515E657 + 0A0ADDDD43F5AB6D681E772C + isa - PBXBuildFile - settings - - COMPILER_FLAGS - -fobjc-arc -DOS_OBJECT_USE_OBJC=0 - + PBXGroup + name + NSURLConnection + sourceTree + <group> - 5AE42FF5353741FF83A9C702 + 39F8A3FF746D7E377515E657 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + AFURLConnectionOperation.h + path + AFNetworking/AFURLConnectionOperation.h + sourceTree + <group> + + 3AB657A3C3EAB299BA820604 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + AFNetworkReachabilityManager.m + path + AFNetworking/AFNetworkReachabilityManager.m + sourceTree + <group> + + 3B0DCE231447C284A8C8FBFA fileRef - C74FC79D37F443A7A9A6F8EC + A2A6B8AE89A16B314A2A8735 isa PBXBuildFile - 5E9724BBAAB74732BA412FFA + 3DCD2E5A6F3EA01A8DDBBBB6 + + buildActionMask + 2147483647 + files + + 6B177738C4E10117181992D5 + 977C4810AEA2B103C05E9C48 + F776CC256B7C0BE4910B72D8 + F385D646BF8D80391442339D + F607B6718E604D1BE6172F13 + 555CEDEF25FB3D88A3C130AE + EA3F19FE7BF4818CE4CBD62F + 0A3FA40774724829EAFAD6CE + 1A5CAC354FB74758981DF5C4 + A0D056DE4FBEEB38EFF7C860 + 4A3504E2A8ECBEAFA148EC49 + 7A552C0985D42458ED62B2CF + A9710234B153BAF6CF2C26C6 + CA37B3F970BA15FC8B9F657D + 597DB8AEC44062CE9C5A3D1D + 8AC9DE3C6E1DECF54044F8D1 + 4CB4BDB4373E8DF2EF9BB024 + D37F671DE63B26CF4CA89199 + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + 4332CF410D5ECAE2066601DB + + buildConfigurations + + E01DDAC8A463536BAB9B98B4 + CC149A22FF636D168DCEDF85 + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + 439B7AA98C88082A76AC3BAF + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.script.sh + path + Pods-resources.sh + sourceTree + <group> + + 4563680A60492C959DC95AB2 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + AFSecurityPolicy.m + path + AFNetworking/AFSecurityPolicy.m + sourceTree + <group> + + 4581189D199A1CF4F20BC169 + + children + + A2A6B8AE89A16B314A2A8735 + A761B3C2433ABBA2C036E85E + 6B00DC972ACC0A2A57AAF075 + 86FCEB15541C4480164F8E60 + + isa + PBXGroup + name + NSURLSession + sourceTree + <group> + + 471E3040362FFCFDB8FA809C includeInIndex 1 @@ -601,7 +511,66 @@ sourceTree <group> - 5FB77F13243D47D8B82A47A7 + 4748A2F055FE0C380148E073 + + fileRef + 561AFFA5800D3676A64451CB + isa + PBXBuildFile + + 483C8007ED4BA7D8070B2EA0 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UIKit+AFNetworking.h + path + UIKit+AFNetworking/UIKit+AFNetworking.h + sourceTree + <group> + + 486DD3750BB8E2DC8332D100 + + attributes + + LastUpgradeCheck + 0510 + + buildConfigurationList + 4332CF410D5ECAE2066601DB + compatibilityVersion + Xcode 3.2 + developmentRegion + English + hasScannedForEncodings + 0 + isa + PBXProject + knownRegions + + en + + mainGroup + B72329AAB5773501C9122EA6 + productRefGroup + F188E2FBB5DCFF137B19D1A8 + projectDirPath + + projectReferences + + projectRoot + + targets + + 54F2167647AE5DDA578E3CBC + 5A5132A30033F73A0B09AB23 + + + 4903498DD92A3765606E0F79 includeInIndex 1 @@ -610,94 +579,61 @@ lastKnownFileType sourcecode.c.objc name - AFHTTPClient.m + AFURLRequestSerialization.m path - AFNetworking/AFHTTPClient.m + AFNetworking/AFURLRequestSerialization.m sourceTree <group> - 669C06BC945D42D2B942A283 - - children - - 4C14728A19A84EAA9AFA4921 - - isa - PBXGroup - name - Products - sourceTree - <group> - - 6D512D4B085A466E829659CB - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - Security.framework - path - System/Library/Frameworks/Security.framework - sourceTree - SDKROOT - - 6EBE2C14A7FC4379A222F0B0 + 4A3504E2A8ECBEAFA148EC49 fileRef - F764EA36EAEF4A908B23E10A + B47838F9C36E86315EC2E9DB isa PBXBuildFile - 732EB3FD102147BAB5999C96 + 4CB4BDB4373E8DF2EF9BB024 - includeInIndex - 1 + fileRef + 0B58AE20183B8DD15DEBC4D8 isa - PBXFileReference - lastKnownFileType - text.script.sh - path - Pods-resources.sh - sourceTree - <group> + PBXBuildFile - 7351BEBB632E4B1380FD70CC + 4DEEDED6AE7C4F28D1E060E6 baseConfigurationReference - E2A06AE6E23349F7834ED6E7 + DE3009FF17C06C20A7026F51 buildSettings ALWAYS_SEARCH_USER_PATHS NO + ARCHS + $(ARCHS_STANDARD_INCLUDING_64_BIT) COPY_PHASE_STRIP - YES + NO DSTROOT /tmp/xcodeproj.dst - GCC_C_LANGUAGE_STANDARD - gnu99 + GCC_DYNAMIC_NO_PIC + NO + GCC_OPTIMIZATION_LEVEL + 0 GCC_PRECOMPILE_PREFIX_HEADER YES - GCC_PREFIX_HEADER - Pods-AFNetworking-prefix.pch - GCC_VERSION - com.apple.compilers.llvm.clang.1_0 + GCC_PREPROCESSOR_DEFINITIONS + + DEBUG=1 + $(inherited) + + GCC_SYMBOLS_PRIVATE_EXTERN + NO INSTALL_PATH $(BUILT_PRODUCTS_DIR) IPHONEOS_DEPLOYMENT_TARGET 6.0 - 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 @@ -706,177 +642,83 @@ iphoneos SKIP_INSTALL YES - VALIDATE_PRODUCT - YES - - isa - XCBuildConfiguration - name - Release - - 75F8D108CCAC46C8B9525E88 - - fileRef - A2C8A7C8FD9947F28CB5D942 - isa - PBXBuildFile - - 7643E5EF1A9547E7876DE986 - - fileRef - 2043689D5F07489597A49188 - isa - PBXBuildFile - - 7A30533345E2474FB6048F84 - - buildSettings - - IPHONEOS_DEPLOYMENT_TARGET - 6.0 - ONLY_ACTIVE_ARCH - YES - STRIP_INSTALLED_PRODUCT - NO isa XCBuildConfiguration name Debug - 7EA9C38B88DC4FA69AA264D3 + 52AB32E5CE2BC40F0C02AEB2 + + fileRef + 001593D1863E0105FE381DA6 + isa + PBXBuildFile + + 546E0C394AC5A00140D5BF14 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - UIImageView+AFNetworking.m + UIActivityIndicatorView+AFNetworking.h path - AFNetworking/UIImageView+AFNetworking.m + UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h sourceTree <group> - 928DF5ECB0344C82B94E8F18 + 54F2167647AE5DDA578E3CBC - explicitFileType - archive.ar - includeInIndex - 0 + buildConfigurationList + 9F3ADDEAF1D9C048B8514E08 + buildPhases + + D0411558D7CE9E14E33D90D9 + 1A47A9A2FAB3161998BFED9B + + buildRules + + dependencies + + C65FF230847E2F906B6FD4D4 + isa - PBXFileReference - path - libPods-AFNetworking.a - sourceTree - BUILT_PRODUCTS_DIR + PBXNativeTarget + name + Pods + productName + Pods + productReference + F6B63A9BF2266A0706A2A93D + productType + com.apple.product-type.library.static - 9385A49D20E44B1A9EC05A78 + 555CEDEF25FB3D88A3C130AE fileRef - 242B94135C604951BF12B255 + 4563680A60492C959DC95AB2 isa PBXBuildFile - settings - - COMPILER_FLAGS - -fobjc-arc -DOS_OBJECT_USE_OBJC=0 - - 9450661AED894042BEE72962 + 561AFFA5800D3676A64451CB includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc - path - Pods-dummy.m - sourceTree - <group> - - 95229B59E0E7458CA7C4F379 - - children - - FC62B60F07924F33B461AFCC - A2C8A7C8FD9947F28CB5D942 - 4ADFF8D90E254C66B692F502 - CEBCBBA20E674D4DB370177B - 258C9862D1A340E494399953 - 5E9724BBAAB74732BA412FFA - CF4689A092504584B06A11F7 - 1E15FB759FAE49F89C5CB65D - F764EA36EAEF4A908B23E10A - C74FC79D37F443A7A9A6F8EC - 5FB77F13243D47D8B82A47A7 - 1A32B73F523240569574D287 - D7AB04599CF5422B80CC2E77 - 39B010F2F8A5405DB8788FA9 - 242B94135C604951BF12B255 - 4BF878DF59B546788943B1C4 - 08AD1E7714834BA097149FFC - FE5CE872AE5949968454923E - 7EA9C38B88DC4FA69AA264D3 - - isa - PBXGroup + sourcecode.c.h name - Source Files + AFURLResponseSerialization.h + path + AFNetworking/AFURLResponseSerialization.h sourceTree <group> - 9570A7F385264CD5BBFCB900 - - buildActionMask - 2147483647 - files - - FE725C0AF8A24B2FBE3B510E - 75F8D108CCAC46C8B9525E88 - F72BC8DDF894435AB6A2594D - AADF91BF4793404E94659CE8 - B872082AE7E8478693E0925F - E9273D887ADF4EFDAB3887D8 - 2E34FB5F1E3748149252B6AD - E53598F917C7429A8ABEA931 - 6EBE2C14A7FC4379A222F0B0 - 5AE42FF5353741FF83A9C702 - - isa - PBXHeadersBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - 9669D77043994416864E2267 - - fileRef - 1A32B73F523240569574D287 - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -fobjc-arc -DOS_OBJECT_USE_OBJC=0 - - - 9C1681924E934108AE569B3B - - buildConfigurations - - 7A30533345E2474FB6048F84 - FDD7D8C57FA6489A895DCBF6 - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release - isa - XCConfigurationList - - A2C8A7C8FD9947F28CB5D942 + 587B32E096C1C0E7C8FB0E03 includeInIndex 1 @@ -891,29 +733,22 @@ sourceTree <group> - A2D09F3EF81D4BECB3B8C3AA + 597DB8AEC44062CE9C5A3D1D fileRef - 9450661AED894042BEE72962 + FCEECDA077C16FBE854E3ECE isa PBXBuildFile - AADF91BF4793404E94659CE8 - - fileRef - CEBCBBA20E674D4DB370177B - isa - PBXBuildFile - - ADDE8DBB9F9E475B90FBC797 + 5A5132A30033F73A0B09AB23 buildConfigurationList - 2F2767F66C604065872045DE + 13D74AB918AC6F272AF91942 buildPhases - D83F3CF6DA96433B972AA62D - 1C472D5A8E8A4F08954C4AA2 - 9570A7F385264CD5BBFCB900 + 3DCD2E5A6F3EA01A8DDBBBB6 + BD53533539191961C294D3E5 + A5171BAFEB59CA3426093F69 buildRules @@ -926,31 +761,28 @@ productName Pods-AFNetworking productReference - 928DF5ECB0344C82B94E8F18 + 5D65F12187AF4E047026C249 productType com.apple.product-type.library.static - B872082AE7E8478693E0925F - - fileRef - 258C9862D1A340E494399953 - isa - PBXBuildFile - - C22DD5E647C44918AAD0EC67 + 5BA2DEDEF56DF393B2A9AE6A children - F603B69EEFF14170BE6FA566 + 19A158837425391AD65B266F + DBCA8B532E8F95ECFAA00746 + F430418C3235E71C26F7DDC4 + B56614BC4637A8503CA9C2EC + 9D30B1B26F8691C01062648E isa PBXGroup name - Pods + iOS sourceTree <group> - C74FC79D37F443A7A9A6F8EC + 5BAEB3AABB09CC8C5C319381 includeInIndex 1 @@ -959,98 +791,64 @@ lastKnownFileType sourcecode.c.h name - UIImageView+AFNetworking.h + AFNetworkActivityIndicatorManager.h path - AFNetworking/UIImageView+AFNetworking.h + UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h sourceTree <group> - C9B8CD7C05314612A2434792 + 5D65F12187AF4E047026C249 - containerPortal - 2D0AD3E49325490CBCD844E7 + explicitFileType + archive.ar + includeInIndex + 0 isa - PBXContainerItemProxy - proxyType - 1 - remoteGlobalIDString - ADDE8DBB9F9E475B90FBC797 - remoteInfo - Pods-AFNetworking + PBXFileReference + path + libPods-AFNetworking.a + sourceTree + BUILT_PRODUCTS_DIR - CAC922C847194DC5A4F3E024 + 5F2A89DEFAEC2A0C7A0BE3F5 fileRef - 7EA9C38B88DC4FA69AA264D3 + 19A158837425391AD65B266F isa PBXBuildFile - settings - - COMPILER_FLAGS - -fobjc-arc -DOS_OBJECT_USE_OBJC=0 - - CAF06F18CAB044D582844864 + 620D9EC5074C504F00624188 - buildActionMask - 2147483647 - files + children - A2D09F3EF81D4BECB3B8C3AA + 36B794D1AA934024745F8628 + 3AB657A3C3EAB299BA820604 isa - PBXSourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - CEBCBBA20E674D4DB370177B - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h + PBXGroup name - AFJSONRequestOperation.h - path - AFNetworking/AFJSONRequestOperation.h + Reachability sourceTree <group> - CF4689A092504584B06A11F7 - - includeInIndex - 1 - isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - AFPropertyListRequestOperation.h - path - AFNetworking/AFPropertyListRequestOperation.h - sourceTree - <group> - - D191D66EE1F84CAA93702591 + 6484AA189FD04056985609E1 baseConfigurationReference - 4575990AE6344B769BEE7053 + 85CB5F6EBAC5DB5CA10E2268 buildSettings ALWAYS_SEARCH_USER_PATHS NO + ARCHS + $(ARCHS_STANDARD_INCLUDING_64_BIT) COPY_PHASE_STRIP YES DSTROOT /tmp/xcodeproj.dst - GCC_C_LANGUAGE_STANDARD - gnu99 GCC_PRECOMPILE_PREFIX_HEADER YES - GCC_VERSION - com.apple.compilers.llvm.clang.1_0 + GCC_PREFIX_HEADER + Target Support Files/Pods-AFNetworking/Pods-AFNetworking-prefix.pch INSTALL_PATH $(BUILT_PRODUCTS_DIR) IPHONEOS_DEPLOYMENT_TARGET @@ -1067,6 +865,8 @@ OTHER_LDFLAGS + OTHER_LIBTOOLFLAGS + PRODUCT_NAME $(TARGET_NAME) PUBLIC_HEADERS_FOLDER_PATH @@ -1083,114 +883,158 @@ name Release - D1ED042E2078427081658CEA - - fileRef - FE5CE872AE5949968454923E - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -fobjc-arc -DOS_OBJECT_USE_OBJC=0 - - - D66C6AC4368F47599EC35DE2 - - fileRef - 08AD1E7714834BA097149FFC - isa - PBXBuildFile - settings - - COMPILER_FLAGS - -fobjc-arc -DOS_OBJECT_USE_OBJC=0 - - - D69A248065874CCE8D755FFC - - isa - PBXFileReference - lastKnownFileType - wrapper.framework - name - SystemConfiguration.framework - path - System/Library/Frameworks/SystemConfiguration.framework - sourceTree - SDKROOT - - D7AB04599CF5422B80CC2E77 + 6B00DC972ACC0A2A57AAF075 includeInIndex 1 isa PBXFileReference lastKnownFileType - sourcecode.c.objc + sourcecode.c.h name - AFImageRequestOperation.m + AFURLSessionManager.h path - AFNetworking/AFImageRequestOperation.m + AFNetworking/AFURLSessionManager.h sourceTree <group> - D83638CD2B874305B4E2B366 + 6B177738C4E10117181992D5 - buildConfigurations - - D9038D6BC9504E39A8279073 - D191D66EE1F84CAA93702591 - - defaultConfigurationIsVisible - 0 - defaultConfigurationName - Release + fileRef + AFFD5FEC414986F8407EEB24 isa - XCConfigurationList + PBXBuildFile - D83F3CF6DA96433B972AA62D - - buildActionMask - 2147483647 - files - - DB224BFAF42D46A692A571E5 - 9669D77043994416864E2267 - 5125B97E5E154A638B6A2552 - 553E8882F7CB4F5FAE46BCBE - 9385A49D20E44B1A9EC05A78 - 117F23A7BDB2475BB504D0F5 - D66C6AC4368F47599EC35DE2 - D1ED042E2078427081658CEA - 4C2A6ED1A9944D5DA6403F09 - CAC922C847194DC5A4F3E024 - - isa - PBXSourcesBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - D9038D6BC9504E39A8279073 + 700EFB225E7349D410E2210E baseConfigurationReference - 4575990AE6344B769BEE7053 + 075F316292F4259B17F220C9 buildSettings ALWAYS_SEARCH_USER_PATHS NO + ARCHS + $(ARCHS_STANDARD_INCLUDING_64_BIT) + COPY_PHASE_STRIP + YES + DSTROOT + /tmp/xcodeproj.dst + GCC_PRECOMPILE_PREFIX_HEADER + YES + INSTALL_PATH + $(BUILT_PRODUCTS_DIR) + IPHONEOS_DEPLOYMENT_TARGET + 6.0 + 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 + + 7199D83E8BAAD610164A0FF3 + + children + + 743E079C03FBBAF7D6C143CB + 4563680A60492C959DC95AB2 + + isa + PBXGroup + name + Security + sourceTree + <group> + + 743E079C03FBBAF7D6C143CB + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + AFSecurityPolicy.h + path + AFNetworking/AFSecurityPolicy.h + sourceTree + <group> + + 7549538CF18E4F55B7D08A1B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + AFHTTPRequestOperationManager.h + path + AFNetworking/AFHTTPRequestOperationManager.h + sourceTree + <group> + + 7A552C0985D42458ED62B2CF + + fileRef + 2A1B2460DCF6AE16EA5E0567 + isa + PBXBuildFile + + 7A5606B547A25BD9C97814F0 + + fileRef + DBCA8B532E8F95ECFAA00746 + isa + PBXBuildFile + + 7C795AF2CF87F4DDE452AC13 + + baseConfigurationReference + 85CB5F6EBAC5DB5CA10E2268 + buildSettings + + ALWAYS_SEARCH_USER_PATHS + NO + ARCHS + $(ARCHS_STANDARD_INCLUDING_64_BIT) COPY_PHASE_STRIP NO DSTROOT /tmp/xcodeproj.dst - GCC_C_LANGUAGE_STANDARD - gnu99 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 @@ -1198,14 +1042,14 @@ GCC_SYMBOLS_PRIVATE_EXTERN NO - GCC_VERSION - com.apple.compilers.llvm.clang.1_0 INSTALL_PATH $(BUILT_PRODUCTS_DIR) IPHONEOS_DEPLOYMENT_TARGET 6.0 OTHER_LDFLAGS + OTHER_LIBTOOLFLAGS + PRODUCT_NAME $(TARGET_NAME) PUBLIC_HEADERS_FOLDER_PATH @@ -1220,35 +1064,29 @@ name Debug - DB224BFAF42D46A692A571E5 + 7D43D967BE7E47480ADE5CA7 fileRef - 5FB77F13243D47D8B82A47A7 + 7549538CF18E4F55B7D08A1B isa PBXBuildFile - settings - - COMPILER_FLAGS - -fobjc-arc -DOS_OBJECT_USE_OBJC=0 - - DC92641749314F3CB6204D69 + 803FE48E0516C1BEF0EBF097 - children - - E2E82489B82D4CC180AA87F7 - 1F5E1B3B5C2C40B8B5C0D3D1 - 13106AAC07724E9D97A8B49F - E2A06AE6E23349F7834ED6E7 - + includeInIndex + 1 isa - PBXGroup + PBXFileReference + lastKnownFileType + sourcecode.c.h name - Support Files + UIButton+AFNetworking.h + path + UIKit+AFNetworking/UIButton+AFNetworking.h sourceTree - SOURCE_ROOT + <group> - E2A06AE6E23349F7834ED6E7 + 85CB5F6EBAC5DB5CA10E2268 includeInIndex 1 @@ -1261,7 +1099,325 @@ sourceTree <group> - E2E82489B82D4CC180AA87F7 + 86FCEB15541C4480164F8E60 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + AFURLSessionManager.m + path + AFNetworking/AFURLSessionManager.m + sourceTree + <group> + + 87050FFCE87B7D24428660BC + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + UIAlertView+AFNetworking.m + path + UIKit+AFNetworking/UIAlertView+AFNetworking.m + sourceTree + <group> + + 87CB05D1BDFCE1466F8BA0DA + + fileRef + F430418C3235E71C26F7DDC4 + isa + PBXBuildFile + + 88468B42DB06FB1AC0C7D037 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UIProgressView+AFNetworking.h + path + UIKit+AFNetworking/UIProgressView+AFNetworking.h + sourceTree + <group> + + 8AC9DE3C6E1DECF54044F8D1 + + fileRef + 01AF2EE53149403F58618DE1 + isa + PBXBuildFile + + 8D6554ADAF276042BC256636 + + fileRef + 1FDC8036F884F9E346D55F1D + isa + PBXBuildFile + + 8DC8FC911A541F91F4BCFF11 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + Pods-AFNetworking-prefix.pch + sourceTree + <group> + + 8F9993D7F1F2E05917096A1F + + fileRef + 803FE48E0516C1BEF0EBF097 + isa + PBXBuildFile + + 92F614A973710C3B5F7310B1 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + path + Pods-dummy.m + sourceTree + <group> + + 96181AA68B4D4D1DD6F38416 + + fileRef + B56614BC4637A8503CA9C2EC + isa + PBXBuildFile + + 97336B1D0E4A079BD538673F + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + path + Pods-environment.h + sourceTree + <group> + + 977C4810AEA2B103C05E9C48 + + fileRef + 26A2515EDDEFD7E10CC6A3FB + isa + PBXBuildFile + + 99CCF682993A678D8D92A817 + + fileRef + DBCA8B532E8F95ECFAA00746 + isa + PBXBuildFile + + 9A1847AAAD1F442C59A75FA9 + + children + + BB76E52521A5C65E7D356046 + 85CB5F6EBAC5DB5CA10E2268 + B47838F9C36E86315EC2E9DB + 8DC8FC911A541F91F4BCFF11 + + isa + PBXGroup + name + Support Files + path + ../Target Support Files/Pods-AFNetworking + sourceTree + <group> + + 9AAADECD2CA723C461FE7792 + + children + + DD6E1CB051EC03EBC5916670 + + isa + PBXGroup + name + Pods + sourceTree + <group> + + 9C93A585DEB95A2D35C8A321 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + UIWebView+AFNetworking.m + path + UIKit+AFNetworking/UIWebView+AFNetworking.m + sourceTree + <group> + + 9CC995AF27D24A9E05E05516 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UIAlertView+AFNetworking.h + path + UIKit+AFNetworking/UIAlertView+AFNetworking.h + sourceTree + <group> + + 9D30B1B26F8691C01062648E + + 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 + + 9F3ADDEAF1D9C048B8514E08 + + buildConfigurations + + 4DEEDED6AE7C4F28D1E060E6 + 700EFB225E7349D410E2210E + + defaultConfigurationIsVisible + 0 + defaultConfigurationName + Release + isa + XCConfigurationList + + A0D056DE4FBEEB38EFF7C860 + + fileRef + 86FCEB15541C4480164F8E60 + isa + PBXBuildFile + + A2A6B8AE89A16B314A2A8735 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + AFHTTPSessionManager.h + path + AFNetworking/AFHTTPSessionManager.h + sourceTree + <group> + + A5171BAFEB59CA3426093F69 + + buildActionMask + 2147483647 + files + + 2333D6EE84EBBD9D8A292577 + 7D43D967BE7E47480ADE5CA7 + 3B0DCE231447C284A8C8FBFA + 0B6DF4B1BEB35611E09154B4 + BDB38BD3662A389233C848ED + B7359E1B1F818BED1B62F7EC + 05634B081C1D7A9017A542B1 + E71C567F34FD6EB46429A27D + 8D6554ADAF276042BC256636 + 4748A2F055FE0C380148E073 + BE5A79C61BC9260BCB7F84FE + E0B66AE945B81AEFE75E9717 + C87A2AA028E1E60C53885382 + 8F9993D7F1F2E05917096A1F + 52AB32E5CE2BC40F0C02AEB2 + B46BABCE7A294A64E405BBAC + 0FF1B58C61E227943947FE95 + 0FE769CA77F05940D7784E49 + E7D051477A3C0B9751071B5B + + isa + PBXHeadersBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + A761B3C2433ABBA2C036E85E + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + AFHTTPSessionManager.m + path + AFNetworking/AFHTTPSessionManager.m + sourceTree + <group> + + A9710234B153BAF6CF2C26C6 + + fileRef + 87050FFCE87B7D24428660BC + isa + PBXBuildFile + + AFFD5FEC414986F8407EEB24 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + AFHTTPRequestOperation.m + path + AFNetworking/AFHTTPRequestOperation.m + sourceTree + <group> + + B46BABCE7A294A64E405BBAC + + fileRef + 483C8007ED4BA7D8070B2EA0 + isa + PBXBuildFile + + B47838F9C36E86315EC2E9DB includeInIndex 1 @@ -1274,123 +1430,42 @@ sourceTree <group> - E53598F917C7429A8ABEA931 + B56614BC4637A8503CA9C2EC - fileRef - 1E15FB759FAE49F89C5CB65D - isa - PBXBuildFile - - E9273D887ADF4EFDAB3887D8 - - fileRef - 5E9724BBAAB74732BA412FFA - isa - PBXBuildFile - - EB343EA5DF6345D7867FC8B7 - - buildActionMask - 2147483647 - files - - 184B9675055042D798F70DD4 - 363F02FE962C4D5084685024 - - isa - PBXFrameworksBuildPhase - runOnlyForDeploymentPostprocessing - 0 - - F603B69EEFF14170BE6FA566 - - children - - 36675631701345F4AEAB7DBF - 95229B59E0E7458CA7C4F379 - DC92641749314F3CB6204D69 - - isa - PBXGroup - name - AFNetworking - path - AFNetworking - sourceTree - <group> - - F71E6F37CA9A4629AAC2CDCC - - fileRef - D69A248065874CCE8D755FFC - isa - PBXBuildFile - - F72BC8DDF894435AB6A2594D - - fileRef - 4ADFF8D90E254C66B692F502 - isa - PBXBuildFile - - F764EA36EAEF4A908B23E10A - - includeInIndex - 1 isa PBXFileReference lastKnownFileType - sourcecode.c.h + wrapper.framework name - AFXMLRequestOperation.h + Security.framework path - AFNetworking/AFXMLRequestOperation.h + Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/Security.framework sourceTree - <group> + DEVELOPER_DIR - F9B38E093C8243CBB847A0CE + B72329AAB5773501C9122EA6 children - 520A1437FB9D4C82B7F0BFE8 + 271CCA9467C085468BF546EE + 270546A695186DDFC50C7969 + 9AAADECD2CA723C461FE7792 + F188E2FBB5DCFF137B19D1A8 + C66678F5BF64199BB1389555 isa PBXGroup - name - Targets Support Files sourceTree <group> - FC62B60F07924F33B461AFCC + B7359E1B1F818BED1B62F7EC - includeInIndex - 1 + fileRef + 471E3040362FFCFDB8FA809C isa - PBXFileReference - lastKnownFileType - sourcecode.c.h - name - AFHTTPClient.h - path - AFNetworking/AFHTTPClient.h - sourceTree - <group> + PBXBuildFile - FDD7D8C57FA6489A895DCBF6 - - buildSettings - - IPHONEOS_DEPLOYMENT_TARGET - 6.0 - STRIP_INSTALLED_PRODUCT - NO - - isa - XCBuildConfiguration - name - Release - - FE5CE872AE5949968454923E + B9BDD72518C9E49FF9D29B94 includeInIndex 1 @@ -1399,21 +1474,485 @@ lastKnownFileType sourcecode.c.objc name - AFXMLRequestOperation.m + UIButton+AFNetworking.m path - AFNetworking/AFXMLRequestOperation.m + UIKit+AFNetworking/UIButton+AFNetworking.m sourceTree <group> - FE725C0AF8A24B2FBE3B510E + BB76E52521A5C65E7D356046 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + Pods-AFNetworking.xcconfig + sourceTree + <group> + + BD53533539191961C294D3E5 + + buildActionMask + 2147483647 + files + + 5F2A89DEFAEC2A0C7A0BE3F5 + 7A5606B547A25BD9C97814F0 + 87CB05D1BDFCE1466F8BA0DA + 96181AA68B4D4D1DD6F38416 + D576EDD0CACA67CCE2369CAC + + isa + PBXFrameworksBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + BDB38BD3662A389233C848ED fileRef - FC62B60F07924F33B461AFCC + 36B794D1AA934024745F8628 isa PBXBuildFile + BE5A79C61BC9260BCB7F84FE + + fileRef + 6B00DC972ACC0A2A57AAF075 + isa + PBXBuildFile + + BF3775CDB914A808D4C19780 + + fileRef + 92F614A973710C3B5F7310B1 + isa + PBXBuildFile + + BF9D11024D4FDD4DC0615F21 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + AFURLResponseSerialization.m + path + AFNetworking/AFURLResponseSerialization.m + sourceTree + <group> + + C65FF230847E2F906B6FD4D4 + + isa + PBXTargetDependency + name + Pods-AFNetworking + target + 5A5132A30033F73A0B09AB23 + targetProxy + D662E3AEEE1D1E9897A37CE1 + + C66678F5BF64199BB1389555 + + children + + 30BBB047F567ABA49B6F8A73 + + isa + PBXGroup + name + Targets Support Files + sourceTree + <group> + + C87A2AA028E1E60C53885382 + + fileRef + 9CC995AF27D24A9E05E05516 + isa + PBXBuildFile + + CA37B3F970BA15FC8B9F657D + + fileRef + B9BDD72518C9E49FF9D29B94 + isa + PBXBuildFile + + CC149A22FF636D168DCEDF85 + + 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 + 6.0 + STRIP_INSTALLED_PRODUCT + NO + VALIDATE_PRODUCT + YES + + isa + XCBuildConfiguration + name + Release + + D0411558D7CE9E14E33D90D9 + + buildActionMask + 2147483647 + files + + BF3775CDB914A808D4C19780 + + isa + PBXSourcesBuildPhase + runOnlyForDeploymentPostprocessing + 0 + + D37F671DE63B26CF4CA89199 + + fileRef + 9C93A585DEB95A2D35C8A321 + isa + PBXBuildFile + + D576EDD0CACA67CCE2369CAC + + fileRef + 9D30B1B26F8691C01062648E + isa + PBXBuildFile + + D662E3AEEE1D1E9897A37CE1 + + containerPortal + 486DD3750BB8E2DC8332D100 + isa + PBXContainerItemProxy + proxyType + 1 + remoteGlobalIDString + 5A5132A30033F73A0B09AB23 + remoteInfo + Pods-AFNetworking + + DBCA8B532E8F95ECFAA00746 + + 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 + + DD6E1CB051EC03EBC5916670 + + children + + 471E3040362FFCFDB8FA809C + 39C147BE7EF48053F47D1D7A + 4581189D199A1CF4F20BC169 + 620D9EC5074C504F00624188 + 7199D83E8BAAD610164A0FF3 + EE2FD5B05F44AD92D24CBE27 + 9A1847AAAD1F442C59A75FA9 + 27F24B1BC46541BFB2885FB8 + + isa + PBXGroup + name + AFNetworking + path + AFNetworking + sourceTree + <group> + + DE3009FF17C06C20A7026F51 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + text.xcconfig + path + Pods.debug.xcconfig + sourceTree + <group> + + DF08625FA1731E8A4CCE47B4 + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.h + name + UIWebView+AFNetworking.h + path + UIKit+AFNetworking/UIWebView+AFNetworking.h + sourceTree + <group> + + E01DDAC8A463536BAB9B98B4 + + 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 + 6.0 + ONLY_ACTIVE_ARCH + YES + STRIP_INSTALLED_PRODUCT + NO + + isa + XCBuildConfiguration + name + Debug + + E0B66AE945B81AEFE75E9717 + + fileRef + 546E0C394AC5A00140D5BF14 + isa + PBXBuildFile + + E71C567F34FD6EB46429A27D + + fileRef + 39F8A3FF746D7E377515E657 + isa + PBXBuildFile + + E7D051477A3C0B9751071B5B + + fileRef + DF08625FA1731E8A4CCE47B4 + isa + PBXBuildFile + + EA3F19FE7BF4818CE4CBD62F + + fileRef + 0A0ADDDD43F5AB6D681E772C + isa + PBXBuildFile + + EE2FD5B05F44AD92D24CBE27 + + children + + 1FDC8036F884F9E346D55F1D + 4903498DD92A3765606E0F79 + 561AFFA5800D3676A64451CB + BF9D11024D4FDD4DC0615F21 + + isa + PBXGroup + name + Serialization + sourceTree + <group> + + F188E2FBB5DCFF137B19D1A8 + + children + + F6B63A9BF2266A0706A2A93D + 5D65F12187AF4E047026C249 + + isa + PBXGroup + name + Products + sourceTree + <group> + + F385D646BF8D80391442339D + + fileRef + F6341FA343A3E01C6434232B + isa + PBXBuildFile + + F430418C3235E71C26F7DDC4 + + 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 + + F607B6718E604D1BE6172F13 + + fileRef + 3AB657A3C3EAB299BA820604 + isa + PBXBuildFile + + F6341FA343A3E01C6434232B + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + AFNetworkActivityIndicatorManager.m + path + UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m + sourceTree + <group> + + F6B63A9BF2266A0706A2A93D + + explicitFileType + archive.ar + includeInIndex + 0 + isa + PBXFileReference + path + libPods.a + sourceTree + BUILT_PRODUCTS_DIR + + F776CC256B7C0BE4910B72D8 + + fileRef + A761B3C2433ABBA2C036E85E + isa + PBXBuildFile + + FCEECDA077C16FBE854E3ECE + + includeInIndex + 1 + isa + PBXFileReference + lastKnownFileType + sourcecode.c.objc + name + UIImageView+AFNetworking.m + path + UIKit+AFNetworking/UIImageView+AFNetworking.m + sourceTree + <group> + rootObject - 2D0AD3E49325490CBCD844E7 + 486DD3750BB8E2DC8332D100 diff --git a/samples/client/petstore/objc/Pods/Pods.xcodeproj/xcuserdata/tony.xcuserdatad/xcschemes/Pods-AFNetworking.xcscheme b/samples/client/petstore/objc/Pods/Pods.xcodeproj/xcuserdata/tony.xcuserdatad/xcschemes/Pods-AFNetworking.xcscheme index 04cc49a93cc..8fa2d189dbc 100644 --- a/samples/client/petstore/objc/Pods/Pods.xcodeproj/xcuserdata/tony.xcuserdatad/xcschemes/Pods-AFNetworking.xcscheme +++ b/samples/client/petstore/objc/Pods/Pods.xcodeproj/xcuserdata/tony.xcuserdatad/xcschemes/Pods-AFNetworking.xcscheme @@ -1,6 +1,6 @@ diff --git a/samples/client/petstore/objc/Pods/Pods.xcodeproj/xcuserdata/tony.xcuserdatad/xcschemes/Pods.xcscheme b/samples/client/petstore/objc/Pods/Pods.xcodeproj/xcuserdata/tony.xcuserdatad/xcschemes/Pods.xcscheme index 802886807fb..23cbc159024 100644 --- a/samples/client/petstore/objc/Pods/Pods.xcodeproj/xcuserdata/tony.xcuserdatad/xcschemes/Pods.xcscheme +++ b/samples/client/petstore/objc/Pods/Pods.xcodeproj/xcuserdata/tony.xcuserdatad/xcschemes/Pods.xcscheme @@ -1,6 +1,6 @@ diff --git a/samples/client/petstore/objc/Pods/Pods.xcodeproj/xcuserdata/tony.xcuserdatad/xcschemes/xcschememanagement.plist b/samples/client/petstore/objc/Pods/Pods.xcodeproj/xcuserdata/tony.xcuserdatad/xcschemes/xcschememanagement.plist index 6b9c43c11f0..4c6b6b5c788 100644 --- a/samples/client/petstore/objc/Pods/Pods.xcodeproj/xcuserdata/tony.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/samples/client/petstore/objc/Pods/Pods.xcodeproj/xcuserdata/tony.xcuserdatad/xcschemes/xcschememanagement.plist @@ -6,43 +6,23 @@ Pods-AFNetworking.xcscheme - orderHint - 3 + isShown + Pods.xcscheme - orderHint - 2 + isShown + SuppressBuildableAutocreation - 0A30FD7007D548689A8CFA96 + 54F2167647AE5DDA578E3CBC primary - 7934141CDD144029B68BBCCA - - primary - - - 9DF4A09206094F4EB8B7F841 - - primary - - - ADDE8DBB9F9E475B90FBC797 - - primary - - - B044D459E2CB44439DF863F1 - - primary - - - FEFF1D6E156342BEA878F340 + 5A5132A30033F73A0B09AB23 primary diff --git a/samples/client/petstore/objc/client/SWGApiClient.m b/samples/client/petstore/objc/client/SWGApiClient.m index 570a4c83088..ff454970cf0 100644 --- a/samples/client/petstore/objc/client/SWGApiClient.m +++ b/samples/client/petstore/objc/client/SWGApiClient.m @@ -12,7 +12,7 @@ static bool cacheEnabled = false; static AFNetworkReachabilityStatus reachabilityStatus = AFNetworkReachabilityStatusNotReachable; static NSOperationQueue* sharedQueue; static void (^reachabilityChangeBlock)(int); -static bool loggingEnabled = false; +static bool loggingEnabled = true; +(void)setLoggingEnabled:(bool) state { loggingEnabled = state; @@ -26,8 +26,8 @@ static bool loggingEnabled = false; cacheEnabled = enabled; } -+(void)configureCacheWithMemoryAndDiskCapacity:(unsigned long) memorySize - diskSize:(unsigned long) diskSize { ++(void)configureCacheWithMemoryAndDiskCapacity: (unsigned long) memorySize + diskSize: (unsigned long) diskSize { NSAssert(memorySize > 0, @"invalid in-memory cache size"); NSAssert(diskSize >= 0, @"invalid disk cache size"); @@ -234,32 +234,51 @@ static bool loggingEnabled = false; NSLog(@"request: %@ response: %@ ", [self descriptionForRequest:request], data ); } - --(NSNumber*) dictionary:(NSString*) path - method:(NSString*) method - queryParams:(NSDictionary*) queryParams - body:(id) body - headerParams:(NSDictionary*) headerParams - requestContentType:(NSString*) requestContentType - responseContentType:(NSString*) responseContentType - completionBlock:(void (^)(NSDictionary*, NSError *))completionBlock { +-(NSNumber*) dictionary: (NSString*) path + method: (NSString*) method + queryParams: (NSDictionary*) queryParams + body: (id) body + headerParams: (NSDictionary*) headerParams + requestContentType: (NSString*) requestContentType + responseContentType: (NSString*) responseContentType + completionBlock: (void (^)(NSDictionary*, NSError *))completionBlock { NSMutableURLRequest * request = nil; - - if ([body isKindOfClass:[SWGFile class]]){ - SWGFile * file = (SWGFile*) body; + if (body != nil && [body isKindOfClass:[NSArray class]]){ + SWGFile * file; + NSMutableDictionary * params = [[NSMutableDictionary alloc] init]; + for(id obj in body) { + if([obj isKindOfClass:[SWGFile class]]) { + file = (SWGFile*) obj; + requestContentType = @"multipart/form-data"; + } + else if([obj isKindOfClass:[NSDictionary class]]) { + for(NSString * key in obj) { + params[key] = obj[key]; + } + } + } NSString * urlString = [[NSURL URLWithString:path relativeToURL:self.baseURL] absoluteString]; - request = [self.requestSerializer multipartFormRequestWithMethod:@"POST" - URLString:urlString - parameters:nil - constructingBodyWithBlock:^(id formData) { - [formData appendPartWithFileData:[file data] - name:@"image" - fileName:[file name] - mimeType:[file mimeType]]; - } - error:nil]; + if(file != nil) { + request = [self.requestSerializer multipartFormRequestWithMethod: @"POST" + URLString: urlString + parameters: nil + constructingBodyWithBlock: ^(id formData) { + + for(NSString * key in params) { + NSData* data = [params[key] dataUsingEncoding:NSUTF8StringEncoding]; + [formData appendPartWithFormData: data name: key]; + } + + [formData appendPartWithFileData: [file data] + name: [file paramName] + fileName: [file name] + mimeType: [file mimeType]]; + + } + error:nil]; + } } else { NSString * pathWithQueryParams = [self pathWithQueryParamsToString:path queryParams:queryParams]; @@ -286,9 +305,11 @@ static bool loggingEnabled = false; [request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData]; } + AFJSONRequestSerializer *requestSerializer = [AFJSONRequestSerializer serializer]; + if(body != nil) { if([body isKindOfClass:[NSDictionary class]] || [body isKindOfClass:[NSArray class]]){ - [request setValue:requestContentType forHTTPHeaderField:@"Content-Type"]; + [requestSerializer setValue:requestContentType forHTTPHeaderField:@"Content-Type"]; } else if ([body isKindOfClass:[SWGFile class]]) {} else { @@ -300,7 +321,7 @@ static bool loggingEnabled = false; [request setValue:[headerParams valueForKey:key] forHTTPHeaderField:key]; } } - [request setValue:[headerParams valueForKey:responseContentType] forHTTPHeaderField:@"Accept"]; + [requestSerializer setValue:responseContentType forHTTPHeaderField:@"Accept"]; // Always disable cookies! [request setHTTPShouldHandleCookies:NO]; @@ -339,39 +360,59 @@ static bool loggingEnabled = false; return requestId; } --(NSNumber*) stringWithCompletionBlock:(NSString*) path - method:(NSString*) method - queryParams:(NSDictionary*) queryParams - body:(id) body - headerParams:(NSDictionary*) headerParams - requestContentType:(NSString*) requestContentType - responseContentType:(NSString*) responseContentType - completionBlock:(void (^)(NSString*, NSError *))completionBlock { +-(NSNumber*) stringWithCompletionBlock: (NSString*) path + method: (NSString*) method + queryParams: (NSDictionary*) queryParams + body: (id) body + headerParams: (NSDictionary*) headerParams + requestContentType: (NSString*) requestContentType + responseContentType: (NSString*) responseContentType + completionBlock: (void (^)(NSString*, NSError *))completionBlock { NSMutableURLRequest * request = nil; - - if ([body isKindOfClass:[SWGFile class]]){ - SWGFile * file = (SWGFile*) body; + if (body != nil && [body isKindOfClass:[NSArray class]]){ + SWGFile * file; + NSMutableDictionary * params = [[NSMutableDictionary alloc] init]; + for(id obj in body) { + if([obj isKindOfClass:[SWGFile class]]) { + file = (SWGFile*) obj; + requestContentType = @"multipart/form-data"; + } + else if([obj isKindOfClass:[NSDictionary class]]) { + for(NSString * key in obj) { + params[key] = obj[key]; + } + } + } NSString * urlString = [[NSURL URLWithString:path relativeToURL:self.baseURL] absoluteString]; - request = [self.requestSerializer multipartFormRequestWithMethod:@"POST" - URLString:urlString - parameters:nil - constructingBodyWithBlock:^(id formData) { - [formData appendPartWithFileData:[file data] - name:@"image" - fileName:[file name] - mimeType:[file mimeType]]; - } - error:nil]; + if(file != nil) { + request = [self.requestSerializer multipartFormRequestWithMethod: @"POST" + URLString: urlString + parameters: nil + constructingBodyWithBlock: ^(id formData) { + + for(NSString * key in params) { + NSData* data = [params[key] dataUsingEncoding:NSUTF8StringEncoding]; + [formData appendPartWithFormData: data name: key]; + } + + [formData appendPartWithFileData: [file data] + name: [file paramName] + fileName: [file name] + mimeType: [file mimeType]]; + + } + error:nil]; + } } else { NSString * pathWithQueryParams = [self pathWithQueryParamsToString:path queryParams:queryParams]; NSString * urlString = [[NSURL URLWithString:pathWithQueryParams relativeToURL:self.baseURL] absoluteString]; - request = [self.requestSerializer requestWithMethod:method - URLString:urlString - parameters:body - error:nil]; + request = [self.requestSerializer requestWithMethod: method + URLString: urlString + parameters: body + error: nil]; } BOOL hasHeaderParams = false; if(headerParams != nil && [headerParams count] > 0) @@ -389,9 +430,12 @@ static bool loggingEnabled = false; [request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData]; } + + AFJSONRequestSerializer *requestSerializer = [AFJSONRequestSerializer serializer]; + if(body != nil) { - if([body isKindOfClass:[NSDictionary class]]){ - [request setValue:requestContentType forHTTPHeaderField:@"Content-Type"]; + if([body isKindOfClass:[NSDictionary class]] || [body isKindOfClass:[NSArray class]]){ + [requestSerializer setValue:requestContentType forHTTPHeaderField:@"Content-Type"]; } else if ([body isKindOfClass:[SWGFile class]]){} else { @@ -403,7 +447,8 @@ static bool loggingEnabled = false; [request setValue:[headerParams valueForKey:key] forHTTPHeaderField:key]; } } - [request setValue:[headerParams valueForKey:responseContentType] forHTTPHeaderField:@"Accept"]; + [requestSerializer setValue:responseContentType forHTTPHeaderField:@"Accept"]; + // Always disable cookies! [request setHTTPShouldHandleCookies:NO]; @@ -436,4 +481,4 @@ static bool loggingEnabled = false; return requestId; } -@end +@end \ No newline at end of file diff --git a/samples/client/petstore/objc/client/SWGApiResponse.h b/samples/client/petstore/objc/client/SWGApiResponse.h new file mode 100644 index 00000000000..2021a408f03 --- /dev/null +++ b/samples/client/petstore/objc/client/SWGApiResponse.h @@ -0,0 +1,18 @@ +#import +#import "SWGObject.h" + + +@interface SWGApiResponse : SWGObject + +@property(nonatomic) NSNumber* code; +@property(nonatomic) NSString* type; +@property(nonatomic) NSString* message; +- (id) code: (NSNumber*) code + type: (NSString*) type + message: (NSString*) message; + + +- (id) initWithValues: (NSDictionary*)dict; +- (NSDictionary*) asDictionary; + +@end diff --git a/samples/client/petstore/objc/client/SWGApiResponse.m b/samples/client/petstore/objc/client/SWGApiResponse.m new file mode 100644 index 00000000000..b6391774790 --- /dev/null +++ b/samples/client/petstore/objc/client/SWGApiResponse.m @@ -0,0 +1,54 @@ +#import "SWGDate.h" +#import "SWGApiResponse.h" + +@implementation SWGApiResponse + +-(id)code: (NSNumber*) code + type: (NSString*) type + message: (NSString*) message + +{ + _code = code; + _type = type; + _message = message; + + + return self; +} + +-(id) initWithValues:(NSDictionary*)dict +{ + self = [super init]; + if(self) { + _code = dict[@"code"]; + + _type = dict[@"type"]; + + _message = dict[@"message"]; + + + } + return self; +} + +-(NSDictionary*) asDictionary { + NSMutableDictionary* dict = [[NSMutableDictionary alloc] init]; + + + if(_code != nil) dict[@"code"] = _code ; + + + + if(_type != nil) dict[@"type"] = _type ; + + + + if(_message != nil) dict[@"message"] = _message ; + + + + NSDictionary* output = [dict copy]; + return output; +} + +@end diff --git a/samples/client/petstore/objc/client/SWGFile.h b/samples/client/petstore/objc/client/SWGFile.h index fe6e81c289d..fd87e13bace 100644 --- a/samples/client/petstore/objc/client/SWGFile.h +++ b/samples/client/petstore/objc/client/SWGFile.h @@ -5,9 +5,10 @@ @property(nonatomic, readonly) NSString* name; @property(nonatomic, readonly) NSString* mimeType; @property(nonatomic, readonly) NSData* data; +@property(nonatomic) NSString* paramName; - (id) initWithNameData: (NSString*) filename mimeType: (NSString*) mimeType data: (NSData*) data; - @end \ No newline at end of file +@end \ No newline at end of file diff --git a/samples/client/petstore/objc/client/SWGPetApi.h b/samples/client/petstore/objc/client/SWGPetApi.h index 80ca9a9340b..b40a210ea4c 100644 --- a/samples/client/petstore/objc/client/SWGPetApi.h +++ b/samples/client/petstore/objc/client/SWGPetApi.h @@ -38,12 +38,12 @@ - @param pet Pet object that needs to be added to the store + @param body Pet object that needs to be added to the store return type: */ --(NSNumber*) addPetWithCompletionBlock :(SWGPet*) pet +-(NSNumber*) addPetWithCompletionBlock :(SWGPet*) body completionHandler: (void (^)(NSError* error))completionBlock; @@ -155,16 +155,24 @@ /** - Upload an image for a pet + uploads an image + + - @param petImage image to upload + @param petId ID of pet to update + + @param additionalMetadata Additional data to pass to server + + @param file file to upload return type: */ --(NSNumber*) uploadImageWithCompletionBlock :(SWGFile*) petImage +-(NSNumber*) uploadFileWithCompletionBlock :(NSNumber*) petId + additionalMetadata:(NSString*) additionalMetadata + file:(SWGFile*) file completionHandler: (void (^)(NSError* error))completionBlock; diff --git a/samples/client/petstore/objc/client/SWGPetApi.m b/samples/client/petstore/objc/client/SWGPetApi.m index 7ec5e542237..bf968a2776a 100644 --- a/samples/client/petstore/objc/client/SWGPetApi.m +++ b/samples/client/petstore/objc/client/SWGPetApi.m @@ -7,7 +7,7 @@ @implementation SWGPetApi -static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; +static NSString * basePath = @"http://petstore.swagger.io/v2"; +(SWGPetApi*) apiWithHeader:(NSString*)headerValue key:(NSString*)key { static SWGPetApi* singletonAPI = nil; @@ -51,7 +51,7 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; } --(NSNumber*) updatePetWithCompletionBlock:(SWGPet*) body +-(NSNumber*) updatePetWithCompletionBlock: (SWGPet*) body completionHandler: (void (^)(NSError* error))completionBlock { @@ -96,20 +96,14 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; NSError * error; NSString * str = (NSString*)__body; NSDictionary *JSON = - [NSJSONSerialization JSONObjectWithData:[str dataUsingEncoding:NSUTF8StringEncoding] - options:NSJSONReadingMutableContainers - error:&error]; + [NSJSONSerialization JSONObjectWithData: [str dataUsingEncoding: NSUTF8StringEncoding] + options: NSJSONReadingMutableContainers + error: &error]; bodyDictionary = JSON; } - else if([__body isKindOfClass: [SWGFile class]]) { - requestContentType = @"form-data"; - bodyDictionary = __body; - } - else{ - NSLog(@"don't know what to do with %@", __body); - } + SWGApiClient* client = [SWGApiClient sharedClientFromPool:basePath]; @@ -120,19 +114,19 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; // no return base type - return [client stringWithCompletionBlock:requestUrl - method:@"PUT" - queryParams:queryParams - body:bodyDictionary - headerParams:headerParams - requestContentType: requestContentType - responseContentType: responseContentType - completionBlock:^(NSString *data, NSError *error) { - if (error) { - completionBlock(error); - return; - } - completionBlock(nil); + return [client stringWithCompletionBlock: requestUrl + method: @"PUT" + queryParams: queryParams + body: bodyDictionary + headerParams: headerParams + requestContentType: requestContentType + responseContentType: responseContentType + completionBlock: ^(NSString *data, NSError *error) { + if (error) { + completionBlock(error); + return; + } + completionBlock(nil); }]; @@ -140,7 +134,7 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; } --(NSNumber*) addPetWithCompletionBlock:(SWGPet*) pet +-(NSNumber*) addPetWithCompletionBlock: (SWGPet*) body completionHandler: (void (^)(NSError* error))completionBlock { @@ -163,7 +157,7 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; id bodyDictionary = nil; - id __body = pet; + id __body = body; if(__body != nil && [__body isKindOfClass:[NSArray class]]){ NSMutableArray * objs = [[NSMutableArray alloc] init]; @@ -185,20 +179,14 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; NSError * error; NSString * str = (NSString*)__body; NSDictionary *JSON = - [NSJSONSerialization JSONObjectWithData:[str dataUsingEncoding:NSUTF8StringEncoding] - options:NSJSONReadingMutableContainers - error:&error]; + [NSJSONSerialization JSONObjectWithData: [str dataUsingEncoding: NSUTF8StringEncoding] + options: NSJSONReadingMutableContainers + error: &error]; bodyDictionary = JSON; } - else if([__body isKindOfClass: [SWGFile class]]) { - requestContentType = @"form-data"; - bodyDictionary = __body; - } - else{ - NSLog(@"don't know what to do with %@", __body); - } + SWGApiClient* client = [SWGApiClient sharedClientFromPool:basePath]; @@ -209,19 +197,19 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; // no return base type - return [client stringWithCompletionBlock:requestUrl - method:@"POST" - queryParams:queryParams - body:bodyDictionary - headerParams:headerParams - requestContentType: requestContentType - responseContentType: responseContentType - completionBlock:^(NSString *data, NSError *error) { - if (error) { - completionBlock(error); - return; - } - completionBlock(nil); + return [client stringWithCompletionBlock: requestUrl + method: @"POST" + queryParams: queryParams + body: bodyDictionary + headerParams: headerParams + requestContentType: requestContentType + responseContentType: responseContentType + completionBlock: ^(NSString *data, NSError *error) { + if (error) { + completionBlock(error); + return; + } + completionBlock(nil); }]; @@ -229,7 +217,7 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; } --(NSNumber*) findPetsByStatusWithCompletionBlock:(NSArray*) status +-(NSNumber*) findPetsByStatusWithCompletionBlock: (NSArray*) status completionHandler: (void (^)(NSArray* output, NSError* error))completionBlock { @@ -255,6 +243,14 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; id bodyDictionary = nil; + bodyDictionary = [[NSMutableArray alloc] init]; + + NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; + + + [bodyDictionary addObject:formParams]; + + SWGApiClient* client = [SWGApiClient sharedClientFromPool:basePath]; @@ -268,32 +264,17 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; requestContentType: requestContentType responseContentType: responseContentType completionBlock: ^(NSDictionary *data, NSError *error) { - if (error) { - completionBlock(nil, error); - - return; - } - - if([data isKindOfClass:[NSArray class]]){ - NSMutableArray * objs = [[NSMutableArray alloc] initWithCapacity:[data count]]; - for (NSDictionary* dict in (NSArray*)data) { - - - SWGPet* d = [[SWGPet alloc]initWithValues: dict]; - - [objs addObject:d]; - } - completionBlock(objs, nil); - } - - + if (error) { + completionBlock(nil, error); + return; + } }]; } --(NSNumber*) findPetsByTagsWithCompletionBlock:(NSArray*) tags +-(NSNumber*) findPetsByTagsWithCompletionBlock: (NSArray*) tags completionHandler: (void (^)(NSArray* output, NSError* error))completionBlock { @@ -319,6 +300,14 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; id bodyDictionary = nil; + bodyDictionary = [[NSMutableArray alloc] init]; + + NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; + + + [bodyDictionary addObject:formParams]; + + SWGApiClient* client = [SWGApiClient sharedClientFromPool:basePath]; @@ -332,32 +321,17 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; requestContentType: requestContentType responseContentType: responseContentType completionBlock: ^(NSDictionary *data, NSError *error) { - if (error) { - completionBlock(nil, error); - - return; - } - - if([data isKindOfClass:[NSArray class]]){ - NSMutableArray * objs = [[NSMutableArray alloc] initWithCapacity:[data count]]; - for (NSDictionary* dict in (NSArray*)data) { - - - SWGPet* d = [[SWGPet alloc]initWithValues: dict]; - - [objs addObject:d]; - } - completionBlock(objs, nil); - } - - + if (error) { + completionBlock(nil, error); + return; + } }]; } --(NSNumber*) getPetByIdWithCompletionBlock:(NSNumber*) petId +-(NSNumber*) getPetByIdWithCompletionBlock: (NSNumber*) petId completionHandler: (void (^)(SWGPet* output, NSError* error))completionBlock { @@ -382,6 +356,14 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; id bodyDictionary = nil; + bodyDictionary = [[NSMutableArray alloc] init]; + + NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; + + + [bodyDictionary addObject:formParams]; + + SWGApiClient* client = [SWGApiClient sharedClientFromPool:basePath]; @@ -391,14 +373,14 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; // comples response type - return [client dictionary:requestUrl - method:@"GET" - queryParams:queryParams - body:bodyDictionary - headerParams:headerParams - requestContentType:requestContentType - responseContentType:responseContentType - completionBlock:^(NSDictionary *data, NSError *error) { + return [client dictionary: requestUrl + method: @"GET" + queryParams: queryParams + body: bodyDictionary + headerParams: headerParams + requestContentType: requestContentType + responseContentType: responseContentType + completionBlock: ^(NSDictionary *data, NSError *error) { if (error) { completionBlock(nil, error); @@ -416,9 +398,9 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; } --(NSNumber*) updatePetWithFormWithCompletionBlock:(NSString*) petId - name:(NSString*) name - status:(NSString*) status +-(NSNumber*) updatePetWithFormWithCompletionBlock: (NSString*) petId + name: (NSString*) name + status: (NSString*) status completionHandler: (void (^)(NSError* error))completionBlock { @@ -443,6 +425,18 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; id bodyDictionary = nil; + bodyDictionary = [[NSMutableArray alloc] init]; + + NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; + + + formParams[@"name"] = name; + + formParams[@"status"] = status; + + [bodyDictionary addObject:formParams]; + + SWGApiClient* client = [SWGApiClient sharedClientFromPool:basePath]; @@ -453,19 +447,19 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; // no return base type - return [client stringWithCompletionBlock:requestUrl - method:@"POST" - queryParams:queryParams - body:bodyDictionary - headerParams:headerParams - requestContentType: requestContentType - responseContentType: responseContentType - completionBlock:^(NSString *data, NSError *error) { - if (error) { - completionBlock(error); - return; - } - completionBlock(nil); + return [client stringWithCompletionBlock: requestUrl + method: @"POST" + queryParams: queryParams + body: bodyDictionary + headerParams: headerParams + requestContentType: requestContentType + responseContentType: responseContentType + completionBlock: ^(NSString *data, NSError *error) { + if (error) { + completionBlock(error); + return; + } + completionBlock(nil); }]; @@ -473,8 +467,8 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; } --(NSNumber*) deletePetWithCompletionBlock:(NSString*) api_key - petId:(NSNumber*) petId +-(NSNumber*) deletePetWithCompletionBlock: (NSString*) api_key + petId: (NSNumber*) petId completionHandler: (void (^)(NSError* error))completionBlock { @@ -501,6 +495,14 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; id bodyDictionary = nil; + bodyDictionary = [[NSMutableArray alloc] init]; + + NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; + + + [bodyDictionary addObject:formParams]; + + SWGApiClient* client = [SWGApiClient sharedClientFromPool:basePath]; @@ -511,19 +513,19 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; // no return base type - return [client stringWithCompletionBlock:requestUrl - method:@"DELETE" - queryParams:queryParams - body:bodyDictionary - headerParams:headerParams - requestContentType: requestContentType - responseContentType: responseContentType - completionBlock:^(NSString *data, NSError *error) { - if (error) { - completionBlock(error); - return; - } - completionBlock(nil); + return [client stringWithCompletionBlock: requestUrl + method: @"DELETE" + queryParams: queryParams + body: bodyDictionary + headerParams: headerParams + requestContentType: requestContentType + responseContentType: responseContentType + completionBlock: ^(NSString *data, NSError *error) { + if (error) { + completionBlock(error); + return; + } + completionBlock(nil); }]; @@ -531,17 +533,20 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; } --(NSNumber*) uploadImageWithCompletionBlock:(SWGFile*) petImage +-(NSNumber*) uploadFileWithCompletionBlock: (NSNumber*) petId + additionalMetadata: (NSString*) additionalMetadata + file: (SWGFile*) file completionHandler: (void (^)(NSError* error))completionBlock { - NSMutableString* requestUrl = [NSMutableString stringWithFormat:@"%@/pet/{petId}/upload", basePath]; + NSMutableString* requestUrl = [NSMutableString stringWithFormat:@"%@/pet/{petId}/uploadImage", basePath]; // remove format in URL if needed if ([requestUrl rangeOfString:@".{format}"].location != NSNotFound) [requestUrl replaceCharactersInRange: [requestUrl rangeOfString:@".{format}"] withString:@".json"]; + [requestUrl replaceCharactersInRange: [requestUrl rangeOfString:[NSString stringWithFormat:@"%@%@%@", @"{", @"petId", @"}"]] withString: [SWGApiClient escape:petId]]; NSString* requestContentType = @"application/json"; @@ -555,6 +560,20 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; id bodyDictionary = nil; + bodyDictionary = [[NSMutableArray alloc] init]; + + NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; + + + formParams[@"additionalMetadata"] = additionalMetadata; + + requestContentType = @"multipart/form-data"; + [bodyDictionary addObject:file]; + file.paramName = @"file"; + + [bodyDictionary addObject:formParams]; + + SWGApiClient* client = [SWGApiClient sharedClientFromPool:basePath]; @@ -565,19 +584,19 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; // no return base type - return [client stringWithCompletionBlock:requestUrl - method:@"POST" - queryParams:queryParams - body:bodyDictionary - headerParams:headerParams - requestContentType: requestContentType - responseContentType: responseContentType - completionBlock:^(NSString *data, NSError *error) { - if (error) { - completionBlock(error); - return; - } - completionBlock(nil); + return [client stringWithCompletionBlock: requestUrl + method: @"POST" + queryParams: queryParams + body: bodyDictionary + headerParams: headerParams + requestContentType: requestContentType + responseContentType: responseContentType + completionBlock: ^(NSString *data, NSError *error) { + if (error) { + completionBlock(error); + return; + } + completionBlock(nil); }]; diff --git a/samples/client/petstore/objc/client/SWGStoreApi.h b/samples/client/petstore/objc/client/SWGStoreApi.h index df5a2ab9e8f..2daa1e8656f 100644 --- a/samples/client/petstore/objc/client/SWGStoreApi.h +++ b/samples/client/petstore/objc/client/SWGStoreApi.h @@ -10,6 +10,22 @@ +(SWGStoreApi*) apiWithHeader:(NSString*)headerValue key:(NSString*)key; +(void) setBasePath:(NSString*)basePath; +(NSString*) getBasePath; +/** + + Returns pet inventories by status + + Returns a map of status codes to quantities + + + + + return type: NSDictionary* + */ +-(NSNumber*) getInventoryWithCompletionBlock : + (void (^)(NSDictionary* output, NSError* error))completionBlock; + + + /** Place an order for a pet diff --git a/samples/client/petstore/objc/client/SWGStoreApi.m b/samples/client/petstore/objc/client/SWGStoreApi.m index bed751a5da6..b81d127eb51 100644 --- a/samples/client/petstore/objc/client/SWGStoreApi.m +++ b/samples/client/petstore/objc/client/SWGStoreApi.m @@ -6,7 +6,7 @@ @implementation SWGStoreApi -static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; +static NSString * basePath = @"http://petstore.swagger.io/v2"; +(SWGStoreApi*) apiWithHeader:(NSString*)headerValue key:(NSString*)key { static SWGStoreApi* singletonAPI = nil; @@ -50,7 +50,67 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; } --(NSNumber*) placeOrderWithCompletionBlock:(SWGOrder*) body +-(NSNumber*) getInventoryWithCompletionBlock: + (void (^)(NSDictionary* output, NSError* error))completionBlock + { + + NSMutableString* requestUrl = [NSMutableString stringWithFormat:@"%@/store/inventory", basePath]; + + // remove format in URL if needed + if ([requestUrl rangeOfString:@".{format}"].location != NSNotFound) + [requestUrl replaceCharactersInRange: [requestUrl rangeOfString:@".{format}"] withString:@".json"]; + + + + NSString* requestContentType = @"application/json"; + NSString* responseContentType = @"application/json"; + + NSMutableDictionary* queryParams = [[NSMutableDictionary alloc] init]; + + NSMutableDictionary* headerParams = [[NSMutableDictionary alloc] init]; + + + id bodyDictionary = nil; + + + bodyDictionary = [[NSMutableArray alloc] init]; + + NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; + + + [bodyDictionary addObject:formParams]; + + + + + SWGApiClient* client = [SWGApiClient sharedClientFromPool:basePath]; + + // map container response type + return [client dictionary: requestUrl + method: @"GET" + queryParams: queryParams + body: bodyDictionary + headerParams: headerParams + requestContentType: requestContentType + responseContentType: responseContentType + completionBlock: ^(NSDictionary *data, NSError *error) { + if (error) { + completionBlock(nil, error); + return; + } + + NSDictionary *result = nil; + if (data) { + result = [[NSDictionary alloc]initWithDictionary: data]; + } + completionBlock(data, nil); + + }]; + + +} + +-(NSNumber*) placeOrderWithCompletionBlock: (SWGOrder*) body completionHandler: (void (^)(SWGOrder* output, NSError* error))completionBlock { @@ -95,20 +155,14 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; NSError * error; NSString * str = (NSString*)__body; NSDictionary *JSON = - [NSJSONSerialization JSONObjectWithData:[str dataUsingEncoding:NSUTF8StringEncoding] - options:NSJSONReadingMutableContainers - error:&error]; + [NSJSONSerialization JSONObjectWithData: [str dataUsingEncoding: NSUTF8StringEncoding] + options: NSJSONReadingMutableContainers + error: &error]; bodyDictionary = JSON; } - else if([__body isKindOfClass: [SWGFile class]]) { - requestContentType = @"form-data"; - bodyDictionary = __body; - } - else{ - NSLog(@"don't know what to do with %@", __body); - } + SWGApiClient* client = [SWGApiClient sharedClientFromPool:basePath]; @@ -118,14 +172,14 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; // comples response type - return [client dictionary:requestUrl - method:@"POST" - queryParams:queryParams - body:bodyDictionary - headerParams:headerParams - requestContentType:requestContentType - responseContentType:responseContentType - completionBlock:^(NSDictionary *data, NSError *error) { + return [client dictionary: requestUrl + method: @"POST" + queryParams: queryParams + body: bodyDictionary + headerParams: headerParams + requestContentType: requestContentType + responseContentType: responseContentType + completionBlock: ^(NSDictionary *data, NSError *error) { if (error) { completionBlock(nil, error); @@ -143,7 +197,7 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; } --(NSNumber*) getOrderByIdWithCompletionBlock:(NSString*) orderId +-(NSNumber*) getOrderByIdWithCompletionBlock: (NSString*) orderId completionHandler: (void (^)(SWGOrder* output, NSError* error))completionBlock { @@ -168,6 +222,14 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; id bodyDictionary = nil; + bodyDictionary = [[NSMutableArray alloc] init]; + + NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; + + + [bodyDictionary addObject:formParams]; + + SWGApiClient* client = [SWGApiClient sharedClientFromPool:basePath]; @@ -177,14 +239,14 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; // comples response type - return [client dictionary:requestUrl - method:@"GET" - queryParams:queryParams - body:bodyDictionary - headerParams:headerParams - requestContentType:requestContentType - responseContentType:responseContentType - completionBlock:^(NSDictionary *data, NSError *error) { + return [client dictionary: requestUrl + method: @"GET" + queryParams: queryParams + body: bodyDictionary + headerParams: headerParams + requestContentType: requestContentType + responseContentType: responseContentType + completionBlock: ^(NSDictionary *data, NSError *error) { if (error) { completionBlock(nil, error); @@ -202,7 +264,7 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; } --(NSNumber*) deleteOrderWithCompletionBlock:(NSString*) orderId +-(NSNumber*) deleteOrderWithCompletionBlock: (NSString*) orderId completionHandler: (void (^)(NSError* error))completionBlock { @@ -227,6 +289,14 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; id bodyDictionary = nil; + bodyDictionary = [[NSMutableArray alloc] init]; + + NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; + + + [bodyDictionary addObject:formParams]; + + SWGApiClient* client = [SWGApiClient sharedClientFromPool:basePath]; @@ -237,19 +307,19 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; // no return base type - return [client stringWithCompletionBlock:requestUrl - method:@"DELETE" - queryParams:queryParams - body:bodyDictionary - headerParams:headerParams - requestContentType: requestContentType - responseContentType: responseContentType - completionBlock:^(NSString *data, NSError *error) { - if (error) { - completionBlock(error); - return; - } - completionBlock(nil); + return [client stringWithCompletionBlock: requestUrl + method: @"DELETE" + queryParams: queryParams + body: bodyDictionary + headerParams: headerParams + requestContentType: requestContentType + responseContentType: responseContentType + completionBlock: ^(NSString *data, NSError *error) { + if (error) { + completionBlock(error); + return; + } + completionBlock(nil); }]; diff --git a/samples/client/petstore/objc/client/SWGUserApi.m b/samples/client/petstore/objc/client/SWGUserApi.m index 98588697d7b..4c69415620b 100644 --- a/samples/client/petstore/objc/client/SWGUserApi.m +++ b/samples/client/petstore/objc/client/SWGUserApi.m @@ -6,7 +6,7 @@ @implementation SWGUserApi -static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; +static NSString * basePath = @"http://petstore.swagger.io/v2"; +(SWGUserApi*) apiWithHeader:(NSString*)headerValue key:(NSString*)key { static SWGUserApi* singletonAPI = nil; @@ -50,7 +50,7 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; } --(NSNumber*) createUserWithCompletionBlock:(SWGUser*) body +-(NSNumber*) createUserWithCompletionBlock: (SWGUser*) body completionHandler: (void (^)(NSError* error))completionBlock { @@ -95,20 +95,14 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; NSError * error; NSString * str = (NSString*)__body; NSDictionary *JSON = - [NSJSONSerialization JSONObjectWithData:[str dataUsingEncoding:NSUTF8StringEncoding] - options:NSJSONReadingMutableContainers - error:&error]; + [NSJSONSerialization JSONObjectWithData: [str dataUsingEncoding: NSUTF8StringEncoding] + options: NSJSONReadingMutableContainers + error: &error]; bodyDictionary = JSON; } - else if([__body isKindOfClass: [SWGFile class]]) { - requestContentType = @"form-data"; - bodyDictionary = __body; - } - else{ - NSLog(@"don't know what to do with %@", __body); - } + SWGApiClient* client = [SWGApiClient sharedClientFromPool:basePath]; @@ -119,19 +113,19 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; // no return base type - return [client stringWithCompletionBlock:requestUrl - method:@"POST" - queryParams:queryParams - body:bodyDictionary - headerParams:headerParams - requestContentType: requestContentType - responseContentType: responseContentType - completionBlock:^(NSString *data, NSError *error) { - if (error) { - completionBlock(error); - return; - } - completionBlock(nil); + return [client stringWithCompletionBlock: requestUrl + method: @"POST" + queryParams: queryParams + body: bodyDictionary + headerParams: headerParams + requestContentType: requestContentType + responseContentType: responseContentType + completionBlock: ^(NSString *data, NSError *error) { + if (error) { + completionBlock(error); + return; + } + completionBlock(nil); }]; @@ -139,7 +133,7 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; } --(NSNumber*) createUsersWithArrayInputWithCompletionBlock:(NSArray*) body +-(NSNumber*) createUsersWithArrayInputWithCompletionBlock: (NSArray*) body completionHandler: (void (^)(NSError* error))completionBlock { @@ -184,20 +178,14 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; NSError * error; NSString * str = (NSString*)__body; NSDictionary *JSON = - [NSJSONSerialization JSONObjectWithData:[str dataUsingEncoding:NSUTF8StringEncoding] - options:NSJSONReadingMutableContainers - error:&error]; + [NSJSONSerialization JSONObjectWithData: [str dataUsingEncoding: NSUTF8StringEncoding] + options: NSJSONReadingMutableContainers + error: &error]; bodyDictionary = JSON; } - else if([__body isKindOfClass: [SWGFile class]]) { - requestContentType = @"form-data"; - bodyDictionary = __body; - } - else{ - NSLog(@"don't know what to do with %@", __body); - } + SWGApiClient* client = [SWGApiClient sharedClientFromPool:basePath]; @@ -208,19 +196,19 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; // no return base type - return [client stringWithCompletionBlock:requestUrl - method:@"POST" - queryParams:queryParams - body:bodyDictionary - headerParams:headerParams - requestContentType: requestContentType - responseContentType: responseContentType - completionBlock:^(NSString *data, NSError *error) { - if (error) { - completionBlock(error); - return; - } - completionBlock(nil); + return [client stringWithCompletionBlock: requestUrl + method: @"POST" + queryParams: queryParams + body: bodyDictionary + headerParams: headerParams + requestContentType: requestContentType + responseContentType: responseContentType + completionBlock: ^(NSString *data, NSError *error) { + if (error) { + completionBlock(error); + return; + } + completionBlock(nil); }]; @@ -228,7 +216,7 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; } --(NSNumber*) createUsersWithListInputWithCompletionBlock:(NSArray*) body +-(NSNumber*) createUsersWithListInputWithCompletionBlock: (NSArray*) body completionHandler: (void (^)(NSError* error))completionBlock { @@ -273,20 +261,14 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; NSError * error; NSString * str = (NSString*)__body; NSDictionary *JSON = - [NSJSONSerialization JSONObjectWithData:[str dataUsingEncoding:NSUTF8StringEncoding] - options:NSJSONReadingMutableContainers - error:&error]; + [NSJSONSerialization JSONObjectWithData: [str dataUsingEncoding: NSUTF8StringEncoding] + options: NSJSONReadingMutableContainers + error: &error]; bodyDictionary = JSON; } - else if([__body isKindOfClass: [SWGFile class]]) { - requestContentType = @"form-data"; - bodyDictionary = __body; - } - else{ - NSLog(@"don't know what to do with %@", __body); - } + SWGApiClient* client = [SWGApiClient sharedClientFromPool:basePath]; @@ -297,19 +279,19 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; // no return base type - return [client stringWithCompletionBlock:requestUrl - method:@"POST" - queryParams:queryParams - body:bodyDictionary - headerParams:headerParams - requestContentType: requestContentType - responseContentType: responseContentType - completionBlock:^(NSString *data, NSError *error) { - if (error) { - completionBlock(error); - return; - } - completionBlock(nil); + return [client stringWithCompletionBlock: requestUrl + method: @"POST" + queryParams: queryParams + body: bodyDictionary + headerParams: headerParams + requestContentType: requestContentType + responseContentType: responseContentType + completionBlock: ^(NSString *data, NSError *error) { + if (error) { + completionBlock(error); + return; + } + completionBlock(nil); }]; @@ -317,8 +299,8 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; } --(NSNumber*) loginUserWithCompletionBlock:(NSString*) username - password:(NSString*) password +-(NSNumber*) loginUserWithCompletionBlock: (NSString*) username + password: (NSString*) password completionHandler: (void (^)(NSString* output, NSError* error))completionBlock { @@ -346,6 +328,14 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; id bodyDictionary = nil; + bodyDictionary = [[NSMutableArray alloc] init]; + + NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; + + + [bodyDictionary addObject:formParams]; + + SWGApiClient* client = [SWGApiClient sharedClientFromPool:basePath]; @@ -353,14 +343,14 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; // primitive response type - return [client stringWithCompletionBlock:requestUrl - method:@"GET" - queryParams:queryParams - body:bodyDictionary - headerParams:headerParams + return [client stringWithCompletionBlock: requestUrl + method: @"GET" + queryParams: queryParams + body: bodyDictionary + headerParams: headerParams requestContentType: requestContentType responseContentType: responseContentType - completionBlock:^(NSString *data, NSError *error) { + completionBlock: ^(NSString *data, NSError *error) { if (error) { completionBlock(nil, error); return; @@ -398,6 +388,14 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; id bodyDictionary = nil; + bodyDictionary = [[NSMutableArray alloc] init]; + + NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; + + + [bodyDictionary addObject:formParams]; + + SWGApiClient* client = [SWGApiClient sharedClientFromPool:basePath]; @@ -408,19 +406,19 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; // no return base type - return [client stringWithCompletionBlock:requestUrl - method:@"GET" - queryParams:queryParams - body:bodyDictionary - headerParams:headerParams - requestContentType: requestContentType - responseContentType: responseContentType - completionBlock:^(NSString *data, NSError *error) { - if (error) { - completionBlock(error); - return; - } - completionBlock(nil); + return [client stringWithCompletionBlock: requestUrl + method: @"GET" + queryParams: queryParams + body: bodyDictionary + headerParams: headerParams + requestContentType: requestContentType + responseContentType: responseContentType + completionBlock: ^(NSString *data, NSError *error) { + if (error) { + completionBlock(error); + return; + } + completionBlock(nil); }]; @@ -428,7 +426,7 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; } --(NSNumber*) getUserByNameWithCompletionBlock:(NSString*) username +-(NSNumber*) getUserByNameWithCompletionBlock: (NSString*) username completionHandler: (void (^)(SWGUser* output, NSError* error))completionBlock { @@ -453,6 +451,14 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; id bodyDictionary = nil; + bodyDictionary = [[NSMutableArray alloc] init]; + + NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; + + + [bodyDictionary addObject:formParams]; + + SWGApiClient* client = [SWGApiClient sharedClientFromPool:basePath]; @@ -462,14 +468,14 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; // comples response type - return [client dictionary:requestUrl - method:@"GET" - queryParams:queryParams - body:bodyDictionary - headerParams:headerParams - requestContentType:requestContentType - responseContentType:responseContentType - completionBlock:^(NSDictionary *data, NSError *error) { + return [client dictionary: requestUrl + method: @"GET" + queryParams: queryParams + body: bodyDictionary + headerParams: headerParams + requestContentType: requestContentType + responseContentType: responseContentType + completionBlock: ^(NSDictionary *data, NSError *error) { if (error) { completionBlock(nil, error); @@ -487,8 +493,8 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; } --(NSNumber*) updateUserWithCompletionBlock:(NSString*) username - body:(SWGUser*) body +-(NSNumber*) updateUserWithCompletionBlock: (NSString*) username + body: (SWGUser*) body completionHandler: (void (^)(NSError* error))completionBlock { @@ -534,20 +540,14 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; NSError * error; NSString * str = (NSString*)__body; NSDictionary *JSON = - [NSJSONSerialization JSONObjectWithData:[str dataUsingEncoding:NSUTF8StringEncoding] - options:NSJSONReadingMutableContainers - error:&error]; + [NSJSONSerialization JSONObjectWithData: [str dataUsingEncoding: NSUTF8StringEncoding] + options: NSJSONReadingMutableContainers + error: &error]; bodyDictionary = JSON; } - else if([__body isKindOfClass: [SWGFile class]]) { - requestContentType = @"form-data"; - bodyDictionary = __body; - } - else{ - NSLog(@"don't know what to do with %@", __body); - } + SWGApiClient* client = [SWGApiClient sharedClientFromPool:basePath]; @@ -558,19 +558,19 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; // no return base type - return [client stringWithCompletionBlock:requestUrl - method:@"PUT" - queryParams:queryParams - body:bodyDictionary - headerParams:headerParams - requestContentType: requestContentType - responseContentType: responseContentType - completionBlock:^(NSString *data, NSError *error) { - if (error) { - completionBlock(error); - return; - } - completionBlock(nil); + return [client stringWithCompletionBlock: requestUrl + method: @"PUT" + queryParams: queryParams + body: bodyDictionary + headerParams: headerParams + requestContentType: requestContentType + responseContentType: responseContentType + completionBlock: ^(NSString *data, NSError *error) { + if (error) { + completionBlock(error); + return; + } + completionBlock(nil); }]; @@ -578,7 +578,7 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; } --(NSNumber*) deleteUserWithCompletionBlock:(NSString*) username +-(NSNumber*) deleteUserWithCompletionBlock: (NSString*) username completionHandler: (void (^)(NSError* error))completionBlock { @@ -603,6 +603,14 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; id bodyDictionary = nil; + bodyDictionary = [[NSMutableArray alloc] init]; + + NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; + + + [bodyDictionary addObject:formParams]; + + SWGApiClient* client = [SWGApiClient sharedClientFromPool:basePath]; @@ -613,19 +621,19 @@ static NSString * basePath = @"http://petstore.swagger.wordnik.com/v2"; // no return base type - return [client stringWithCompletionBlock:requestUrl - method:@"DELETE" - queryParams:queryParams - body:bodyDictionary - headerParams:headerParams - requestContentType: requestContentType - responseContentType: responseContentType - completionBlock:^(NSString *data, NSError *error) { - if (error) { - completionBlock(error); - return; - } - completionBlock(nil); + return [client stringWithCompletionBlock: requestUrl + method: @"DELETE" + queryParams: queryParams + body: bodyDictionary + headerParams: headerParams + requestContentType: requestContentType + responseContentType: responseContentType + completionBlock: ^(NSString *data, NSError *error) { + if (error) { + completionBlock(error); + return; + } + completionBlock(nil); }];