From 362cc1b4c2578946ad2d26bd80ca98b846a1cdc3 Mon Sep 17 00:00:00 2001 From: Michael Nguyen Date: Mon, 28 Oct 2013 15:09:58 -0700 Subject: [PATCH 1/4] updated project to rotate and display correctly in iOS6+ removed all references to adwhirl for iOS. --- .../AdWhirlSDK_iOS_3.1.1/AdNetworkLibs/README | 2 - .../AdWhirl/AdWhirlDelegateProtocol.h | 344 ------ .../AdWhirl/AdWhirlView.h | 231 ---- .../adapters/AdWhirlAdNetworkAdapter.h | 128 --- .../adapters/AdWhirlAdapterGoogleAdMobAds.h | 32 - .../adapters/AdWhirlAdapterGoogleAdMobAds.m | 199 ---- .../adapters/AdWhirlAdapterGoogleAdSense.h | 42 - .../adapters/AdWhirlAdapterGoogleAdSense.m | 189 --- .../AdWhirl/adapters/AdWhirlAdapterIAd.h | 31 - .../AdWhirl/adapters/AdWhirlAdapterIAd.m | 135 --- .../AdWhirl/internal/ARRollerView.m | 46 - .../internal/AWNetworkReachabilityDelegate.h | 29 - .../internal/AWNetworkReachabilityWrapper.h | 53 - .../internal/AWNetworkReachabilityWrapper.m | 172 --- .../AdWhirlAdNetworkAdapter+Helpers.h | 46 - .../AdWhirlAdNetworkAdapter+Helpers.m | 93 -- .../internal/AdWhirlAdNetworkAdapter.m | 84 -- .../AdWhirl/internal/AdWhirlAdNetworkConfig.h | 57 - .../AdWhirl/internal/AdWhirlAdNetworkConfig.m | 169 --- .../internal/AdWhirlAdNetworkRegistry.h | 34 - .../internal/AdWhirlAdNetworkRegistry.m | 64 -- .../AdWhirl/internal/AdWhirlAdapterCustom.h | 40 - .../AdWhirl/internal/AdWhirlAdapterCustom.m | 423 ------- .../AdWhirl/internal/AdWhirlAdapterEvent.h | 29 - .../AdWhirl/internal/AdWhirlAdapterEvent.m | 69 -- .../AdWhirl/internal/AdWhirlAdapterGeneric.h | 29 - .../AdWhirl/internal/AdWhirlAdapterGeneric.m | 56 - .../AdWhirl/internal/AdWhirlClassWrapper.h | 31 - .../AdWhirl/internal/AdWhirlClassWrapper.m | 35 - .../AdWhirl/internal/AdWhirlConfig.h | 103 -- .../AdWhirl/internal/AdWhirlConfig.m | 563 --------- .../AdWhirl/internal/AdWhirlConfigStore.h | 67 -- .../AdWhirl/internal/AdWhirlConfigStore.m | 291 ----- .../AdWhirl/internal/AdWhirlCustomAdView.h | 101 -- .../AdWhirl/internal/AdWhirlCustomAdView.m | 168 --- .../AdWhirl/internal/AdWhirlError.h | 55 - .../AdWhirl/internal/AdWhirlError.m | 56 - .../AdWhirl/internal/AdWhirlLog.h | 61 - .../AdWhirl/internal/AdWhirlLog.m | 67 -- .../AdWhirl/internal/AdWhirlView+.h | 60 - .../AdWhirl/internal/AdWhirlView.m | 1015 ----------------- .../AdWhirl/internal/AdWhirlWebBrowser.xib | 764 ------------- .../internal/AdWhirlWebBrowserController.h | 75 -- .../internal/AdWhirlWebBrowserController.m | 266 ----- .../AdWhirl/internal/UIColor+AdWhirlConfig.h | 31 - .../AdWhirl/internal/UIColor+AdWhirlConfig.m | 73 -- .../AdWhirl/legacy/ARRollerProtocol.h | 31 - .../AdWhirl/legacy/ARRollerView.h | 30 - adwhirl/AdWhirlSDK_iOS_3.1.1/Changelog.txt | 103 -- adwhirl/AdWhirlSDK_iOS_3.1.1/README | 1 - .../TouchJSON/CDataScanner.h | 68 -- .../TouchJSON/CDataScanner.m | 270 ----- .../Extensions/CDataScanner_Extensions.h | 37 - .../Extensions/CDataScanner_Extensions.m | 80 -- .../Extensions/NSCharacterSet_Extensions.h | 36 - .../Extensions/NSCharacterSet_Extensions.m | 48 - .../Extensions/NSDictionary_JSONExtensions.h | 36 - .../Extensions/NSDictionary_JSONExtensions.m | 41 - .../Extensions/NSScanner_Extensions.h | 44 - .../Extensions/NSScanner_Extensions.m | 118 -- .../TouchJSON/JSON/CJSONDataSerializer.h | 46 - .../TouchJSON/JSON/CJSONDataSerializer.m | 225 ---- .../TouchJSON/JSON/CJSONDeserializer.h | 45 - .../TouchJSON/JSON/CJSONDeserializer.m | 95 -- .../TouchJSON/JSON/CJSONScanner.h | 44 - .../TouchJSON/JSON/CJSONScanner.m | 539 --------- .../TouchJSON/JSON/CJSONSerializer.h | 47 - .../TouchJSON/JSON/CJSONSerializer.m | 75 -- .../TouchJSON/JSON/CSerializedJSONData.h | 40 - .../TouchJSON/JSON/CSerializedJSONData.m | 54 - projects/mtg/Android/AndroidManifest.xml | 2 +- projects/mtg/Android/default.properties | 2 +- projects/mtg/Android/gen/R.java.d | 10 + .../gen/net/wagic/app/BuildConfig.java | 6 + projects/mtg/Android/gen/net/wagic/app/R.java | 27 + projects/mtg/Android/project.properties | 2 +- projects/mtg/Default-568h@2x.png | Bin 0 -> 840167 bytes projects/mtg/Makefile.linux | 1 + projects/mtg/build.number.properties | 2 +- .../Reachability/Reachability.m | 6 +- projects/mtg/include/Wagic_Version.h | 4 +- projects/mtg/wagic.xcodeproj/project.pbxproj | 353 +----- .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 22967 bytes .../xcschemes/wagic-opengl1.1.xcscheme | 86 ++ .../xcschemes/wagic.xcscheme | 86 ++ .../xcschemes/xcschememanagement.plist | 32 + 87 files changed, 266 insertions(+), 9221 deletions(-) delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdNetworkLibs/README delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/AdWhirlDelegateProtocol.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/AdWhirlView.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdNetworkAdapter.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterGoogleAdMobAds.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterGoogleAdMobAds.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterGoogleAdSense.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterGoogleAdSense.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterIAd.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterIAd.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/ARRollerView.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AWNetworkReachabilityDelegate.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AWNetworkReachabilityWrapper.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AWNetworkReachabilityWrapper.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkAdapter+Helpers.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkAdapter+Helpers.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkAdapter.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkConfig.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkConfig.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkRegistry.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkRegistry.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdapterCustom.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdapterCustom.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdapterEvent.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdapterEvent.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdapterGeneric.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdapterGeneric.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlClassWrapper.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlClassWrapper.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlConfig.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlConfig.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlConfigStore.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlConfigStore.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlCustomAdView.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlCustomAdView.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlError.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlError.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlLog.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlLog.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlView+.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlView.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlWebBrowser.xib delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlWebBrowserController.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlWebBrowserController.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/UIColor+AdWhirlConfig.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/UIColor+AdWhirlConfig.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/legacy/ARRollerProtocol.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/legacy/ARRollerView.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/Changelog.txt delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/README delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/CDataScanner.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/CDataScanner.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/CDataScanner_Extensions.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/CDataScanner_Extensions.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/NSCharacterSet_Extensions.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/NSCharacterSet_Extensions.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/NSDictionary_JSONExtensions.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/NSDictionary_JSONExtensions.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/NSScanner_Extensions.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/NSScanner_Extensions.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONDataSerializer.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONDataSerializer.m delete mode 100755 adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONDeserializer.h delete mode 100755 adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONDeserializer.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONScanner.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONScanner.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONSerializer.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONSerializer.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CSerializedJSONData.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CSerializedJSONData.m create mode 100644 projects/mtg/Android/gen/R.java.d create mode 100644 projects/mtg/Android/gen/net/wagic/app/BuildConfig.java create mode 100644 projects/mtg/Android/gen/net/wagic/app/R.java create mode 100644 projects/mtg/Default-568h@2x.png create mode 100644 projects/mtg/Makefile.linux create mode 100644 projects/mtg/wagic.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 projects/mtg/wagic.xcodeproj/project.xcworkspace/xcuserdata/mnguyen.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 projects/mtg/wagic.xcodeproj/xcuserdata/mnguyen.xcuserdatad/xcschemes/wagic-opengl1.1.xcscheme create mode 100644 projects/mtg/wagic.xcodeproj/xcuserdata/mnguyen.xcuserdatad/xcschemes/wagic.xcscheme create mode 100644 projects/mtg/wagic.xcodeproj/xcuserdata/mnguyen.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdNetworkLibs/README b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdNetworkLibs/README deleted file mode 100644 index 4d20cf88d..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdNetworkLibs/README +++ /dev/null @@ -1,2 +0,0 @@ -You can put ad network libraries in this directory. The sample .xcodeproj references to files here. -DO NOT PUSH ANY AD NETWORK LIBRARIES TO GOOGLE CODE. diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/AdWhirlDelegateProtocol.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/AdWhirlDelegateProtocol.h deleted file mode 100644 index cf961c1d9..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/AdWhirlDelegateProtocol.h +++ /dev/null @@ -1,344 +0,0 @@ -/* - - AdWhirlDelegateProtocol.h - - Copyright 2009 AdMob, 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 -#import - -@class AdWhirlView; - -@protocol AdWhirlDelegate - -@required - -- (NSString *)adWhirlApplicationKey; - -/** - * The view controller with which the ad network will display a modal view - * (web view, canvas), such as when the user clicks on the ad. You must - * supply a view controller. You should return the root view controller - * of your application, such as the root UINavigationController, or - * any controllers that are pushed/added directly to the root view controller. - * For example, if your app delegate has a pointer to the root view controller: - * - * return [(MyAppDelegate *)[[UIApplication sharedApplication] delegate] rootViewController] - * - * will suffice. - */ -- (UIViewController *)viewControllerForPresentingModalView; - -@optional - -#pragma mark server endpoints -/** - * If you are running your own AdWhirl server instance, make sure you - * implement the following to return the URL that points to the endpoints - * on your server. - */ -- (NSURL *)adWhirlConfigURL; -- (NSURL *)adWhirlImpMetricURL; -- (NSURL *)adWhirlClickMetricURL; -- (NSURL *)adWhirlCustomAdURL; - - -#pragma mark notifications -/** - * You can listen to callbacks from AdWhirl via these methods. When AdWhirl is - * notified that an ad request is fulfilled, it will notify you immediately. - * Thus, when notified that an ad request succeeded, you can choose to add the - * AdWhirlView object as a subview to your view. This view contains the ad. - * When you are notified that an ad request failed, you are also informed if the - * AdWhirlView is fetching a backup ad. The backup fetching order is specified - * by you in adwhirl.com or your own server instance. When all backup sources - * are attempted and the last ad request still fails, the usingBackup parameter - * will be set to NO. You can use this notification to try again and perhaps - * request another AdWhirlView via [AdWhirlView requestAdWhirlViewWithDelegate:] - */ -- (void)adWhirlDidReceiveAd:(AdWhirlView *)adWhirlView; -- (void)adWhirlDidFailToReceiveAd:(AdWhirlView *)adWhirlView usingBackup:(BOOL)yesOrNo; - -/** - * You can get notified when the transition animation to a new ad is completed - * so you can make necessary adjustments to the size of the adWhirlView and - * surrounding views after the animation. - */ -- (void)adWhirlDidAnimateToNewAdIn:(AdWhirlView *)adWhirlView; - -/** - * This function is your integration point for Generic Notifications. You can - * control when this notification occurs via the developers member section. You - * can allocate a percentage of your ad requests to initiate this callback. When - * you receive this notification, you can execute any code block that you own. - * For example, you can replace the ad in AdWhirlView after getting this callback - * by calling replaceBannerViewWith: . Note that the ad refresh cycle is still - * alive, so your view could be replaced by other ads when it's time for an - * ad refresh. - */ -- (void)adWhirlReceivedRequestForDeveloperToFufill:(AdWhirlView *)adWhirlView; - -/** - * In the event that ads are OFF, you can listen to this callback method to - * determine that ads have been turned off. - */ -- (void)adWhirlReceivedNotificationAdsAreOff:(AdWhirlView *)adWhirlView; - -/** - * These notifications will let you know when a user is being shown a full screen - * webview canvas with an ad because they tapped on an ad. You should listen to - * these notifications to determine when to pause/resume your game--if you're - * building a game app. - */ -- (void)adWhirlWillPresentFullScreenModal; -- (void)adWhirlDidDismissFullScreenModal; - -/** - * An ad request is a two step process: first the SDK must go to the AdWhirl - * server to retrieve configuration information. Then, based on the configuration - * information, it chooses an ad network and fetch an ad. The following call - * is for users to get notified when the first step is complete. The - * adWhirlView passed could be null if you had called the AdWhirlView class - * method +startPreFetchingConfigurationDataWithDelegate . - */ -- (void)adWhirlDidReceiveConfig:(AdWhirlView *)adWhirlView; - - -#pragma mark behavior configurations - -/** - * Request test ads for APIs that supports it. Make sure you turn it to OFF - * or remove the function before you submit your app to the app store. - */ -- (BOOL)adWhirlTestMode; - -/** - * Returns the device's current orientation for ad networks that relys on - * it. If you don't implement this function, [UIDevice currentDevice].orientation - * is used to get the current orientation. - */ -- (UIDeviceOrientation)adWhirlCurrentOrientation; - -#pragma mark appearance configurations -- (UIColor *)adWhirlAdBackgroundColor; -- (UIColor *)adWhirlTextColor; -- (UIColor *)adWhirlSecondaryTextColor; -- (UIColor *)backgroundColor DEPRECATED_ATTRIBUTE; // use the one with adWhirl prefix -- (UIColor *)textColor DEPRECATED_ATTRIBUTE; // use the one with adWhirl prefix - - -#pragma mark hard-coded application keys -- (NSString *)admobPublisherID; // your Publisher ID from Admob. -- (NSDictionary *)quattroWirelessDictionary; // key-value pairs for the keys "publisherID" and "siteID" provided by Quattro Wireless. Set NSString values for these two keys. -- (NSString *)pinchApplicationKey; // your Application Code from Pinch Media. -- (NSDictionary *)videoEggConfigDictionary; // key-value pairs for the keys "publisher" and "area" information from Video Egg. Set NSString values for these two keys. -- (NSString *)millennialMediaApIDString; // your ApID string from Millennial Media. -- (NSString *)MdotMApplicationKey; // your Application Code from MdotM -- (NSString *)googleAdSenseClientID; // your publisher ID from Google AdSense -- (NSString *)zestADZClientID; // your clientID from ZestADZ -- (NSString *)brightRollAppId; // your BrightRoll App ID -- (NSString *)inMobiAppID; // your inMobi app ID -- (NSString *)oneRiotAppID; -- (NSDictionary *) nexageDictionary; // your nexage dcn and position - - -#pragma mark demographic information optional delegate methods -- (CLLocation *)locationInfo; // user's current location -- (NSString *)postalCode; // user's postal code, e.g. "94401" -- (NSString *)areaCode; // user's area code, e.g. "415" -- (NSDate *)dateOfBirth; // user's date of birth -- (NSString *)gender; // user's gender (e.g. @"m" or @"f") -- (NSString *)keywords; // keywords the user has provided or that are contextually relevant, e.g. @"twitter client iPhone" -- (NSString *)searchString; // a search string the user has provided, e.g. @"Jasmine Tea House San Francisco" -- (NSUInteger)incomeLevel; // return actual annual income - - -#pragma mark QuattroWireless-specific optional delegate methods -/** - * Return the ad type desired for Quattro - * QWAdTypeBanner = 0, - * QWAdTypeText=2, - */ -- (NSUInteger)quattroWirelessAdType; - -/** - * Return a value for the education level if you have access to this info. This - * information will be relayed to Quattro Wireless if provided. - * QWEducationNoCollege = 0 - * QWEducationCollegeGraduate = 1 - * QWEducationGraduateSchool = 2 - * QWEducationUnknown = 3 - */ -- (NSUInteger)quattroWirelessEducationLevel; - -/** - * Return a value for the ethnicity if you have access to this info. This - * information will be relayed to Quattro Wireless if provided. - * QWEthnicGroupAfrican_American = 0 - * QWEthnicGroupAsian = 1 - * QWEthnicGroupHispanic = 2 - * QWEthnicGroupWhite = 3 - * QWEthnicGroupOther = 4 - */ -- (NSUInteger)quattroWirelessEthnicity; - - -#pragma mark MillennialMedia-specific optional delegate methods -/** - * Return the ad type desired for Millennial Media, depending on your ad position - * MMBannerAdTop = 1, - * MMBannerAdBottom = 2, - */ -- (NSUInteger)millennialMediaAdType; - -/** - * Return a value for the education level if you have access to this info. This - * information will be relayed to Millennial Media if provided - * MMEducationUnknown = 0, - * MMEducationHishSchool = 1, - * MMEducationSomeCollege = 2, - * MMEducationInCollege = 3, - * MMEducationBachelorsDegree = 4, - * MMEducationMastersDegree = 5, - * MMEducationPhD = 6 - */ -- (NSUInteger)millennialMediaEducationLevel; - -/** - * Return a value for ethnicity if you have access to this info. This - * information will be relayed to Millennial Media if provided. - * MMEthnicityUnknown = 0, - * MMEthnicityAfricanAmerican = 1, - * MMEthnicityAsian = 2, - * MMEthnicityCaucasian = 3, - * MMEthnicityHispanic = 4, - * MMEthnicityNativeAmerican = 5, - * MMEthnicityMixed = 6 - */ -- (NSUInteger)millennialMediaEthnicity; - -- (NSUInteger)millennialMediaAge DEPRECATED_ATTRIBUTE; // use dateOfBirth - - -#pragma mark Jumptap-specific optional delegate methods -/** - * optional site and spot id as provided by Jumptap. - */ -- (NSString *)jumptapSiteId; -- (NSString *)jumptapSpotId; - -/** - * Find a list of valid categories at https://support.jumptap.com/index.php/Valid_Categories - */ -- (NSString *)jumptapCategory; - -/** - * Whether adult content is allowed. - * AdultContentAllowed = 0, - * AdultContentNotAllowed = 1, - * AdultContentOnly = 2 - */ -- (NSUInteger)jumptapAdultContent; - -/** - * The transition to use when moving from, say, a banner to full-screen. - * TransitionHorizontalSlide = 0, - * TransitionVerticalSlide = 1, - * TransitionCurl = 2, - * TransitionFlip = 3 - */ -- (NSUInteger)jumptapTransitionType; - - -#pragma mark Google AdSense-specific delegate methods -/** - These are *REQUIRED* for googleAdSense. If you don't implement these methods, - your app will crash as the AdSense adapter looks for these methods. - */ -- (NSString *)googleAdSenseCompanyName; -- (NSString *)googleAdSenseAppName; -- (NSString *)googleAdSenseApplicationAppleID; - -/** - The following are optional and correspond to the optional kGADAdSense* ad attributes. - For documentation, see GADAdSenseParameters.h . - */ -- (NSString *)googleAdSenseKeywords; -- (NSURL *)googleAdSenseAppWebContentURL; -- (NSArray *)googleAdSenseChannelIDs; -- (NSString *)googleAdSenseAdType; -- (NSString *)googleAdSenseHostID; -//- (UIColor *)googleAdSenseAdBackgroundColor; // implement adWhirlAdBackgroundColor or set in server -- (UIColor *)googleAdSenseAdTopBackgroundColor; -- (UIColor *)googleAdSenseAdBorderColor; -- (UIColor *)googleAdSenseAdLinkColor; -//- (UIColor *)googleAdSenseAdTextColor; // implement adWhirlTextColor or set in server -- (UIColor *)googleAdSenseAdURLColor; -- (UIColor *)googleAdSenseAlternateAdColor; -- (NSURL *)googleAdSenseAlternateAdURL; -- (NSNumber *)googleAdSenseAllowAdsafeMedium; - - -#pragma mark InMobi-specific optional delegate methods -/** - * Education level for InMobi - * Edu_None = 0 - * Edu_HighSchool = 1 - * Edu_SomeCollege = 2 - * Edu_InCollege = 3 - * Edu_BachelorsDegree = 4 - * Edu_MastersDegree = 5 - * Edu_DoctoralDegree = 6 - * Edu_Other = 7 - */ -- (NSUInteger)inMobiEducation; - -/** - Eth_None = 0, - Eth_Mixed = 1, - Eth_Asian = 2, - Eth_Black = 3, - Eth_Hispanic = 4, - Eth_NativeAmerican = 5, - Eth_White = 6, - Eth_Other = 7 - */ -- (NSUInteger)inMobiEthnicity; - -/** - * See inMobi's documentation for valid values - */ -- (NSString *)inMobiInterests; - -- (NSString *)iAdAdvertisingSection; - -- (NSDictionary *)inMobiParamsDictionary; - -#pragma mark OneRiot-specific optional delegate methods - -/** Returns an array of NSStrings containing all optional context parameters - */ -- (NSArray *)oneRiotContextParameters; - -#pragma mark Nexage-specific optional delegate methods --(NSString *)nexageCity; --(NSString *)nexageDesignatedMarketArea; --(NSString *)nexageCountry; --(NSString *)nexageEthnicity; --(NSString *)nexageMaritalStatus; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/AdWhirlView.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/AdWhirlView.h deleted file mode 100644 index 7799fbdc6..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/AdWhirlView.h +++ /dev/null @@ -1,231 +0,0 @@ -/* - - AdWhirlView.h - - Copyright 2009 AdMob, 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 -#import "AdWhirlDelegateProtocol.h" -#import "AWNetworkReachabilityWrapper.h" -#import "AdWhirlConfig.h" - -#define kAdWhirlAppVer 310 - -#define kAdWhirlViewWidth 320 -#define kAdWhirlViewHeight 50 -#define kAdWhirlViewDefaultSize \ - (CGSizeMake(kAdWhirlViewWidth, kAdWhirlViewHeight)) -#define kAdWhirlViewDefaultFrame \ - (CGRectMake(0,0,kAdWhirlViewWidth, kAdWhirlViewHeight)) - -#define kAdWhirlDefaultConfigURL @"http://mob.adwhirl.com/getInfo.php" -#define kAdWhirlDefaultImpMetricURL @"http://met.adwhirl.com/exmet.php" -#define kAdWhirlDefaultClickMetricURL @"http://met.adwhirl.com/exclick.php" -#define kAdWhirlDefaultCustomAdURL @"http://mob.adwhirl.com/custom.php" -#define kAWMinimumTimeBetweenFreshAdRequests 4.9f -#define kAdWhirlAdRequestTimeout 10 - - -@class AdWhirlAdNetworkConfig; -@class AdWhirlAdNetworkAdapter; -@class AdWhirlConfigStore; -@class AWNetworkReachabilityWrapper; - - -@interface AdWhirlView : UIView { - id delegate; - AdWhirlConfig *config; - - NSMutableArray *prioritizedAdNetCfgs; - double totalPercent; - - BOOL ignoreAutoRefreshTimer; - BOOL ignoreNewAdRequests; - BOOL appInactive; - BOOL showingModalView; - - BOOL requesting; - AdWhirlAdNetworkAdapter *currAdapter; - AdWhirlAdNetworkAdapter *lastAdapter; - NSDate *lastRequestTime; - NSMutableDictionary *pendingAdapters; - - NSTimer *refreshTimer; - - // remember which adapter we last sent click stats for so we don't send twice - id lastNotifyAdapter; - - NSError *lastError; - - AdWhirlConfigStore *configStore; - - AWNetworkReachabilityWrapper *rollOverReachability; - - NSUInteger configFetchAttempts; - - NSArray *testDarts; - NSUInteger testDartIndex; -} - -/** - * Call this method to get a view object that you can add to your own view. You - * must also provide a delegate. The delegate provides AdWhirl's application - * key and can listen for important messages. You can configure the view's - * settings and specific ad network information on AdWhirl.com or your own - * AdWhirl server instance. - */ -+ (AdWhirlView *)requestAdWhirlViewWithDelegate:(id)delegate; - -/** - * Starts pre-fetching ad network configurations from an AdWhirl server. If the - * configuration has been fetched when you are ready to request an ad, you save - * a round-trip to the network and hence your ad may show up faster. You - * typically call this in the applicationDidFinishLaunching: method of your - * app delegate. The request is non-blocking. You only need to call this - * at most once per run of your application. Subsequent calls to this function - * will be ignored. - */ -+ (void)startPreFetchingConfigurationDataWithDelegate:(id)d; - -/** - * Call this method to request a new configuration from the AdWhirl servers. - * This can be useful to support iOS 4.0 backgrounding. - */ -+ (void)updateAdWhirlConfigWithDelegate:(id)delegate; - -/** - * Call this method to request a new configuration from the AdWhirl servers. - */ -- (void)updateAdWhirlConfig; - -/** - * Call this method to get another ad to display. You can also specify under - * "app settings" on adwhirl.com to automatically get new ads periodically. - */ -- (void)requestFreshAd; - -/** - * Call this method if you prefer a rollover instead of a getNextAd call. This - * is offered primarily for developers who want to use generic notifications and - * then execute a rollover when an ad network fails to serve an ad. - */ -- (void)rollOver; - -/** - * The delegate is informed asynchronously whether an ad succeeds or fails to - * load. If you prefer to poll for this information, you can do so using this - * method. - * - */ -- (BOOL)adExists; - -/** - * Different ad networks may return different ad sizes. You may adjust the size - * of the AdWhirlView and your UI to avoid unsightly borders or chopping off - * pixels from ads. Call this method when you receive the adWhirlDidReceiveAd - * delegate method to get the size of the underlying ad network ad. - */ -- (CGSize)actualAdSize; - -/** - * Some ad networks may offer different banner sizes for different orientations. - * Call this function when the orientation of your UI changes so the underlying - * ad may handle the orientation change properly. You may also want to - * call the actualAdSize method right after calling this to get the size of - * the ad after the orientation change. - */ -- (void)rotateToOrientation:(UIInterfaceOrientation)orientation; - -/** - * Call this method to get the name of the most recent ad network that an ad - * request was made to. - */ -- (NSString *)mostRecentNetworkName; - -/** - * Call this method to ignore the automatic refresh timer. - * - * Note that the refresh timer is NOT invalidated when you call - * ignoreAutoRefreshTimer. - * This will simply ignore the refresh events that are called by the automatic - * refresh timer (if the refresh timer is enabled via adwhirl.com). So, for - * example, let's say you have a refresh cycle of 60 seconds. If you call - * ignoreAutoRefreshTimer at 30 seconds, and call resumeRefreshTimer at 90 sec, - * then the first refresh event is ignored, but the second refresh event at 120 - * sec will run. - */ -- (void)ignoreAutoRefreshTimer; -- (void)doNotIgnoreAutoRefreshTimer; -- (BOOL)isIgnoringAutoRefreshTimer; - -/** - * Call this method to ignore automatic refreshes AND manual refreshes entirely. - * - * This is provided for developers who asked to disable refreshing entirely, - * whether automatic or manual. - * If you call ignoreNewAdRequests, the AdWhirl will: - * 1) Ignore any Automatic refresh events (via the refresh timer) AND - * 2) Ignore any manual refresh calls (via requestFreshAd and rollOver) - */ -- (void)ignoreNewAdRequests; -- (void)doNotIgnoreNewAdRequests; -- (BOOL)isIgnoringNewAdRequests; - -/** - * Call this to replace the content of this AdWhirlView with the view. - */ -- (void)replaceBannerViewWith:(UIView*)bannerView; - -/** - * You can set the delegate to nil or another object. - * Make sure you set the delegate to nil when you release an AdWhirlView - * instance to avoid the AdWhirlView from calling to a non-existent delegate. - * If you set the delegate to another object, note that if the new delegate - * returns a different value for adWhirlApplicationKey, it will not overwrite - * the application key provided by the delegate you supplied for - * +requestAdWhirlViewWithDelegate . - */ -@property (nonatomic, assign) IBOutlet id delegate; - -/** - * Use this to retrieve more information after your delegate received a - * adWhirlDidFailToReceiveAd message. - */ -@property (nonatomic, readonly) NSError *lastError; - - -#pragma mark For ad network adapters use only - -/** - * Called by Adapters when there's a new ad view. - */ -- (void)adapter:(AdWhirlAdNetworkAdapter *)adapter - didReceiveAdView:(UIView *)view; - -/** - * Called by Adapters when ad view failed. - */ -- (void)adapter:(AdWhirlAdNetworkAdapter *)adapter didFailAd:(NSError *)error; - -/** - * Called by Adapters when the ad request is finished, but the ad view is - * furnished elsewhere. e.g. Generic Notification - */ -- (void)adapterDidFinishAdRequest:(AdWhirlAdNetworkAdapter *)adapter; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdNetworkAdapter.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdNetworkAdapter.h deleted file mode 100644 index a217d72e2..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdNetworkAdapter.h +++ /dev/null @@ -1,128 +0,0 @@ -/* - - AdWhirlAdNetworkAdapter.h - - Copyright 2009 AdMob, 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 "AdWhirlDelegateProtocol.h" -#import "AdWhirlConfig.h" - -typedef enum { - AdWhirlAdNetworkTypeAdMob = 1, - AdWhirlAdNetworkTypeJumpTap = 2, - AdWhirlAdNetworkTypeVideoEgg = 3, - AdWhirlAdNetworkTypeMedialets = 4, - AdWhirlAdNetworkTypeLiveRail = 5, - AdWhirlAdNetworkTypeMillennial = 6, - AdWhirlAdNetworkTypeGreyStripe = 7, - AdWhirlAdNetworkTypeQuattro = 8, - AdWhirlAdNetworkTypeCustom = 9, - AdWhirlAdNetworkTypeAdWhirl10 = 10, - AdWhirlAdNetworkTypeMobClix = 11, - AdWhirlAdNetworkTypeMdotM = 12, - AdWhirlAdNetworkTypeAdWhirl13 = 13, - AdWhirlAdNetworkTypeGoogleAdSense = 14, - AdWhirlAdNetworkTypeGoogleDoubleClick = 15, - AdWhirlAdNetworkTypeGeneric = 16, - AdWhirlAdNetworkTypeEvent = 17, - AdWhirlAdNetworkTypeInMobi = 18, - AdWhirlAdNetworkTypeIAd = 19, - AdWhirlAdNetworkTypeZestADZ = 20, - AdWhirlAdNetworkTypeBrightRoll = 21, - AdWhirlAdNetworkTypeTapAd = 22, - AdWhirlAdNetworkTypeOneRiot = 23, - AdWhirlAdNetworkTypeNexage = 24 -} AdWhirlAdNetworkType; - -@class AdWhirlView; -@class AdWhirlConfig; -@class AdWhirlAdNetworkConfig; - -@interface AdWhirlAdNetworkAdapter : NSObject { - id adWhirlDelegate; - AdWhirlView *adWhirlView; - AdWhirlConfig *adWhirlConfig; - AdWhirlAdNetworkConfig *networkConfig; - UIView *adNetworkView; -} - -/** - * Subclasses must implement +networkType to return an AdWhirlAdNetworkType enum. - */ -//+ (AdWhirlAdNetworkType)networkType; - -/** - * Subclasses must add itself to the AdWhirlAdNetworkRegistry. One way - * to do so is to implement the +load function and register there. - */ -//+ (void)load; - -/** - * Default initializer. Subclasses do not need to override this method unless - * they need to perform additional initialization. In which case, this - * method must be called via the super keyword. - */ -- (id)initWithAdWhirlDelegate:(id)delegate - view:(AdWhirlView *)view - config:(AdWhirlConfig *)config - networkConfig:(AdWhirlAdNetworkConfig *)netConf; - -/** - * Ask the adapter to get an ad. This must be implemented by subclasses. - */ -- (void)getAd; - -/** - * When called, the adapter must remove itself as a delegate or notification - * observer from the underlying ad network SDK. Subclasses must implement this - * method, even if the underlying SDK doesn't have a way of removing delegate - * (in which case, you should contact the ad network). Note that this method - * will be called in dealloc at AdWhirlAdNetworkAdapter, before adNetworkView - * is released. Care must be taken if you also keep a reference of your ad view - * in a separate instance variable, as you may have released that variable - * before this gets called in AdWhirlAdNetworkAdapter's dealloc. Use - * adNetworkView, defined in this class, instead of your own instance variable. - * This function should also be idempotent, i.e. get called multiple times and - * not crash. - */ -- (void)stopBeingDelegate; - -/** - * Subclasses return YES to ask AdWhirlView to send metric requests to the - * AdWhirl server for ad impressions. Default is YES. - */ -- (BOOL)shouldSendExMetric; - -/** - * Tell the adapter that the interface orientation changed or is about to change - */ -- (void)rotateToOrientation:(UIInterfaceOrientation)orientation; - -/** - * Some ad transition types may cause issues with particular ad networks. The - * adapter should know whether the given animation type is OK. Defaults to - * YES. - */ -- (BOOL)isBannerAnimationOK:(AWBannerAnimationType)animType; - -@property (nonatomic,assign) id adWhirlDelegate; -@property (nonatomic,assign) AdWhirlView *adWhirlView; -@property (nonatomic,retain) AdWhirlConfig *adWhirlConfig; -@property (nonatomic,retain) AdWhirlAdNetworkConfig *networkConfig; -@property (nonatomic,retain) UIView *adNetworkView; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterGoogleAdMobAds.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterGoogleAdMobAds.h deleted file mode 100644 index 245e367ba..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterGoogleAdMobAds.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - - AdWhirlAdapterGoogleAdMobAds.h - Copyright 2011 Google, 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 "AdWhirlAdNetworkAdapter.h" -#import "GADBannerViewDelegate.h" - -@interface AdWhirlAdapterGoogleAdMobAds : AdWhirlAdNetworkAdapter - { -} - -- (SEL)delegatePublisherIdSelector; -- (NSString *)hexStringFromUIColor:(UIColor *)color; -+ (AdWhirlAdNetworkType)networkType; -- (NSString *)publisherId; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterGoogleAdMobAds.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterGoogleAdMobAds.m deleted file mode 100644 index bcff47e72..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterGoogleAdMobAds.m +++ /dev/null @@ -1,199 +0,0 @@ -/* - - AdWhirlAdapterGoogleAdMobAds.m - Copyright 2011 Google, 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 "AdWhirlAdapterGoogleAdMobAds.h" -#import "AdWhirlAdNetworkConfig.h" -#import "AdWhirlView.h" -#import "GADBannerView.h" -#import "AdWhirlLog.h" -#import "AdWhirlAdNetworkAdapter+Helpers.h" -#import "AdWhirlAdNetworkRegistry.h" - -@implementation AdWhirlAdapterGoogleAdMobAds - -+ (void)load { - [[AdWhirlAdNetworkRegistry sharedRegistry] registerClass:self]; -} - -+ (AdWhirlAdNetworkType)networkType { - return AdWhirlAdNetworkTypeAdMob; -} - -// converts UIColor to hex string, ignoring alpha. -- (NSString *)hexStringFromUIColor:(UIColor *)color { - CGColorSpaceModel colorSpaceModel = - CGColorSpaceGetModel(CGColorGetColorSpace(color.CGColor)); - if (colorSpaceModel == kCGColorSpaceModelRGB - || colorSpaceModel == kCGColorSpaceModelMonochrome) { - const CGFloat *colors = CGColorGetComponents(color.CGColor); - CGFloat red = 0.0, green = 0.0, blue = 0.0; - if (colorSpaceModel == kCGColorSpaceModelRGB) { - red = colors[0]; - green = colors[1]; - blue = colors[2]; - // we ignore alpha here. - } else if (colorSpaceModel == kCGColorSpaceModelMonochrome) { - red = green = blue = colors[0]; - } - return [NSString stringWithFormat:@"%02X%02X%02X", - (int)(red * 255), (int)(green * 255), (int)(blue * 255)]; - } - return nil; -} - -- (NSObject *)delegateValueForSelector:(SEL)selector { - return ([adWhirlDelegate respondsToSelector:selector]) ? - [adWhirlDelegate performSelector:selector] : nil; -} - -- (void)getAd { - GADRequest *request = [GADRequest request]; - NSObject *value; - - NSMutableDictionary *additional = [NSMutableDictionary dictionary]; - if ([adWhirlDelegate respondsToSelector:@selector(adWhirlTestMode)] - && [adWhirlDelegate adWhirlTestMode]) { - [additional setObject:@"on" forKey:@"adtest"]; - } - - if ((value = [self delegateValueForSelector: - @selector(adWhirlAdBackgroundColor)])) { - [additional setObject:[self hexStringFromUIColor:(UIColor *)value] - forKey:@"color_bg"]; - } - - if ((value = [self delegateValueForSelector: - @selector(adWhirlAdBackgroundColor)])) { - [additional setObject:[self hexStringFromUIColor:(UIColor *)value] - forKey:@"color_text"]; - } - - // deliberately don't allow other color specifications. - - if ([additional count] > 0) { - request.additionalParameters = additional; - } - - CLLocation *location = - (CLLocation *)[self delegateValueForSelector:@selector(locationInfo)]; - - if ((adWhirlConfig.locationOn) && (location)) { - [request setLocationWithLatitude:location.coordinate.latitude - longitude:location.coordinate.longitude - accuracy:location.horizontalAccuracy]; - } - - NSString *string = - (NSString *)[self delegateValueForSelector:@selector(gender)]; - - if ([string isEqualToString:@"m"]) { - request.gender = kGADGenderMale; - } else if ([string isEqualToString:@"f"]) { - request.gender = kGADGenderFemale; - } else { - request.gender = kGADGenderUnknown; - } - - if ((value = [self delegateValueForSelector:@selector(dateOfBirth)])) { - request.birthday = (NSDate *)value; - } - - if ((value = [self delegateValueForSelector:@selector(keywords)])) { - NSArray *keywordArray = - [(NSString *)value componentsSeparatedByString:@" "]; - request.keywords = [NSMutableArray arrayWithArray:keywordArray]; - } - - // Set the frame for this view to match the bounds of the parent adWhirlView. - GADBannerView *view = - [[GADBannerView alloc] initWithFrame:adWhirlView.bounds]; - - view.adUnitID = [self publisherId]; - view.delegate = self; - view.rootViewController = - [adWhirlDelegate viewControllerForPresentingModalView]; - - self.adNetworkView = [view autorelease]; - - [view loadRequest:request]; -} - -- (void)stopBeingDelegate { - if (self.adNetworkView != nil - && [self.adNetworkView respondsToSelector:@selector(setDelegate:)]) { - [self.adNetworkView performSelector:@selector(setDelegate:) - withObject:nil]; - } -} - -#pragma mark Ad Request Lifecycle Notifications - -// Sent when an ad request loaded an ad. This is a good opportunity to add -// this view to the hierarchy if it has not yet been added. -- (void)adViewDidReceiveAd:(GADBannerView *)adView { - [adWhirlView adapter:self didReceiveAdView:adView]; -} - -// Sent when an ad request failed. Normally this is because no network -// connection was available or no ads were available (i.e. no fill). -- (void)adView:(GADBannerView *)adView - didFailToReceiveAdWithError:(GADRequestError *)error { - [adWhirlView adapter:self didFailAd:error]; -} - -#pragma mark Click-Time Lifecycle Notifications - -// Sent just before presenting the user a full screen view, such as a browser, -// in response to clicking on an ad. Use this opportunity to stop animations, -// time sensitive interactions, etc. -// -// Normally the user looks at the ad, dismisses it, and control returns to your -// application by calling adViewDidDismissScreen:. However if the user hits -// the Home button or clicks on an App Store link your application will end. -// On iOS 4.0+ the next method called will be applicationWillResignActive: of -// your UIViewController (UIApplicationWillResignActiveNotification). -// Immediately after that adViewWillLeaveApplication: is called. -- (void)adViewWillPresentScreen:(GADBannerView *)adView { - [self helperNotifyDelegateOfFullScreenModal]; -} - -// Sent just after dismissing a full screen view. Use this opportunity to -// restart anything you may have stopped as part of adViewWillPresentScreen:. -- (void)adViewDidDismissScreen:(GADBannerView *)adView { - [self helperNotifyDelegateOfFullScreenModalDismissal]; -} - -#pragma mark parameter gathering methods - -- (SEL)delegatePublisherIdSelector { - return @selector(admobPublisherID); -} - -- (NSString *)publisherId { - SEL delegateSelector = [self delegatePublisherIdSelector]; - - if ((delegateSelector) && - ([adWhirlDelegate respondsToSelector:delegateSelector])) { - return [adWhirlDelegate performSelector:delegateSelector]; - } - - return networkConfig.pubId; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterGoogleAdSense.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterGoogleAdSense.h deleted file mode 100644 index 46f28462d..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterGoogleAdSense.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - - AdWhirlAdapterGoogleAdSense.h - - Copyright 2009 AdMob, 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 "AdWhirlAdNetworkAdapter.h" -#import "GADAdViewController.h" -#import "GADAdSenseParameters.h" -#import "AdWhirlAdNetworkConfig.h" -#import "AdWhirlAdNetworkRegistry.h" -#import "AdWhirlView.h" - -@interface AdWhirlAdapterGoogleAdSense : AdWhirlAdNetworkAdapter { - GADAdViewController *adViewController; -} - -@property (retain) GADAdViewController *adViewController; - -+ (NSInteger)networkType; - -- (NSString *)publisherId; -- (NSString *)companyName; -- (NSString *)appName; -- (NSString *)applicationAppleID; -- (NSNumber *)testMode; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterGoogleAdSense.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterGoogleAdSense.m deleted file mode 100644 index aebd520f9..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterGoogleAdSense.m +++ /dev/null @@ -1,189 +0,0 @@ -/* - - AdWhirlAdapterGoogleAdSense.m - - Copyright 2009 AdMob, 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 "AdWhirlAdNetworkAdapter+Helpers.h" -#import "AdWhirlAdapterGoogleAdSense.h" -#import "AdWhirlAdNetworkConfig.h" -#import "AdWhirlConfig.h" -#import "AdWhirlLog.h" - -static NSDictionary *GASParamNameToSel; - -@implementation AdWhirlAdapterGoogleAdSense - -@synthesize adViewController; - -+ (NSInteger)networkType { - return AdWhirlAdNetworkTypeGoogleAdSense; -} - -+ (void)load { - [[AdWhirlAdNetworkRegistry sharedRegistry] registerClass:self]; - GASParamNameToSel = [[NSDictionary alloc] initWithObjectsAndKeys: - @"googleAdSenseKeywords", kGADAdSenseKeywords, - @"googleAdSenseAppWebContentURL", kGADAdSenseAppWebContentURL, - @"googleAdSenseChannelIDs", kGADAdSenseChannelIDs, - @"googleAdSenseAdType", kGADAdSenseAdType, - @"googleAdSenseHostID", kGADAdSenseHostID, - @"adWhirlAdBackgroundColor", kGADAdSenseAdBackgroundColor, - @"googleAdSenseAdTopBackgroundColor", kGADAdSenseAdTopBackgroundColor, - @"googleAdSenseAdBorderColor", kGADAdSenseAdBorderColor, - @"googleAdSenseAdLinkColor", kGADAdSenseAdLinkColor, - @"adWhirlTextColor", kGADAdSenseAdTextColor, - @"googleAdSenseAdURLColor", kGADAdSenseAdURLColor, - @"googleAdSenseAlternateAdColor", kGADAdSenseAlternateAdColor, - @"googleAdSenseAlternateAdURL", kGADAdSenseAlternateAdURL, - @"googleAdSenseAllowAdsafeMedium", kGADAdSenseAllowAdsafeMedium, - nil]; -} - -- (id)initWithAdWhirlDelegate:(id)delegate - view:(AdWhirlView *)view - config:(AdWhirlConfig *)config - networkConfig:(AdWhirlAdNetworkConfig *)netConf { - self = [super initWithAdWhirlDelegate:delegate - view:view - config:config - networkConfig:netConf]; - if (self != nil) { - // Check that the required methods are implemented. - if (![delegate respondsToSelector:@selector(googleAdSenseCompanyName)]) { - [NSException raise:NSInvalidArgumentException format: - @"You must implement googleAdSenseCompanyName in your AdwhirlDelegate in order to use Google AdSense"]; - } - if (![delegate respondsToSelector:@selector(googleAdSenseAppName)]) { - [NSException raise:NSInvalidArgumentException format: - @"You must implement googleAdSenseAppName in your AdwhirlDelegate in order to use Google AdSense"]; - } - if (![delegate respondsToSelector:@selector(googleAdSenseApplicationAppleID)]) { - [NSException raise:NSInvalidArgumentException format: - @"You must implement googleAdSenseApplicationAppleID in your AdwhirlDelegate in order to use Google AdSense"]; - } - } - return self; -} - -- (void)getAd { - adViewController = [[GADAdViewController alloc] initWithDelegate:self]; - - NSMutableDictionary *attributes = [NSMutableDictionary dictionaryWithObjectsAndKeys: - [self publisherId], kGADAdSenseClientID, - [self companyName], kGADAdSenseCompanyName, - [self appName], kGADAdSenseAppName, - [self applicationAppleID], kGADAdSenseApplicationAppleID, - [self testMode], kGADAdSenseIsTestAdRequest, - nil]; - - // optional params - for (NSString *paramName in GASParamNameToSel) { - SEL sel = NSSelectorFromString((NSString *)[GASParamNameToSel objectForKey:paramName]); - if ([adWhirlDelegate respondsToSelector:sel]) { - NSObject *val = [adWhirlDelegate performSelector:sel]; - if (val != nil) { - [attributes setObject:val forKey:paramName]; - } - } - } - - AWLogDebug(@"Google AdSense attributes: %@", attributes); - // load the ad - adViewController.adSize = kGADAdSize320x50; - [adViewController loadGoogleAd:attributes]; - adViewController.view.frame = kAdWhirlViewDefaultFrame; - self.adNetworkView = adViewController.view; -} - -- (void)stopBeingDelegate { - if (adViewController != nil) { - adViewController.delegate = nil; - } -} - -- (void)dealloc { - // need to call here cos adViewController will be nil when super dealloc runs - [self stopBeingDelegate]; - [adViewController release], adViewController = nil; - [super dealloc]; -} - -#pragma mark parameter gathering methods - -- (NSString *)publisherId { - if ([adWhirlDelegate respondsToSelector:@selector(googleAdSenseClientID)]) { - return [adWhirlDelegate googleAdSenseClientID]; - } - - return networkConfig.pubId; -} - -- (NSString *)companyName { - return [adWhirlDelegate googleAdSenseCompanyName]; -} - -- (NSString *)appName { - return [adWhirlDelegate googleAdSenseAppName]; -} - -- (NSString *)applicationAppleID { - return [adWhirlDelegate googleAdSenseApplicationAppleID]; -} - -- (NSNumber *)testMode { - if ([adWhirlDelegate respondsToSelector:@selector(adWhirlTestMode)] - && [adWhirlDelegate adWhirlTestMode]) { - return [NSNumber numberWithInt:1]; - } - return [NSNumber numberWithInt:0]; -} - -#pragma mark GADAdViewControllerDelegate required methods - -- (UIViewController *)viewControllerForModalPresentation:(GADAdViewController *)adController { - return [adWhirlDelegate viewControllerForPresentingModalView]; -} - -#pragma mark GADAdViewControllerDelegate notification methods - -- (void)loadSucceeded:(GADAdViewController *)adController withResults:(NSDictionary *)results { - [adWhirlView adapter:self didReceiveAdView:[adController view]]; -} - -- (void)loadFailed:(GADAdViewController *)adController withError:(NSError *) error { - [adWhirlView adapter:self didFailAd:error]; -} - -- (GADAdClickAction)adControllerActionModelForAdClick:(GADAdViewController *)adController { - [self helperNotifyDelegateOfFullScreenModal]; - return GAD_ACTION_DISPLAY_INTERNAL_WEBSITE_VIEW; // full screen web view -} - -- (void)adControllerDidCloseWebsiteView:(GADAdViewController *)adController { - [self helperNotifyDelegateOfFullScreenModalDismissal]; -} - -- (void)adControllerDidExpandAd:(GADAdViewController *)controller { - [self helperNotifyDelegateOfFullScreenModal]; -} - -- (void)adControllerDidCollapseAd:(GADAdViewController *)controller { - [self helperNotifyDelegateOfFullScreenModalDismissal]; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterIAd.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterIAd.h deleted file mode 100644 index f83113ec7..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterIAd.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - - AdWhirlAdapterIAd.h - - Copyright 2010 AdMob, 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 "AdWhirlAdNetworkAdapter.h" -#import - -@interface AdWhirlAdapterIAd : AdWhirlAdNetworkAdapter { - NSString *kADBannerContentSizeIdentifierPortrait; - NSString *kADBannerContentSizeIdentifierLandscape; -} - -+ (AdWhirlAdNetworkType)networkType; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterIAd.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterIAd.m deleted file mode 100644 index 3f826feb1..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterIAd.m +++ /dev/null @@ -1,135 +0,0 @@ -/* - - AdWhirlAdapterIAd.m - - Copyright 2010 AdMob, 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 "AdWhirlAdapterIAd.h" -#import "AdWhirlAdNetworkConfig.h" -#import "AdWhirlView.h" -#import "AdWhirlLog.h" -#import "AdWhirlAdNetworkAdapter+Helpers.h" -#import "AdWhirlAdNetworkRegistry.h" - -@implementation AdWhirlAdapterIAd - -+ (AdWhirlAdNetworkType)networkType { - return AdWhirlAdNetworkTypeIAd; -} - -+ (void)load { - if(NSClassFromString(@"ADBannerView") != nil) { - [[AdWhirlAdNetworkRegistry sharedRegistry] registerClass:self]; - } -} - -- (void)getAd { - ADBannerView *iAdView = [[ADBannerView alloc] initWithFrame:CGRectZero]; - kADBannerContentSizeIdentifierPortrait = - &ADBannerContentSizeIdentifierPortrait != nil ? - ADBannerContentSizeIdentifierPortrait : - ADBannerContentSizeIdentifier320x50; - kADBannerContentSizeIdentifierLandscape = - &ADBannerContentSizeIdentifierLandscape != nil ? - ADBannerContentSizeIdentifierLandscape : - ADBannerContentSizeIdentifier480x32; - iAdView.requiredContentSizeIdentifiers = [NSSet setWithObjects: - kADBannerContentSizeIdentifierPortrait, - kADBannerContentSizeIdentifierLandscape, - nil]; - UIDeviceOrientation orientation; - if ([self.adWhirlDelegate respondsToSelector:@selector(adWhirlCurrentOrientation)]) { - orientation = [self.adWhirlDelegate adWhirlCurrentOrientation]; - } - else { - orientation = [UIDevice currentDevice].orientation; - } - - if (UIDeviceOrientationIsLandscape(orientation)) { - iAdView.currentContentSizeIdentifier = kADBannerContentSizeIdentifierLandscape; - } - else { - iAdView.currentContentSizeIdentifier = kADBannerContentSizeIdentifierPortrait; - } - [iAdView setDelegate:self]; - - self.adNetworkView = iAdView; - [iAdView release]; -} - -- (void)stopBeingDelegate { - ADBannerView *iAdView = (ADBannerView *)self.adNetworkView; - if (iAdView != nil) { - iAdView.delegate = nil; - } -} - -- (void)rotateToOrientation:(UIInterfaceOrientation)orientation { - ADBannerView *iAdView = (ADBannerView *)self.adNetworkView; - if (iAdView == nil) return; - if (UIInterfaceOrientationIsLandscape(orientation)) { - iAdView.currentContentSizeIdentifier = kADBannerContentSizeIdentifierLandscape; - } - else { - iAdView.currentContentSizeIdentifier = kADBannerContentSizeIdentifierPortrait; - } - // ADBanner positions itself in the center of the super view, which we do not - // want, since we rely on publishers to resize the container view. - // position back to 0,0 - CGRect newFrame = iAdView.frame; - newFrame.origin.x = newFrame.origin.y = 0; - iAdView.frame = newFrame; -} - -- (BOOL)isBannerAnimationOK:(AWBannerAnimationType)animType { - if (animType == AWBannerAnimationTypeFadeIn) { - return NO; - } - return YES; -} - -- (void)dealloc { - [super dealloc]; -} - -#pragma mark IAdDelegate methods - -- (void)bannerViewDidLoadAd:(ADBannerView *)banner { - // ADBanner positions itself in the center of the super view, which we do not - // want, since we rely on publishers to resize the container view. - // position back to 0,0 - CGRect newFrame = banner.frame; - newFrame.origin.x = newFrame.origin.y = 0; - banner.frame = newFrame; - - [adWhirlView adapter:self didReceiveAdView:banner]; -} - -- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error { - [adWhirlView adapter:self didFailAd:error]; -} - -- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave { - [self helperNotifyDelegateOfFullScreenModal]; - return YES; -} - -- (void)bannerViewActionDidFinish:(ADBannerView *)banner { - [self helperNotifyDelegateOfFullScreenModalDismissal]; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/ARRollerView.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/ARRollerView.m deleted file mode 100644 index 4c1a0f9f1..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/ARRollerView.m +++ /dev/null @@ -1,46 +0,0 @@ -/* - - ARRollerView.m - - Copyright 2009 AdMob, 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 "ARRollerView.h" -#import "AdWhirlView+.h" - -@interface ARRollerView () -- (id)initWithDelegate:(id)delegate; -@end - -@implementation ARRollerView - -+ (ARRollerView*)requestRollerViewWithDelegate:(id)delegate { - return [[[ARRollerView alloc] initWithDelegate:delegate] autorelease]; -} - -- (id)initWithDelegate:(id)d { - return [super initWithDelegate:d]; -} - -- (void)getNextAd { - [self requestFreshAd]; -} - -- (void)setDelegateToNil { - self.delegate = nil; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AWNetworkReachabilityDelegate.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AWNetworkReachabilityDelegate.h deleted file mode 100644 index 98e6d3859..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AWNetworkReachabilityDelegate.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - - AWNetworkReachabilityDelegate.h - - Copyright 2010 Google 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. - - */ - -@class AWNetworkReachabilityWrapper; - -@protocol AWNetworkReachabilityDelegate - -@optional -- (void)reachabilityBecameReachable:(AWNetworkReachabilityWrapper *)reachability; -- (void)reachabilityNotReachable:(AWNetworkReachabilityWrapper *)reachability; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AWNetworkReachabilityWrapper.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AWNetworkReachabilityWrapper.h deleted file mode 100644 index e1b130146..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AWNetworkReachabilityWrapper.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - - AWNetworkReachabilityWrapper.h - - Copyright 2010 Google 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 -#import -#import -#import -#import -#import -#import -#import "AWNetworkReachabilityDelegate.h" - -@class AWNetworkReachabilityWrapper; - - -// Created for ease of mocking (hence testing) -@interface AWNetworkReachabilityWrapper : NSObject { - NSString *hostname_; - SCNetworkReachabilityRef reachability_; - id delegate_; -} - -@property (nonatomic,readonly) NSString *hostname; -@property (nonatomic,assign) id delegate; - -+ (AWNetworkReachabilityWrapper *) reachabilityWithHostname:(NSString *)host - callbackDelegate:(id)delegate; - -- (id)initWithHostname:(NSString *)host - callbackDelegate:(id)delegate; - -- (BOOL)scheduleInCurrentRunLoop; - -- (BOOL)unscheduleFromCurrentRunLoop; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AWNetworkReachabilityWrapper.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AWNetworkReachabilityWrapper.m deleted file mode 100644 index 3b04c1122..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AWNetworkReachabilityWrapper.m +++ /dev/null @@ -1,172 +0,0 @@ -/* - - AWNetworkReachabilityWrapper.m - - Copyright 2010 Google 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 "AWNetworkReachabilityWrapper.h" -#import "AdWhirlLog.h" - -static void reachabilityCallback(SCNetworkReachabilityRef reachability, - SCNetworkReachabilityFlags flags, - void* data); - -@implementation AWNetworkReachabilityWrapper - -@synthesize hostname = hostname_; -@synthesize delegate = delegate_; - -+ (AWNetworkReachabilityWrapper *) reachabilityWithHostname:(NSString *)host - callbackDelegate:(id)delegate { - return [[[AWNetworkReachabilityWrapper alloc] initWithHostname:host - callbackDelegate:delegate] - autorelease]; -} - -- (id)initWithHostname:(NSString *)host - callbackDelegate:(id)delegate { - self = [super init]; - if (self != nil) { - reachability_ = SCNetworkReachabilityCreateWithName(NULL, - [host UTF8String]); - if (reachability_ == nil) { - AWLogError(@"Error creating SCNetworkReachability"); - [self release]; - return nil; - } - hostname_ = [[NSString alloc] initWithString:host]; - self.delegate = delegate; - - // set callback - SCNetworkReachabilityContext context = {0, self, NULL, NULL, NULL}; - if (!SCNetworkReachabilitySetCallback(reachability_, - &reachabilityCallback, - &context)) { - AWLogError(@"Error setting SCNetworkReachability callback"); - [self release]; - return nil; - } - } - return self; -} - -- (BOOL)scheduleInCurrentRunLoop { - return SCNetworkReachabilityScheduleWithRunLoop(reachability_, - CFRunLoopGetCurrent(), - kCFRunLoopDefaultMode); -} - -- (BOOL)unscheduleFromCurrentRunLoop { - return SCNetworkReachabilityUnscheduleFromRunLoop(reachability_, - CFRunLoopGetCurrent(), - kCFRunLoopDefaultMode); -} - -- (void)dealloc { - [self unscheduleFromCurrentRunLoop]; - if (reachability_ != NULL) CFRelease(reachability_); - [hostname_ release]; - [super dealloc]; -} - -#pragma mark callback methods - -static void printReachabilityFlags(SCNetworkReachabilityFlags flags) -{ - AWLogDebug(@"Reachability flag status: %c%c%c%c%c%c%c%c%c", - (flags & kSCNetworkReachabilityFlagsTransientConnection) ? 't' : '-', - (flags & kSCNetworkReachabilityFlagsReachable) ? 'R' : '-', - (flags & kSCNetworkReachabilityFlagsConnectionRequired) ? 'c' : '-', - (flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) ? 'C' : '-', - (flags & kSCNetworkReachabilityFlagsInterventionRequired) ? 'i' : '-', -#ifdef kSCNetworkReachabilityFlagsConnectionOnDemand - (flags & kSCNetworkReachabilityFlagsConnectionOnDemand) ? 'D' : '-', -#else - '-', -#endif - (flags & kSCNetworkReachabilityFlagsIsLocalAddress) ? 'l' : '-', - (flags & kSCNetworkReachabilityFlagsIsDirect) ? 'd' : '-', - (flags & kSCNetworkReachabilityFlagsIsWWAN) ? 'W' : '-' - ); -} - -- (void)notifyDelegateNotReachable { - if (self.delegate != nil && [self.delegate respondsToSelector: - @selector(reachabilityNotReachable:)]) { - [self.delegate reachabilityNotReachable:self]; - } -} - -- (void)gotCallback:(SCNetworkReachabilityRef)reachability - flags:(SCNetworkReachabilityFlags)flags { - if (reachability != reachability_) { - AWLogError(@"Unrelated reachability calling back to this object"); - return; - } - - printReachabilityFlags(flags); - if ((flags & kSCNetworkReachabilityFlagsReachable) == 0) { - [self notifyDelegateNotReachable]; - return; - } - - // even if the Reachable flag is on it may not be true for immediate use - BOOL reachable = NO; - - if ((flags & kSCNetworkReachabilityFlagsConnectionRequired) == 0) { - // no connection required, we should be able to connect, via WiFi presumably - reachable = YES; - } - - if (( -#ifdef kSCNetworkReachabilityFlagsConnectionOnDemand - (flags & kSCNetworkReachabilityFlagsConnectionOnDemand) != 0 || -#endif - (flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) != 0) - && (flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0) { - // The connection is on-demand or on-traffic and no user intervention is - // needed, likely able to connect - reachable = YES; - } - - if ((flags & kSCNetworkReachabilityFlagsIsWWAN) - == kSCNetworkReachabilityFlagsIsWWAN) { - // WWAN connections are available, likely able to connect barring network - // outage... - reachable = YES; - } - - if (!reachable) { - [self notifyDelegateNotReachable]; - return; - } - - // notify delegate that host just got reachable - if (self.delegate != nil && [self.delegate respondsToSelector: - @selector(reachabilityBecameReachable:)]) { - [self.delegate reachabilityBecameReachable:self]; - } -} - -void reachabilityCallback(SCNetworkReachabilityRef reachability, - SCNetworkReachabilityFlags flags, - void* data) { - AWNetworkReachabilityWrapper *wrapper = (AWNetworkReachabilityWrapper *)data; - [wrapper gotCallback:reachability flags:flags]; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkAdapter+Helpers.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkAdapter+Helpers.h deleted file mode 100644 index de690e999..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkAdapter+Helpers.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - - AdWhirlAdNetworkAdapter+Helpers.h - - Copyright 2009 AdMob, 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 "AdWhirlAdNetworkAdapter.h" - -@interface AdWhirlAdNetworkAdapter (Helpers) - -/** - * Subclasses call this to notify delegate that there's going to be a full - * screen modal (usually after tap). - */ -- (void)helperNotifyDelegateOfFullScreenModal; - -/** - * Subclasses call this to notify delegate that the full screen modal has - * been dismissed. - */ -- (void)helperNotifyDelegateOfFullScreenModalDismissal; - -/* - * Subclasses call to get various configs to use, from the AdWhirlDelegate or - * config from server. - */ -- (UIColor *)helperBackgroundColorToUse; -- (UIColor *)helperTextColorToUse; -- (UIColor *)helperSecondaryTextColorToUse; -- (NSInteger)helperCalculateAge; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkAdapter+Helpers.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkAdapter+Helpers.m deleted file mode 100644 index dda958b82..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkAdapter+Helpers.m +++ /dev/null @@ -1,93 +0,0 @@ -/* - - AdWhirlAdNetworkAdapter+Helpers.m - - Copyright 2009 AdMob, 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 "AdWhirlAdNetworkAdapter+Helpers.h" -#import "AdWhirlView.h" -#import "AdWhirlView+.h" -#import "AdWhirlConfig.h" -#import "AdWhirlAdNetworkConfig.h" - -@implementation AdWhirlAdNetworkAdapter (Helpers) - -- (void)helperNotifyDelegateOfFullScreenModal { - // don't request new ad when modal view is on - adWhirlView.showingModalView = YES; - if ([adWhirlDelegate respondsToSelector:@selector(adWhirlWillPresentFullScreenModal)]) { - [adWhirlDelegate adWhirlWillPresentFullScreenModal]; - } -} - -- (void)helperNotifyDelegateOfFullScreenModalDismissal { - if ([adWhirlDelegate respondsToSelector:@selector(adWhirlDidDismissFullScreenModal)]) { - [adWhirlDelegate adWhirlDidDismissFullScreenModal]; - } - adWhirlView.showingModalView = NO; -} - -- (UIColor *)helperBackgroundColorToUse { - if ([adWhirlDelegate respondsToSelector:@selector(adWhirlAdBackgroundColor)]) { - UIColor *color = [adWhirlDelegate adWhirlAdBackgroundColor]; - if (color != nil) return color; - } - if ([adWhirlDelegate respondsToSelector:@selector(backgroundColor)]) { - UIColor *color = [adWhirlDelegate backgroundColor]; - if (color != nil) return color; - } - return adWhirlConfig.backgroundColor; -} - -- (UIColor *)helperTextColorToUse { - if ([adWhirlDelegate respondsToSelector:@selector(adWhirlTextColor)]) { - UIColor *color = [adWhirlDelegate adWhirlTextColor]; - if (color != nil) return color; - } - if ([adWhirlDelegate respondsToSelector:@selector(textColor)]) { - UIColor *color = [adWhirlDelegate textColor]; - if (color != nil) return color; - } - return adWhirlConfig.textColor; -} - -- (UIColor *)helperSecondaryTextColorToUse { - if ([adWhirlDelegate respondsToSelector:@selector(adWhirlSecondaryTextColor)]) { - UIColor *color = [adWhirlDelegate adWhirlSecondaryTextColor]; - if (color != nil) return color; - } - return nil; -} - -- (NSInteger)helperCalculateAge { - NSDate *birth = [adWhirlDelegate dateOfBirth]; - if (birth == nil) { - return -1; - } - NSDate *today = [[NSDate alloc] init]; - NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; - NSDateComponents *components = [gregorian components:NSYearCalendarUnit - fromDate:birth - toDate:today - options:0]; - NSInteger years = [components year]; - [gregorian release]; - [today release]; - return years; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkAdapter.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkAdapter.m deleted file mode 100644 index 1634bc8b6..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkAdapter.m +++ /dev/null @@ -1,84 +0,0 @@ -/* - - AdWhirlAdNetworkAdapter.m - - Copyright 2009 AdMob, 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 "AdWhirlAdNetworkAdapter.h" -#import "AdWhirlView.h" -#import "AdWhirlConfig.h" -#import "AdWhirlAdNetworkConfig.h" -#import "AdWhirlLog.h" -#import "AdWhirlAdNetworkRegistry.h" - -@implementation AdWhirlAdNetworkAdapter - -@synthesize adWhirlDelegate; -@synthesize adWhirlView; -@synthesize adWhirlConfig; -@synthesize networkConfig; -@synthesize adNetworkView; - -- (id)initWithAdWhirlDelegate:(id)delegate - view:(AdWhirlView *)view - config:(AdWhirlConfig *)config - networkConfig:(AdWhirlAdNetworkConfig *)netConf { - self = [super init]; - if (self != nil) { - self.adWhirlDelegate = delegate; - self.adWhirlView = view; - self.adWhirlConfig = config; - self.networkConfig = netConf; - } - return self; -} - -- (void)getAd { - AWLogCrit(@"Subclass of AdWhirlAdNetworkAdapter must implement -getAd."); - [self doesNotRecognizeSelector:_cmd]; -} - -- (void)stopBeingDelegate { - AWLogCrit(@"Subclass of AdWhirlAdNetworkAdapter must implement -stopBeingDelegate."); - [self doesNotRecognizeSelector:_cmd]; -} - -- (BOOL)shouldSendExMetric { - return YES; -} - -- (void)rotateToOrientation:(UIInterfaceOrientation)orientation { - // do nothing by default. Subclasses implement specific handling. - AWLogDebug(@"rotate to orientation %d called for adapter %@", - orientation, NSStringFromClass([self class])); -} - -- (BOOL)isBannerAnimationOK:(AWBannerAnimationType)animType { - return YES; -} - -- (void)dealloc { - [self stopBeingDelegate]; - adWhirlDelegate = nil; - adWhirlView = nil; - [adWhirlConfig release], adWhirlConfig = nil; - [networkConfig release], networkConfig = nil; - [adNetworkView release], adNetworkView = nil; - [super dealloc]; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkConfig.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkConfig.h deleted file mode 100644 index 5f2c0ddff..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkConfig.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - - AdNetwork.h - - Copyright 2009 AdMob, 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 -#import "AdWhirlDelegateProtocol.h" - -#define AWAdNetworkConfigKeyType @"type" -#define AWAdNetworkConfigKeyNID @"nid" -#define AWAdNetworkConfigKeyName @"nname" -#define AWAdNetworkConfigKeyWeight @"weight" -#define AWAdNetworkConfigKeyPriority @"priority" -#define AWAdNetworkConfigKeyCred @"key" - -@class AdWhirlError; -@class AdWhirlAdNetworkRegistry; - -@interface AdWhirlAdNetworkConfig : NSObject { - NSInteger networkType; - NSString *nid; - NSString *networkName; - double trafficPercentage; - NSInteger priority; - NSDictionary *credentials; - Class adapterClass; -} - -- (id)initWithDictionary:(NSDictionary *)adNetConfigDict - adNetworkRegistry:(AdWhirlAdNetworkRegistry *)registry - error:(AdWhirlError **)error; - -@property (nonatomic,readonly) NSInteger networkType; -@property (nonatomic,readonly) NSString *nid; -@property (nonatomic,readonly) NSString *networkName; -@property (nonatomic,readonly) double trafficPercentage; -@property (nonatomic,readonly) NSInteger priority; -@property (nonatomic,readonly) NSDictionary *credentials; -@property (nonatomic,readonly) NSString *pubId; -@property (nonatomic,readonly) Class adapterClass; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkConfig.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkConfig.m deleted file mode 100644 index cece08ab1..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkConfig.m +++ /dev/null @@ -1,169 +0,0 @@ -/* - - AdNetwork.m - - Copyright 2009 AdMob, 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 "AdWhirlAdNetworkConfig.h" -#import "AdWhirlConfig.h" -#import "AdWhirlAdNetworkRegistry.h" -#import "AdWhirlLog.h" -#import "AdWhirlError.h" -#import "AdWhirlClassWrapper.h" - -#define kAdWhirlPubIdKey @"pubid" - -@implementation AdWhirlAdNetworkConfig - -@synthesize networkType; -@synthesize nid; -@synthesize networkName; -@synthesize trafficPercentage; -@synthesize priority; -@synthesize credentials; -@synthesize adapterClass; - -- (id)initWithDictionary:(NSDictionary *)adNetConfigDict - adNetworkRegistry:(AdWhirlAdNetworkRegistry *)registry - error:(AdWhirlError **)error { - self = [super init]; - - if (self != nil) { - NSInteger temp; - id ntype = [adNetConfigDict objectForKey:AWAdNetworkConfigKeyType]; - id netId = [adNetConfigDict objectForKey:AWAdNetworkConfigKeyNID]; - id netName = [adNetConfigDict objectForKey:AWAdNetworkConfigKeyName]; - id weight = [adNetConfigDict objectForKey:AWAdNetworkConfigKeyWeight]; - id pri = [adNetConfigDict objectForKey:AWAdNetworkConfigKeyPriority]; - - if (ntype == nil || netId == nil || netName == nil || pri == nil) { - NSString *errorMsg = - @"Ad network config has no network type, network id, network name, or priority"; - if (error != nil) { - *error = [AdWhirlError errorWithCode:AdWhirlConfigDataError - description:errorMsg]; - } - else { - AWLogWarn(errorMsg); - } - - [self release]; - return nil; - } - - if (awIntVal(&temp, ntype)) { - networkType = temp; - } - if ([netId isKindOfClass:[NSString class]]) { - nid = [[NSString alloc] initWithString:netId]; - } - if ([netName isKindOfClass:[NSString class]]) { - networkName = [[NSString alloc] initWithString:netName]; - } - - double tempDouble; - if (weight == nil) { - trafficPercentage = 0.0; - } - else if (awDoubleVal(&tempDouble, weight)) { - trafficPercentage = tempDouble; - } - - if (awIntVal(&temp, pri)) { - priority = temp; - } - - if (networkType == 0 || nid == nil || networkName == nil || priority == 0) { - NSString *errorMsg = - @"Ad network config has invalid network type, network id, network name or priority"; - if (error != nil) { - *error = [AdWhirlError errorWithCode:AdWhirlConfigDataError - description:errorMsg]; - } - else { - AWLogWarn(errorMsg); - } - - [self release]; - return nil; - } - - id cred = [adNetConfigDict objectForKey:AWAdNetworkConfigKeyCred]; - if (cred == nil) { - credentials = nil; - } - else { - if ([cred isKindOfClass:[NSDictionary class]]) { - credentials = [[NSDictionary alloc] initWithDictionary:cred copyItems:YES]; - } - else if ([cred isKindOfClass:[NSString class]]) { - credentials = [[NSDictionary alloc] initWithObjectsAndKeys: - [NSString stringWithString:cred], kAdWhirlPubIdKey, - nil]; - } - } - - adapterClass = [registry adapterClassFor:networkType].theClass; - if (adapterClass == nil) { - NSString *errorMsg = - [NSString stringWithFormat:@"Ad network type %d not supported, no adapter found", - networkType]; - if (error != nil) { - *error = [AdWhirlError errorWithCode:AdWhirlConfigDataError - description:errorMsg]; - } - else { - AWLogWarn(errorMsg); - } - - [self release]; - return nil; - } - } - - return self; -} - -- (NSString *)pubId { - if (credentials == nil) return nil; - return [credentials objectForKey:kAdWhirlPubIdKey]; -} - -- (NSString *)description { - NSString *creds = [self pubId]; - if (creds == nil) { - creds = @"{"; - for (NSString *k in [credentials keyEnumerator]) { - creds = [creds stringByAppendingFormat:@"%@:%@ ", - k, [credentials objectForKey:k]]; - } - creds = [creds stringByAppendingString:@"}"]; - } - return [NSString stringWithFormat: - @"name:%@ type:%d nid:%@ weight:%lf priority:%d creds:%@", - networkName, networkType, nid, trafficPercentage, priority, creds]; -} - -- (void)dealloc { - [nid release], nid = nil; - [networkName release], networkName = nil; - [credentials release], credentials = nil; - - [super dealloc]; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkRegistry.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkRegistry.h deleted file mode 100644 index 857714e31..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkRegistry.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - - AdWhirlAdNetworkRegistry.h - - Copyright 2009 AdMob, 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 - -@class AdWhirlAdNetworkAdapter; -@class AdWhirlClassWrapper; - -@interface AdWhirlAdNetworkRegistry : NSObject { - NSMutableDictionary *adapterDict; -} - -+ (AdWhirlAdNetworkRegistry *)sharedRegistry; -- (void)registerClass:(Class)adapterClass; -- (AdWhirlClassWrapper *)adapterClassFor:(NSInteger)adNetworkType; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkRegistry.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkRegistry.m deleted file mode 100644 index a48fab59a..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdNetworkRegistry.m +++ /dev/null @@ -1,64 +0,0 @@ -/* - - AdWhirlAdNetworkRegistry.m - - Copyright 2009 AdMob, 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 "AdWhirlAdNetworkRegistry.h" -#import "AdWhirlAdNetworkAdapter.h" -#import "AdWhirlClassWrapper.h" - -@implementation AdWhirlAdNetworkRegistry - -+ (AdWhirlAdNetworkRegistry *)sharedRegistry { - static AdWhirlAdNetworkRegistry *registry = nil; - if (registry == nil) { - registry = [[AdWhirlAdNetworkRegistry alloc] init]; - } - return registry; -} - -- (id)init { - self = [super init]; - if (self != nil) { - adapterDict = [[NSMutableDictionary alloc] init]; - } - return self; -} - -- (void)registerClass:(Class)adapterClass { - // have to do all these to avoid compiler warnings... - NSInteger (*netTypeMethod)(id, SEL); - netTypeMethod = (NSInteger (*)(id, SEL))[adapterClass methodForSelector:@selector(networkType)]; - NSInteger netType = netTypeMethod(adapterClass, @selector(networkType)); - NSNumber *key = [[NSNumber alloc] initWithInteger:netType]; - AdWhirlClassWrapper *wrapper = [[AdWhirlClassWrapper alloc] initWithClass:adapterClass]; - [adapterDict setObject:wrapper forKey:key]; - [key release]; - [wrapper release]; -} - -- (AdWhirlClassWrapper *)adapterClassFor:(NSInteger)adNetworkType { - return [adapterDict objectForKey:[NSNumber numberWithInteger:adNetworkType]]; -} - -- (void)dealloc { - [adapterDict release], adapterDict = nil; - [super dealloc]; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdapterCustom.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdapterCustom.h deleted file mode 100644 index f2922233c..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdapterCustom.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - - AdWhirlAdapterCustom.h - - Copyright 2009 AdMob, 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 "AdWhirlAdNetworkAdapter.h" -#import "AdWhirlCustomAdView.h" -#import "AdWhirlWebBrowserController.h" - -@interface AdWhirlAdapterCustom : AdWhirlAdNetworkAdapter -{ - BOOL requesting; - CLLocationManager *locationManager; - NSURLConnection *adConnection; - NSMutableData *adData; - NSURLConnection *imageConnection; - NSMutableData *imageData; - AdWhirlCustomAdView *adView; - AdWhirlWebBrowserController *webBrowserController; -} - -+ (AdWhirlAdNetworkType)networkType; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdapterCustom.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdapterCustom.m deleted file mode 100644 index 0eda0ad55..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdapterCustom.m +++ /dev/null @@ -1,423 +0,0 @@ -/* - - AdWhirlAdapterCustom.m - - Copyright 2009 AdMob, 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 "AdWhirlAdapterCustom.h" -#import "AdWhirlView.h" -#import "AdWhirlLog.h" -#import "AdWhirlConfig.h" -#import "AdWhirlAdNetworkConfig.h" -#import "AdWhirlError.h" -#import "CJSONDeserializer.h" -#import "AdWhirlCustomAdView.h" -#import "AdWhirlAdNetworkAdapter+Helpers.h" -#import "AdWhirlAdNetworkRegistry.h" - -@interface AdWhirlAdapterCustom () - -- (BOOL)parseAdData:(NSData *)data error:(NSError **)error; - -@property (nonatomic,readonly) CLLocationManager *locationManager; -@property (nonatomic,retain) NSURLConnection *adConnection; -@property (nonatomic,retain) NSURLConnection *imageConnection; -@property (nonatomic,retain) AdWhirlCustomAdView *adView; -@property (nonatomic,retain) AdWhirlWebBrowserController *webBrowserController; -@property (nonatomic, assign) CGFloat scale; - -@end - - -@implementation AdWhirlAdapterCustom - -@synthesize adConnection; -@synthesize imageConnection; -@synthesize adView; -@synthesize webBrowserController; -@synthesize scale; - -+ (AdWhirlAdNetworkType)networkType { - return AdWhirlAdNetworkTypeCustom; -} - -+ (void)load { - [[AdWhirlAdNetworkRegistry sharedRegistry] registerClass:self]; -} - -- (id)initWithAdWhirlDelegate:(id)delegate - view:(AdWhirlView *)view - config:(AdWhirlConfig *)config - networkConfig:(AdWhirlAdNetworkConfig *)netConf { - self = [super initWithAdWhirlDelegate:delegate - view:view - config:config - networkConfig:netConf]; - if (self != nil) { - adData = [[NSMutableData alloc] init]; - imageData = [[NSMutableData alloc] init]; - } - return self; -} - -- (BOOL)shouldSendExMetric { - return NO; // since we are getting the ad from the AdWhirl server anyway, no - // need to send extra metric ping to the same server. -} - -- (void)getAd { - @synchronized(self) { - if (requesting) return; - requesting = YES; - } - - NSURL *adRequestBaseURL = nil; - if ([self.adWhirlDelegate respondsToSelector:@selector(adWhirlCustomAdURL)]) { - adRequestBaseURL = [self.adWhirlDelegate adWhirlCustomAdURL]; - } - if (adRequestBaseURL == nil) { - adRequestBaseURL = [NSURL URLWithString:kAdWhirlDefaultCustomAdURL]; - } - NSString *query; - if (self.adWhirlConfig.locationOn) { - AWLogDebug(@"Allow location access in custom ad"); - CLLocation *location; - if ([self.adWhirlDelegate respondsToSelector:@selector(locationInfo)]) { - location = [self.adWhirlDelegate locationInfo]; - } - else { - location = [self.locationManager location]; - } - NSString *locationStr = [NSString stringWithFormat:@"%lf,%lf", - location.coordinate.latitude, - location.coordinate.longitude]; - query = [NSString stringWithFormat:@"?appver=%d&country_code=%@&appid=%@&nid=%@&location=%@&location_timestamp=%lf&client=1", - kAdWhirlAppVer, - [[NSLocale currentLocale] localeIdentifier], - self.adWhirlConfig.appKey, - self.networkConfig.nid, - locationStr, - [[NSDate date] timeIntervalSince1970]]; - } - else { - AWLogDebug(@"Do not allow location access in custom ad"); - query = [NSString stringWithFormat:@"?appver=%d&country_code=%@&appid=%@&nid=%@&client=1", - kAdWhirlAppVer, - [[NSLocale currentLocale] localeIdentifier], - self.adWhirlConfig.appKey, - self.networkConfig.nid]; - } - NSURL *adRequestURL = [NSURL URLWithString:query relativeToURL:adRequestBaseURL]; - AWLogDebug(@"Requesting custom ad at %@", adRequestURL); - NSURLRequest *adRequest = [NSURLRequest requestWithURL:adRequestURL]; - NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:adRequest - delegate:self]; - self.adConnection = conn; - [conn release]; -} - -- (void)stopBeingDelegate { - AdWhirlCustomAdView *theAdView = (AdWhirlCustomAdView *)self.adNetworkView; - if (theAdView != nil) { - theAdView.delegate = nil; - } -} - -- (void)dealloc { - [locationManager release], locationManager = nil; - [adConnection release], adConnection = nil; - [adData release], adData = nil; - [imageConnection release], imageConnection = nil; - [imageData release], imageData = nil; - [adView release], adView = nil; - [webBrowserController release], webBrowserController = nil; - [super dealloc]; -} - - -- (CLLocationManager *)locationManager { - if (locationManager == nil) { - locationManager = [[CLLocationManager alloc] init]; - } - return locationManager; -} - -- (BOOL)parseEnums:(int *)val - adInfo:(NSDictionary*)info - minVal:(int)min - maxVal:(int)max - fieldName:(NSString *)name - error:(NSError **)error { - NSString *str = [info objectForKey:name]; - if (str == nil) { - if (error != nil) - *error = [AdWhirlError errorWithCode:AdWhirlCustomAdDataError - description:[NSString stringWithFormat: - @"Custom ad data has no '%@' field", name]]; - return NO; - } - int intVal = [str intValue]; - if (intVal <= min || intVal >= max) { - if (error != nil) - *error = [AdWhirlError errorWithCode:AdWhirlCustomAdDataError - description:[NSString stringWithFormat: - @"Custom ad: Invalid value for %@ - %d", name, intVal]]; - return NO; - } - *val = intVal; - return YES; -} - -- (BOOL)parseAdData:(NSData *)data error:(NSError **)error { - NSError *jsonError = nil; - id parsed = [[CJSONDeserializer deserializer] deserialize:data error:&jsonError]; - if (parsed == nil) { - if (error != nil) - *error = [AdWhirlError errorWithCode:AdWhirlCustomAdParseError - description:@"Error parsing custom ad JSON from server" - underlyingError:jsonError]; - return NO; - } - if ([parsed isKindOfClass:[NSDictionary class]]) { - NSDictionary *adInfo = parsed; - - // gather up and validate ad info - NSString *text = [adInfo objectForKey:@"ad_text"]; - NSString *redirectURLStr = [adInfo objectForKey:@"redirect_url"]; - - int adTypeInt; - if (![self parseEnums:&adTypeInt - adInfo:adInfo - minVal:AWCustomAdTypeMIN - maxVal:AWCustomAdTypeMAX - fieldName:@"ad_type" - error:error]) { - return NO; - } - AWCustomAdType adType = adTypeInt; - - int launchTypeInt; - if (![self parseEnums:&launchTypeInt - adInfo:adInfo - minVal:AWCustomAdLaunchTypeMIN - maxVal:AWCustomAdLaunchTypeMAX - fieldName:@"launch_type" - error:error]) { - return NO; - } - AWCustomAdLaunchType launchType = launchTypeInt; - - int animTypeInt; - if (![self parseEnums:&animTypeInt - adInfo:adInfo - minVal:AWCustomAdWebViewAnimTypeMIN - maxVal:AWCustomAdWebViewAnimTypeMAX - fieldName:@"webview_animation_type" - error:error]) { - return NO; - } - AWCustomAdWebViewAnimType animType = animTypeInt; - - NSURL *redirectURL = nil; - if (redirectURLStr == nil) { - AWLogWarn(@"No redirect URL for custom ad"); - } - else { - redirectURL = [[NSURL alloc] initWithString:redirectURLStr]; - if (!redirectURL) - AWLogWarn(@"Custom ad: Malformed redirect URL string %@", redirectURLStr); - } - - NSString *clickMetricsURLStr = [adInfo objectForKey:@"metrics_url"]; - NSURL *clickMetricsURL = nil; - if (clickMetricsURLStr == nil) { - AWLogWarn(@"No click metric URL for custom ad"); - } - else { - clickMetricsURL = [[NSURL alloc] initWithString:clickMetricsURLStr]; - if (!clickMetricsURL) - AWLogWarn(@"Malformed click metrics URL string %@", clickMetricsURLStr); - } - - AWLogDebug(@"Got custom ad '%@' %@ %@ %d %d %d", text, redirectURL, - clickMetricsURL, adType, launchType, animType); - - self.adView = [[AdWhirlCustomAdView alloc] initWithDelegate:self - text:text - redirectURL:redirectURL - clickMetricsURL:clickMetricsURL - adType:adType - launchType:launchType - animType:animType - backgroundColor:[self helperBackgroundColorToUse] - textColor:[self helperTextColorToUse]]; - [self.adView release]; - self.adNetworkView = adView; - [redirectURL release]; - [clickMetricsURL release]; - if (adView == nil) { - if (error != nil) - *error = [AdWhirlError errorWithCode:AdWhirlCustomAdDataError - description:@"Error initializing AdWhirl custom ad view"]; - return NO; - } - - // fetch image, set scale - self.scale = [[UIScreen mainScreen] respondsToSelector:@selector(scale)] ? [[UIScreen mainScreen] scale] : 1.0; - NSString *imageURL; - if (self.scale == 2.0 && adType == AWCustomAdTypeBanner) { - imageURL = [adInfo objectForKey:@"img_url_640x100"]; - if (imageURL == nil || [imageURL length] == 0) { - self.scale = 1.0f; - imageURL = [adInfo objectForKey:@"img_url"]; - } - } else { - imageURL = [adInfo objectForKey:@"img_url"]; - } - AWLogDebug(@"Request custom ad image at %@", imageURL); - NSURLRequest *imageRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:imageURL]]; - NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:imageRequest - delegate:self]; - self.imageConnection = conn; - [conn release]; - } - else { - if (error != nil) - *error = [AdWhirlError errorWithCode:AdWhirlCustomAdDataError - description:@"Expected top-level dictionary in custom ad data"]; - return NO; - } - return YES; -} - - -#pragma mark NSURLConnection delegate methods. - -- (void)connection:(NSURLConnection *)conn didReceiveResponse:(NSURLResponse *)response { - if (conn == adConnection) { - [adData setLength:0]; - } - else if (conn == imageConnection) { - [imageData setLength:0]; - } -} - -- (void)connection:(NSURLConnection *)conn didFailWithError:(NSError *)error { - if (conn == adConnection) { - [self.adWhirlView adapter:self didFailAd:[AdWhirlError errorWithCode:AdWhirlCustomAdConnectionError - description:@"Error connecting to custom ad server" - underlyingError:error]]; - requesting = NO; - } - else if (conn == imageConnection) { - [self.adWhirlView adapter:self didFailAd:[AdWhirlError errorWithCode:AdWhirlCustomAdConnectionError - description:@"Error connecting to custom ad server to fetch image" - underlyingError:error]]; - requesting = NO; - } -} - -- (void)connectionDidFinishLoading:(NSURLConnection *)conn { - if (conn == adConnection) { - NSError *error = nil; - if (![self parseAdData:adData error:&error]) { - [self.adWhirlView adapter:self didFailAd:error]; - requesting = NO; - return; - } - } - else if (conn == imageConnection) { - UIImage *image = [[UIImage alloc] initWithData:imageData]; - if (self.scale == 2.0) { - UIImage *img = [[UIImage alloc] initWithCGImage:image.CGImage scale:2.0 orientation:image.imageOrientation]; - [image release]; - image = img; - } - if (image == nil) { - [self.adWhirlView adapter:self didFailAd:[AdWhirlError errorWithCode:AdWhirlCustomAdImageError - description:@"Cannot initialize custom ad image from data"]]; - requesting = NO; - return; - } - adView.image = image; - [adView setNeedsDisplay]; - [image release]; - requesting = NO; - [self.adWhirlView adapter:self didReceiveAdView:self.adView]; - } -} - -- (void)connection:(NSURLConnection *)conn didReceiveData:(NSData *)data { - if (conn == adConnection) { - [adData appendData:data]; - } - else if (conn == imageConnection) { - [imageData appendData:data]; - } -} - - -#pragma mark AdWhirlCustomAdViewDelegate methods - -- (void)adTapped:(AdWhirlCustomAdView *)ad { - if (ad != adView) return; - if (ad.clickMetricsURL != nil) { - NSURLRequest *metRequest = [NSURLRequest requestWithURL:ad.clickMetricsURL]; - [NSURLConnection connectionWithRequest:metRequest - delegate:nil]; // fire and forget - AWLogDebug(@"Sent custom ad click ping to %@", ad.clickMetricsURL); - } - if (ad.redirectURL == nil) { - AWLogError(@"Custom ad redirect URL is nil"); - return; - } - switch (ad.launchType) { - case AWCustomAdLaunchTypeSafari: - AWLogDebug(@"Opening URL '%@' for custom ad", ad.redirectURL); - if ([[UIApplication sharedApplication] openURL:ad.redirectURL] == NO) { - AWLogError(@"Cannot open URL '%@' for custom ad", ad.redirectURL); - } - break; - case AWCustomAdLaunchTypeCanvas: - if (self.webBrowserController == nil) { - AdWhirlWebBrowserController *ctrlr = [[AdWhirlWebBrowserController alloc] init]; - self.webBrowserController = ctrlr; - [ctrlr release]; - } - webBrowserController.delegate = self; - [webBrowserController presentWithController:[self.adWhirlDelegate viewControllerForPresentingModalView] - transition:ad.animType]; - [self helperNotifyDelegateOfFullScreenModal]; - [webBrowserController loadURL:ad.redirectURL]; - break; - default: - AWLogError(@"Custom ad: Unsupported launch type %d", ad.launchType); - break; - } -} - - -#pragma mark AdWhirlWebBrowserControllerDelegate methods - -- (void)webBrowserClosed:(AdWhirlWebBrowserController *)controller { - if (controller != webBrowserController) return; - self.webBrowserController = nil; // don't keep around to save memory - [self helperNotifyDelegateOfFullScreenModalDismissal]; -} - -@end - diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdapterEvent.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdapterEvent.h deleted file mode 100644 index 0960978bd..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdapterEvent.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - - AdWhirlAdapterEvent.h - - Copyright 2009 AdMob, 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 "AdWhirlAdNetworkAdapter.h" - -@interface AdWhirlAdapterEvent : AdWhirlAdNetworkAdapter { - -} - -+ (AdWhirlAdNetworkType)networkType; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdapterEvent.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdapterEvent.m deleted file mode 100644 index 4069e77b4..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdapterEvent.m +++ /dev/null @@ -1,69 +0,0 @@ -/* - - AdWhirlAdapterEvent.m - - Copyright 2009 AdMob, 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 "AdWhirlAdapterEvent.h" -#import "AdWhirlView.h" -#import "AdWhirlLog.h" -#import "AdWhirlAdNetworkAdapter+Helpers.h" -#import "AdWhirlAdNetworkRegistry.h" -#import "AdWhirlAdNetworkConfig.h" - -@implementation AdWhirlAdapterEvent - -+ (AdWhirlAdNetworkType)networkType { - return AdWhirlAdNetworkTypeEvent; -} - -+ (void)load { - [[AdWhirlAdNetworkRegistry sharedRegistry] registerClass:self]; -} - -- (void)getAd { - NSArray *eventKeys = [networkConfig.pubId componentsSeparatedByString:@"|;|"]; - NSString *eventSelectorStr = [eventKeys objectAtIndex:1]; - SEL eventSelector = NSSelectorFromString(eventSelectorStr); - - if ([adWhirlDelegate respondsToSelector:eventSelector]) { - [adWhirlDelegate performSelector:eventSelector]; - [adWhirlView adapterDidFinishAdRequest:self]; - } - else { - NSString *eventSelectorColonStr = [NSString stringWithFormat:@"%@:", eventSelectorStr]; - SEL eventSelectorColon = NSSelectorFromString(eventSelectorColonStr); - if ([adWhirlDelegate respondsToSelector:eventSelectorColon]) { - [adWhirlDelegate performSelector:eventSelectorColon withObject:adWhirlView]; - [adWhirlView adapterDidFinishAdRequest:self]; - } - else { - AWLogWarn(@"Delegate does not implement function %@ nor %@", eventSelectorStr, eventSelectorColonStr); - [adWhirlView adapter:self didFailAd:nil]; - } - } -} - -- (void)stopBeingDelegate { - // Nothing to do -} - -- (void)dealloc { - [super dealloc]; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdapterGeneric.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdapterGeneric.h deleted file mode 100644 index d7dae4d62..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdapterGeneric.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - - AdWhirlAdapterGeneric.h - - Copyright 2009 AdMob, 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 "AdWhirlAdNetworkAdapter.h" - -@interface AdWhirlAdapterGeneric : AdWhirlAdNetworkAdapter { - -} - -+ (AdWhirlAdNetworkType)networkType; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdapterGeneric.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdapterGeneric.m deleted file mode 100644 index 0fffc0166..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlAdapterGeneric.m +++ /dev/null @@ -1,56 +0,0 @@ -/* - - AdWhirlAdapterGeneric.m - - Copyright 2009 AdMob, 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 "AdWhirlAdapterGeneric.h" -#import "AdWhirlView.h" -#import "AdWhirlLog.h" -#import "AdWhirlAdNetworkAdapter+Helpers.h" -#import "AdWhirlAdNetworkRegistry.h" - -@implementation AdWhirlAdapterGeneric - -+ (AdWhirlAdNetworkType)networkType { - return AdWhirlAdNetworkTypeGeneric; -} - -+ (void)load { - [[AdWhirlAdNetworkRegistry sharedRegistry] registerClass:self]; -} - -- (void)getAd { - if ([adWhirlDelegate respondsToSelector:@selector(adWhirlReceivedRequestForDeveloperToFufill:)]) { - [adWhirlDelegate adWhirlReceivedRequestForDeveloperToFufill:adWhirlView]; - [adWhirlView adapterDidFinishAdRequest:self]; - } - else { - AWLogWarn(@"Delegate does not implement adWhirlReceivedRequestForDeveloperToFufill"); - [adWhirlView adapter:self didFailAd:nil]; - } -} - -- (void)stopBeingDelegate { - // nothing to do -} - -- (void)dealloc { - [super dealloc]; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlClassWrapper.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlClassWrapper.h deleted file mode 100644 index d3740a69d..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlClassWrapper.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - - AdWhirlClassWrapper.h - - Copyright 2010 Google 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 - -@interface AdWhirlClassWrapper : NSObject { - Class theClass; -} - -- (id)initWithClass:(Class)c; - -@property (nonatomic, readonly) Class theClass; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlClassWrapper.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlClassWrapper.m deleted file mode 100644 index b22822028..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlClassWrapper.m +++ /dev/null @@ -1,35 +0,0 @@ -/* - - AdWhirlClassWrapper.m - - Copyright 2010 Google 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 "AdWhirlClassWrapper.h" - -@implementation AdWhirlClassWrapper - -@synthesize theClass; - -- (id)initWithClass:(Class)c { - self = [super init]; - if (self != nil) { - theClass = c; - } - return self; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlConfig.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlConfig.h deleted file mode 100644 index 4ddef2ba6..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlConfig.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - - AdWhirlConfig.h - - Copyright 2009 AdMob, 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 -#import -#import "CJSONDeserializer.h" - -@class AdWhirlConfig; -@protocol AdWhirlConfigDelegate - -@optional -- (void)adWhirlConfigDidReceiveConfig:(AdWhirlConfig *)config; -- (void)adWhirlConfigDidFail:(AdWhirlConfig *)config error:(NSError *)error; -- (NSURL *)adWhirlConfigURL; - -@end - -typedef enum { - AWBannerAnimationTypeNone = 0, - AWBannerAnimationTypeFlipFromLeft = 1, - AWBannerAnimationTypeFlipFromRight = 2, - AWBannerAnimationTypeCurlUp = 3, - AWBannerAnimationTypeCurlDown = 4, - AWBannerAnimationTypeSlideFromLeft = 5, - AWBannerAnimationTypeSlideFromRight = 6, - AWBannerAnimationTypeFadeIn = 7, - AWBannerAnimationTypeRandom = 8, -} AWBannerAnimationType; - -@class AdWhirlAdNetworkConfig; -@class AdWhirlAdNetworkRegistry; - -@interface AdWhirlConfig : NSObject { - NSString *appKey; - NSURL *configURL; - BOOL legacy; - - BOOL adsAreOff; - NSMutableArray *adNetworkConfigs; - - UIColor *backgroundColor; - UIColor *textColor; - NSTimeInterval refreshInterval; - BOOL locationOn; - AWBannerAnimationType bannerAnimationType; - NSInteger fullscreenWaitInterval; - NSInteger fullscreenMaxAds; - - NSMutableArray *delegates; - BOOL hasConfig; - - AdWhirlAdNetworkRegistry *adNetworkRegistry; -} - -- (id)initWithAppKey:(NSString *)ak delegate:(id)delegate; -- (BOOL)parseConfig:(NSData *)data error:(NSError **)error; -- (BOOL)addDelegate:(id)delegate; -- (BOOL)removeDelegate:(id)delegate; -- (void)notifyDelegatesOfFailure:(NSError *)error; - -@property (nonatomic,readonly) NSString *appKey; -@property (nonatomic,readonly) NSURL *configURL; - -@property (nonatomic,readonly) BOOL hasConfig; - -@property (nonatomic,readonly) BOOL adsAreOff; -@property (nonatomic,readonly) NSArray *adNetworkConfigs; -@property (nonatomic,readonly) UIColor *backgroundColor; -@property (nonatomic,readonly) UIColor *textColor; -@property (nonatomic,readonly) NSTimeInterval refreshInterval; -@property (nonatomic,readonly) BOOL locationOn; -@property (nonatomic,readonly) AWBannerAnimationType bannerAnimationType; -@property (nonatomic,readonly) NSInteger fullscreenWaitInterval; -@property (nonatomic,readonly) NSInteger fullscreenMaxAds; - -@property (nonatomic,assign) AdWhirlAdNetworkRegistry *adNetworkRegistry; - -@end - - -// Convenience conversion functions, converts val into native types var. -// val can be NSNumber or NSString, all else will cause function to fail -// On failure, return NO. -BOOL awIntVal(NSInteger *var, id val); -BOOL awFloatVal(CGFloat *var, id val); -BOOL awDoubleVal(double *var, id val); diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlConfig.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlConfig.m deleted file mode 100644 index c2fb59d6d..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlConfig.m +++ /dev/null @@ -1,563 +0,0 @@ -/* - - AdWhirlConfig.m - - Copyright 2009 AdMob, 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 - -#import "AdWhirlConfig.h" -#import "AdWhirlError.h" -#import "AdWhirlAdNetworkConfig.h" -#import "AdWhirlLog.h" -#import "AdWhirlView.h" -#import "AdWhirlAdNetworkAdapter.h" -#import "AdWhirlAdNetworkRegistry.h" -#import "UIColor+AdWhirlConfig.h" -#import "AWNetworkReachabilityWrapper.h" - - -BOOL awIntVal(NSInteger *var, id val) { - if ([val isKindOfClass:[NSNumber class]] || [val isKindOfClass:[NSString class]]) { - *var = [val integerValue]; - return YES; - } - return NO; -} - -BOOL awFloatVal(CGFloat *var, id val) { - if ([val isKindOfClass:[NSNumber class]] || [val isKindOfClass:[NSString class]]) { - *var = [val floatValue]; - return YES; - } - return NO; -} - -BOOL awDoubleVal(double *var, id val) { - if ([val isKindOfClass:[NSNumber class]] || [val isKindOfClass:[NSString class]]) { - *var = [val doubleValue]; - return YES; - } - return NO; -} - - -@implementation AdWhirlConfig - -@synthesize appKey; -@synthesize configURL; -@synthesize adsAreOff; -@synthesize adNetworkConfigs; -@synthesize backgroundColor; -@synthesize textColor; -@synthesize refreshInterval; -@synthesize locationOn; -@synthesize bannerAnimationType; -@synthesize fullscreenWaitInterval; -@synthesize fullscreenMaxAds; -@synthesize hasConfig; - -@synthesize adNetworkRegistry; - -#pragma mark - - -- (id)initWithAppKey:(NSString *)ak delegate:(id)delegate { - self = [super init]; - if (self != nil) { - appKey = [[NSString alloc] initWithString:ak]; - legacy = NO; - adNetworkConfigs = [[NSMutableArray alloc] init]; - delegates = [[NSMutableArray alloc] init]; - hasConfig = NO; - [self addDelegate:delegate]; - - // object dependencies - adNetworkRegistry = [AdWhirlAdNetworkRegistry sharedRegistry]; - - // default values - backgroundColor = [[UIColor alloc] initWithRed:0.3 green:0.3 blue:0.3 alpha:1.0]; - textColor = [[UIColor whiteColor] retain]; - refreshInterval = 60; - locationOn = YES; - bannerAnimationType = AWBannerAnimationTypeRandom; - fullscreenWaitInterval = 60; - fullscreenMaxAds = 2; - - // config URL - NSURL *configBaseURL = nil; - if ([delegate respondsToSelector:@selector(adWhirlConfigURL)]) { - configBaseURL = [delegate adWhirlConfigURL]; - } - if (configBaseURL == nil) { - configBaseURL = [NSURL URLWithString:kAdWhirlDefaultConfigURL]; - } - configURL = [[NSURL alloc] initWithString:[NSString stringWithFormat:@"?appid=%@&appver=%d&client=1", - appKey, - kAdWhirlAppVer] - relativeToURL:configBaseURL]; - } - return self; -} - -- (BOOL)addDelegate:(id)delegate { - for (NSValue *w in delegates) { - id existing = [w nonretainedObjectValue]; - if (existing == delegate) { - return NO; // already in the list of delegates - } - } - NSValue *wrapped = [NSValue valueWithNonretainedObject:delegate]; - [delegates addObject:wrapped]; - return YES; -} - -- (BOOL)removeDelegate:(id)delegate { - NSUInteger i; - for (i = 0; i < [delegates count]; i++) { - NSValue *w = [delegates objectAtIndex:i]; - id existing = [w nonretainedObjectValue]; - if (existing == delegate) { - break; - } - } - if (i < [delegates count]) { - [delegates removeObjectAtIndex:i]; - return YES; - } - return NO; -} - -- (void)notifyDelegatesOfFailure:(NSError *)error { - for (NSValue *wrapped in delegates) { - id delegate = [wrapped nonretainedObjectValue]; - if ([delegate respondsToSelector:@selector(adWhirlConfigDidFail:error:)]) { - [delegate adWhirlConfigDidFail:self error:error]; - } - } -} - -- (NSString *)description { - NSString *desc = [super description]; - NSString *configs = [NSString stringWithFormat: - @"location_access:%d fg_color:%@ bg_color:%@ cycle_time:%lf transition:%d", - locationOn, textColor, backgroundColor, refreshInterval, bannerAnimationType]; - return [NSString stringWithFormat:@"%@:\n%@ networks:%@",desc,configs,adNetworkConfigs]; -} - -- (void)dealloc { - [appKey release], appKey = nil; - [configURL release], configURL = nil; - [adNetworkConfigs release], adNetworkConfigs = nil; - [backgroundColor release], backgroundColor = nil; - [textColor release], textColor = nil; - [delegates release], delegates = nil; - [super dealloc]; -} - -#pragma mark parsing methods - -- (BOOL)parseExtraConfig:(NSDictionary *)configDict error:(NSError **)error { - id bgColor = [configDict objectForKey:@"background_color_rgb"]; - if (bgColor != nil && [bgColor isKindOfClass:[NSDictionary class]]) { - [backgroundColor release]; - backgroundColor = [[UIColor alloc] initWithDict:(NSDictionary *)bgColor]; - } - id txtColor = [configDict objectForKey:@"text_color_rgb"]; - if (txtColor != nil && [txtColor isKindOfClass:[NSDictionary class]]) { - [textColor release]; - textColor = [[UIColor alloc] initWithDict:txtColor]; - } - id tempVal; - tempVal = [configDict objectForKey:@"refresh_interval"]; - if (tempVal == nil) - tempVal = [configDict objectForKey:@"cycle_time"]; - NSInteger tempInt; - if (tempVal && awIntVal(&tempInt, tempVal)) { - refreshInterval = (NSTimeInterval)tempInt; - if (refreshInterval >= 30000.0) { - // effectively forever, set to 0 - refreshInterval = 0.0; - } - } - if (awIntVal(&tempInt, [configDict objectForKey:@"location_on"])) { - locationOn = (tempInt == 0)? NO : YES; - // check user preference. user preference of NO trumps all - - BOOL bLocationServiceEnabled = NO; - if ([CLLocationManager respondsToSelector: - @selector(locationServicesEnabled)]) { - bLocationServiceEnabled = [CLLocationManager locationServicesEnabled]; - } - else { - CLLocationManager* locMan = [[CLLocationManager alloc] init]; - bLocationServiceEnabled = locMan.locationServicesEnabled; - [locMan release], locMan = nil; - } - - if (locationOn == YES && bLocationServiceEnabled == NO) { - AWLogDebug(@"User disabled location services, set locationOn to NO"); - locationOn = NO; - } - } - tempVal = [configDict objectForKey:@"transition"]; - if (tempVal == nil) - tempVal = [configDict objectForKey:@"banner_animation_type"]; - if (tempVal && awIntVal(&tempInt, tempVal)) { - switch (tempInt) { - case 0: bannerAnimationType = AWBannerAnimationTypeNone; break; - case 1: bannerAnimationType = AWBannerAnimationTypeFlipFromLeft; break; - case 2: bannerAnimationType = AWBannerAnimationTypeFlipFromRight; break; - case 3: bannerAnimationType = AWBannerAnimationTypeCurlUp; break; - case 4: bannerAnimationType = AWBannerAnimationTypeCurlDown; break; - case 5: bannerAnimationType = AWBannerAnimationTypeSlideFromLeft; break; - case 6: bannerAnimationType = AWBannerAnimationTypeSlideFromRight; break; - case 7: bannerAnimationType = AWBannerAnimationTypeFadeIn; break; - case 8: bannerAnimationType = AWBannerAnimationTypeRandom; break; - } - } - if (awIntVal(&tempInt, [configDict objectForKey:@"fullscreen_wait_interval"])) { - fullscreenWaitInterval = tempInt; - } - if (awIntVal(&tempInt, [configDict objectForKey:@"fullscreen_max_ads"])) { - fullscreenMaxAds = tempInt; - } - return YES; -} - -- (BOOL)parseLegacyConfig:(NSArray *)configArray error:(NSError **)error { - NSMutableDictionary *adNetConfigDicts = [[NSMutableDictionary alloc] init]; - for (int i = 0; i < [configArray count]; i++) { - id configObj = [configArray objectAtIndex:i]; - if (![configObj isKindOfClass:[NSDictionary class]]) { - if (error != NULL) - *error = [AdWhirlError errorWithCode:AdWhirlConfigDataError - description:@"Expected dictionary in config data"]; - [adNetConfigDicts release]; - return NO; - } - NSDictionary *configDict = (NSDictionary *)configObj; - switch (i) { - case 0: - // ration map - case 1: - // key map - case 2: - // priority map - for (id key in [configDict keyEnumerator]) { - // format: "_" e.g. "admob_ration" - NSString *strKey = (NSString *)key; - if ([strKey compare:@"empty_ration"] == NSOrderedSame) { - NSInteger empty_ration; - if (awIntVal(&empty_ration, [configDict objectForKey:key]) && empty_ration == 100) { - adsAreOff = YES; - [adNetConfigDicts release]; - return YES; - } - } - adsAreOff = NO; - NSRange underScorePos = [strKey rangeOfString:@"_" options:NSBackwardsSearch]; - if (underScorePos.location == NSNotFound) { - if (error != NULL) - *error = [AdWhirlError errorWithCode:AdWhirlConfigDataError - description:[NSString stringWithFormat: - @"Expected underscore delimiter in key '%@'", strKey]]; - [adNetConfigDicts release]; - return NO; - } - NSString *networkName = [strKey substringToIndex:underScorePos.location]; - NSString *valueName = [strKey substringFromIndex:(underScorePos.location+1)]; - if ([networkName length] == 0) { - if (error != NULL) - *error = [AdWhirlError errorWithCode:AdWhirlConfigDataError - description:[NSString stringWithFormat: - @"Empty ad network name in key '%@'", strKey]]; - [adNetConfigDicts release]; - return NO; - } - if ([valueName length] == 0) { - if (error != NULL) - *error = [AdWhirlError errorWithCode:AdWhirlConfigDataError - description:[NSString stringWithFormat: - @"Empty value name in key '%@'", strKey]]; - [adNetConfigDicts release]; - return NO; - } - if ([networkName compare:@"dontcare"] == NSOrderedSame) { - continue; - } - NSMutableDictionary *adNetConfigDict = [adNetConfigDicts objectForKey:networkName]; - if (adNetConfigDict == nil) { - adNetConfigDict = [[NSMutableDictionary alloc] init]; - [adNetConfigDicts setObject:adNetConfigDict forKey:networkName]; - [adNetConfigDict release]; - adNetConfigDict = [adNetConfigDicts objectForKey:networkName]; - } - NSString *properValueName; - if ([valueName compare:@"ration"] == NSOrderedSame) { - properValueName = AWAdNetworkConfigKeyWeight; - } - else if ([valueName compare:@"key"] == NSOrderedSame) { - properValueName = AWAdNetworkConfigKeyCred; - } - else if ([valueName compare:@"priority"] == NSOrderedSame) { - properValueName = AWAdNetworkConfigKeyPriority; - } - else { - properValueName = valueName; - } - [adNetConfigDict setObject:[configDict objectForKey:key] - forKey:properValueName]; - } - break; // ad network config maps - - case 3: - // general config map - if (![self parseExtraConfig:configDict error:error]) { - [adNetConfigDicts release]; - return NO; - } - break; // general config map - default: - AWLogWarn(@"Ignoring element at index %d in legacy config", i); - break; - } // switch (i) - } // loop configArray - - // adwhirl_ special handling - NSMutableDictionary *adRolloConfig = [adNetConfigDicts objectForKey:@"adrollo"]; - if (adRolloConfig != nil) { - AWLogDebug(@"Processing AdRollo config %@", adRolloConfig); - NSMutableArray *adWhirlNetworkConfigs = [[NSMutableArray alloc] init];; - for (NSString *netname in [adNetConfigDicts keyEnumerator]) { - if (![netname hasPrefix:@"adwhirl_"]) continue; - [adWhirlNetworkConfigs addObject:[adNetConfigDicts objectForKey:netname]]; - } - if ([adWhirlNetworkConfigs count] > 0) { - // split the ration evenly, use same credentials - NSInteger ration = [[adRolloConfig objectForKey:AWAdNetworkConfigKeyWeight] integerValue]; - ration = ration/[adWhirlNetworkConfigs count]; - for (NSMutableDictionary *cd in adWhirlNetworkConfigs) { - [cd setObject:[NSNumber numberWithInteger:ration] - forKey:AWAdNetworkConfigKeyWeight]; - [cd setObject:[adRolloConfig objectForKey:AWAdNetworkConfigKeyCred] - forKey:AWAdNetworkConfigKeyCred]; - } - } - [adWhirlNetworkConfigs release]; - } - - NSInteger totalWeight = 0; - for (id networkName in [adNetConfigDicts keyEnumerator]) { - NSString *netname = (NSString *)networkName; - if ([netname compare:@"adrollo"] == NSOrderedSame) { - // skip adrollo, was used for "adwhirl_" networks - continue; - } - NSMutableDictionary *adNetConfigDict = [adNetConfigDicts objectForKey:netname]; - - // set network type for legacy - NSInteger networkType = 0; - if ([netname compare:@"admob"] == NSOrderedSame) { - networkType = AdWhirlAdNetworkTypeAdMob; - } - else if ([netname compare:@"jumptap"] == NSOrderedSame) { - networkType = AdWhirlAdNetworkTypeJumpTap; - } - else if ([netname compare:@"videoegg"] == NSOrderedSame) { - networkType = AdWhirlAdNetworkTypeVideoEgg; - } - else if ([netname compare:@"medialets"] == NSOrderedSame) { - networkType = AdWhirlAdNetworkTypeMedialets; - } - else if ([netname compare:@"liverail"] == NSOrderedSame) { - networkType = AdWhirlAdNetworkTypeLiveRail; - } - else if ([netname compare:@"millennial"] == NSOrderedSame) { - networkType = AdWhirlAdNetworkTypeMillennial; - } - else if ([netname compare:@"greystripe"] == NSOrderedSame) { - networkType = AdWhirlAdNetworkTypeGreyStripe; - } - else if ([netname compare:@"quattro"] == NSOrderedSame) { - networkType = AdWhirlAdNetworkTypeQuattro; - } - else if ([netname compare:@"custom"] == NSOrderedSame) { - networkType = AdWhirlAdNetworkTypeCustom; - } - else if ([netname compare:@"adwhirl_10"] == NSOrderedSame) { - networkType = AdWhirlAdNetworkTypeAdWhirl10; - } - else if ([netname compare:@"mobclix"] == NSOrderedSame) { - networkType = AdWhirlAdNetworkTypeMobClix; - } - else if ([netname compare:@"adwhirl_12"] == NSOrderedSame) { - networkType = AdWhirlAdNetworkTypeMdotM; - } - else if ([netname compare:@"adwhirl_13"] == NSOrderedSame) { - networkType = AdWhirlAdNetworkTypeAdWhirl13; - } - else if ([netname compare:@"google_adsense"] == NSOrderedSame) { - networkType = AdWhirlAdNetworkTypeGoogleAdSense; - } - else if ([netname compare:@"google_doubleclick"] == NSOrderedSame) { - networkType = AdWhirlAdNetworkTypeGoogleDoubleClick; - } - else if ([netname compare:@"generic"] == NSOrderedSame) { - networkType = AdWhirlAdNetworkTypeGeneric; - } - else if ([netname compare:@"inmobi"] == NSOrderedSame) { - networkType = AdWhirlAdNetworkTypeInMobi; - } - - else { - AWLogWarn(@"Unrecognized ad network '%@' in legacy config, ignored", netname); - continue; - } - - [adNetConfigDict setObject:netname forKey:AWAdNetworkConfigKeyName]; - [adNetConfigDict setObject:[NSString stringWithFormat:@"%d", networkType] - forKey:AWAdNetworkConfigKeyNID]; - [adNetConfigDict setObject:[NSNumber numberWithInteger:networkType] - forKey:AWAdNetworkConfigKeyType]; - - AdWhirlError *adNetConfigError = nil; - AdWhirlAdNetworkConfig *adNetConfig = - [[AdWhirlAdNetworkConfig alloc] initWithDictionary:adNetConfigDict - adNetworkRegistry:adNetworkRegistry - error:&adNetConfigError]; - if (adNetConfig != nil) { - [adNetworkConfigs addObject:adNetConfig]; - totalWeight += adNetConfig.trafficPercentage; - [adNetConfig release]; - } - else { - AWLogWarn(@"Cannot create ad network config from %@: %@", adNetConfigDict, - adNetConfigError != nil? [adNetConfigError localizedDescription]:@""); - } - } // for each ad network name - - if (totalWeight == 0) { - adsAreOff = YES; - } - - [adNetConfigDicts release]; - return YES; -} - -- (BOOL)parseNewConfig:(NSDictionary *)configDict error:(NSError **)error { - id extra = [configDict objectForKey:@"extra"]; - if (extra != nil && [extra isKindOfClass:[NSDictionary class]]) { - NSDictionary *extraDict = extra; - if (![self parseExtraConfig:extraDict error:error]) { - return NO; - } - } - else { - AWLogWarn(@"No extra info dict in ad network config"); - } - - id rations = [configDict objectForKey:@"rations"]; - double totalWeight = 0.0; - if (rations != nil && [rations isKindOfClass:[NSArray class]]) { - if ([(NSArray *)rations count] == 0) { - adsAreOff = YES; - return YES; - } - adsAreOff = NO; - for (id c in (NSArray *)rations) { - if (![c isKindOfClass:[NSDictionary class]]) { - AWLogWarn(@"Element in rations array is not a dictionary %@ in ad network config",c); - continue; - } - AdWhirlError *adNetConfigError = nil; - AdWhirlAdNetworkConfig *adNetConfig = - [[AdWhirlAdNetworkConfig alloc] initWithDictionary:(NSDictionary *)c - adNetworkRegistry:adNetworkRegistry - error:&adNetConfigError]; - if (adNetConfig != nil) { - [adNetworkConfigs addObject:adNetConfig]; - totalWeight += adNetConfig.trafficPercentage; - [adNetConfig release]; - } - else { - AWLogWarn(@"Cannot create ad network config from %@: %@", c, - adNetConfigError != nil? [adNetConfigError localizedDescription]:@""); - } - } - } - else { - AWLogError(@"No rations array in ad network config"); - } - - if (totalWeight == 0.0) { - adsAreOff = YES; - } - - return YES; -} - -- (BOOL)parseConfig:(NSData *)data error:(NSError **)error { - if (hasConfig) { - if (error != NULL) - *error = [AdWhirlError errorWithCode:AdWhirlConfigDataError - description:@"Already has config, will not parse"]; - return NO; - } - NSError *jsonError = nil; - id parsed = [[CJSONDeserializer deserializer] deserialize:data error:&jsonError]; - if (parsed == nil) { - if (error != NULL) - *error = [AdWhirlError errorWithCode:AdWhirlConfigParseError - description:@"Error parsing config JSON from server" - underlyingError:jsonError]; - return NO; - } - if ([parsed isKindOfClass:[NSArray class]]) { - // pre-open-source AdWhirl/AdRollo config - legacy = YES; - if (![self parseLegacyConfig:(NSArray *)parsed error:error]) { - return NO; - } - } - else if ([parsed isKindOfClass:[NSDictionary class]]) { - // open-source AdWhirl config - if (![self parseNewConfig:(NSDictionary *)parsed error:error]) { - return NO; - } - } - else { - if (error != NULL) - *error = [AdWhirlError errorWithCode:AdWhirlConfigDataError - description:@"Expected top-level dictionary in config data"]; - return NO; - } - - // parse success - hasConfig = YES; - - // notify delegates of success - for (NSValue *wrapped in delegates) { - id delegate = [wrapped nonretainedObjectValue]; - if ([delegate respondsToSelector:@selector(adWhirlConfigDidReceiveConfig:)]) { - [delegate adWhirlConfigDidReceiveConfig:self]; - } - } - - return YES; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlConfigStore.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlConfigStore.h deleted file mode 100644 index a2094090e..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlConfigStore.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - - AdWhirlConfigStore.h - - Copyright 2010 Google 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 -#import "AdWhirlConfigStore.h" -#import "AdWhirlConfig.h" -#import "AWNetworkReachabilityDelegate.h" - -@class AWNetworkReachabilityWrapper; - -// Singleton class to store AdWhirl configs, keyed by appKey. Fetched config -// is cached unless it is force-fetched using fetchConfig. Checks network -// reachability using AWNetworkReachabilityWrapper before making connections to -// fetch configs, so that that means it will wait forever until the config host -// is reachable. -@interface AdWhirlConfigStore : NSObject { - NSMutableDictionary *configs_; - AdWhirlConfig *fetchingConfig_; - - AWNetworkReachabilityWrapper *reachability_; - NSURLConnection *connection_; - NSMutableData *receivedData_; -} - -// Returns the singleton AdWhirlConfigStore object. -+ (AdWhirlConfigStore *)sharedStore; - -// Deletes all existing configs. -+ (void)resetStore; - -// Returns config for appKey. If config does not exist for appKey, goes and -// fetches the config from the server, the URL of which is taken from -// [delegate adWhirlConfigURL]. -// Returns nil if appKey is nil or empty, another fetch is in progress, or -// error setting up reachability check. -- (AdWhirlConfig *)getConfig:(NSString *)appKey - delegate:(id)delegate; - -// Fetches (or re-fetch) the config for the given appKey. Always go to the -// network. Call this to get a new version of the config from the server. -// Returns nil if appKey is nil or empty, another fetch is in progress, or -// error setting up reachability check. -- (AdWhirlConfig *)fetchConfig:(NSString *)appKey - delegate:(id )delegate; - -// For testing -- set mocks here. -@property (nonatomic,retain) AWNetworkReachabilityWrapper *reachability; -@property (nonatomic,retain) NSURLConnection *connection; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlConfigStore.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlConfigStore.m deleted file mode 100644 index f1eff12ec..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlConfigStore.m +++ /dev/null @@ -1,291 +0,0 @@ -/* - - AdWhirlConfigStore.m - - Copyright 2010 Google 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 "AdWhirlConfigStore.h" -#import "AdWhirlLog.h" -#import "AWNetworkReachabilityWrapper.h" -#import "AdWhirlError.h" - -static AdWhirlConfigStore *gStore = nil; - -@interface AdWhirlConfigStore () - -- (BOOL)checkReachability; -- (void)startFetchingAssumingReachable; -- (void)failedFetchingWithError:(AdWhirlError *)error; -- (void)finishedFetching; - -@end - - -@implementation AdWhirlConfigStore - -@synthesize reachability = reachability_; -@synthesize connection = connection_; - -+ (AdWhirlConfigStore *)sharedStore { - if (gStore == nil) { - gStore = [[AdWhirlConfigStore alloc] init]; - } - return gStore; -} - -+ (void)resetStore { - if (gStore != nil) { - [gStore release], gStore = nil; - [self sharedStore]; - } -} - -- (id)init { - self = [super init]; - if (self != nil) { - configs_ = [[NSMutableDictionary alloc] init]; - } - return self; -} - -- (AdWhirlConfig *)getConfig:(NSString *)appKey - delegate:(id)delegate { - AdWhirlConfig *config = [configs_ objectForKey:appKey]; - if (config != nil) { - if (config.hasConfig) { - if ([delegate - respondsToSelector:@selector(adWhirlConfigDidReceiveConfig:)]) { - // Don't call directly, instead schedule it in the runloop. Delegate - // may expect the message to be delivered out-of-band - [(NSObject *)delegate - performSelectorOnMainThread:@selector(adWhirlConfigDidReceiveConfig:) - withObject:config - waitUntilDone:NO]; - } - return config; - } - // If there's already a config fetching, and another call to this function - // add a delegate to the config - [config addDelegate:delegate]; - return config; - } - - // No config, create one, and start fetching it - return [self fetchConfig:appKey delegate:delegate]; -} - -- (AdWhirlConfig *)fetchConfig:(NSString *)appKey - delegate:(id )delegate { - - AdWhirlConfig *config = [[AdWhirlConfig alloc] initWithAppKey:appKey - delegate:delegate]; - - if (fetchingConfig_ != nil) { - AWLogWarn(@"Another fetch is in progress, wait until finished."); - [config release]; - return nil; - } - fetchingConfig_ = config; - - if (![self checkReachability]) { - [config release]; - return nil; - } - - [configs_ setObject:config forKey:appKey]; - [config release]; - return config; -} - -- (void)dealloc { - if (reachability_ != nil) { - reachability_.delegate = nil; - [reachability_ release]; - } - [connection_ release]; - [receivedData_ release]; - [configs_ release]; - [super dealloc]; -} - - -#pragma mark private helper methods - -// Check reachability first -- (BOOL)checkReachability { - AWLogDebug(@"Checking if config is reachable at %@", - fetchingConfig_.configURL); - - // Normally reachability_ should be nil so a new one will be created. - // In a testing environment, it may already have been assigned with a mock. - // In any case, reachability_ will be released when the config URL is - // reachable, in -reachabilityBecameReachable. - if (reachability_ == nil) { - reachability_ = [AWNetworkReachabilityWrapper - reachabilityWithHostname:[fetchingConfig_.configURL host] - callbackDelegate:self]; - [reachability_ retain]; - } - if (reachability_ == nil) { - [fetchingConfig_ notifyDelegatesOfFailure: - [AdWhirlError errorWithCode:AdWhirlConfigConnectionError - description: - @"Error setting up reachability check to config server"]]; - return NO; - } - - if (![reachability_ scheduleInCurrentRunLoop]) { - [fetchingConfig_ notifyDelegatesOfFailure: - [AdWhirlError errorWithCode:AdWhirlConfigConnectionError - description: - @"Error scheduling reachability check to config server"]]; - [reachability_ release], reachability_ = nil; - return NO; - } - - return YES; -} - -// Make connection -- (void)startFetchingAssumingReachable { - // go fetch config - NSURLRequest *configRequest - = [NSURLRequest requestWithURL:fetchingConfig_.configURL]; - - // Normally connection_ should be nil so a new one will be created. - // In a testing environment, it may alreay have been assigned with a mock. - // In any case, connection_ will be release when connection failed or - // finished. - if (connection_ == nil) { - connection_ = [[NSURLConnection alloc] initWithRequest:configRequest - delegate:self]; - } - - // Error checking - if (connection_ == nil) { - [self failedFetchingWithError: - [AdWhirlError errorWithCode:AdWhirlConfigConnectionError - description: - @"Error creating connection to config server"]]; - return; - } - receivedData_ = [[NSMutableData alloc] init]; -} - -// Clean up after fetching failed -- (void)failedFetchingWithError:(AdWhirlError *)error { - // notify - [fetchingConfig_ notifyDelegatesOfFailure:error]; - - // remove the failed config from the cache - [configs_ removeObjectForKey:fetchingConfig_.appKey]; - // the config is only retained by the dict,now released - - [self finishedFetching]; -} - -// Clean up after fetching, success or failed -- (void)finishedFetching { - [connection_ release], connection_ = nil; - [receivedData_ release], receivedData_ = nil; - fetchingConfig_ = nil; -} - - -#pragma mark reachability methods - -- (void)reachabilityNotReachable:(AWNetworkReachabilityWrapper *)reach { - if (reach != reachability_) { - AWLogWarn(@"Unrecognized reachability object called not reachable %s:%d", - __FILE__, __LINE__); - return; - } - AWLogDebug(@"Config host %@ not (yet) reachable, check back later", - reach.hostname); - [reachability_ release], reachability_ = nil; - [self performSelector:@selector(checkReachability) - withObject:nil - afterDelay:10.0]; -} - -- (void)reachabilityBecameReachable:(AWNetworkReachabilityWrapper *)reach { - if (reach != reachability_) { - AWLogWarn(@"Unrecognized reachability object called reachable %s:%d", - __FILE__, __LINE__); - return; - } - // done with the reachability - [reachability_ release], reachability_ = nil; - - [self startFetchingAssumingReachable]; -} - - -#pragma mark NSURLConnection delegate methods. - -- (void)connection:(NSURLConnection *)conn - didReceiveResponse:(NSURLResponse *)response { - if (conn != connection_) { - AWLogError(@"Unrecognized connection object %s:%d", __FILE__, __LINE__); - return; - } - if ([response isKindOfClass:[NSHTTPURLResponse class]]) { - NSHTTPURLResponse *http = (NSHTTPURLResponse*)response; - const int status = [http statusCode]; - - if (status < 200 || status >= 300) { - AWLogWarn(@"AdWhirlConfig: HTTP %d, cancelling %@", status, [http URL]); - [connection_ cancel]; - [self failedFetchingWithError: - [AdWhirlError errorWithCode:AdWhirlConfigStatusError - description:@"Config server did not return status 200"]]; - return; - } - } - - [receivedData_ setLength:0]; -} - -- (void)connection:(NSURLConnection *)conn didFailWithError:(NSError *)error { - if (conn != connection_) { - AWLogError(@"Unrecognized connection object %s:%d", __FILE__, __LINE__); - return; - } - [self failedFetchingWithError: - [AdWhirlError errorWithCode:AdWhirlConfigConnectionError - description:@"Error connecting to config server" - underlyingError:error]]; -} - -- (void)connectionDidFinishLoading:(NSURLConnection *)conn { - if (conn != connection_) { - AWLogError(@"Unrecognized connection object %s:%d", __FILE__, __LINE__); - return; - } - [fetchingConfig_ parseConfig:receivedData_ error:nil]; - [self finishedFetching]; -} - -- (void)connection:(NSURLConnection *)conn didReceiveData:(NSData *)data { - if (conn != connection_) { - AWLogError(@"Unrecognized connection object %s:%d", __FILE__, __LINE__); - return; - } - [receivedData_ appendData:data]; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlCustomAdView.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlCustomAdView.h deleted file mode 100644 index 03dce95b7..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlCustomAdView.h +++ /dev/null @@ -1,101 +0,0 @@ -/* - - AdWhirlCustomAdView.h - - Copyright 2009 AdMob, 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 -#import - -typedef enum { - AWCustomAdTypeMIN = 0, - AWCustomAdTypeBanner = 1, - AWCustomAdTypeText = 2, - AWCustomAdTypeAutoLaunchFallBackBanner = 3, - AWCustomAdTypeAutoLaunchFallBackText = 4, - AWCustomAdTypeSearchBar = 5, - AWCustomAdTypeMAX = 6 -} AWCustomAdType; - -typedef enum { - AWCustomAdLaunchTypeMIN = 0, - AWCustomAdLaunchTypeSafari = 1, - AWCustomAdLaunchTypeCanvas = 2, - AWCustomAdLaunchTypeSafariRedirectFollowThrough = 3, - AWCustomAdLaunchTypeMAX = 4 -} AWCustomAdLaunchType; - -typedef enum { - AWCustomAdWebViewAnimTypeMIN = -1, - AWCustomAdWebViewAnimTypeNone = 0, - AWCustomAdWebViewAnimTypeFlipFromLeft = 1, - AWCustomAdWebViewAnimTypeFlipFromRight = 2, - AWCustomAdWebViewAnimTypeCurlUp = 3, - AWCustomAdWebViewAnimTypeCurlDown = 4, - AWCustomAdWebViewAnimTypeSlideFromLeft = 5, - AWCustomAdWebViewAnimTypeSlideFromRight = 6, - AWCustomAdWebViewAnimTypeFadeIn = 7, - AWCustomAdWebViewAnimTypeModal = 8, - AWCustomAdWebViewAnimTypeRandom = 9, - AWCustomAdWebViewAnimTypeMAX = 10 -} AWCustomAdWebViewAnimType; - -@class AdWhirlCustomAdView; - -@protocol AdWhirlCustomAdViewDelegate - -- (void)adTapped:(AdWhirlCustomAdView *)adView; - -@end - - -@interface AdWhirlCustomAdView : UIButton -{ - id delegate; - UIImage *image; - UILabel *textLabel; - NSURL *redirectURL; - NSURL *clickMetricsURL; - AWCustomAdType adType; - AWCustomAdLaunchType launchType; - AWCustomAdWebViewAnimType animType; - UIColor *backgroundColor; - UIColor *textColor; -} - -- (id)initWithDelegate:(id)delegate - text:(NSString *)text - redirectURL:(NSURL *)redirectURL - clickMetricsURL:(NSURL *)clickMetricsURL - adType:(AWCustomAdType)adType - launchType:(AWCustomAdLaunchType)launchType - animType:(AWCustomAdWebViewAnimType)animType - backgroundColor:(UIColor *)bgColor - textColor:(UIColor *)fgColor; - -@property (nonatomic,assign) id delegate; -@property (nonatomic,retain) UIImage *image; -@property (nonatomic,readonly) UILabel *textLabel; -@property (nonatomic,readonly) NSURL *redirectURL; -@property (nonatomic,readonly) NSURL *clickMetricsURL; -@property (nonatomic,readonly) AWCustomAdType adType; -@property (nonatomic,readonly) AWCustomAdLaunchType launchType; -@property (nonatomic,readonly) AWCustomAdWebViewAnimType animType; -@property (nonatomic,readonly) UIColor *backgroundColor; -@property (nonatomic,readonly) UIColor *textColor; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlCustomAdView.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlCustomAdView.m deleted file mode 100644 index 711ebd65d..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlCustomAdView.m +++ /dev/null @@ -1,168 +0,0 @@ -/* - - AdWhirlCustomAdView.m - - Copyright 2009 AdMob, 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 "AdWhirlCustomAdView.h" -#import "AdWhirlView.h" -#import "AdWhirlLog.h" - - -@implementation AdWhirlCustomAdView - -@synthesize delegate; -@synthesize image; -@synthesize textLabel; -@synthesize redirectURL; -@synthesize clickMetricsURL; -@synthesize adType; -@synthesize launchType; -@synthesize animType; -@synthesize backgroundColor; -@synthesize textColor; - -- (id)initWithDelegate:(id)d - text:(NSString *)txt - redirectURL:(NSURL *)rURL - clickMetricsURL:(NSURL *)cURL - adType:(AWCustomAdType)aType - launchType:(AWCustomAdLaunchType)launch - animType:(AWCustomAdWebViewAnimType)anim - backgroundColor:(UIColor *)bgColor - textColor:(UIColor *)fgColor { - - self = [super initWithFrame:kAdWhirlViewDefaultFrame]; - if (self != nil) { - delegate = d; - redirectURL = [rURL retain]; - clickMetricsURL = [cURL retain]; - adType = aType; - launchType = launch; - animType = anim; - backgroundColor = [bgColor retain]; - textColor = [fgColor retain]; - - if (adType == AWCustomAdTypeText) { - textLabel = [[UILabel alloc] initWithFrame:CGRectMake(50, 0, 270, CGRectGetHeight(self.bounds))]; - textLabel.text = txt; - textLabel.textColor = fgColor; - textLabel.numberOfLines = 3; - textLabel.backgroundColor = [UIColor clearColor]; - textLabel.font = [UIFont fontWithName:@"TrebuchetMS-Bold" size:13.0]; - [self addSubview:textLabel]; - } - - UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; - button.frame = self.bounds; - button.showsTouchWhenHighlighted = YES; - [button addTarget:self action:@selector(buttonTapUp:) forControlEvents:UIControlEventTouchUpInside]; - [self addSubview:button]; - } - return self; -} - -#define kNumBgColors 3 -#define kImageLeft 4 -#define kCornerRadius 7.0 -#define kImageDim 39 // assume square, so this is length of each side -#define kChamferLight [UIColor colorWithWhite:0.9 alpha:1].CGColor -#define kChamferDark [UIColor colorWithWhite:0.4 alpha:1].CGColor - -- (void)drawRect:(CGRect)rect { - - CGContextRef ctx = UIGraphicsGetCurrentContext(); - if (adType == AWCustomAdTypeText) { - - // draw background - CGFloat locations[kNumBgColors] = {0.0, 0.7, 1.0}; - CGColorRef colorArray[kNumBgColors] = - {[backgroundColor colorWithAlphaComponent:0.6].CGColor, - backgroundColor.CGColor, - backgroundColor.CGColor}; - CFArrayRef colors = CFArrayCreate(kCFAllocatorDefault, - (const void **)colorArray, - kNumBgColors, - &kCFTypeArrayCallBacks); - CGGradientRef gradient = CGGradientCreateWithColors(NULL, colors, locations); - CFRelease(colors); - CGContextSetFillColorWithColor(ctx, [UIColor whiteColor].CGColor); - CGContextFillRect(ctx, CGRectMake(0, 0, CGRectGetWidth(self.bounds), CGRectGetHeight(self.bounds))); - CGPoint midY = CGPointMake(0.0, CGRectGetHeight(self.bounds)/2); - CGPoint lowY = CGPointMake(0.0, CGRectGetHeight(self.bounds)); - CGContextDrawLinearGradient(ctx, gradient, CGPointZero, midY, 0); - CGContextDrawLinearGradient(ctx, gradient, lowY, midY, 0); - CGGradientRelease(gradient); - - // draw image and chamfer - CGFloat imageTop = (CGRectGetHeight(self.bounds) - kImageDim)/2.0; - CGPoint tl = CGPointMake(kImageLeft+kCornerRadius, imageTop+kCornerRadius); - CGPoint tr = CGPointMake(kImageLeft+kImageDim-kCornerRadius, imageTop+kCornerRadius); - CGPoint br = CGPointMake(kImageLeft+kImageDim-kCornerRadius, imageTop+kImageDim-kCornerRadius); - CGPoint bl = CGPointMake(kImageLeft+kCornerRadius, imageTop+kImageDim-kCornerRadius); - CGContextSaveGState(ctx); - CGContextMoveToPoint(ctx, kImageLeft, imageTop+kCornerRadius); - CGContextAddArc(ctx, tl.x, tl.y, kCornerRadius, M_PI, 3*M_PI/2, 0); - CGContextAddArc(ctx, tr.x, tr.y, kCornerRadius, 3*M_PI/2, 0, 0); - CGContextAddArc(ctx, br.x, br.y, kCornerRadius, 0, M_PI/2, 0); - CGContextAddArc(ctx, bl.x, bl.y, kCornerRadius, M_PI/2, M_PI, 0); - CGContextClosePath(ctx); - CGContextClip(ctx); - [image drawAtPoint:CGPointMake(kImageLeft, imageTop)]; - CGContextSetLineWidth(ctx, 0.5); - CGContextMoveToPoint(ctx, kImageLeft, imageTop+kImageDim-kCornerRadius); - CGContextSetStrokeColorWithColor(ctx, kChamferDark); - CGContextAddArc(ctx, tl.x, tl.y, kCornerRadius, M_PI, 5*M_PI/4, 0); - CGContextStrokePath(ctx); - CGContextSetStrokeColorWithColor(ctx, kChamferLight); - CGContextAddArc(ctx, tl.x, tl.y, kCornerRadius, 5*M_PI/4, 3*M_PI/2, 0); - CGContextAddArc(ctx, tr.x, tr.y, kCornerRadius, 3*M_PI/2, 0, 0); - CGContextAddArc(ctx, br.x, br.y, kCornerRadius, 0, M_PI/4, 0); - CGContextStrokePath(ctx); - CGContextSetStrokeColorWithColor(ctx, kChamferDark); - CGContextAddArc(ctx, br.x, br.y, kCornerRadius, M_PI/4, M_PI/2, 0); - CGContextAddArc(ctx, bl.x, bl.y, kCornerRadius, M_PI/2, M_PI, 0); - CGContextStrokePath(ctx); - CGContextRestoreGState(ctx); - - } // text ad - else if (adType == AWCustomAdTypeBanner) { - // draw image, place image in center of frame - [image drawAtPoint:CGPointMake((self.frame.size.width-image.size.width)/2, - (self.frame.size.height-image.size.height)/2)]; - } // banner ad -} - -- (void)dealloc { - [image release], image = nil; - [textLabel release], textLabel = nil; - [redirectURL release], redirectURL = nil; - [clickMetricsURL release], clickMetricsURL = nil; - [backgroundColor release], backgroundColor = nil; - [textColor release], textColor = nil; - [super dealloc]; -} - -#pragma mark UIButton control events - -- (void)buttonTapUp:(id)sender { - if (delegate != nil) { - [delegate adTapped:self]; - } -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlError.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlError.h deleted file mode 100644 index fcf4b27ec..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlError.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - - AdWhirlError.h - - Copyright 2009 AdMob, 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 - -#define AdWhirlErrorDomain @"com.adwhirl.sdk.ErrorDomain" - -enum { - AdWhirlConfigConnectionError = 10, /* Cannot connect to config server */ - AdWhirlConfigStatusError = 11, /* config server did not return 200 */ - AdWhirlConfigParseError = 20, /* Error parsing config from server */ - AdWhirlConfigDataError = 30, /* Invalid config format from server */ - AdWhirlCustomAdConnectionError = 40, /* Cannot connect to custom ad server */ - AdWhirlCustomAdParseError = 50, /* Error parsing custom ad from server */ - AdWhirlCustomAdDataError = 60, /* Invalid custom ad data from server */ - AdWhirlCustomAdImageError = 70, /* Cannot create image from data */ - AdWhirlAdRequestIgnoredError = 80, /* ignoreNewAdRequests flag is set */ - AdWhirlAdRequestInProgressError = 90, /* ad request in progress */ - AdWhirlAdRequestNoConfigError = 100, /* no configurations for ad request */ - AdWhirlAdRequestTooSoonError = 110, /* requesting ad too soon */ - AdWhirlAdRequestNoMoreAdNetworks = 120, /* no more ad networks for rollover */ - AdWhirlAdRequestNoNetworkError = 130, /* no network connection */ - AdWhirlAdRequestModalActiveError = 140 /* modal view active */ -}; - -@interface AdWhirlError : NSError { - -} - -+ (AdWhirlError *)errorWithCode:(NSInteger)code userInfo:(NSDictionary *)dict; -+ (AdWhirlError *)errorWithCode:(NSInteger)code description:(NSString *)desc; -+ (AdWhirlError *)errorWithCode:(NSInteger)code description:(NSString *)desc underlyingError:(NSError *)uError; - -- (id)initWithCode:(NSInteger)code userInfo:(NSDictionary *)dict; -- (id)initWithCode:(NSInteger)code description:(NSString *)desc; -- (id)initWithCode:(NSInteger)code description:(NSString *)desc underlyingError:(NSError *)uError; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlError.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlError.m deleted file mode 100644 index 0cca4c296..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlError.m +++ /dev/null @@ -1,56 +0,0 @@ -/* - - AdWhirlError.m - - Copyright 2009 AdMob, 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 "AdWhirlError.h" - -@implementation AdWhirlError - -+ (AdWhirlError *)errorWithCode:(NSInteger)code userInfo:(NSDictionary *)dict { - return [[[AdWhirlError alloc] initWithCode:code userInfo:dict] autorelease]; -} - -+ (AdWhirlError *)errorWithCode:(NSInteger)code description:(NSString *)desc { - return [[[AdWhirlError alloc] initWithCode:code description:desc] autorelease]; -} - -+ (AdWhirlError *)errorWithCode:(NSInteger)code description:(NSString *)desc underlyingError:(NSError *)uError { - return [[[AdWhirlError alloc] initWithCode:code description:desc underlyingError:uError] autorelease]; -} - -- (id)initWithCode:(NSInteger)code userInfo:(NSDictionary *)dict { - return [super initWithDomain:AdWhirlErrorDomain code:code userInfo:dict]; -} - -- (id)initWithCode:(NSInteger)code description:(NSString *)desc { - NSDictionary *eInfo = [NSDictionary dictionaryWithObjectsAndKeys: - desc, NSLocalizedDescriptionKey, - nil]; - return [super initWithDomain:AdWhirlErrorDomain code:code userInfo:eInfo]; -} - -- (id)initWithCode:(NSInteger)code description:(NSString *)desc underlyingError:(NSError *)uError { - NSDictionary *eInfo = [NSDictionary dictionaryWithObjectsAndKeys: - desc, NSLocalizedDescriptionKey, - uError, NSUnderlyingErrorKey, - nil]; - return [super initWithDomain:AdWhirlErrorDomain code:code userInfo:eInfo]; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlLog.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlLog.h deleted file mode 100644 index be1996dd4..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlLog.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - - AdWhirlLog.h - - Copyright 2009 AdMob, 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 - -typedef enum { - AWLogLevelNone = 0, - AWLogLevelCrit = 10, - AWLogLevelError = 20, - AWLogLevelWarn = 30, - AWLogLevelInfo = 40, - AWLogLevelDebug = 50 -} AWLogLevel; - -void AWLogSetLogLevel(AWLogLevel level); - -// The actual function name has an underscore prefix, just so we can -// hijack AWLog* with other functions for testing, by defining -// preprocessor macros -void _AWLogCrit(NSString *format, ...); -void _AWLogError(NSString *format, ...); -void _AWLogWarn(NSString *format, ...); -void _AWLogInfo(NSString *format, ...); -void _AWLogDebug(NSString *format, ...); - -#ifndef AWLogCrit -#define AWLogCrit(...) _AWLogCrit(__VA_ARGS__) -#endif - -#ifndef AWLogError -#define AWLogError(...) _AWLogError(__VA_ARGS__) -#endif - -#ifndef AWLogWarn -#define AWLogWarn(...) _AWLogWarn(__VA_ARGS__) -#endif - -#ifndef AWLogInfo -#define AWLogInfo(...) _AWLogInfo(__VA_ARGS__) -#endif - -#ifndef AWLogDebug -#define AWLogDebug(...) _AWLogDebug(__VA_ARGS__) -#endif diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlLog.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlLog.m deleted file mode 100644 index c62ec9159..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlLog.m +++ /dev/null @@ -1,67 +0,0 @@ -/* - - AdWhirlLog.m - - Copyright 2009 AdMob, 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 "AdWhirlLog.h" - -static AWLogLevel g_AWLogLevel = AWLogLevelInfo; - -void AWLogSetLogLevel(AWLogLevel level) { - g_AWLogLevel = level; -} - -void _AWLogCrit(NSString *format, ...) { - if (g_AWLogLevel < AWLogLevelCrit) return; - va_list ap; - va_start(ap, format); - NSLogv(format, ap); - va_end(ap); -} - -void _AWLogError(NSString *format, ...) { - if (g_AWLogLevel < AWLogLevelError) return; - va_list ap; - va_start(ap, format); - NSLogv(format, ap); - va_end(ap); -} - -void _AWLogWarn(NSString *format, ...) { - if (g_AWLogLevel < AWLogLevelWarn) return; - va_list ap; - va_start(ap, format); - NSLogv(format, ap); - va_end(ap); -} - -void _AWLogInfo(NSString *format, ...) { - if (g_AWLogLevel < AWLogLevelInfo) return; - va_list ap; - va_start(ap, format); - NSLogv(format, ap); - va_end(ap); -} - -void _AWLogDebug(NSString *format, ...) { - if (g_AWLogLevel < AWLogLevelDebug) return; - va_list ap; - va_start(ap, format); - NSLogv(format, ap); - va_end(ap); -} diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlView+.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlView+.h deleted file mode 100644 index 5f326bd86..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlView+.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - - AdWhirlView+.h - - Copyright 2009 AdMob, 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 "AdWhirlAdNetworkAdapter.h" - - -@class AdWhirlConfigStore; - - -@interface AdWhirlView () - -// Only initializes default values for member variables -- (id)initWithDelegate:(id)delegate; - -// Kicks off getting config from AdWhirlConfigStore -- (void)startGetConfig; - -- (void)buildPrioritizedAdNetCfgsAndMakeRequest; -- (AdWhirlAdNetworkConfig *)nextNetworkCfgByPercent; -- (AdWhirlAdNetworkConfig *)nextNetworkCfgByPriority; -- (void)makeAdRequest:(BOOL)isFirstRequest; -- (void)reportExImpression:(NSString *)nid netType:(AdWhirlAdNetworkType)type; -- (void)reportExClick:(NSString *)nid netType:(AdWhirlAdNetworkType)type; -- (BOOL)canRefresh; -- (void)resignActive:(NSNotification *)notification; -- (void)becomeActive:(NSNotification *)notification; - -- (void)notifyDelegateOfErrorWithCode:(NSInteger)errorCode - description:(NSString *)desc; -- (void)notifyDelegateOfError:(NSError *)error; - -@property (retain) AdWhirlConfig *config; -@property (retain) NSMutableArray *prioritizedAdNetCfgs; -@property (nonatomic,retain) AdWhirlAdNetworkAdapter *currAdapter; -@property (nonatomic,retain) AdWhirlAdNetworkAdapter *lastAdapter; -@property (nonatomic,retain) NSDate *lastRequestTime; -@property (nonatomic,retain) NSTimer *refreshTimer; -@property (nonatomic) BOOL showingModalView; -@property (nonatomic,assign) AdWhirlConfigStore *configStore; -@property (nonatomic,retain) AWNetworkReachabilityWrapper *rollOverReachability; -@property (nonatomic,retain) NSArray *testDarts; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlView.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlView.m deleted file mode 100644 index 523f07d1f..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlView.m +++ /dev/null @@ -1,1015 +0,0 @@ -/* - - AdWhirlView.m - - Copyright 2009 AdMob, 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 "AdWhirlView.h" -#import "AdWhirlView+.h" -#import "AdWhirlConfigStore.h" -#import "AdWhirlAdNetworkConfig.h" -#import "CJSONDeserializer.h" -#import "AdWhirlLog.h" -#import "AdWhirlAdNetworkAdapter.h" -#import "AdWhirlError.h" -#import "AdWhirlConfigStore.h" -#import "AWNetworkReachabilityWrapper.h" - -#define kAdWhirlViewAdSubViewTag 1000 - - -NSInteger adNetworkPriorityComparer(id a, id b, void *ctx) { - AdWhirlAdNetworkConfig *acfg = a, *bcfg = b; - if(acfg.priority < bcfg.priority) - return NSOrderedAscending; - else if(acfg.priority > bcfg.priority) - return NSOrderedDescending; - else - return NSOrderedSame; -} - - -@implementation AdWhirlView - -#pragma mark Properties getters/setters - -@synthesize delegate; -@synthesize config; -@synthesize prioritizedAdNetCfgs; -@synthesize currAdapter; -@synthesize lastAdapter; -@synthesize lastRequestTime; -@synthesize refreshTimer; -@synthesize lastError; -@synthesize showingModalView; -@synthesize configStore; -@synthesize rollOverReachability; -@synthesize testDarts; - -- (void)setDelegate:(id )theDelegate { - [self willChangeValueForKey:@"delegate"]; - delegate = theDelegate; - if (self.currAdapter) { - self.currAdapter.adWhirlDelegate = theDelegate; - } - if (self.lastAdapter) { - self.lastAdapter.adWhirlDelegate = theDelegate; - } - [self didChangeValueForKey:@"delegate"]; -} - - -#pragma mark Life cycle methods - -+ (AdWhirlView *)requestAdWhirlViewWithDelegate:(id)delegate { - if (![delegate respondsToSelector: - @selector(viewControllerForPresentingModalView)]) { - [NSException raise:@"AdWhirlIncompleteDelegateException" - format:@"AdWhirlDelegate must implement" - @" viewControllerForPresentingModalView"]; - } - AdWhirlView *adView - = [[[AdWhirlView alloc] initWithDelegate:delegate] autorelease]; - [adView startGetConfig]; // errors are communicated via delegate - return adView; -} - -- (id)initWithDelegate:(id)d { - self = [super initWithFrame:kAdWhirlViewDefaultFrame]; - if (self != nil) { - delegate = d; - self.backgroundColor = [UIColor clearColor]; - // to prevent ugly artifacts if ad network banners are bigger than the - // default frame - self.clipsToBounds = YES; - showingModalView = NO; - appInactive = NO; - - // default config store. Can be overridden for testing - self.configStore = [AdWhirlConfigStore sharedStore]; - - // get notified of app activity - NSNotificationCenter *notifCenter = [NSNotificationCenter defaultCenter]; - [notifCenter addObserver:self - selector:@selector(resignActive:) - name:UIApplicationWillResignActiveNotification - object:nil]; - [notifCenter addObserver:self - selector:@selector(becomeActive:) - name:UIApplicationDidBecomeActiveNotification - object:nil]; - - // remember pending ad requests, so we don't make more than one - // request per ad network at a time - pendingAdapters = [[NSMutableDictionary alloc] initWithCapacity:30]; - } - return self; -} - -- (void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; - [rollOverReachability setDelegate:nil]; - [rollOverReachability release], rollOverReachability = nil; - delegate = nil; - [config removeDelegate:self]; - [config release], config = nil; - [prioritizedAdNetCfgs release], prioritizedAdNetCfgs = nil; - totalPercent = 0.0; - requesting = NO; - currAdapter.adWhirlDelegate = nil, currAdapter.adWhirlView = nil; - [currAdapter release], currAdapter = nil; - lastAdapter.adWhirlDelegate = nil, lastAdapter.adWhirlView = nil; - [lastAdapter release], lastAdapter = nil; - [lastRequestTime release], lastRequestTime = nil; - [pendingAdapters release], pendingAdapters = nil; - if (refreshTimer != nil) { - [refreshTimer invalidate]; - [refreshTimer release], refreshTimer = nil; - } - [lastError release], lastError = nil; - - [super dealloc]; -} - - -#pragma mark Config and setup methods - -static id classAdWhirlDelegateForConfig = nil; - -+ (void)startPreFetchingConfigurationDataWithDelegate: - (id)delegate { - if (classAdWhirlDelegateForConfig != nil) { - AWLogWarn(@"Called startPreFetchingConfig when another fetch is" - @" in progress"); - return; - } - classAdWhirlDelegateForConfig = delegate; - [[AdWhirlConfigStore sharedStore] getConfig:[delegate adWhirlApplicationKey] - delegate:(id)self]; -} - -+ (void)updateAdWhirlConfigWithDelegate:(id)delegate { - if (classAdWhirlDelegateForConfig != nil) { - AWLogWarn(@"Called updateConfig when another fetch is in progress"); - return; - } - classAdWhirlDelegateForConfig = delegate; - [[AdWhirlConfigStore sharedStore] - fetchConfig:[delegate adWhirlApplicationKey] - delegate:(id)self]; -} - -- (void)startGetConfig { - // Invalidate ad refresh timer as it may change with the new config - if (self.refreshTimer) { - [self.refreshTimer invalidate]; - self.refreshTimer = nil; - } - - configFetchAttempts = 0; - AdWhirlConfig *cfg = [configStore getConfig:[delegate adWhirlApplicationKey] - delegate:(id)self]; - self.config = cfg; -} - -- (void)attemptFetchConfig { - AdWhirlConfig *cfg = [configStore - fetchConfig:[delegate adWhirlApplicationKey] - delegate:(id)self]; - if (cfg != nil) { - self.config = cfg; - } -} - -- (void)updateAdWhirlConfig { - // Invalidate ad refresh timer as it may change with the new config - if (self.refreshTimer) { - [self.refreshTimer invalidate]; - self.refreshTimer = nil; - } - - // Request new config - AWLogDebug(@"======== Updating config ========"); - configFetchAttempts = 0; - [self attemptFetchConfig]; -} - -#pragma mark Ads management private methods - -- (void)buildPrioritizedAdNetCfgsAndMakeRequest { - NSMutableArray *freshNetCfgs = [[NSMutableArray alloc] init]; - for (AdWhirlAdNetworkConfig *cfg in config.adNetworkConfigs) { - // do not add the ad network in rotation if there's already a stray - // pending ad request to this ad network (due to network outage or plain - // slow request) - NSNumber *netKey = [NSNumber numberWithInt:(int)cfg.networkType]; - if ([pendingAdapters objectForKey:netKey] == nil) { - [freshNetCfgs addObject:cfg]; - } - else { - AWLogDebug(@"Already has pending ad request for network type %d," - @" not adding ad network config %@", - cfg.networkType, cfg); - } - } - [freshNetCfgs sortUsingFunction:adNetworkPriorityComparer context:nil]; - totalPercent = 0.0; - for (AdWhirlAdNetworkConfig *cfg in freshNetCfgs) { - totalPercent += cfg.trafficPercentage; - } - self.prioritizedAdNetCfgs = freshNetCfgs; - [freshNetCfgs release]; - - [self makeAdRequest:YES]; -} - -static BOOL randSeeded = NO; -- (double)nextDart { - if (testDarts != nil) { - if (testDartIndex >= [testDarts count]) { - testDartIndex = 0; - } - NSNumber *nextDartNum = [testDarts objectAtIndex:testDartIndex]; - double dart = [nextDartNum doubleValue]; - if (dart >= totalPercent) { - dart = totalPercent - 0.001; - } - testDartIndex++; - return dart; - } - else { - if (!randSeeded) { - srandom(CFAbsoluteTimeGetCurrent()); - randSeeded = YES; - } - return ((double)(random()-1)/RAND_MAX) * totalPercent; - } -} - -- (AdWhirlAdNetworkConfig *)nextNetworkCfgByPercent { - if ([prioritizedAdNetCfgs count] == 0) { - return nil; - } - - double dart = [self nextDart]; - - double tempTotal = 0.0; - - AdWhirlAdNetworkConfig *result = nil; - for (AdWhirlAdNetworkConfig *network in prioritizedAdNetCfgs) { - result = network; // make sure there is always a network chosen - tempTotal += network.trafficPercentage; - if (dart < tempTotal) { - // this is the one to use. - break; - } - } - - AWLogDebug(@">>>> By Percent chosen %@ (%@), dart %lf in %lf", - result.nid, result.networkName, dart, totalPercent); - return result; -} - -- (AdWhirlAdNetworkConfig *)nextNetworkCfgByPriority { - if ([prioritizedAdNetCfgs count] == 0) { - return nil; - } - AdWhirlAdNetworkConfig *result = [prioritizedAdNetCfgs objectAtIndex:0]; - AWLogDebug(@">>>> By Priority chosen %@ (%@)", - result.nid, result.networkName); - return result; -} - -- (void)makeAdRequest:(BOOL)isFirstRequest { - if ([prioritizedAdNetCfgs count] == 0) { - // ran out of ad networks - [self notifyDelegateOfErrorWithCode:AdWhirlAdRequestNoMoreAdNetworks - description:@"No more ad networks to roll over"]; - return; - } - - if (showingModalView) { - AWLogDebug(@"Modal view is active, not going to request another ad"); - return; - } - [self.rollOverReachability setDelegate:nil]; - self.rollOverReachability = nil; // stop any roll over reachability checks - - if (requesting) { - // it is OK to request a new one while another one is in progress - // the adapter callbacks from the old adapter will be ignored. - // User-initiated request ad will be blocked in requestFreshAd. - AWLogDebug(@"Already requesting ad, will request a new one."); - } - requesting = YES; - - AdWhirlAdNetworkConfig *nextAdNetCfg = nil; - - if (isFirstRequest && totalPercent > 0.0) { - nextAdNetCfg = [self nextNetworkCfgByPercent]; - } - else { - nextAdNetCfg = [self nextNetworkCfgByPriority]; - } - if (nextAdNetCfg == nil) { - [self notifyDelegateOfErrorWithCode:AdWhirlAdRequestNoMoreAdNetworks - description:@"No more ad networks to request"]; - return; - } - - AdWhirlAdNetworkAdapter *adapter = - [[nextAdNetCfg.adapterClass alloc] initWithAdWhirlDelegate:delegate - view:self - config:config - networkConfig:nextAdNetCfg]; - // keep the last adapter around to catch stale ad network delegate calls - // during transitions - self.lastAdapter = self.currAdapter; - self.currAdapter = adapter; - [adapter release]; - - // take nextAdNetCfg out so we don't request again when we roll over - [prioritizedAdNetCfgs removeObject:nextAdNetCfg]; - - if (lastRequestTime) { - [lastRequestTime release]; - } - lastRequestTime = [[NSDate date] retain]; - - // remember this pending request so we do not request again when we make - // new ad requests - NSNumber *netTypeKey = [NSNumber numberWithInt:(int)nextAdNetCfg.networkType]; - [pendingAdapters setObject:currAdapter forKey:netTypeKey]; - - // If last adapter is of the same network type, make the last adapter stop - // being an ad network view delegate to prevent the last adapter from calling - // back to this AdWhirlView during the transition and afterwards. - // We should not do this for all adapters, because if the last adapter is - // still in progress, we need to know about it in the adapter callbacks. - // That the last adapter is the same type as the new adapter is possible only - // if the last ad request finished, i.e. called back to its adapters. There - // are cases, e.g. iAd, when the ad network may call back multiple times, - // because of internal refreshes. - if (self.lastAdapter.networkConfig.networkType == - self.currAdapter.networkConfig.networkType) { - [self.lastAdapter stopBeingDelegate]; - } - - [currAdapter getAd]; -} - -- (BOOL)canRefresh { - return !(ignoreNewAdRequests - || ignoreAutoRefreshTimer - || appInactive - || showingModalView); -} - -- (void)timerRequestFreshAd { - if (![self canRefresh]) { - AWLogDebug(@"Not going to refresh due to flags, app not active or modal"); - return; - } - if (lastRequestTime != nil) { - NSTimeInterval sinceLast = -[lastRequestTime timeIntervalSinceNow]; - if (sinceLast <= kAWMinimumTimeBetweenFreshAdRequests) { - AWLogDebug(@"Ad refresh timer fired too soon after last ad request," - @" ignoring"); - return; - } - } - AWLogDebug(@"======== Refreshing ad due to timer ========"); - [self buildPrioritizedAdNetCfgsAndMakeRequest]; -} - -#pragma mark Ads management public methods - -- (void)requestFreshAd { - // only make request in main thread - if (![NSThread isMainThread]) { - [self performSelectorOnMainThread:@selector(requestFreshAd) - withObject:nil - waitUntilDone:NO]; - return; - } - if (ignoreNewAdRequests) { - // don't request new ad - [self notifyDelegateOfErrorWithCode:AdWhirlAdRequestIgnoredError - description:@"ignoreNewAdRequests flag set"]; - return; - } - if (requesting) { - // don't request if there's a request outstanding - [self notifyDelegateOfErrorWithCode:AdWhirlAdRequestInProgressError - description:@"Ad request already in progress"]; - return; - } - if (showingModalView) { - // don't request if there's a modal view active - [self notifyDelegateOfErrorWithCode:AdWhirlAdRequestModalActiveError - description:@"Modal view active"]; - return; - } - if (!config) { - [self notifyDelegateOfErrorWithCode:AdWhirlAdRequestNoConfigError - description:@"No ad configuration"]; - return; - } - if (lastRequestTime != nil) { - NSTimeInterval sinceLast = -[lastRequestTime timeIntervalSinceNow]; - if (sinceLast <= kAWMinimumTimeBetweenFreshAdRequests) { - NSString *desc - = [NSString stringWithFormat: - @"Requesting fresh ad too soon! It has been only %lfs. Minimum %lfs", - sinceLast, kAWMinimumTimeBetweenFreshAdRequests]; - [self notifyDelegateOfErrorWithCode:AdWhirlAdRequestTooSoonError - description:desc]; - return; - } - } - [self buildPrioritizedAdNetCfgsAndMakeRequest]; -} - -- (void)rollOver { - if (ignoreNewAdRequests) { - return; - } - // only make request in main thread - if (![NSThread isMainThread]) { - [self performSelectorOnMainThread:@selector(rollOver) - withObject:nil - waitUntilDone:NO]; - return; - } - [self makeAdRequest:NO]; -} - -- (BOOL)adExists { - UIView *currAdView = [self viewWithTag:kAdWhirlViewAdSubViewTag]; - return currAdView != nil; -} - -- (NSString *)mostRecentNetworkName { - if (currAdapter == nil) return nil; - return currAdapter.networkConfig.networkName; -} - -- (void)ignoreAutoRefreshTimer { - ignoreAutoRefreshTimer = YES; -} - -- (void)doNotIgnoreAutoRefreshTimer { - ignoreAutoRefreshTimer = NO; -} - -- (BOOL)isIgnoringAutoRefreshTimer { - return ignoreAutoRefreshTimer; -} - -- (void)ignoreNewAdRequests { - ignoreNewAdRequests = YES; -} - -- (void)doNotIgnoreNewAdRequests { - ignoreNewAdRequests = NO; -} - -- (BOOL)isIgnoringNewAdRequests { - return ignoreNewAdRequests; -} - - -#pragma mark Stats reporting methods - -- (void)metricPing:(NSURL *)endPointBaseURL - nid:(NSString *)nid - netType:(AdWhirlAdNetworkType)type { - // use config.appKey not from [delegate adWhirlApplicationKey] as delegate - // can be niled out at this point. Attempt at Issue #42 . - NSString *query - = [NSString stringWithFormat: - @"?appid=%@&nid=%@&type=%d&country_code=%@&appver=%d&client=1", - config.appKey, - nid, - type, - [[NSLocale currentLocale] localeIdentifier], - kAdWhirlAppVer]; - NSURL *metURL = [NSURL URLWithString:query - relativeToURL:endPointBaseURL]; - AWLogDebug(@"Sending metric ping to %@", metURL); - NSURLRequest *metRequest = [NSURLRequest requestWithURL:metURL]; - [NSURLConnection connectionWithRequest:metRequest - delegate:nil]; // fire and forget -} - -- (void)reportExImpression:(NSString *)nid netType:(AdWhirlAdNetworkType)type { - NSURL *baseURL = nil; - if ([delegate respondsToSelector:@selector(adWhirlImpMetricURL)]) { - baseURL = [delegate adWhirlImpMetricURL]; - } - if (baseURL == nil) { - baseURL = [NSURL URLWithString:kAdWhirlDefaultImpMetricURL]; - } - [self metricPing:baseURL nid:nid netType:type]; -} - -- (void)reportExClick:(NSString *)nid netType:(AdWhirlAdNetworkType)type { - NSURL *baseURL = nil; - if ([delegate respondsToSelector:@selector(adWhirlClickMetricURL)]) { - baseURL = [delegate adWhirlClickMetricURL]; - } - if (baseURL == nil) { - baseURL = [NSURL URLWithString:kAdWhirlDefaultClickMetricURL]; - } - [self metricPing:baseURL nid:nid netType:type]; -} - - -#pragma mark UI methods - -- (CGSize)actualAdSize { - if (currAdapter == nil || currAdapter.adNetworkView == nil) - return kAdWhirlViewDefaultSize; - return currAdapter.adNetworkView.frame.size; -} - -- (void)rotateToOrientation:(UIInterfaceOrientation)orientation { - if (currAdapter == nil) return; - [currAdapter rotateToOrientation:orientation]; -} - -- (void)transitionToView:(UIView *)view { - UIView *currAdView = [self viewWithTag:kAdWhirlViewAdSubViewTag]; - if (view == currAdView) { - AWLogDebug(@"ignoring ad transition to itself"); - return; // no need to transition to itself - } - view.tag = kAdWhirlViewAdSubViewTag; - if (currAdView) { - // swap - currAdView.tag = 0; - - AWBannerAnimationType animType; - if (config.bannerAnimationType == AWBannerAnimationTypeRandom) { - if (!randSeeded) { - srandom(CFAbsoluteTimeGetCurrent()); - } - // range is 1 to 7, inclusive - animType = (random() % 7) + 1; - AWLogDebug(@"Animation type chosen by random is %d", animType); - } - else { - animType = config.bannerAnimationType; - } - if (![currAdapter isBannerAnimationOK:animType]) { - animType = AWBannerAnimationTypeNone; - } - - if (animType == AWBannerAnimationTypeNone) { - [currAdView removeFromSuperview]; - [self addSubview:view]; - if ([delegate respondsToSelector: - @selector(adWhirlDidAnimateToNewAdIn:)]) { - // no animation, callback right away - [(NSObject *)delegate - performSelectorOnMainThread:@selector(adWhirlDidAnimateToNewAdIn:) - withObject:self - waitUntilDone:NO]; - } - } - else { - switch (animType) { - case AWBannerAnimationTypeSlideFromLeft: - { - CGRect f = view.frame; - f.origin.x = -f.size.width; - view.frame = f; - [self addSubview:view]; - break; - } - case AWBannerAnimationTypeSlideFromRight: - { - CGRect f = view.frame; - f.origin.x = self.frame.size.width; - view.frame = f; - [self addSubview:view]; - break; - } - case AWBannerAnimationTypeFadeIn: - view.alpha = 0; - [self addSubview:view]; - break; - default: - // no setup required for other animation types - break; - } - - [currAdView retain]; // will be released when animation is done - AWLogDebug(@"Beginning AdWhirlAdTransition animation" - @" currAdView %x incoming %x", currAdView, view); - [UIView beginAnimations:@"AdWhirlAdTransition" context:currAdView]; - [UIView setAnimationDelegate:self]; - [UIView setAnimationDidStopSelector: - @selector(newAdAnimationDidStopWithAnimationID:finished:context:)]; - [UIView setAnimationBeginsFromCurrentState:YES]; - [UIView setAnimationDuration:1.0]; - // cache has to set to NO because of VideoEgg - switch (animType) { - case AWBannerAnimationTypeFlipFromLeft: - [self addSubview:view]; - [currAdView removeFromSuperview]; - [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft - forView:self - cache:NO]; - break; - case AWBannerAnimationTypeFlipFromRight: - [self addSubview:view]; - [currAdView removeFromSuperview]; - [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight - forView:self - cache:NO]; - break; - case AWBannerAnimationTypeCurlUp: - [self addSubview:view]; - [currAdView removeFromSuperview]; - [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp - forView:self - cache:NO]; - break; - case AWBannerAnimationTypeCurlDown: - [self addSubview:view]; - [currAdView removeFromSuperview]; - [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown - forView:self - cache:NO]; - break; - case AWBannerAnimationTypeSlideFromLeft: - case AWBannerAnimationTypeSlideFromRight: - { - CGRect f = view.frame; - f.origin.x = 0; - view.frame = f; - break; - } - case AWBannerAnimationTypeFadeIn: - view.alpha = 1.0; - break; - default: - [self addSubview:view]; - AWLogWarn(@"Unrecognized Animation type: %d", animType); - break; - } - [UIView commitAnimations]; - } - } - else { // currAdView - // new - [self addSubview:view]; - if ([delegate respondsToSelector:@selector(adWhirlDidAnimateToNewAdIn:)]) { - // no animation, callback right away - [(NSObject *)delegate - performSelectorOnMainThread:@selector(adWhirlDidAnimateToNewAdIn:) - withObject:self - waitUntilDone:NO]; - } - } -} - -- (void)replaceBannerViewWith:(UIView*)bannerView { - [self transitionToView:bannerView]; -} - -// Called at the end of the new ad animation; we use this opportunity to do -// memory management cleanup. See the comment in adDidLoad:. -- (void)newAdAnimationDidStopWithAnimationID:(NSString *)animationID - finished:(BOOL)finished - context:(void *)context -{ - AWLogDebug(@"animation %@ finished %@ context %x", - animationID, finished? @"YES":@"NO", context); - UIView *adViewToRemove = (UIView *)context; - [adViewToRemove removeFromSuperview]; - [adViewToRemove release]; // was retained before beginAnimations - lastAdapter.adWhirlDelegate = nil, lastAdapter.adWhirlView = nil; - self.lastAdapter = nil; - if ([delegate respondsToSelector:@selector(adWhirlDidAnimateToNewAdIn:)]) { - [delegate adWhirlDidAnimateToNewAdIn:self]; - } -} - - -#pragma mark UIView touch methods - -- (BOOL)_isEventATouch30:(UIEvent *)event { - if ([event respondsToSelector:@selector(type)]) { - return event.type == UIEventTypeTouches; - } - return YES; // UIEvent in 2.2.1 has no type property, so assume yes. -} - -- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event { - BOOL itsInside = [super pointInside:point withEvent:event]; - if (itsInside && currAdapter != nil && lastNotifyAdapter != currAdapter - && [self _isEventATouch30:event] - && [currAdapter shouldSendExMetric]) { - lastNotifyAdapter = currAdapter; - [self reportExClick:currAdapter.networkConfig.nid - netType:currAdapter.networkConfig.networkType]; - } - return itsInside; -} - - -#pragma mark UIView methods - -- (void)willMoveToSuperview:(UIView *)newSuperview { - if (newSuperview == nil) { - [refreshTimer invalidate]; - self.refreshTimer = nil; - } -} - - -#pragma mark Adapter callbacks - -// Chores that are common to all adapter callbacks -- (void)adRequestReturnsForAdapter:(AdWhirlAdNetworkAdapter *)adapter { - // no longer pending. Need to retain and autorelease the adapter - // since the adapter may not be retained anywhere else other than the pending - // dict - NSNumber *netTypeKey - = [NSNumber numberWithInt:(int)adapter.networkConfig.networkType]; - AdWhirlAdNetworkAdapter *pendingAdapter - = [pendingAdapters objectForKey:netTypeKey]; - if (pendingAdapter != nil) { - if (pendingAdapter != adapter) { - // Possible if the ad refreshes itself and sends callbacks doing so, while - // a new ad of the same network is pending (e.g. iAd) - AWLogError(@"Stored pending adapter %@ for network type %@ is different" - @" from the one sending the adapter callback %@", - pendingAdapter, - netTypeKey, - adapter); - } - [[pendingAdapter retain] autorelease]; - [pendingAdapters removeObjectForKey:netTypeKey]; - } -} - -- (void)adapter:(AdWhirlAdNetworkAdapter *)adapter - didReceiveAdView:(UIView *)view { - [self adRequestReturnsForAdapter:adapter]; - if (adapter != currAdapter) { - AWLogDebug(@"Received didReceiveAdView from a stale adapter %@", adapter); - return; - } - AWLogDebug(@"Received ad from adapter (nid %@)", adapter.networkConfig.nid); - - // UIView operations should be performed on main thread - [self performSelectorOnMainThread:@selector(transitionToView:) - withObject:view - waitUntilDone:NO]; - requesting = NO; - - // report impression and notify delegate - if ([adapter shouldSendExMetric]) { - [self reportExImpression:adapter.networkConfig.nid - netType:adapter.networkConfig.networkType]; - } - if ([delegate respondsToSelector:@selector(adWhirlDidReceiveAd:)]) { - [delegate adWhirlDidReceiveAd:self]; - } -} - -- (void)adapter:(AdWhirlAdNetworkAdapter *)adapter didFailAd:(NSError *)error { - [self adRequestReturnsForAdapter:adapter]; - if (adapter != currAdapter) { - AWLogDebug(@"Received didFailAd from a stale adapter %@: %@", - adapter, error); - return; - } - AWLogDebug(@"Failed to receive ad from adapter (nid %@): %@", - adapter.networkConfig.nid, error); - requesting = NO; - - if ([prioritizedAdNetCfgs count] == 0) { - // we have run out of networks to try and need to error out. - [self notifyDelegateOfErrorWithCode:AdWhirlAdRequestNoMoreAdNetworks - description:@"No more ad networks to roll over"]; - return; - } - - // try to roll over, but before we do, check to see if the failure is because - // network has gotten unreachable. If so, don't roll over. Use www.google.com - // as test, assuming www.google.com itself is always up if there's network. - self.rollOverReachability - = [AWNetworkReachabilityWrapper reachabilityWithHostname:@"www.google.com" - callbackDelegate:self]; - if (self.rollOverReachability == nil) { - [self notifyDelegateOfErrorWithCode:AdWhirlAdRequestNoNetworkError - description:@"Failed network reachability test"]; - return; - } - if (![self.rollOverReachability scheduleInCurrentRunLoop]) { - [self notifyDelegateOfErrorWithCode:AdWhirlAdRequestNoNetworkError - description:@"Failed network reachability test"]; - return; - } -} - -- (void)adapterDidFinishAdRequest:(AdWhirlAdNetworkAdapter *)adapter { - [self adRequestReturnsForAdapter:adapter]; - if (adapter != currAdapter) { - AWLogDebug(@"Received adapterDidFinishAdRequest from a stale adapter"); - return; - } - // view is supplied via other mechanism (e.g. Generic Notification or Event) - requesting = NO; - - // report impression. No need to notify delegate because delegate is notified - // via Generic Notification or event. - if ([adapter shouldSendExMetric]) { - [self reportExImpression:adapter.networkConfig.nid - netType:adapter.networkConfig.networkType]; - } -} - - -#pragma mark AWNetworkReachabilityDelegate methods - -- (void)reachabilityNotReachable:(AWNetworkReachabilityWrapper *)reach { - if (reach == self.rollOverReachability) { - [self.rollOverReachability setDelegate:nil]; - self.rollOverReachability = nil; // release it and unschedule - [self notifyDelegateOfErrorWithCode:AdWhirlAdRequestNoNetworkError - description:@"No network connection for rollover"]; - return; - } - AWLogWarn(@"Unrecognized reachability called not reachable %s:%d", - __FILE__, __LINE__); -} - -- (void)reachabilityBecameReachable:(AWNetworkReachabilityWrapper *)reach { - if (reach == self.rollOverReachability) { - // not an error, just need to rollover - [lastError release], lastError = nil; - if ([delegate respondsToSelector: - @selector(adWhirlDidFailToReceiveAd:usingBackup:)]) { - [delegate adWhirlDidFailToReceiveAd:self usingBackup:YES]; - } - [self.rollOverReachability setDelegate:nil]; - self.rollOverReachability = nil; // release it and unschedule - [self rollOver]; - return; - } - AWLogWarn(@"Unrecognized reachability called reachable %s:%d", - __FILE__, __LINE__); -} - - -#pragma mark AdWhirlConfigDelegate methods - -+ (NSURL *)adWhirlConfigURL { - if (classAdWhirlDelegateForConfig != nil - && [classAdWhirlDelegateForConfig respondsToSelector: - @selector(adWhirlConfigURL)]) { - return [classAdWhirlDelegateForConfig adWhirlConfigURL]; - } - return nil; -} - -+ (void)adWhirlConfigDidReceiveConfig:(AdWhirlConfig *)config { - AWLogDebug(@"Fetched Ad network config: %@", config); - if (classAdWhirlDelegateForConfig != nil - && [classAdWhirlDelegateForConfig respondsToSelector: - @selector(adWhirlDidReceiveConfig:)]) { - [classAdWhirlDelegateForConfig adWhirlDidReceiveConfig:nil]; - } - classAdWhirlDelegateForConfig = nil; -} - -+ (void)adWhirlConfigDidFail:(AdWhirlConfig *)cfg error:(NSError *)error { - AWLogError(@"Failed pre-fetching AdWhirl config: %@", error); - classAdWhirlDelegateForConfig = nil; -} - -- (void)adWhirlConfigDidReceiveConfig:(AdWhirlConfig *)cfg { - if (self.config != cfg) { - AWLogWarn(@"AdWhirlView: getting adWhirlConfigDidReceiveConfig callback" - @" from unknown AdWhirlConfig object"); - return; - } - AWLogDebug(@"Fetched Ad network config: %@", cfg); - if ([delegate respondsToSelector:@selector(adWhirlDidReceiveConfig:)]) { - [delegate adWhirlDidReceiveConfig:self]; - } - if (cfg.adsAreOff) { - if ([delegate respondsToSelector: - @selector(adWhirlReceivedNotificationAdsAreOff:)]) { - // to prevent self being freed before this returns, in case the - // delegate decides to release this - [self retain]; - [delegate adWhirlReceivedNotificationAdsAreOff:self]; - [self autorelease]; - } - return; - } - - // Perform ad network data structure build and request in main thread - // to avoid contention - [self performSelectorOnMainThread: - @selector(buildPrioritizedAdNetCfgsAndMakeRequest) - withObject:nil - waitUntilDone:NO]; - - // Setup recurring timer for ad refreshes, if required - if (config.refreshInterval > kAWMinimumTimeBetweenFreshAdRequests) { - self.refreshTimer - = [NSTimer scheduledTimerWithTimeInterval:config.refreshInterval - target:self - selector:@selector(timerRequestFreshAd) - userInfo:nil - repeats:YES]; - } -} - -- (void)adWhirlConfigDidFail:(AdWhirlConfig *)cfg error:(NSError *)error { - if (self.config != nil && self.config != cfg) { - // self.config could be nil if this is called before init is finished - AWLogWarn(@"AdWhirlView: getting adWhirlConfigDidFail callback from unknown" - @" AdWhirlConfig object"); - return; - } - configFetchAttempts++; - if (configFetchAttempts < 3) { - // schedule in run loop to avoid recursive calls to this function - [self performSelectorOnMainThread:@selector(attemptFetchConfig) - withObject:self - waitUntilDone:NO]; - } - else { - AWLogError(@"Failed fetching AdWhirl config: %@", error); - [self notifyDelegateOfError:error]; - } -} - -- (NSURL *)adWhirlConfigURL { - if ([delegate respondsToSelector:@selector(adWhirlConfigURL)]) { - return [delegate adWhirlConfigURL]; - } - return nil; -} - - -#pragma mark Active status notification callbacks - -- (void)resignActive:(NSNotification *)notification { - AWLogDebug(@"App become inactive, AdWhirlView will stop requesting ads"); - appInactive = YES; -} - -- (void)becomeActive:(NSNotification *)notification { - AWLogDebug(@"App become active, AdWhirlView will resume requesting ads"); - appInactive = NO; -} - - -#pragma mark AdWhirlDelegate helper methods - -- (void)notifyDelegateOfErrorWithCode:(NSInteger)errorCode - description:(NSString *)desc { - NSError *error = [[AdWhirlError alloc] initWithCode:errorCode - description:desc]; - [self notifyDelegateOfError:error]; - [error release]; -} - -- (void)notifyDelegateOfError:(NSError *)error { - [error retain]; - [lastError release]; - lastError = error; - if ([delegate respondsToSelector: - @selector(adWhirlDidFailToReceiveAd:usingBackup:)]) { - // to prevent self being freed before this returns, in case the - // delegate decides to release this - [self retain]; - [delegate adWhirlDidFailToReceiveAd:self usingBackup:NO]; - [self autorelease]; - } -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlWebBrowser.xib b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlWebBrowser.xib deleted file mode 100644 index 21866d575..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlWebBrowser.xib +++ /dev/null @@ -1,764 +0,0 @@ - - - - 784 - 10D573 - 762 - 1038.29 - 460.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 87 - - - YES - - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - YES - - - - YES - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - YES - - - 274 - {320, 436} - - - 3 - MQA - - 2 - - - YES - YES - 2000 - IBCocoaTouchFramework - YES - 1 - YES - - - - 266 - {{0, 436}, {320, 44}} - - NO - NO - 1000 - IBCocoaTouchFramework - - YES - - 1001 - NO - IBCocoaTouchFramework - - - - IBCocoaTouchFramework - - 5 - - - 1002 - NO - IBCocoaTouchFramework - - 17 - - - IBCocoaTouchFramework - - 5 - - - 1003 - NO - IBCocoaTouchFramework - - 13 - - - 1004 - NO - IBCocoaTouchFramework - - 14 - - - IBCocoaTouchFramework - - 5 - - - 1005 - NO - IBCocoaTouchFramework - - 9 - - - IBCocoaTouchFramework - - 5 - - - 1006 - IBCocoaTouchFramework - 1 - - 0 - - - - 3 - MAA - - - - - {320, 480} - - - 3 - MAA - - - IBCocoaTouchFramework - - - - - YES - - - view - - - - 10 - - - - delegate - - - - 13 - - - - back: - - - - 41 - - - - forward: - - - - 42 - - - - reload: - - - - 43 - - - - stop: - - - - 44 - - - - linkOut: - - - - 45 - - - - close: - - - - 46 - - - - backButton - - - - 64 - - - - closeButton - - - - 65 - - - - forwardButton - - - - 66 - - - - linkOutButton - - - - 67 - - - - reloadButton - - - - 68 - - - - stopButton - - - - 69 - - - - webView - - - - 70 - - - - toolBar - - - - 71 - - - - - YES - - 0 - - - - - - 1 - - - YES - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 3 - - - - - 4 - - - YES - - - - - - - - - - - - - - - 5 - - - - - 6 - - - - - 7 - - - - - 8 - - - - - 9 - - - - - 25 - - - - - 26 - - - - - 31 - - - - - 39 - - - - - 40 - - - - - - - YES - - YES - -1.CustomClassName - -2.CustomClassName - 1.IBEditorWindowLastContentRect - 1.IBPluginDependency - 25.IBPluginDependency - 26.IBPluginDependency - 3.IBPluginDependency - 31.IBPluginDependency - 39.IBPluginDependency - 4.IBPluginDependency - 40.IBPluginDependency - 5.CustomClassName - 5.IBPluginDependency - 6.IBPluginDependency - 7.IBPluginDependency - 8.IBPluginDependency - 9.IBPluginDependency - - - YES - AdWhirlWebBrowserController - UIResponder - {{577, 64}, {320, 480}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - AdWhirlBackButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - YES - - - - - YES - - - YES - - - - 71 - - - - YES - - AdWhirlBackButton - UIBarButtonItem - - IBProjectSource - ../AdWhirl/internal/AdWhirlWebBrowserController.h - - - - AdWhirlWebBrowserController - UIViewController - - YES - - YES - back: - close: - forward: - linkOut: - reload: - stop: - - - YES - id - id - id - id - id - id - - - - YES - - YES - backButton - closeButton - delegate - forwardButton - linkOutButton - reloadButton - stopButton - toolBar - webView - - - YES - UIBarButtonItem - UIBarButtonItem - id - UIBarButtonItem - UIBarButtonItem - UIBarButtonItem - UIBarButtonItem - UIToolbar - UIWebView - - - - - - - YES - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSNetServices.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSPort.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSStream.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSXMLParser.h - - - - NSObject - - IBFrameworkSource - QuartzCore.framework/Headers/CAAnimation.h - - - - NSObject - - IBFrameworkSource - QuartzCore.framework/Headers/CALayer.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIAccessibility.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UINibLoading.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIResponder.h - - - - UIBarButtonItem - UIBarItem - - IBFrameworkSource - UIKit.framework/Headers/UIBarButtonItem.h - - - - UIBarItem - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIBarItem.h - - - - UIResponder - NSObject - - - - UISearchBar - UIView - - IBFrameworkSource - UIKit.framework/Headers/UISearchBar.h - - - - UISearchDisplayController - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UISearchDisplayController.h - - - - UIToolbar - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIToolbar.h - - - - UIView - - IBFrameworkSource - UIKit.framework/Headers/UITextField.h - - - - UIView - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIView.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UINavigationController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UITabBarController.h - - - - UIViewController - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIViewController.h - - - - UIWebView - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIWebView.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - ../AdWhirlSDK2_Sample.xcodeproj - 3 - 87 - - diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlWebBrowserController.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlWebBrowserController.h deleted file mode 100644 index 79c7c90e2..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlWebBrowserController.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - - AdWhirlWebBrowserController.h - - Copyright 2009 AdMob, 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 -#import -#import "AdWhirlCustomAdView.h" - -@class AdWhirlWebBrowserController; - -@protocol AdWhirlWebBrowserControllerDelegate - -- (void)webBrowserClosed:(AdWhirlWebBrowserController *)controller; - -@end - - -@interface AdWhirlWebBrowserController : UIViewController { - id delegate; - UIViewController *viewControllerForPresenting; - NSArray *loadingButtons; - NSArray *loadedButtons; - AWCustomAdWebViewAnimType transitionType; - - UIWebView *webView; - UIToolbar *toolBar; - UIBarButtonItem *backButton; - UIBarButtonItem *forwardButton; - UIBarButtonItem *reloadButton; - UIBarButtonItem *stopButton; - UIBarButtonItem *linkOutButton; - UIBarButtonItem *closeButton; -} - -@property (nonatomic,assign) id delegate; -@property (nonatomic,assign) UIViewController *viewControllerForPresenting; -@property (nonatomic,retain) IBOutlet UIWebView *webView; -@property (nonatomic,retain) IBOutlet UIToolbar *toolBar; -@property (nonatomic,retain) IBOutlet UIBarButtonItem *backButton; -@property (nonatomic,retain) IBOutlet UIBarButtonItem *forwardButton; -@property (nonatomic,retain) IBOutlet UIBarButtonItem *reloadButton; -@property (nonatomic,retain) IBOutlet UIBarButtonItem *stopButton; -@property (nonatomic,retain) IBOutlet UIBarButtonItem *linkOutButton; -@property (nonatomic,retain) IBOutlet UIBarButtonItem *closeButton; - -- (void)presentWithController:(UIViewController *)viewController transition:(AWCustomAdWebViewAnimType)animType; -- (void)loadURL:(NSURL *)url; -- (IBAction)back:(id)sender; -- (IBAction)forward:(id)sender; -- (IBAction)reload:(id)sender; -- (IBAction)stop:(id)sender; -- (IBAction)linkOut:(id)sender; -- (IBAction)close:(id)sender; - -@end - -@interface AdWhirlBackButton : UIBarButtonItem -@end - diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlWebBrowserController.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlWebBrowserController.m deleted file mode 100644 index 98e07b538..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/AdWhirlWebBrowserController.m +++ /dev/null @@ -1,266 +0,0 @@ -/* - - AdWhirlWebBrowserController.m - - Copyright 2009 AdMob, 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 "AdWhirlWebBrowserController.h" -#import "AdWhirlLog.h" - -#define kAWWebViewAnimDuration 1.0 - -@interface AdWhirlWebBrowserController () -@property (nonatomic,retain) NSArray *loadingButtons; -@property (nonatomic,retain) NSArray *loadedButtons; -@end - - -@implementation AdWhirlWebBrowserController - -@synthesize delegate; -@synthesize viewControllerForPresenting; -@synthesize loadingButtons; -@synthesize loadedButtons; - -@synthesize webView; -@synthesize toolBar; -@synthesize backButton; -@synthesize forwardButton; -@synthesize reloadButton; -@synthesize stopButton; -@synthesize linkOutButton; -@synthesize closeButton; - - -- (id)init { - if ((self = [super initWithNibName:@"AdWhirlWebBrowser" bundle:nil])) { - } - return self; -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - if (self.webView.request) { - // has content from before, clear by creating another UIWebView - CGRect frame = self.webView.frame; - NSInteger tag = self.webView.tag; - UIWebView *newView = [[UIWebView alloc] initWithFrame:frame]; - newView.tag = tag; - UIWebView *oldView = self.webView; - [oldView removeFromSuperview]; - [self.view addSubview:newView]; - newView.delegate = self; - newView.scalesPageToFit = YES; - [newView release]; - } - self.toolBar.items = self.loadedButtons; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - NSArray *items = self.toolBar.items; - - NSMutableArray *loadingItems = [[NSMutableArray alloc] init]; - [loadingItems addObjectsFromArray:items]; - [loadingItems removeObjectAtIndex:4]; - self.loadingButtons = loadingItems; - [loadingItems release], loadingItems = nil; - - NSMutableArray *loadedItems = [[NSMutableArray alloc] init]; - [loadedItems addObjectsFromArray:items]; - [loadedItems removeObjectAtIndex:5]; - self.loadedButtons = loadedItems; - [loadedItems release], loadedItems = nil; -} - -- (void)viewDidDisappear:(BOOL)animated { - if (self.delegate) { - [delegate webBrowserClosed:self]; - } -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return [viewControllerForPresenting shouldAutorotateToInterfaceOrientation:interfaceOrientation]; -} - -- (void)didReceiveMemoryWarning { - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. -} - -- (void)presentWithController:(UIViewController *)viewController transition:(AWCustomAdWebViewAnimType)animType { - self.viewControllerForPresenting = viewController; - - if ([self respondsToSelector:@selector(setModalTransitionStyle:)]) { - switch (animType) { - case AWCustomAdWebViewAnimTypeFlipFromLeft: - case AWCustomAdWebViewAnimTypeFlipFromRight: - self.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; - break; - case AWCustomAdWebViewAnimTypeFadeIn: - self.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; - case AWCustomAdWebViewAnimTypeModal: - default: - self.modalTransitionStyle = UIModalTransitionStyleCoverVertical; - break; - } - } - [viewController presentModalViewController:self animated:YES]; -} - -- (void)loadURL:(NSURL *)url { - NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url]; - [self.webView loadRequest:urlRequest]; -} - -- (void)dealloc { - [loadingButtons release], loadingButtons = nil; - [loadedButtons release], loadedButtons = nil; - - // IBOutlets were retained automatically - webView.delegate = nil; - [webView release], webView = nil; - [toolBar release], toolBar = nil; - [backButton release], backButton = nil; - [forwardButton release], forwardButton = nil; - [reloadButton release], reloadButton = nil; - [stopButton release], stopButton = nil; - [linkOutButton release], linkOutButton = nil; - [closeButton release], closeButton = nil; - [super dealloc]; -} - -#pragma mark - -#pragma mark UIWebViewDelegate methods - -- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request - navigationType:(UIWebViewNavigationType)navigationType { - if ([request URL] != nil && [[request URL] scheme] != nil) { - if ([[[request URL] scheme] isEqualToString:@"mailto"]) { - // need to explicitly call out to the Mail app - [[UIApplication sharedApplication] openURL:[request URL]]; - } - } - return YES; -} - -- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { - [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; - self.toolBar.items = self.loadedButtons; - if (self.webView.canGoForward) { - self.forwardButton.enabled = YES; - } - if (self.webView.canGoBack) { - self.backButton.enabled = YES; - } - self.reloadButton.enabled = YES; - self.stopButton.enabled = NO; - if (self.webView.request) { - self.linkOutButton.enabled = YES; - } -} - -- (void)webViewDidFinishLoad:(UIWebView *)webView { - [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; - self.toolBar.items = self.loadedButtons; - if (self.webView.canGoForward) { - self.forwardButton.enabled = YES; - } - if (self.webView.canGoBack) { - self.backButton.enabled = YES; - } - self.reloadButton.enabled = YES; - self.stopButton.enabled = NO; - if (self.webView.request) { - self.linkOutButton.enabled = YES; - } - -// // extract title of page -// NSString* title = [self.webView stringByEvaluatingJavaScriptFromString: @"document.title"]; -// self.navigationItem.title = title; -} - -- (void)webViewDidStartLoad:(UIWebView *)webView { - [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; - self.toolBar.items = self.loadingButtons; - self.forwardButton.enabled = NO; - self.backButton.enabled = NO; - self.reloadButton.enabled = NO; - self.stopButton.enabled = YES; -} - -#pragma mark - -#pragma mark button targets - -- (IBAction)forward:(id)sender { - [self.webView goForward]; -} - -- (IBAction)back:(id)sender { - [self.webView goBack]; -} - -- (IBAction)stop:(id)sender { - [self.webView stopLoading]; -} - -- (IBAction)reload:(id)sender { - [self.webView reload]; -} - -- (IBAction)linkOut:(id)sender { - [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; - [[UIApplication sharedApplication] openURL:self.webView.request.URL]; -} - -- (IBAction)close:(id)sender { - [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; - [viewControllerForPresenting dismissModalViewControllerAnimated:YES]; -} - -@end - - -@implementation AdWhirlBackButton - -- (void)awakeFromNib { - // draw the back image - CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB(); - CGContextRef ctx = CGBitmapContextCreate(nil, 25, 25, 8, 0, colorspace, - kCGImageAlphaPremultipliedLast); - CGColorSpaceRelease(colorspace); - CGPoint bot = CGPointMake(19, 2); - CGPoint top = CGPointMake(19, 20); - CGPoint tip = CGPointMake(4, 11); - CGContextSetFillColorWithColor(ctx, [UIColor whiteColor].CGColor); - CGContextMoveToPoint(ctx, bot.x, bot.y); - CGContextAddLineToPoint(ctx, tip.x, tip.y); - CGContextAddLineToPoint(ctx, top.x, top.y); - CGContextFillPath(ctx); - - // set the image - CGImageRef backImgRef = CGBitmapContextCreateImage(ctx); - CGContextRelease(ctx); - UIImage* backImage = [[UIImage alloc] initWithCGImage:backImgRef]; - CGImageRelease(backImgRef); - self.image = backImage; - [backImage release]; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/UIColor+AdWhirlConfig.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/UIColor+AdWhirlConfig.h deleted file mode 100644 index 0edf8d924..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/UIColor+AdWhirlConfig.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - - UIColor+AdWhirlConfig.h - - Copyright 2010 Google 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 -#import -#import "UIColor+AdWhirlConfig.h" - -@class AdWhirlConfig; - -@interface UIColor (AdWhirlConfig) - -- (id)initWithDict:(NSDictionary *)dict; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/UIColor+AdWhirlConfig.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/UIColor+AdWhirlConfig.m deleted file mode 100644 index e72b96f56..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/internal/UIColor+AdWhirlConfig.m +++ /dev/null @@ -1,73 +0,0 @@ -/* - - UIColor+AdWhirlConfig.m - - Copyright 2010 Google 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 "UIColor+AdWhirlConfig.h" -#import "AdWhirlConfig.h" - -@implementation UIColor (AdWhirlConfig) - -- (id)initWithDict:(NSDictionary *)dict { - id red, green, blue, alpha; - CGFloat r, g, b, a; - - red = [dict objectForKey:@"red"]; - if (red == nil) { - [self release]; - return nil; - } - green = [dict objectForKey:@"green"]; - if (green == nil) { - [self release]; - return nil; - } - blue = [dict objectForKey:@"blue"]; - if (blue == nil) { - [self release]; - return nil; - } - - NSInteger temp; - if (!awIntVal(&temp, red)) { - [self release]; - return nil; - } - r = (CGFloat)temp/255.0; - if (!awIntVal(&temp, green)) { - [self release]; - return nil; - } - g = (CGFloat)temp/255.0; - if (!awIntVal(&temp, blue)) { - [self release]; - return nil; - } - b = (CGFloat)temp/255.0; - - a = 1.0; // default 1.0 - alpha = [dict objectForKey:@"alpha"]; - CGFloat temp_f; - if (alpha != nil && awFloatVal(&temp_f, alpha)) { - a = (CGFloat)temp_f; - } - - return [self initWithRed:r green:g blue:b alpha:a]; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/legacy/ARRollerProtocol.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/legacy/ARRollerProtocol.h deleted file mode 100644 index b471fe65a..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/legacy/ARRollerProtocol.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - - ARRollerProtocol.h - - Copyright 2009 AdMob, 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 "AdWhirlDelegateProtocol.h" - -#define ARRollerDelegate AdWhirlDelegate - -#define adRolloApplicationKey adWhirlApplicationKey -#define rollerDidReceiveAd adWhirlDidReceiveAd -#define rollerDidFailToReceiveAd adWhirlDidFailToReceiveAd -#define rollerReceivedRequestForDeveloperToFulfill adWhirlReceivedRequestForDeveloperToFufill -#define rollerReceivedNotificationAdsAreOff adWhirlView -#define willDisplayWebViewCanvas adWhirlWillPresentFullScreenModal -#define didDismissWebViewCanvas adWhirlDidDismissFullScreenModal diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/legacy/ARRollerView.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/legacy/ARRollerView.h deleted file mode 100644 index 4f6753a09..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/legacy/ARRollerView.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - - ARRollerView.h - - Copyright 2009 AdMob, 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 "AdWhirlView.h" -#import "ARRollerProtocol.h" - -@interface ARRollerView : AdWhirlView - -+ (ARRollerView*)requestRollerViewWithDelegate:(id)delegate; -- (void)getNextAd; -- (void)setDelegateToNil; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/Changelog.txt b/adwhirl/AdWhirlSDK_iOS_3.1.1/Changelog.txt deleted file mode 100644 index 926476bb9..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/Changelog.txt +++ /dev/null @@ -1,103 +0,0 @@ -AdWhirl iPhone SDK Changelog - -For a full detailed change log visit http://code.google.com/p/adwhirl/source/list?repo=sdk - -*************************** -Version 3.1.0 (Nov 15 2011) -*************************** - -- Added support for Nexage network -- Updated InMobi adapter to be compliant with v300 -- Updated Millennial adapter to be compliant with v4.2.6 -- Updated JumpTap adapter to be compliant with v2.0.14.1 -- Fixed Reachability NPE (Issue #118) -- Fixed potential NSError null dereference (Issue #179) - -*************************** -Version 3.0.0 (Apr 1 2011) -*************************** - -- Added support for 640x100 house ads -- Added support for the new Google AdMob Ads SDK -- Updated Millennial Media adapters to support v4.2 of their SDK -- Fixed Issue #178: network activity indicator bug - -*************************** -Version 2.6.3 (Mar 1 2011) -*************************** - -- Modified iAd adapter to use new Portrait/Landscape size constants. -- Added OneRiot adapter. - -*************************** -Version 2.6.2 (Nov 29 2010) -*************************** - -- Fixed Issue #70 with patch from Greystripe -- Fixed Issue #77 by releasing Jumptap object -- Issue #121 updated MdotM Adapter with patch from MdotM -- Added support for BrightRoll (Issue #134) - -*************************** -Version 2.6.1 (Oct 8 2010) -*************************** - -- Fixed Issue #42: Get the appid from the config instead of the delegate when reporting impressions. The delegate may have been gone by then. -- Fixed Issue #104 and #106: Fixed race condition where AdWhirl's refresh timer coincides with iAd's refresh timer, and the old iAd calling back when transitioning to the new iAd. In the process, added stopBeingDelegate required method for ad network adapters. -- Fixed Issue #116: Don't choose next ad network by percent if the total available percentage is 0. -- Don't make new ad request if modal view is active in any case. -- Added InMobi support. -- Remove support for Google AdSense expandables. It does not work with AdWhirl. - -*************************** -Version 2.6.0 (Sep 17 2010) -*************************** - -- Rewrote ads refresh mechanism, which should make ad refreshes more robust (Issues #33, #61, #69, #87): - - Setup a recurring timer regardless of whether ad requests succeeded or not. - - Retries fetching config three times before declaring failure. - - More proactively checking reachability when fetching config (Issue #99). -- Fixed issues with crashes related to network connections and reachability checks (Issues #85, #86, #92) -- Refactored and added tests for AdWhirlConfigStore. -- Fixed Issue 89: Prevent using fade in transition for iAd. -- Fixed Issue 90: Use new class method locationServicesEnabled of CLLocationManager available for iOS 4 to prevent memory leaks and deprecation warnings. -- Fixed Issue 91: nil out adView.delegate in MdotM adapter's dealloc. - -*************************** -Version 2.5.5 (Aug 19 2010) -*************************** - -- Added a test framework and some unit tests, using Google Toolbox for Mac and OCMock -- Added Xcode file templates for new AdWhirl files -- Some code refactoring to facilitate testing -- Allows config refresh using the updateAdWhirlConfig method of AdWhirlView (Issue #73) -- Call disableAdRefresh on MMAdView on adaptor dealloc (Issue #67) -- totalWeight should be a double when checking total weight in AdWhirlConfig.m (Issue #72) - -*************************** -Version 2.5.0 (Jul 28 2010) -*************************** - -- Updated Jumptap adapter for latest Jumptap API (2.0.12.4, 7/13/2010) -- Support decimal rations (Issue #49) -- Reset UIWebView's delegate in AdWhirlWebBrowserController (Issue #64) -- Reseed random() only once (Issue #66) - -*************************** -Version 2.3.1 (Jul 16 2010) -*************************** - -- Added support for ZestAdz. -- Fixed issue #40. Tapping mailto: links in in-app browser now sends users to the Mail App. -- Accepted contribution from Greystripe for an adapter and tested to work. -- Tested with latest Millennial library with iPhone OS 4. -- Tested with latest VideoEgg library with iPhone OS 4. - -*************************** -Version 2.3.0 (Jun 17 2010) -*************************** - -- iAd adapter release. -- Added mechanisms for apps to handle ad size and orientation changes. -- Changed AdWhirlSDK2_Sample to compile with iPhone SDK 4.0 . -- Bug fixes. diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/README b/adwhirl/AdWhirlSDK_iOS_3.1.1/README deleted file mode 100644 index 0d2eafdc9..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/README +++ /dev/null @@ -1 +0,0 @@ -Please see http://www.adwhirl.com/doc/ios/AdWhirliOSSDKSetup.html for setup instructions, Changelog.txt for changes in this version and http://code.google.com/p/adwhirl for the latest news, releases and issue reports. diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/CDataScanner.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/CDataScanner.h deleted file mode 100644 index b48982bab..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/CDataScanner.h +++ /dev/null @@ -1,68 +0,0 @@ -// -// CDataScanner.h -// TouchCode -// -// Created by Jonathan Wight on 04/16/08. -// Copyright 2008 toxicsoftware.com. All rights reserved. -// -// 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 - -// NSScanner - -@interface CDataScanner : NSObject { - NSData *data; - - u_int8_t *start; - u_int8_t *end; - u_int8_t *current; - NSUInteger length; - - NSCharacterSet *doubleCharacters; -} - -@property (readwrite, nonatomic, retain) NSData *data; -@property (readwrite, nonatomic, assign) NSUInteger scanLocation; -@property (readonly, nonatomic, assign) BOOL isAtEnd; - -+ (id)scannerWithData:(NSData *)inData; - -- (unichar)currentCharacter; -- (unichar)scanCharacter; -- (BOOL)scanCharacter:(unichar)inCharacter; - -- (BOOL)scanUTF8String:(const char *)inString intoString:(NSString **)outValue; -- (BOOL)scanString:(NSString *)inString intoString:(NSString **)outValue; -- (BOOL)scanCharactersFromSet:(NSCharacterSet *)inSet intoString:(NSString **)outValue; // inSet must only contain 7-bit ASCII characters - -- (BOOL)scanUpToString:(NSString *)string intoString:(NSString **)outValue; -- (BOOL)scanUpToCharactersFromSet:(NSCharacterSet *)set intoString:(NSString **)outValue; // inSet must only contain 7-bit ASCII characters - -- (BOOL)scanNumber:(NSNumber **)outValue; - -- (void)skipWhitespace; - -- (NSString *)remainingString; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/CDataScanner.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/CDataScanner.m deleted file mode 100644 index 50f3a6709..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/CDataScanner.m +++ /dev/null @@ -1,270 +0,0 @@ -// -// CDataScanner.m -// TouchCode -// -// Created by Jonathan Wight on 04/16/08. -// Copyright 2008 toxicsoftware.com. All rights reserved. -// -// 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 "CDataScanner.h" - -#import "CDataScanner_Extensions.h" - -@interface CDataScanner () -@property (readwrite, nonatomic, retain) NSCharacterSet *doubleCharacters; -@end - -#pragma mark - - -inline static unichar CharacterAtPointer(void *start, void *end) -{ -#pragma unused(end) - -const u_int8_t theByte = *(u_int8_t *)start; -if (theByte & 0x80) - { - // TODO -- UNICODE!!!! (well in theory nothing todo here) - } -const unichar theCharacter = theByte; -return(theCharacter); -} - -@implementation CDataScanner - -@dynamic data; -@dynamic scanLocation; -@dynamic isAtEnd; -@synthesize doubleCharacters; - -+ (id)scannerWithData:(NSData *)inData -{ -CDataScanner *theScanner = [[[self alloc] init] autorelease]; -theScanner.data = inData; -return(theScanner); -} - -- (id)init -{ -if ((self = [super init]) != nil) - { - self.doubleCharacters = [NSCharacterSet characterSetWithCharactersInString:@"0123456789eE-."]; - } -return(self); -} - -- (void)dealloc -{ -self.data = NULL; -self.doubleCharacters = NULL; -// -[super dealloc]; -} - -- (NSUInteger)scanLocation -{ -return(current - start); -} - -- (NSData *)data -{ -return(data); -} - -- (void)setData:(NSData *)inData -{ -if (data != inData) - { - if (data) - { - [data release]; - data = NULL; - } - - if (inData) - { - data = [inData retain]; - // - start = (u_int8_t *)data.bytes; - end = start + data.length; - current = start; - length = data.length; - } - } -} - -- (void)setScanLocation:(NSUInteger)inScanLocation -{ -current = start + inScanLocation; -} - -- (BOOL)isAtEnd -{ -return(self.scanLocation >= length); -} - -- (unichar)currentCharacter -{ -return(CharacterAtPointer(current, end)); -} - -#pragma mark - - -- (unichar)scanCharacter -{ -const unichar theCharacter = CharacterAtPointer(current++, end); -return(theCharacter); -} - -- (BOOL)scanCharacter:(unichar)inCharacter -{ -unichar theCharacter = CharacterAtPointer(current, end); -if (theCharacter == inCharacter) - { - ++current; - return(YES); - } -else - return(NO); -} - -- (BOOL)scanUTF8String:(const char *)inString intoString:(NSString **)outValue; -{ -const size_t theLength = strlen(inString); -if ((size_t)(end - current) < theLength) - return(NO); -if (strncmp((char *)current, inString, theLength) == 0) - { - current += theLength; - if (outValue) - *outValue = [NSString stringWithUTF8String:inString]; - return(YES); - } -return(NO); -} - -- (BOOL)scanString:(NSString *)inString intoString:(NSString **)outValue -{ -if ((size_t)(end - current) < inString.length) - return(NO); -if (strncmp((char *)current, [inString UTF8String], inString.length) == 0) - { - current += inString.length; - if (outValue) - *outValue = inString; - return(YES); - } -return(NO); -} - -- (BOOL)scanCharactersFromSet:(NSCharacterSet *)inSet intoString:(NSString **)outValue -{ -u_int8_t *P; -for (P = current; P < end && [inSet characterIsMember:*P] == YES; ++P) - ; - -if (P == current) - { - return(NO); - } - -if (outValue) - { - *outValue = [[[NSString alloc] initWithBytes:current length:P - current encoding:NSUTF8StringEncoding] autorelease]; - } - -current = P; - -return(YES); -} - -- (BOOL)scanUpToString:(NSString *)inString intoString:(NSString **)outValue -{ -const char *theToken = [inString UTF8String]; -const char *theResult = strnstr((char *)current, theToken, end - current); -if (theResult == NULL) - { - return(NO); - } - -if (outValue) - { - *outValue = [[[NSString alloc] initWithBytes:current length:theResult - (char *)current encoding:NSUTF8StringEncoding] autorelease]; - } - -current = (u_int8_t *)theResult; - -return(YES); -} - -- (BOOL)scanUpToCharactersFromSet:(NSCharacterSet *)inSet intoString:(NSString **)outValue -{ -u_int8_t *P; -for (P = current; P < end && [inSet characterIsMember:*P] == NO; ++P) - ; - -if (P == current) - { - return(NO); - } - -if (outValue) - { - *outValue = [[[NSString alloc] initWithBytes:current length:P - current encoding:NSUTF8StringEncoding] autorelease]; - } - -current = P; - -return(YES); -} - -- (BOOL)scanNumber:(NSNumber **)outValue -{ -// Replace all of this with a strtod call -NSString *theString = NULL; -if ([self scanCharactersFromSet:doubleCharacters intoString:&theString]) - { - if (outValue) - *outValue = [NSNumber numberWithDouble:[theString doubleValue]]; // TODO dont use doubleValue - return(YES); - } -return(NO); -} - -- (void)skipWhitespace -{ -u_int8_t *P; -for (P = current; P < end && (isspace(*P)); ++P) - ; - -current = P; -} - -- (NSString *)remainingString -{ -NSData *theRemainingData = [NSData dataWithBytes:current length:end - current]; -NSString *theString = [[[NSString alloc] initWithData:theRemainingData encoding:NSUTF8StringEncoding] autorelease]; -return(theString); -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/CDataScanner_Extensions.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/CDataScanner_Extensions.h deleted file mode 100644 index c7bf48be0..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/CDataScanner_Extensions.h +++ /dev/null @@ -1,37 +0,0 @@ -// -// CDataScanner_Extensions.h -// TouchCode -// -// Created by Jonathan Wight on 12/08/2005. -// Copyright 2005 toxicsoftware.com. All rights reserved. -// -// 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 "CDataScanner.h" - -@interface CDataScanner (CDataScanner_Extensions) - -- (BOOL)scanCStyleComment:(NSString **)outComment; -- (BOOL)scanCPlusPlusStyleComment:(NSString **)outComment; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/CDataScanner_Extensions.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/CDataScanner_Extensions.m deleted file mode 100644 index 1dc338d84..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/CDataScanner_Extensions.m +++ /dev/null @@ -1,80 +0,0 @@ -// -// CDataScanner_Extensions.m -// TouchCode -// -// Created by Jonathan Wight on 12/08/2005. -// Copyright 2005 toxicsoftware.com. All rights reserved. -// -// 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 "CDataScanner_Extensions.h" - -#import "NSCharacterSet_Extensions.h" - -@implementation CDataScanner (CDataScanner_Extensions) - -- (BOOL)scanCStyleComment:(NSString **)outComment -{ -if ([self scanString:@"/*" intoString:NULL] == YES) - { - NSString *theComment = NULL; - if ([self scanUpToString:@"*/" intoString:&theComment] == NO) - [NSException raise:NSGenericException format:@"Started to scan a C style comment but it wasn't terminated."]; - - if ([theComment rangeOfString:@"/*"].location != NSNotFound) - [NSException raise:NSGenericException format:@"C style comments should not be nested."]; - - if ([self scanString:@"*/" intoString:NULL] == NO) - [NSException raise:NSGenericException format:@"C style comment did not end correctly."]; - - if (outComment != NULL) - *outComment = theComment; - - return(YES); - } -else - { - return(NO); - } -} - -- (BOOL)scanCPlusPlusStyleComment:(NSString **)outComment -{ -if ([self scanString:@"//" intoString:NULL] == YES) - { - NSString *theComment = NULL; - [self scanUpToCharactersFromSet:[NSCharacterSet linebreaksCharacterSet] intoString:&theComment]; - [self scanCharactersFromSet:[NSCharacterSet linebreaksCharacterSet] intoString:NULL]; - - if (outComment != NULL) - *outComment = theComment; - - return(YES); - } -else - { - return(NO); - } -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/NSCharacterSet_Extensions.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/NSCharacterSet_Extensions.h deleted file mode 100644 index cfa9b2692..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/NSCharacterSet_Extensions.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// NSCharacterSet_Extensions.h -// TouchCode -// -// Created by Jonathan Wight on 12/08/2005. -// Copyright 2005 toxicsoftware.com. All rights reserved. -// -// 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 - -@interface NSCharacterSet (NSCharacterSet_Extensions) - -+ (NSCharacterSet *)linebreaksCharacterSet; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/NSCharacterSet_Extensions.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/NSCharacterSet_Extensions.m deleted file mode 100644 index 5e62ab8b7..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/NSCharacterSet_Extensions.m +++ /dev/null @@ -1,48 +0,0 @@ -// -// NSCharacterSet_Extensions.m -// TouchCode -// -// Created by Jonathan Wight on 12/08/2005. -// Copyright 2005 toxicsoftware.com. All rights reserved. -// -// 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 "NSCharacterSet_Extensions.h" - -@implementation NSCharacterSet (NSCharacterSet_Extensions) - -#define LF 0x000a // Line Feed -#define FF 0x000c // Form Feed -#define CR 0x000d // Carriage Return -#define NEL 0x0085 // Next Line -#define LS 0x2028 // Line Separator -#define PS 0x2029 // Paragraph Separator - -+ (NSCharacterSet *)linebreaksCharacterSet -{ -unichar theCharacters[] = { LF, FF, CR, NEL, LS, PS, }; - -return([NSCharacterSet characterSetWithCharactersInString:[NSString stringWithCharacters:theCharacters length:sizeof(theCharacters) / sizeof(*theCharacters)]]); -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/NSDictionary_JSONExtensions.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/NSDictionary_JSONExtensions.h deleted file mode 100644 index dccbd7c25..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/NSDictionary_JSONExtensions.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// NSDictionary_JSONExtensions.h -// TouchCode -// -// Created by Jonathan Wight on 04/17/08. -// Copyright 2008 toxicsoftware.com. All rights reserved. -// -// 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 - -@interface NSDictionary (NSDictionary_JSONExtensions) - -+ (id)dictionaryWithJSONData:(NSData *)inData error:(NSError **)outError; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/NSDictionary_JSONExtensions.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/NSDictionary_JSONExtensions.m deleted file mode 100644 index 7b50060ab..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/NSDictionary_JSONExtensions.m +++ /dev/null @@ -1,41 +0,0 @@ -// -// NSDictionary_JSONExtensions.m -// TouchCode -// -// Created by Jonathan Wight on 04/17/08. -// Copyright 2008 toxicsoftware.com. All rights reserved. -// -// 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 "NSDictionary_JSONExtensions.h" - -#import "CJSONDeserializer.h" - -@implementation NSDictionary (NSDictionary_JSONExtensions) - -+ (id)dictionaryWithJSONData:(NSData *)inData error:(NSError **)outError -{ -return([[CJSONDeserializer deserializer] deserialize:inData error:outError]); -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/NSScanner_Extensions.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/NSScanner_Extensions.h deleted file mode 100644 index 142ec9549..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/NSScanner_Extensions.h +++ /dev/null @@ -1,44 +0,0 @@ -// -// NSScanner_Extensions.h -// TouchCode -// -// Created by Jonathan Wight on 12/08/2005. -// Copyright 2005 toxicsoftware.com. All rights reserved. -// -// 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 - -@interface NSScanner (NSScanner_Extensions) - -- (NSString *)remainingString; - -- (unichar)currentCharacter; -- (unichar)scanCharacter; -- (BOOL)scanCharacter:(unichar)inCharacter; -- (void)backtrack:(unsigned)inCount; - -- (BOOL)scanCStyleComment:(NSString **)outComment; -- (BOOL)scanCPlusPlusStyleComment:(NSString **)outComment; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/NSScanner_Extensions.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/NSScanner_Extensions.m deleted file mode 100644 index f06534549..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/Extensions/NSScanner_Extensions.m +++ /dev/null @@ -1,118 +0,0 @@ -// -// NSScanner_Extensions.m -// TouchCode -// -// Created by Jonathan Wight on 12/08/2005. -// Copyright 2005 toxicsoftware.com. All rights reserved. -// -// 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 "NSScanner_Extensions.h" - -#import "NSCharacterSet_Extensions.h" - -@implementation NSScanner (NSScanner_Extensions) - -- (NSString *)remainingString -{ -return([[self string] substringFromIndex:[self scanLocation]]); -} - -- (unichar)currentCharacter -{ -return([[self string] characterAtIndex:[self scanLocation]]); -} - -- (unichar)scanCharacter -{ -unsigned theScanLocation = [self scanLocation]; -unichar theCharacter = [[self string] characterAtIndex:theScanLocation]; -[self setScanLocation:theScanLocation + 1]; -return(theCharacter); -} - -- (BOOL)scanCharacter:(unichar)inCharacter -{ -unsigned theScanLocation = [self scanLocation]; -if ([[self string] characterAtIndex:theScanLocation] == inCharacter) - { - [self setScanLocation:theScanLocation + 1]; - return(YES); - } -else - return(NO); -} - -- (void)backtrack:(unsigned)inCount -{ -unsigned theScanLocation = [self scanLocation]; -if (inCount > theScanLocation) - [NSException raise:NSGenericException format:@"Backtracked too far."]; -[self setScanLocation:theScanLocation - inCount]; -} - -- (BOOL)scanCStyleComment:(NSString **)outComment -{ -if ([self scanString:@"/*" intoString:NULL] == YES) - { - NSString *theComment = NULL; - if ([self scanUpToString:@"*/" intoString:&theComment] == NO) - [NSException raise:NSGenericException format:@"Started to scan a C style comment but it wasn't terminated."]; - - if ([theComment rangeOfString:@"/*"].location != NSNotFound) - [NSException raise:NSGenericException format:@"C style comments should not be nested."]; - - if ([self scanString:@"*/" intoString:NULL] == NO) - [NSException raise:NSGenericException format:@"C style comment did not end correctly."]; - - if (outComment != NULL) - *outComment = theComment; - - return(YES); - } -else - { - return(NO); - } -} - -- (BOOL)scanCPlusPlusStyleComment:(NSString **)outComment -{ -if ([self scanString:@"//" intoString:NULL] == YES) - { - NSString *theComment = NULL; - [self scanUpToCharactersFromSet:[NSCharacterSet linebreaksCharacterSet] intoString:&theComment]; - [self scanCharactersFromSet:[NSCharacterSet linebreaksCharacterSet] intoString:NULL]; - - if (outComment != NULL) - *outComment = theComment; - - return(YES); - } -else - { - return(NO); - } -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONDataSerializer.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONDataSerializer.h deleted file mode 100644 index 9ec39a582..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONDataSerializer.h +++ /dev/null @@ -1,46 +0,0 @@ -// -// CJSONDataSerializer.h -// TouchCode -// -// Created by Jonathan Wight on 12/07/2005. -// Copyright 2005 toxicsoftware.com. All rights reserved. -// -// 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 - -@interface CJSONDataSerializer : NSObject { -} - -+ (id)serializer; - -/// Take any JSON compatible object (generally NSNull, NSNumber, NSString, NSArray and NSDictionary) and produce an NSData containing the serialized JSON. -- (NSData *)serializeObject:(id)inObject; - -- (NSData *)serializeNull:(NSNull *)inNull; -- (NSData *)serializeNumber:(NSNumber *)inNumber; -- (NSData *)serializeString:(NSString *)inString; -- (NSData *)serializeArray:(NSArray *)inArray; -- (NSData *)serializeDictionary:(NSDictionary *)inDictionary; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONDataSerializer.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONDataSerializer.m deleted file mode 100644 index d470dc43c..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONDataSerializer.m +++ /dev/null @@ -1,225 +0,0 @@ -// -// CJSONDataSerializer.m -// TouchCode -// -// Created by Jonathan Wight on 12/07/2005. -// Copyright 2005 toxicsoftware.com. All rights reserved. -// -// 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 "CJSONDataSerializer.h" - -#import "CSerializedJSONData.h" - -static NSData *kNULL = NULL; -static NSData *kFalse = NULL; -static NSData *kTrue = NULL; - -@implementation CJSONDataSerializer - -+ (void)initialize -{ -NSAutoreleasePool *thePool = [[NSAutoreleasePool alloc] init]; - -@synchronized(@"CJSONDataSerializer") - { - if (kNULL == NULL) - kNULL = [[NSData alloc] initWithBytesNoCopy:"null" length:4 freeWhenDone:NO]; - if (kFalse == NULL) - kFalse = [[NSData alloc] initWithBytesNoCopy:"false" length:5 freeWhenDone:NO]; - if (kTrue == NULL) - kTrue = [[NSData alloc] initWithBytesNoCopy:"true" length:4 freeWhenDone:NO]; - } - -[thePool release]; -} - -+ (id)serializer -{ -return([[[self alloc] init] autorelease]); -} - -- (NSData *)serializeObject:(id)inObject; -{ -NSData *theResult = NULL; - -if ([inObject isKindOfClass:[NSNull class]]) - { - theResult = [self serializeNull:inObject]; - } -else if ([inObject isKindOfClass:[NSNumber class]]) - { - theResult = [self serializeNumber:inObject]; - } -else if ([inObject isKindOfClass:[NSString class]]) - { - theResult = [self serializeString:inObject]; - } -else if ([inObject isKindOfClass:[NSArray class]]) - { - theResult = [self serializeArray:inObject]; - } -else if ([inObject isKindOfClass:[NSDictionary class]]) - { - theResult = [self serializeDictionary:inObject]; - } -else if ([inObject isKindOfClass:[NSData class]]) - { - NSString *theString = [[[NSString alloc] initWithData:inObject encoding:NSUTF8StringEncoding] autorelease]; - theResult = [self serializeString:theString]; - } -else if ([inObject isKindOfClass:[CSerializedJSONData class]]) - { - theResult = [inObject data]; - } -else - { - [NSException raise:NSGenericException format:@"Cannot serialize data of type '%@'", NSStringFromClass([inObject class])]; - } -if (theResult == NULL) - [NSException raise:NSGenericException format:@"Could not serialize object '%@'", inObject]; -return(theResult); -} - -- (NSData *)serializeNull:(NSNull *)inNull -{ -#pragma unused (inNull) -return(kNULL); -} - -- (NSData *)serializeNumber:(NSNumber *)inNumber -{ -NSData *theResult = NULL; -switch (CFNumberGetType((CFNumberRef)inNumber)) - { - case kCFNumberCharType: - { - int theValue = [inNumber intValue]; - if (theValue == 0) - theResult = kFalse; - else if (theValue == 1) - theResult = kTrue; - else - theResult = [[inNumber stringValue] dataUsingEncoding:NSASCIIStringEncoding]; - } - break; - case kCFNumberFloat32Type: - case kCFNumberFloat64Type: - case kCFNumberFloatType: - case kCFNumberDoubleType: - case kCFNumberSInt8Type: - case kCFNumberSInt16Type: - case kCFNumberSInt32Type: - case kCFNumberSInt64Type: - case kCFNumberShortType: - case kCFNumberIntType: - case kCFNumberLongType: - case kCFNumberLongLongType: - case kCFNumberCFIndexType: - default: - theResult = [[inNumber stringValue] dataUsingEncoding:NSASCIIStringEncoding]; - break; - } -return(theResult); -} - -- (NSData *)serializeString:(NSString *)inString -{ -NSMutableString *theMutableCopy = [[inString mutableCopy] autorelease]; -[theMutableCopy replaceOccurrencesOfString:@"\\" withString:@"\\\\" options:0 range:NSMakeRange(0, [theMutableCopy length])]; -[theMutableCopy replaceOccurrencesOfString:@"\"" withString:@"\\\"" options:0 range:NSMakeRange(0, [theMutableCopy length])]; -[theMutableCopy replaceOccurrencesOfString:@"/" withString:@"\\/" options:0 range:NSMakeRange(0, [theMutableCopy length])]; -[theMutableCopy replaceOccurrencesOfString:@"\b" withString:@"\\b" options:0 range:NSMakeRange(0, [theMutableCopy length])]; -[theMutableCopy replaceOccurrencesOfString:@"\f" withString:@"\\f" options:0 range:NSMakeRange(0, [theMutableCopy length])]; -[theMutableCopy replaceOccurrencesOfString:@"\n" withString:@"\\n" options:0 range:NSMakeRange(0, [theMutableCopy length])]; -[theMutableCopy replaceOccurrencesOfString:@"\r" withString:@"\\r" options:0 range:NSMakeRange(0, [theMutableCopy length])]; -[theMutableCopy replaceOccurrencesOfString:@"\t" withString:@"\\t" options:0 range:NSMakeRange(0, [theMutableCopy length])]; -/* - case 'u': - { - theCharacter = 0; - - int theShift; - for (theShift = 12; theShift >= 0; theShift -= 4) - { - int theDigit = HexToInt([self scanCharacter]); - if (theDigit == -1) - { - [self setScanLocation:theScanLocation]; - return(NO); - } - theCharacter |= (theDigit << theShift); - } - } -*/ -return([[NSString stringWithFormat:@"\"%@\"", theMutableCopy] dataUsingEncoding:NSUTF8StringEncoding]); -} - -- (NSData *)serializeArray:(NSArray *)inArray -{ -NSMutableData *theData = [NSMutableData data]; - -[theData appendBytes:"[" length:1]; - -NSEnumerator *theEnumerator = [inArray objectEnumerator]; -id theValue = NULL; -NSUInteger i = 0; -while ((theValue = [theEnumerator nextObject]) != NULL) - { - [theData appendData:[self serializeObject:theValue]]; - if (++i < [inArray count]) - [theData appendBytes:"," length:1]; - } - -[theData appendBytes:"]" length:1]; - -return(theData); -} - -- (NSData *)serializeDictionary:(NSDictionary *)inDictionary -{ -NSMutableData *theData = [NSMutableData data]; - -[theData appendBytes:"{" length:1]; - -NSArray *theKeys = [inDictionary allKeys]; -NSEnumerator *theEnumerator = [theKeys objectEnumerator]; -NSString *theKey = NULL; -while ((theKey = [theEnumerator nextObject]) != NULL) - { - id theValue = [inDictionary objectForKey:theKey]; - - [theData appendData:[self serializeString:theKey]]; - [theData appendBytes:":" length:1]; - [theData appendData:[self serializeObject:theValue]]; - - if (theKey != [theKeys lastObject]) - [theData appendData:[@"," dataUsingEncoding:NSASCIIStringEncoding]]; - } - -[theData appendBytes:"}" length:1]; - -return(theData); -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONDeserializer.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONDeserializer.h deleted file mode 100755 index 3af96cc39..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONDeserializer.h +++ /dev/null @@ -1,45 +0,0 @@ -// -// CJSONDeserializer.h -// TouchCode -// -// Created by Jonathan Wight on 12/15/2005. -// Copyright 2005 toxicsoftware.com. All rights reserved. -// -// 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 - -extern NSString *const kJSONDeserializerErrorDomain /* = @"CJSONDeserializerErrorDomain" */; - -@interface CJSONDeserializer : NSObject { - -} - -+ (id)deserializer; - -- (id)deserialize:(NSData *)inData error:(NSError **)outError; - -- (id)deserializeAsDictionary:(NSData *)inData error:(NSError **)outError; -- (id)deserializeAsArray:(NSData *)inData error:(NSError **)outError; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONDeserializer.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONDeserializer.m deleted file mode 100755 index d5ba6573f..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONDeserializer.m +++ /dev/null @@ -1,95 +0,0 @@ -// -// CJSONDeserializer.m -// TouchCode -// -// Created by Jonathan Wight on 12/15/2005. -// Copyright 2005 toxicsoftware.com. All rights reserved. -// -// 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 "CJSONDeserializer.h" - -#import "CJSONScanner.h" -#import "CDataScanner.h" - -NSString *const kJSONDeserializerErrorDomain = @"CJSONDeserializerErrorDomain"; - -@implementation CJSONDeserializer - -+ (id)deserializer -{ -return([[[self alloc] init] autorelease]); -} - -- (id)deserialize:(NSData *)inData error:(NSError **)outError -{ -if (inData == NULL || [inData length] == 0) - { - if (outError) - *outError = [NSError errorWithDomain:kJSONDeserializerErrorDomain code:-1 userInfo:NULL]; - - return(NULL); - } -CJSONScanner *theScanner = [CJSONScanner scannerWithData:inData]; -id theObject = NULL; -if ([theScanner scanJSONObject:&theObject error:outError] == YES) - return(theObject); -else - return(NULL); -} - -- (id)deserializeAsDictionary:(NSData *)inData error:(NSError **)outError; -{ -if (inData == NULL || [inData length] == 0) - { - if (outError) - *outError = [NSError errorWithDomain:kJSONDeserializerErrorDomain code:-1 userInfo:NULL]; - - return(NULL); - } -CJSONScanner *theScanner = [CJSONScanner scannerWithData:inData]; -NSDictionary *theDictionary = NULL; -if ([theScanner scanJSONDictionary:&theDictionary error:outError] == YES) - return(theDictionary); -else - return(NULL); -} - -- (id)deserializeAsArray:(NSData *)inData error:(NSError **)outError; -{ -if (inData == NULL || [inData length] == 0) - { - if (outError) - *outError = [NSError errorWithDomain:kJSONDeserializerErrorDomain code:-1 userInfo:NULL]; - - return(NULL); - } -CJSONScanner *theScanner = [CJSONScanner scannerWithData:inData]; -NSArray *theArray = NULL; -if ([theScanner scanJSONArray:&theArray error:outError] == YES) - return(theArray); -else - return(NULL); -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONScanner.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONScanner.h deleted file mode 100644 index 9a53db974..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONScanner.h +++ /dev/null @@ -1,44 +0,0 @@ -// -// CJSONScanner.h -// TouchCode -// -// Created by Jonathan Wight on 12/07/2005. -// Copyright 2005 toxicsoftware.com. All rights reserved. -// -// 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 "CDataScanner.h" - -/// CDataScanner subclass that understands JSON syntax natively. You should generally use CJSONDeserializer instead of this class. (TODO - this could have been a category?) -@interface CJSONScanner : CDataScanner { -} - -- (BOOL)scanJSONObject:(id *)outObject error:(NSError **)outError; -- (BOOL)scanJSONDictionary:(NSDictionary **)outDictionary error:(NSError **)outError; -- (BOOL)scanJSONArray:(NSArray **)outArray error:(NSError **)outError; -- (BOOL)scanJSONStringConstant:(NSString **)outStringConstant error:(NSError **)outError; -- (BOOL)scanJSONNumberConstant:(NSNumber **)outNumberConstant error:(NSError **)outError; - -@end - -extern NSString *const kJSONScannerErrorDomain /* = @"CJSONScannerErrorDomain" */; diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONScanner.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONScanner.m deleted file mode 100644 index 9f2b4770b..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONScanner.m +++ /dev/null @@ -1,539 +0,0 @@ -// -// CJSONScanner.m -// TouchCode -// -// Created by Jonathan Wight on 12/07/2005. -// Copyright 2005 toxicsoftware.com. All rights reserved. -// -// 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 "CJSONScanner.h" - -#import "NSCharacterSet_Extensions.h" -#import "CDataScanner_Extensions.h" - -#if !defined(TREAT_COMMENTS_AS_WHITESPACE) -#define TREAT_COMMENTS_AS_WHITESPACE 0 -#endif // !defined(TREAT_COMMENTS_AS_WHITESPACE) - -NSString *const kJSONScannerErrorDomain = @"CJSONScannerErrorDomain"; - -inline static int HexToInt(char inCharacter) -{ -int theValues[] = { 0x0 /* 48 '0' */, 0x1 /* 49 '1' */, 0x2 /* 50 '2' */, 0x3 /* 51 '3' */, 0x4 /* 52 '4' */, 0x5 /* 53 '5' */, 0x6 /* 54 '6' */, 0x7 /* 55 '7' */, 0x8 /* 56 '8' */, 0x9 /* 57 '9' */, -1 /* 58 ':' */, -1 /* 59 ';' */, -1 /* 60 '<' */, -1 /* 61 '=' */, -1 /* 62 '>' */, -1 /* 63 '?' */, -1 /* 64 '@' */, 0xa /* 65 'A' */, 0xb /* 66 'B' */, 0xc /* 67 'C' */, 0xd /* 68 'D' */, 0xe /* 69 'E' */, 0xf /* 70 'F' */, -1 /* 71 'G' */, -1 /* 72 'H' */, -1 /* 73 'I' */, -1 /* 74 'J' */, -1 /* 75 'K' */, -1 /* 76 'L' */, -1 /* 77 'M' */, -1 /* 78 'N' */, -1 /* 79 'O' */, -1 /* 80 'P' */, -1 /* 81 'Q' */, -1 /* 82 'R' */, -1 /* 83 'S' */, -1 /* 84 'T' */, -1 /* 85 'U' */, -1 /* 86 'V' */, -1 /* 87 'W' */, -1 /* 88 'X' */, -1 /* 89 'Y' */, -1 /* 90 'Z' */, -1 /* 91 '[' */, -1 /* 92 '\' */, -1 /* 93 ']' */, -1 /* 94 '^' */, -1 /* 95 '_' */, -1 /* 96 '`' */, 0xa /* 97 'a' */, 0xb /* 98 'b' */, 0xc /* 99 'c' */, 0xd /* 100 'd' */, 0xe /* 101 'e' */, 0xf /* 102 'f' */, }; -if (inCharacter >= '0' && inCharacter <= 'f') - return(theValues[inCharacter - '0']); -else - return(-1); -} - -@interface CJSONScanner () -- (BOOL)scanNotQuoteCharactersIntoString:(NSString **)outValue; -@end - -#pragma mark - - -@implementation CJSONScanner - -- (id)init -{ -if ((self = [super init]) != nil) - { - } -return(self); -} - -- (void)dealloc -{ -// -[super dealloc]; -} - -#pragma mark - - -- (void)setData:(NSData *)inData -{ -NSData *theData = inData; -if (theData && theData.length >= 4) - { - // This code is lame, but it works. Because the first character of any JSON string will always be a (ascii) control character we can work out the Unicode encoding by the bit pattern. See section 3 of http://www.ietf.org/rfc/rfc4627.txt - const char *theChars = theData.bytes; - NSStringEncoding theEncoding = NSUTF8StringEncoding; - if (theChars[0] != 0 && theChars[1] == 0) - { - if (theChars[2] != 0 && theChars[3] == 0) - theEncoding = NSUTF16LittleEndianStringEncoding; - else if (theChars[2] == 0 && theChars[3] == 0) - theEncoding = NSUTF32LittleEndianStringEncoding; - } - else if (theChars[0] == 0 && theChars[2] == 0 && theChars[3] != 0) - { - if (theChars[1] == 0) - theEncoding = NSUTF32BigEndianStringEncoding; - else if (theChars[1] != 0) - theEncoding = NSUTF16BigEndianStringEncoding; - } - - if (theEncoding != NSUTF8StringEncoding) - { - NSString *theString = [[NSString alloc] initWithData:theData encoding:theEncoding]; - theData = [theString dataUsingEncoding:NSUTF8StringEncoding]; - [theString release]; - } - } -[super setData:theData]; -} - -#pragma mark - - -- (BOOL)scanJSONObject:(id *)outObject error:(NSError **)outError -{ -BOOL theResult = YES; - -[self skipWhitespace]; - -id theObject = NULL; - -const unichar C = [self currentCharacter]; -switch (C) - { - case 't': - if ([self scanUTF8String:"true" intoString:NULL]) - { - theObject = [NSNumber numberWithBool:YES]; - } - break; - case 'f': - if ([self scanUTF8String:"false" intoString:NULL]) - { - theObject = [NSNumber numberWithBool:NO]; - } - break; - case 'n': - if ([self scanUTF8String:"null" intoString:NULL]) - { - theObject = [NSNull null]; - } - break; - case '\"': - case '\'': - theResult = [self scanJSONStringConstant:&theObject error:outError]; - break; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case '-': - theResult = [self scanJSONNumberConstant:&theObject error:outError]; - break; - case '{': - theResult = [self scanJSONDictionary:&theObject error:outError]; - break; - case '[': - theResult = [self scanJSONArray:&theObject error:outError]; - break; - default: - - break; - } - -if (outObject != NULL) - *outObject = theObject; - -return(theResult); -} - -- (BOOL)scanJSONDictionary:(NSDictionary **)outDictionary error:(NSError **)outError -{ -NSUInteger theScanLocation = [self scanLocation]; - -if ([self scanCharacter:'{'] == NO) - { - if (outError) - { - NSDictionary *theUserInfo = [NSDictionary dictionaryWithObjectsAndKeys: - @"Could not scan dictionary. Dictionary that does not start with '{' character.", NSLocalizedDescriptionKey, - NULL]; - *outError = [NSError errorWithDomain:kJSONScannerErrorDomain code:-1 userInfo:theUserInfo]; - } - return(NO); - } - -NSMutableDictionary *theDictionary = [[NSMutableDictionary alloc] init]; - -while ([self currentCharacter] != '}') - { - [self skipWhitespace]; - - if ([self currentCharacter] == '}') - break; - - NSString *theKey = NULL; - if ([self scanJSONStringConstant:&theKey error:outError] == NO) - { - [self setScanLocation:theScanLocation]; - if (outError) - { - NSDictionary *theUserInfo = [NSDictionary dictionaryWithObjectsAndKeys: - @"Could not scan dictionary. Failed to scan a key.", NSLocalizedDescriptionKey, - NULL]; - *outError = [NSError errorWithDomain:kJSONScannerErrorDomain code:-2 userInfo:theUserInfo]; - } - [theDictionary release]; - return(NO); - } - - [self skipWhitespace]; - - if ([self scanCharacter:':'] == NO) - { - [self setScanLocation:theScanLocation]; - if (outError) - { - NSDictionary *theUserInfo = [NSDictionary dictionaryWithObjectsAndKeys: - @"Could not scan dictionary. Key was not terminated with a ':' character.", NSLocalizedDescriptionKey, - NULL]; - *outError = [NSError errorWithDomain:kJSONScannerErrorDomain code:-3 userInfo:theUserInfo]; - } - [theDictionary release]; - return(NO); - } - - id theValue = NULL; - if ([self scanJSONObject:&theValue error:outError] == NO) - { - [self setScanLocation:theScanLocation]; - if (outError) - { - NSDictionary *theUserInfo = [NSDictionary dictionaryWithObjectsAndKeys: - @"Could not scan dictionary. Failed to scan a value.", NSLocalizedDescriptionKey, - NULL]; - *outError = [NSError errorWithDomain:kJSONScannerErrorDomain code:-4 userInfo:theUserInfo]; - } - [theDictionary release]; - return(NO); - } - - [theDictionary setValue:theValue forKey:theKey]; - - [self skipWhitespace]; - if ([self scanCharacter:','] == NO) - { - if ([self currentCharacter] != '}') - { - [self setScanLocation:theScanLocation]; - if (outError) - { - NSDictionary *theUserInfo = [NSDictionary dictionaryWithObjectsAndKeys: - @"Could not scan dictionary. Key value pairs not delimited with a ',' character.", NSLocalizedDescriptionKey, - NULL]; - *outError = [NSError errorWithDomain:kJSONScannerErrorDomain code:-5 userInfo:theUserInfo]; - } - [theDictionary release]; - return(NO); - } - break; - } - else - { - [self skipWhitespace]; - if ([self currentCharacter] == '}') - break; - } - } - -if ([self scanCharacter:'}'] == NO) - { - [self setScanLocation:theScanLocation]; - if (outError) - { - NSDictionary *theUserInfo = [NSDictionary dictionaryWithObjectsAndKeys: - @"Could not scan dictionary. Dictionary not terminated by a '}' character.", NSLocalizedDescriptionKey, - NULL]; - *outError = [NSError errorWithDomain:kJSONScannerErrorDomain code:-6 userInfo:theUserInfo]; - } - [theDictionary release]; - return(NO); - } - -if (outDictionary != NULL) - *outDictionary = [[theDictionary copy] autorelease]; - -[theDictionary release]; - -return(YES); -} - -- (BOOL)scanJSONArray:(NSArray **)outArray error:(NSError **)outError -{ -NSUInteger theScanLocation = [self scanLocation]; - -if ([self scanCharacter:'['] == NO) - { - if (outError) - { - NSDictionary *theUserInfo = [NSDictionary dictionaryWithObjectsAndKeys: - @"Could not scan array. Array not started by a '{' character.", NSLocalizedDescriptionKey, - NULL]; - *outError = [NSError errorWithDomain:kJSONScannerErrorDomain code:-7 userInfo:theUserInfo]; - } - return(NO); - } - -NSMutableArray *theArray = [[NSMutableArray alloc] init]; - -[self skipWhitespace]; -while ([self currentCharacter] != ']') - { - NSString *theValue = NULL; - if ([self scanJSONObject:&theValue error:outError] == NO) - { - [self setScanLocation:theScanLocation]; - if (outError) - { - NSDictionary *theUserInfo = [NSDictionary dictionaryWithObjectsAndKeys: - @"Could not scan array. Could not scan a value.", NSLocalizedDescriptionKey, - NULL]; - *outError = [NSError errorWithDomain:kJSONScannerErrorDomain code:-8 userInfo:theUserInfo]; - } - [theArray release]; - return(NO); - } - - [theArray addObject:theValue]; - - [self skipWhitespace]; - if ([self scanCharacter:','] == NO) - { - [self skipWhitespace]; - if ([self currentCharacter] != ']') - { - [self setScanLocation:theScanLocation]; - if (outError) - { - NSDictionary *theUserInfo = [NSDictionary dictionaryWithObjectsAndKeys: - @"Could not scan array. Array not terminated by a ']' character.", NSLocalizedDescriptionKey, - NULL]; - *outError = [NSError errorWithDomain:kJSONScannerErrorDomain code:-9 userInfo:theUserInfo]; - } - [theArray release]; - return(NO); - } - - break; - } - [self skipWhitespace]; - } - -[self skipWhitespace]; - -if ([self scanCharacter:']'] == NO) - { - [self setScanLocation:theScanLocation]; - if (outError) - { - NSDictionary *theUserInfo = [NSDictionary dictionaryWithObjectsAndKeys: - @"Could not scan array. Array not terminated by a ']' character.", NSLocalizedDescriptionKey, - NULL]; - *outError = [NSError errorWithDomain:kJSONScannerErrorDomain code:-10 userInfo:theUserInfo]; - } - [theArray release]; - return(NO); - } - -if (outArray != NULL) - *outArray = [[theArray copy] autorelease]; - -[theArray release]; - -return(YES); -} - -- (BOOL)scanJSONStringConstant:(NSString **)outStringConstant error:(NSError **)outError -{ -NSUInteger theScanLocation = [self scanLocation]; - -[self skipWhitespace]; // TODO - i want to remove this method. But breaks unit tests. - -NSMutableString *theString = [[NSMutableString alloc] init]; - -if ([self scanCharacter:'"'] == NO) - { - [self setScanLocation:theScanLocation]; - if (outError) - { - NSDictionary *theUserInfo = [NSDictionary dictionaryWithObjectsAndKeys: - @"Could not scan string constant. String not started by a '\"' character.", NSLocalizedDescriptionKey, - NULL]; - *outError = [NSError errorWithDomain:kJSONScannerErrorDomain code:-11 userInfo:theUserInfo]; - } - [theString release]; - return(NO); - } - -while ([self scanCharacter:'"'] == NO) - { - NSString *theStringChunk = NULL; - if ([self scanNotQuoteCharactersIntoString:&theStringChunk]) - { - [theString appendString:theStringChunk]; - } - - if ([self scanCharacter:'\\'] == YES) - { - unichar theCharacter = [self scanCharacter]; - switch (theCharacter) - { - case '"': - case '\\': - case '/': - break; - case 'b': - theCharacter = '\b'; - break; - case 'f': - theCharacter = '\f'; - break; - case 'n': - theCharacter = '\n'; - break; - case 'r': - theCharacter = '\r'; - break; - case 't': - theCharacter = '\t'; - break; - case 'u': - { - theCharacter = 0; - - int theShift; - for (theShift = 12; theShift >= 0; theShift -= 4) - { - const int theDigit = HexToInt([self scanCharacter]); - if (theDigit == -1) - { - [self setScanLocation:theScanLocation]; - if (outError) - { - NSDictionary *theUserInfo = [NSDictionary dictionaryWithObjectsAndKeys: - @"Could not scan string constant. Unicode character could not be decoded.", NSLocalizedDescriptionKey, - NULL]; - *outError = [NSError errorWithDomain:kJSONScannerErrorDomain code:-12 userInfo:theUserInfo]; - } - [theString release]; - return(NO); - } - theCharacter |= (theDigit << theShift); - } - } - break; - default: - { - [self setScanLocation:theScanLocation]; - if (outError) - { - NSDictionary *theUserInfo = [NSDictionary dictionaryWithObjectsAndKeys: - @"Could not scan string constant. Unknown escape code.", NSLocalizedDescriptionKey, - NULL]; - *outError = [NSError errorWithDomain:kJSONScannerErrorDomain code:-13 userInfo:theUserInfo]; - } - [theString release]; - return(NO); - } - break; - } - CFStringAppendCharacters((CFMutableStringRef)theString, &theCharacter, 1); - } - } - -if (outStringConstant != NULL) - *outStringConstant = [[theString copy] autorelease]; - -[theString release]; - -return(YES); -} - -- (BOOL)scanJSONNumberConstant:(NSNumber **)outNumberConstant error:(NSError **)outError -{ -NSNumber *theNumber = NULL; -if ([self scanNumber:&theNumber] == YES) - { - if (outNumberConstant != NULL) - *outNumberConstant = theNumber; - return(YES); - } -else - { - if (outError) - { - NSDictionary *theUserInfo = [NSDictionary dictionaryWithObjectsAndKeys: - @"Could not scan number constant.", NSLocalizedDescriptionKey, - NULL]; - *outError = [NSError errorWithDomain:kJSONScannerErrorDomain code:-14 userInfo:theUserInfo]; - } - return(NO); - } -} - -#if TREAT_COMMENTS_AS_WHITESPACE -- (void)skipWhitespace -{ -[super skipWhitespace]; -[self scanCStyleComment:NULL]; -[self scanCPlusPlusStyleComment:NULL]; -[super skipWhitespace]; -} -#endif // TREAT_COMMENTS_AS_WHITESPACE - -#pragma mark - - -- (BOOL)scanNotQuoteCharactersIntoString:(NSString **)outValue -{ -u_int8_t *P; -for (P = current; P < end && *P != '\"' && *P != '\\'; ++P) - ; - -if (P == current) - { - return(NO); - } - -if (outValue) - { - *outValue = [[[NSString alloc] initWithBytes:current length:P - current encoding:NSUTF8StringEncoding] autorelease]; - } - -current = P; - -return(YES); -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONSerializer.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONSerializer.h deleted file mode 100644 index 43f75d0d9..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONSerializer.h +++ /dev/null @@ -1,47 +0,0 @@ -// -// CJSONSerializer.h -// TouchCode -// -// Created by Jonathan Wight on 12/07/2005. -// Copyright 2005 toxicsoftware.com. All rights reserved. -// -// 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 - -@class CJSONDataSerializer; - -/// Serialize JSON compatible objects (NSNull, NSNumber, NSString, NSArray, NSDictionary) into a JSON formatted string. Note this class is just a wrapper around CJSONDataSerializer which you really should be using instead. -@interface CJSONSerializer : NSObject { - CJSONDataSerializer *serializer; -} - -+ (id)serializer; - -/// Take any JSON compatible object (generally NSNull, NSNumber, NSString, NSArray and NSDictionary) and produce a JSON string. -- (NSString *)serializeObject:(id)inObject; - -- (NSString *)serializeArray:(NSArray *)inArray; -- (NSString *)serializeDictionary:(NSDictionary *)inDictionary; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONSerializer.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONSerializer.m deleted file mode 100644 index 46baa98af..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CJSONSerializer.m +++ /dev/null @@ -1,75 +0,0 @@ -// -// CJSONSerializer.m -// TouchCode -// -// Created by Jonathan Wight on 12/07/2005. -// Copyright 2005 toxicsoftware.com. All rights reserved. -// -// 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 "CJSONSerializer.h" - -#import "CJSONDataSerializer.h" - -@implementation CJSONSerializer - -+ (id)serializer -{ -return([[[self alloc] init] autorelease]); -} - -- (id)init -{ -if ((self = [super init]) != NULL) - { - serializer = [[CJSONDataSerializer alloc] init]; - } -return(self); -} - -- (void)dealloc -{ -[serializer release]; -serializer = NULL; -// -[super dealloc]; -} - -- (NSString *)serializeObject:(id)inObject; -{ -NSData *theData = [serializer serializeObject:inObject]; -return([[[NSString alloc] initWithData:theData encoding:NSUTF8StringEncoding] autorelease]); -} - -- (NSString *)serializeArray:(NSArray *)inArray -{ -NSData *theData = [serializer serializeArray:inArray]; -return([[[NSString alloc] initWithData:theData encoding:NSUTF8StringEncoding] autorelease]); -} - -- (NSString *)serializeDictionary:(NSDictionary *)inDictionary; -{ -NSData *theData = [serializer serializeDictionary:inDictionary]; -return([[[NSString alloc] initWithData:theData encoding:NSUTF8StringEncoding] autorelease]); -} -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CSerializedJSONData.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CSerializedJSONData.h deleted file mode 100644 index 70f600d89..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CSerializedJSONData.h +++ /dev/null @@ -1,40 +0,0 @@ -// -// CSerializedJSONData.h -// TouchCode -// -// Created by Jonathan Wight on 10/23/09. -// Copyright 2009 toxicsoftware.com. All rights reserved. -// -// 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 - -@interface CSerializedJSONData : NSObject { - NSData *data; -} - -@property (readonly, nonatomic, retain) NSData *data; - -- (id)initWithData:(NSData *)inData; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CSerializedJSONData.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CSerializedJSONData.m deleted file mode 100644 index 707cf2f32..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/TouchJSON/JSON/CSerializedJSONData.m +++ /dev/null @@ -1,54 +0,0 @@ -// -// CSerializedJSONData.m -// TouchCode -// -// Created by Jonathan Wight on 10/23/09. -// Copyright 2009 toxicsoftware.com. All rights reserved. -// -// 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 "CSerializedJSONData.h" - -@implementation CSerializedJSONData - -@synthesize data; - -- (id)initWithData:(NSData *)inData; -{ -if ((self = [self init]) != NULL) - { - data = inData; - } -return(self); -} - -- (void)dealloc -{ -[data release]; -data = NULL; -// -[super dealloc]; -} - - -@end diff --git a/projects/mtg/Android/AndroidManifest.xml b/projects/mtg/Android/AndroidManifest.xml index 67f9ad26e..570694fad 100644 --- a/projects/mtg/Android/AndroidManifest.xml +++ b/projects/mtg/Android/AndroidManifest.xml @@ -1,5 +1,5 @@ - + diff --git a/projects/mtg/Android/default.properties b/projects/mtg/Android/default.properties index 9a2c9f6c8..8010039f3 100644 --- a/projects/mtg/Android/default.properties +++ b/projects/mtg/Android/default.properties @@ -8,4 +8,4 @@ # project structure. # Project target. -target=android-9 +target=android-10 diff --git a/projects/mtg/Android/gen/R.java.d b/projects/mtg/Android/gen/R.java.d new file mode 100644 index 000000000..3b5cb5410 --- /dev/null +++ b/projects/mtg/Android/gen/R.java.d @@ -0,0 +1,10 @@ +/Volumes/data/home/mnguyen/Projects/eclipse-workspace/wagic/projects/mtg/Android/gen/net/wagic/app/R.java \ + : /Volumes/data/home/mnguyen/Projects/eclipse-workspace/wagic/projects/mtg/Android/res/drawable-hdpi/icon.png \ +/Volumes/data/home/mnguyen/Projects/eclipse-workspace/wagic/projects/mtg/Android/res/drawable-ldpi/icon.png \ +/Volumes/data/home/mnguyen/Projects/eclipse-workspace/wagic/projects/mtg/Android/res/drawable-mdpi/icon.png \ +/Volumes/data/home/mnguyen/Projects/eclipse-workspace/wagic/projects/mtg/Android/res/layout/main.xml \ +/Volumes/data/home/mnguyen/Projects/eclipse-workspace/wagic/projects/mtg/Android/res/values/strings.xml \ +/Volumes/data/home/mnguyen/Projects/eclipse-workspace/wagic/projects/mtg/Android/bin/res/drawable-hdpi/icon.png \ +/Volumes/data/home/mnguyen/Projects/eclipse-workspace/wagic/projects/mtg/Android/bin/res/drawable-ldpi/icon.png \ +/Volumes/data/home/mnguyen/Projects/eclipse-workspace/wagic/projects/mtg/Android/bin/res/drawable-mdpi/icon.png \ +/Volumes/data/home/mnguyen/Projects/eclipse-workspace/wagic/projects/mtg/Android/bin/AndroidManifest.xml \ diff --git a/projects/mtg/Android/gen/net/wagic/app/BuildConfig.java b/projects/mtg/Android/gen/net/wagic/app/BuildConfig.java new file mode 100644 index 000000000..c70b441e9 --- /dev/null +++ b/projects/mtg/Android/gen/net/wagic/app/BuildConfig.java @@ -0,0 +1,6 @@ +/** Automatically generated file. DO NOT MODIFY */ +package net.wagic.app; + +public final class BuildConfig { + public final static boolean DEBUG = true; +} \ No newline at end of file diff --git a/projects/mtg/Android/gen/net/wagic/app/R.java b/projects/mtg/Android/gen/net/wagic/app/R.java new file mode 100644 index 000000000..ec5e38a14 --- /dev/null +++ b/projects/mtg/Android/gen/net/wagic/app/R.java @@ -0,0 +1,27 @@ +/* AUTO-GENERATED FILE. DO NOT MODIFY. + * + * This class was automatically generated by the + * aapt tool from the resource data it found. It + * should not be modified by hand. + */ + +package net.wagic.app; + +public final class R { + public static final class attr { + } + public static final class drawable { + public static final int icon=0x7f020000; + } + public static final class id { + public static final int mainLayout=0x7f050000; + } + public static final class layout { + public static final int main=0x7f030000; + } + public static final class string { + public static final int app_name=0x7f040000; + public static final int app_version=0x7f040001; + public static final int info_text=0x7f040002; + } +} diff --git a/projects/mtg/Android/project.properties b/projects/mtg/Android/project.properties index c6998b3d1..b7c2081d5 100644 --- a/projects/mtg/Android/project.properties +++ b/projects/mtg/Android/project.properties @@ -11,4 +11,4 @@ #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt # Project target. -target=android-9 +target=android-10 diff --git a/projects/mtg/Default-568h@2x.png b/projects/mtg/Default-568h@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5ff4e4ce416f20f090309500ef5cceb37e2247a0 GIT binary patch literal 840167 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

dgwCQ$`vO5Na$7;|sD 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 z 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�Vfo=|hlzx`s>I97JwB&Z$|)8Qu52AG&L)t zS81a-6aPeO_z07yJt*==4nzl4vE+9qdLSX_O~22ckbmPRX!(iJ5CwTtNe0k~L*%C2 z2dl^j^p2=h#N-)?y>KW6vzGc`315lM4+aV=+%){k^GI*BAcHTVMvpYfAXICpH4_z0 zMO1;w6xmgV`eIuM%n%c;iSu7hXifd2!@m`gL>XE{9`j9G>rxsd0=OJ;{Hz;1Vmo@2 z$fS)$(yox#Uc&fk;ED6e+oHTsy~xKI$4y6Z7(IeCN6J#X{>Fh2K0GQ*|8voq7#in%18`}(EPl~sudBCqoh7Oe(z%2#BB{Y|kEx43x;+kg zQm*ms52p%-q2Q&mn`dhyh4aB%1t zVvb`+Z}T<$)wUm!!q$LtSy@|59JM05%) zhuoZ8uLdLXIE(j8pKu$W^bWzTN9qt|Wn--4=aJ!Ic(P|QPEs28%049$QSofUi!S-a z2=86(yW>1&weQIha~Ju-i9LVL7v8Xyj$c*ToVai&o~@nvb=obP=o17=zwn^TJpd^H;^a^L>k+xC zV+lYuq>W9oe&|pTXH=RS%b5D0T~m+a>;W&mZ9+|5Fg<_N!>Or2Qrm%ReK!=UgA>Sk z_A*j)@h;?W?bC=G5ak$P)w@C#Kx2h#!|X76;<)!ed>5{C9AYt@e1%D)cnZecTi4~F zIVK+MVQev1c~Ks5q> zp9he>9{*j(Ozt(x__uP;3^QFAoDT=rq*G-Tl81NmiO2zGhM1z_cqZ~1 z0EM03iDq6&;jO2rijJolKj@xmN}JSJrE~yL0)%UIt5Q@Ug|x3^q}(3^QSm&aHGZ!g zd1#KHZ(;&wu0dXCRHotqNP&wekiz);pehDIM%GCTpXHsqw zzlUXP>sgc>X*j2@sR}Q$3ZX*xP+o^;@s$oMAm?b@g%IM%V`X*7*Tc317-Kd18Hp$1~XiPxfsLp))KbZ}Cf*&XbLRuzkaoRP*W2 zoHP9EJU(f1`;PRaNH2*1pTjbqEULH8(el%5Z{M*c249MB=|KFy~DnF?UvZc#D>oD=gPAr<*Hm_ zIDM|QEr&8teNp(;bMbprCTTEJ6LEm-#l(^6A`#7Z%TO5qr8y0VDmcM*_vizr?UN8Ur_CG9t{q&E^U#^(r z$MzyWvBB^bdUkxNgdGIQbBlAwsdGj{zoQ{>W9&>FaM<3jRd8niKI56owE%(CUIYZFOQiTC#&aAjFE%7?-8TzI7@!};tUOGSa*fAu}u)Nn}9YE?7ehTv# zarzkszG0s{e)0u{3-Vvk^Kn9NAKz@D=kjMhJ@@@``IhZf?9F42=NS&}=@a${WFZL* zM7NZ5dR?fi_GBx)mMLT+OUol$!cZpmM5`D3y#p-^USyPg>YZt$AC!x&G4b}o?A*@} zx!terq5H&V?S5j>$IrlfhbS192gI6v{%#lN`Y~_u{0;TRxqp^@^(fAlF90}uaghB+ zGT#bz*mrT*m$E*-zoE==oI;%OBb{D}&ohf@?s)-lDuKO)tv{k} zI)0NjJ&ii~=$3!7T3g}GfQ2j^RyS|IfC9Wst6=kN>{PzN96eROY>aMR&d^? z-dPt%glJ~@G%=~b7hqn2Cd9mWm@DN_3|SNyzI|D=XH;k37Yw0t0BWZ_1>azZi)AZ+ zoYpO)au~+VXAXza?b%am)@u?`goaHz`-0j0sqe8Xf)_sN(uQ>UmOX^p_O$7J6WgPg zUUDUmBtt29sQC%^#hbFH?plAt;-H~UZt?H!81^T)1F!N7Uh>!$7^h5&bCMto<4Q+< zeIPht@I`FJ)GQ-=Z5qkOa{!DK*z5h>Z@3Z2;Q>7@n8U#TPwsz#38;sJH(rKiUX_dS zK=RTQW{HT9hmd|rCdQ3^J|R9HOftR{}XQdZn`^stYLf|);ne>%?gT# zh#lax;fQgOdTAMO;j=vu7!QmnW)|2S*2&!L5sI2XI8j-+2EO@8tD)7FWp#7-r4clF zaFs9N*>JgGZxV-T0tKANUW(X&Mg?yJhnxltLq3%o>4*HR2O2^rC!aAxTElco*Nyze zKnl>jajKl)AbUhKtr8&>B$W-mSF{O!g@*KuOWFAX{#4)3`& z39bWjDN{sYW5K7RXoHtVphnVs8tU+nhRQt91O2Vf<|D`oK4dWOsvka?hD2%5?Dcx+ z`SJ@4eugQ-a`q6@dzsJGVfIos!bBF4nZt2ICfPt7ov}f4^|DU(oX6IdxM=kmd|9&* z-hlU#O@@Em*vS2E`RAYh{qmoG_-6U1w|`i^yQC+O@AhVR9|z^+^qTJ$+g}8&I2Svd z3Z1|7;$^NO!-t_)D<^Cgb$ z?{Rj&hNf5W2hZ?n8RumxL+8#L#M!&UvF2PMU%wb~gu{2F|wIkh6sFL~yR&crSlu$rnn% zRXNBK={e)n%Yy(TOkoW97D9dlHlPJeym-mesYEi%Axx3x5WZ=-8t5g5X^bl+GrI8& zZ@N98k?-$x0Qb2LZw_JZ2|7&hH|`JflhjASDAqlPGTlJJ4i19nxVo%c04XkoI0Rn7 zlG*$o179x#uF>Y5k~4CqFT{~?L>$DCX`~>|=p5dofEr-KfNLtt@&IsfKFVX#hk)Fx zLl1x@6gZ*N@Nw+v@firo)C!W2JP$gBr>=!CV>ygBTsSCx4u}m{;tDT>j4)FuFT>1B znk1G_&Qu;NC2@r7c*uLU72)mQVamSgAR}s0&yq2S2>fI+qo<%EQ&S8)Aa!UdUx9$B zI-555R9<=XAWwP@a^D^VdCU;3EB#`WtnAW>Xhg;7^ZrNvc=XI+R(^;5M6MD|7=coy!{;W-S@dC zbDV}FzaFBqqV7YzWeYv__M`!fQ=y|(+GloK&p7IUic^^$I~&D1(p?}l3KU|bQKBZ_ zG4%A#+~Z6gF}Kl1R+_4d;Meh_XT*7!I~*VvK%^&(@^`i8?2XC72-4;dK6KSFfIj&a zhQmDca{0EOqQt3L!|x?1zq>kR!N=?6^!DZQe|`Ut%m4lTAD164`ML+aVJ91$5WYac zq`8I9eK7Y=r;$uJRYy8>Jllw#(IdA!eZAbXqK`r`|UU%1Ie;y4<2Q)YjKI^y`Yu6PKft)?u{_#YdMD?# zYjr?b=F@JJ7akxT@R!I387)8H0K%6}HqQTMd7WY3)r)^v&Y$B1x*8q1k{w?Qyw88lR`d$$G^p=+L9z~MJI8!l7h=hG+b3H#D>EmA*8wCSsfF$Q zMeA4U7_?DrLyx_wPVZm7fl+&99Th@hCKLEt#R>CYa&iDu3arvU!0J}&GB}kG!O$vA;sG~VOB?i#v=76_)#ZMYR5?hu5;8B4 zl(FrNHb=QAN6I1FAjQ}V+j=e+5z#;>bDZK&%phUN!TOWw2Iz05>5zsXcsC!o#una}?-S7DVaZbU50vVM59;Z1C{gvf||q*SOS>X)Pk!GH^F5=2Q4u$U+K zfH70&`H%!-jQ289HJ@Q9pgeFktXJ<7u!kQI^U2tQLyXB0_;LQM6$X3k`R-#QjJFz1 z)s>c>rDG}(PyC1OGQcx=QM{>Ui8F=4NgJg6lz_^2JPJIts<6eykTP*nxv#0T=9DUm^evOgtOENnlo(8ZE z>ZqhKN)jrq{7_aYGO6&Hqm@`%eI93`X1qKUh3UJ=a^nVw!m`F^XrZ)YbxM{Fp7-;# zHPj4JhSi~YUs|F?Lq4Hfr1JXY;-Qysvu_yc2KzBH=24J|gbaqhf^o*{#jJ7ue3Hl=*+hl`*! zM9GvgAOSy9mlGD*i4#YP9<7B&TL&=v@R?lt{nQ-2Ejn>W48!gihCTA@B=i_{_nJCa zSww*2QNtTld3nghZk=UlcW6}SkCqO2q`?7XisbT%;qkl6r_0;-tL3M6xE??KVfoW{ zf5ch3XSnnupIKuiDqD~o-{Bmwn)mi<&DGwj8-`fzRca%;y!_*G^y&}G(etly!f?RY zgU>3d^Jhm~<{Gkr@db0*9NOIC2>N-pI~`ud#7R=pQ&jw%rp|d~$d-FI3wM#!7KeGm z{5|{-#K?;f-@RQ{^inb(ZaI4m&VNKzsIM#rI(~}ma8UA%Xf}hszH{F^%6>Ut&Y#eW zg_C&3B9gPGI7}=Gxqip$Uinv2D#?NJH-`J*?aNujt8q$rO>V z;pv;@?ByRKs0`scWK7S=d6);mJKciS+iJ@>QJf_E5RTNkvcNw1PiF z+8B;43zTl@2|lCp+}v#9=-#N0s;{IwM9r|epO#A?y!m3WI&$HO1=l(&F25_k;|@LXTXJ5?i7lM&7_Uztb;m;$g>nk zulNX82c$1Hqq@N_NetB1wO2A*IN{jEA&xCXmn7KyWvDPnBh$*&n829vpbh^-G;WZ~ zgDZ-CLClL5j;#sO>#3cEmcw=`d=3c0i&^GcnEZO9?7fl4yflk@5a6e!xtaE?7lI)( zUFJ{_uk!C>i5$gY(!?3xf=mcMDrs}HQEK6&fRf(|3fx#0QfjEeQ~4*apK$JGBgCN7;l^sVTw~dV~Q9ZE4$^>B@1Ho_b^P} z_uIQP^yv*_OOy0`;nV=zMm083+blleg$jo^O)(6b4x_zuPBK*Jb`^$34K59l1(0E> z4jbDe;-=O6-j87zEt3?SnLR?k&YpbefZ0&+uT#TcQq6KVJ@;`0(2;)I*3Z>((oj1L z=FUGX z^8PKWs&SOA=zY5+o%1g}@2*%`YMCP6V+s?N=p|b-^~@pPYkJ-IW-rd`6NcI^pka+O zae3*Gy^fVml{(|u7cZT@Gq(g{W9KvG>?vb33-IWQ_~KL`hk8Hcqqph!BhCi<)w&pMdt?s_u>T`CEr}J^@aNcuEA?>*3t5k9?P@yf6u7qC+40qT)KU~Y~KHcZx;jm z&DZDwbM06hVikz31hz%JrIV zQ|=MZh*O8Gd%lnvHe?Mwd5KBSBjw3+4--id&jQY&U1>OiCN1R~q_qjrAM3Gf6P|g7 z&Lop3@;T(}KBOm14LFA`zcRD+WdYpE`@b{yrb}`p$(mhcMD73zsI4za8H#XZ$oGFJ z%FJ|iRaaq2!$5XL`7~nVPDa+NQ3ySpc9wS+ZT0AU`uNFSoYMR>L=mNO6&G}9)r;?{5a>nl%`L>;~*j}d(3nrQskHW}aW zz*#1(ru>Aj1d$X7r_35(yg(Zs-U^fY30SGwjN+Ov1<9|}X6oxbfaImD4Cs^i7KSCP z4*6WJujn`#=6|7UFf)1jA~7a1;taonG+_lcglrvxnFs>)?et9$X%N=}lQT7aC2SP0 zNhGxDSDfjr62#++NZS&bxrcnTG?2#|J z7>f94T=>c|(vfLxM!EWcg7M7ouRMMJbhi5V5i8K=2ZjMZuYS0C;*8zr)w|o>>Tj>kRzIL9 ze7s`#7P@CB9h~uo1@S(4_KfAoGU2eWt4KGbVZ-p@7D2vXrMfx0U)@|jtzNS@=N60G z4X3p{KKcQJBBxAP!HwAA(J~Cn6dYHCUjlc9CGqCQ$@s{FG+4T{V0eDAvQk-BuhTCL7sf46!zK72CWj-%BW>g0LN;*rwEE3y z3oeRLIo_g_ZWy*b-?P`>>Nivp&-leU%I40``x}OSUGVZFMo#AbVa2u$(DM3x_lfl# zD6CkI&lsk^*nC{wvZ&=8C0J`KDmH>7Z^?VKVB~6-X}dw%X>8_4!WHG^?Yr+*-@S2* z9ow42>JJvhSdL$?KzcoLnu}@7bPO2c-VNBWB{K4(i2U{6Wc68T+xB_TD;R z9kza2{zo*eToxU~!RFdHm}-D(oLRO#CCLvm+XIw8_5uxJ>lE^|+~yyC%3FC(n?#UT z9!ZC=+%{5;l=s4#?$P$cc#Oc@YQP4z`~h)EjvfRTzc zLQ8MKChGX>BY2;>6Fy&0V2nKDh68CB&wu&jIj=>I)AJ-un31YFcsE#_0plkfH_xN; zsHgtQVpcdS8^xa>8?G&#nGJqcW;P>E@XPCXrI6PpLK_7t5P|yk(jOP_DQ_brZ9@PI zXy(Q2qupgQ*U?8o_IZ zjdxLqd%liDXLu&*q|p!tmh2RrB))cN8yXi*qPN4Qfwcq5&xm7ZDb9Rp1M{dd0N=G9 zp#1Gzy^8|qTqFMMDCjB5|BzqU&5sPoqfF35;EoLWy6u7*WF`YHTtJ3yTA%IDbL`e($ro1W#hW=vhaGMX`xijBUh0o54j?dc; z$TDx!o{e59Hjl{Zh2br&Xc!aO-o=gqCa{q0nSbWCFi&*mkIWr&Q|=A>F#h=N9SYOc z>goH3)x+QJSAYC|zxw;%->>dj-MeE<*>bx_G01+4WUL+B?d^W`J65NzKB8QFh)f=#Yt|}G_g&1%BFuX{+rB|@V*f?TdCDgsIi3%ByTwViX(7%< zlw6cXEl+IkvOWC1dVau?8l={nb{T6FX%};-m^y>tGrH_Kiou$>c54*wtE(+j2pAH6 zWWM0t_p1k#Lq7^GU%`W`oRuTIniJMXKfc}SWvjBlQza%N1uuSdAY|apE5o`yi|@q5 ze}~KtD1U2|IA&oow+_V%1@@T*IWMd4+13W@-{tp|2P|#K)xAPhNQ}2*rSO_9UD%k1 za`cH|_0N=N=S9Mco1L?NrP~)}5ktxjWdXW5S%N~Yl1>q!ZnBQ%ioB(+zGm3m&D7t% zRbjj!-#GT~H!PyNf1otGC#QL&GBy+=l);0iy+D&wpV_Rs7Tzo5nfgxS>CmDd)K-=> zH>9JDgi4tofhe`mibcw=09uJfsY14CqsZr4|5D+A`SLO^dKnHKl|L0X2zL0`&_bo& zmQ23j4#yjHug+! zlo*?~Wz9w|wMC%!nkkf3-%Ztz|HO5Z$*+=7dSQ43k3m_KrZAADpk z50y<`&Qt*LccH+Pc`G6~<-_>q(USPVtBQdYR_#{)%D9ofaf!sn3s~{UpHMuf*nAgX z&i(c4Q?Mw2B!gNiZ|5jG7b-<`JT|sfko?-GgQt^pv4>r%oyH5DfE~1WwRC2Vl8ETU zq?wI^(=fJENJDO7gTZ`}0d6~dk@!Qt+X1`sRDSGWHg0*t5otMg&dxY=ePX$ClAOwy z$G#!o$~CzpQzGS(PV>!HRJ`=gR1-Q!p1J`ZkjhP&QI1HXb3QL`P>ilO46$CI6uG*T zJqwwDpMBSqOK7VI!b|cWY?Dr~`VKvm0{3roC`rrE_7UX;1u`E4T7OV3Q=U)|J(D*I zBG#qw@`B>|tTk1+Qpy}QW&YNF%~4~(-+e@(VBX*6f&JlbUsi8#FIVs0U9T>_N72Cw z`22Xc`fpe78LIbW4TdCD8c{xW>-Q*BvaJQ`0)_7!1@LzDZ$G_e@x?Cp`}ZGK_b3$a zKi(zn$w%{vXnXQ{`*e+kkz>x*@36{X1*43lY^hA3a5x9lJq6uv#kqHT(s}88!HfGS zMNiLcK#k?f)xWb2sc5JGTCY8w1pT%aXOx@o*az@6)-dzsiXqkO)$dpXe`6M#@RUdD zyjI>SfM5hiR*X|__Uw5WYo3ct-20F^<}q|p03%%T71_7!nt9}l<$k z=uu&w^08%~zx@@%zHIWGIh-n8;LZslSXmG7c)?Kb?Iky9*1E2u`hxQOOujxlE#QoO z6EjCo>nU{!(Ya_O!?m_^$nk{_k7vry<1<^Z{M+s76(^#+esjf!>NmJuWkA zUWlv0ow6O-V`=1wJr_`IumoOFpWKK221WVFEqM4KSW~XNl$-TPMHX{5ylIhBNv#r? zIcSzoD3iJf|8LZ%y6tW-Sp>tiT#78pN}(_9lL?TLk5x3~=FJHW3# z>XJtodJ<5=gb6-zPI%ic+~W0`^-I9`*biFf$&SfGWV9aiF^?K64~PUujBf6AjQ_? zH}R8J6W@r!_?}6jY3_hcfi`9_OhGorm$>3Lb4QsMC^CzDd7p)7itq?EfQw}Ow$Y7c zAcD6O7qPLed~lnBs6TJO`1H^J(rB6{{ZlG+7dGLO;je)Ph?tJo0B-3ZXh?E^Bs8T+ z58iy7Mn58|%Lv~LHx=GAigbcWx1Aw{o#q{~JaO;cn=L~-vQk8miFoBBa#ND!MUXU3 z;hUEcXR;+tstow*jnWCoz^RrxzP-k`F9eba@qrE;)i%M(_V@ZrUZ;vEZ0wmvQUwG2CKzea)2FfU4jw&6n*U0_ty z+@gfx^~3W&skgY#IW1$uo_P$XpSiyuvT>OGh5Y=;Q1Bh6&8$%lE?L#;7BT1Nk0>$> zakCxE<45GlVuycp?9?e6-k!=19F8CePhCWRKfFPp%L)Q0Z6k+Y{FT3gEJL!!#d}JWeVC00I1RUL@FP?j zz6)k9^3-aZVP8jAh9ywLNAUe=!6!C-@% zM#I5nc(N~Emxm)rDJSrj4A9ZuuyWfR@~#TfY4shKRTRVOxcc3dQ@( zXCcDBMWYF6`e4us8KokO5J>)2E;!>7l|DuR(27Wd z%f)-}57c@|$Gbyp;z6E3sf?Uo>Qbp@7|WqxhPo_c^H?a$*4p`c;&sRtyg2idZCujG zlzHjenWeM9tx%@LEAy_DOF9Z6mC=AVP55NKV0i0Lupc;?JTtEB1&@`XGNRKVOlzYjPP~4F#fGJbA6aB^ zb%8R)3Q$imiM7R3G-8DWg|ac-rVoVzjew%V4gXUKq}v4!9#c<|i`%8h8w%a-iQz`} z^;@|`3R|G40IJkzWt_#z)xBE%JQG+Y^O04`9~qW@V(+*M=-P*_etxz3PyhCA^*zJ7 z507W7-~V7$uB)n7pI4t*L7KUqoW7D(qMQ}n`I+!So#=j-$Ot9TDHTq(cMB3N!{KKm zZ$B~T?dK>!4ijcGZp)Q<1`jz8m3-Yp(>rqk@0t0A)#-`(jaMx8d4c~Y=A>;|P!r9b zbb0#AnF==f=ZAtv?nN;}mY<)nM1Q)9B6H5X%-3&858BboBT6JPd%i;{WjNkE&Rk$~ z6rNPoRbutaHaiZ#T6np|&Ce(=_@zwvL%E|KY}l&hf;oTd!yPOlH%=hr2TL#cKferM%z{e9~&g zn{Xn6hUw=|-h?YA{F6siv~->{j4FUp0wj=O=W6)u9QPblQwBp9yUV2py>EiIZ6Wx zjButsd;#zLyL{N#=&MkmjM_s*iExO>;Zt~W9$khD?VPl<3F~}8>%de1eVP#XbmM9w z;^c|k<|X~(TT+ltRs~RtqYB{dEfyw*FR!l|a8yxdb*Bq4_6*OeM8!gSM2Jg49$bC&VT!wm`` zbMY8by<}^d4HnR(2kLTRb~_B+DGQWKGB)i*%7+TEaazq~U=W5;u6uy@O{4s^VA=mAJGP8E- zf~R(%z`62WXv;6w!VF#0dv+v&mBv_wAF=R0-lHtT+CM)kr|(%5!m)VNM-_JWL$v-H z$27!ZJe4+%TudEyE=nzLQUA7%wXKE8TjXR+p!JgYPJS z&GE$G$GBBAiASW|X$yy(j1%O*j&S)2fjC40kGi2_NlM#6`(&c@@o#|-I6o?X{O5B0$I}|AShd(=8U=-cryt!%~J$c(Di#AfAOz+Up!hO5gB=O^o7^2cJ6n zUpK$YbwYevPi%x$noQHF;+J`BgO3Ga@cM(S?EHD!09tpQnq~tv6){>dPy=hdR)#)} zrw88NmVst8zR1??WzuOY*5IPyq|dCFO!1HrUw-Y_ed;$5f;J$&0zG2*GA>|)Y~bM` z3uz33!*Je#S;~r797a>-c9cyBaL_i)_@aUT3{T;92u<21)f|^(C+Iir4j-u`ox86Z zMynn3t~`ap4())|M4TH1>NX|g3Lf3ynh*I2ay-h1RHe~)Ee{6br?+L5&d2ke#bb0g z7;qM&(o4ctdN$O58Q)rK%9d@?!+? zLr1a5ow7TSK9vqP-F2nr(-Z3^*`IDrhxnFxa{u>#`FZvJ{p0HI|6pG_WTc{KXN35I zqh+*iQ0B^(M5HO{p$tjOyE0LV<`aD3nGa5f#r*K_LjwiC(=wcsZ>4|xPtQP*`{q^dXe=-M+p}}XufBNxzI{F}l&Nf|gF@w|*|82&)($Gy#J7ezZ}Wwrzz3A5J7HFDg6HZA zg@^?f+lODWN8oCQBDiO0mV7i%=7!IEhNv-BlK*g(x|5Ova)F>_8r1l)SZ=b_i}NJe z?Af_{C~&*Y8`1|}hJDYo^^b}_vNx@KBv@W|;M(GMU{M+`@W_-2l=cJj{C3jJDJ|3` zm3tKWDB2cy>#f;sNg%5AmPmMz2HY-`Pv#4H@KT$rEE z*+aSXqhTs>@+cW|J9))Nlk@8Q08IIHPHilH0zuc00`e-Cc{gqfBI4>uj8ijYGpv#{ z!BYpJA`1DIrfrJW*9^CdkiaO@Xq`?cNgU!Qqj~tA`D>$`clgzaULXcQ4t2MU%uC)w zSmL?sWvH*h_e^TTZ4-D(jN3Np*tQBQLtMrqAI4js=1Z=|kK&#W8E}dZy!pr-u|fj3 zeM9&tGXnXS{cxp*y(C5}WJ?HD%Eee?M(uq5bf z=%!)`GQoQJ1hi=Q#Z#Zc`F;$Y7!_0mm@qRzXa&hL_(WVkf4!#gEf@()Ft|0{n$wBL zBY%zKoAGSAZIZ2I{POgRRvIcF;sZzI)+aB$1P8~Ym(E7~;msH)*MuEW`kLS3nEpmG z-QjnHgRk@81e#b2Gos-;{Rf1v#a~uT*4KX=`(45*qD^8P&O!$TR+mM(YbB3iaGSFMGT(A8u=t`Ft1Ehp7f7= zPzvRp#RV#W%*KKaIQ^1WVG$ih4pT%pkY`paF01D~l6 zE-ru&bWi}ncaJiA$9{4bB*4WQTAoz8Ol$K~8L}M<$Ge^9tlwKKh%AP{`g*2C4c=U& z<~6su(QUq^JnH85*uQ*G4C_}E^J`B0;7<8cxlhg&uZ3ZEp2KnDC5t_ zhY;8!_Xv%>n~ z@DVQmP5~cB;hp`2BKIzvJ+HBTZrsYp@|g<76WOaoHqW7j!+D~1?pyPkzno8NIY6E{ z8OG@p<|1I>Z`2==%=$CkE^x7od7R>oDFvVI9$B2DC)eO+1Q#im@d=r$CX>Ss0iAhB|oN|NJr)wo6qK@&+yc;#S2$Ue`HsW4p*4b&i9s)IQHgsNasx`sBCg8}J1yw(13Y@7jjJ&HMhD1v#ZIFD06+jqL_t)G z5Zpd2Jf~NJ^0W9R$`>+Of)>Z5QIEcT5tv$m|AGe^lQ&yRt|e%RI32=TczLJ6QR&OA z(&ue)wzF0qgHB|Fdw%IuK)%~qA`{vyl{cE81lb{Hs}mcSR9Mi7Qr4z8d`@Y~tOAbw z?7V5b?7fNOoEe8D9Wt@o_R?hnGVct(SQ(9PrjY(N=<^xS(lxRP4{fRQC*RVaPhk`} z=~Xf6ycwS(l0l{^4FgXaAFVoaRpk(O*bDaH62i*e*31UCU-O3ywFp-Q+=UAcZP}o# z9lBDnQRy0r(;8Vv0VDG!wk6hv1zjc$lk3ow>&fc!^TsN0*9)^rEmRD_A{8@jho`=5rLF4a#&@-rE1A z3|sC~0){S8xu0RBQsLH0fz-(h7>M#te3U&;fXT@*)u?7RB;On!RhfzqRWf1Xh5a=j z+=|GyK&75VEPFP+KHD*W63f>9;q~g-xrAp}E6=eks_>=5B)yh7ZzN+`gvg)=-;{Mv z`dD*{iMPk%8EtpK@^|i>zn{^mnD+<0H5R|*4RVhJQ_sm$c-zBs^NqX=>(&A2P&T?Z zsh+an$Eb8I=jQ9=O}2<*!drNdJ!v3P7Ga30oHc1{ISi!BpELv%^_|+AQlTO{n z5kMY%$u)R_Mtt}w_<$3Jvd}U+<1}V}g|2^ojRuDBpe(2(!6%L|Fyi7V)Sw!k5+ck* zX})?byw%=*|=960Rjf)6Twh}bCIfa`TzZG^0H{HVjHEgj>7~#HzjflxWmA?uB*#75T zUo**!Puxgiy73bAS64CtkUR-H0AfI$zjlbm8_0vPk)_dFM8eF=Mk7rK9_1k6;ivd5 z^FT=?6*1^TSUTb_jW6*UVP4QP?tBe`>N_fyt+yZ?`p=kz8|9}mgK6pRI zM7D!prTm5B7X{GtS3dc*j4G|;k(D^e_jegUgE4IWLnwCs>YbD`p)ataQg`lrn%mXILDPnm#8(b$5AEpx6Hkjo{CTnnGPO&K7k%nxj$ z!c^jt2VLY-`pQ$L+*CVCZQ|orrYTr0A5D??o4Cj=FxCrk;vbo{v0lQZpG$f;;8jpx zoLei6dlpT6VBVD*V{cGiZm>9Au~PP@pBOGh(NkVe%)v8`HA$uL`U-0*RiH*>yLW5$_4~{ohMYi=PTTaRGD)5I&aYz_82oGI32w2r-LrMfGZVz3 z08#-qOzPP%Llve<`Nps2}ZqsBLgMWE2zxC_gb|Yb74R|oeDVLPHj;OT# zdO}ZM%GD4t0dUP*giq@nWPvXba2tazJFLP}4$C1T^| zEk5Jjz+T@}02fC8EQc9yJcX1n3@om^p8S;XzXx#w9CV{>6>}0^0h;(^{=y)RkRQ}} zbZGc1#)V0oNvR&9&J`TEQh27|MK&vxWWIDKlO!Hyi{SJ(nMxezL}lnq-2BBzYk>faFOlWd*dX_|-p$!h#>ah)<+kp)R6O89oEX zw_JfeiI8ykvo#cf@l6XIiYHfiZmz>l2j}#N*A|vby2`?|r6BOk@HUm(hBh4%>CGN{ z4CO^R%N!pRKpNE@R>0McPQ_s^I|AadbOg8fEPEv~I8BPmp8WMTED|M7ldaq=&EVkI zTRxSu)&?6ohsNY@@5)W(snR(+RAZBNaU`w5fz!*h%3ChsfUzT>fot9iQr@L3L(Rjy z@RM8*#s^l|p5^E)7t0_w6>E67M)|mAeqj6*fQ5(4RnuB*Ty&5Pj0v0Mr4n9}7UU-` z{t_LU=^Sa?H^})ySreelEK?4rsa(wDYKgwWDtNe`5Vp z0ptibENVLzm24UM-Ei8+IrA0QOg~ULa){J4rab#hoiNGf5g#brT`^CXGN9b%!;q*M z(xgt6C(|x3`H9;)Km`85o~L1W+1|-3f37Be@XTjcem|10&gXNB8CUL}xvF{$=LVI+ z<0iF`(fY@VaW+`YQEDcI5c!Xy2aFa#VO3sZ^)pQ%3a)%4!v}nkTH>}nwrYVYxA@XG z;bB_r19ILp@;p}wBpqhC=?-3D0CbLE@*ZVJ`=IB1D7a` z!%xzq4AV9v+tfM2BWGbJ1Ipcq6?#!7rFt9SeY{MY*V1;F?|~HhOIYFJ6Bm-0k=H|me_NIC;s3V{=M@Q*TL-X}h7 zu8}9Mq6pBqvh|YEcrEJO(2_`UZV}5;^pekRg15%|!gH zXja4E;YYBf!Azr8`WIB;HQ3`PRN+Fo?)Z(L>1{}G>W_n$;u~;z=%4?iXX1xZqD%x6 z4zBczzdVhC&AbxodKv*GlA$is$!$7?Ix2mpy7v$mw99l-4Q@XMUl2%f+PDzIMkbAy zP&7ow0w#OS(eRZgtqzeYZAs}nr&~$e|7s&nqo+krV`=S=nJ}poaqpIkK0S6WOzR6+iTY z#IrLHxDS8j+pl(>z}fMey1*ouh`ADj{2?un(5i#@`N9S?@l}Y7-&?C~+A3v%5-%MB zq0>ey91s?H`cVO|v5J@nCPoe;6P(0v2kl7?2tk~thrD*))#39KtCN+r))UgsbIsWs zkC@D~L`i;HqaQi)ZO0t73*?U;K;9_NmQ@ukjbvU=?9X@pRDP$-ou4IDk3G9U8Ecs} zW%8^QbPO?5sDm3>`4Q;i2(3V#Qu6WBOZJUZ99q2Y?|1AK=bSH;1%}hKCdLY`98`?3 z>^juzLYH$k8_vlL@a=+wC({1pVjvcwnC~iK>3~xaOjmL;=`mk7o?#5khI4B@mBTCY zS0N(Yw9U@bv?z1fq+Tfp9OfN#2;$#-O%wwNQmIDqG|cj?HA``kAMTa7Vz~DlB$jKB zU)w*vU%lL69lYV4y%x_=S~DEY5VvPqZ;9MZy4i+@O{v!}Ec##=`HT;#JzL}K7((8y zIqAcjMI5mbvT1eH9Lt`JaG7q~l(Z|RgThPBChwGw^3v+*{)1XpVV*ol;i@duf-H~R z=CcBcEFxQEL|H&kDU()yEo!DwDCm?a|AIsS?o7W(8)Ce1+qO~0%};4-?XyiyDoj9lZu#`pH2Z0 z8{4)QKV)F>Fzem2#$ymwfK{e1JqiU}*$f&QslzI|wh2T^UACYoL(}dveES^9h>IVi z%SWl~;Kn3_j#ZKD>Qos5(%}%}cueo?L<#)d(=+ zk$+)rUo9$;lZe6KG!XkC-6Q$oMY&pk%#Tzek!v*^@l3T>I3XgK;x1?MoZ#iB6h=CM z&!71_coguoE%2RO>(yk;x4(K$5`Ptb>VJyyD^5?r7B?^_U~z)NhBJ4v!z5Kc`jMR8 zNi1R+f+I_V_4q7g2@uC0K(ls3($$5PU0EWh+=O>^j&W+ zGc%oiGRR0&riAoox|`y`h(SSo0(k0-9OQKZfn^}7xavP~CosGZ_#smt78EN?E2>>A z#gqmrlZq*?S~^tz@*QfUL20z04@mMNF(6?@^S^(2F&W^uPN=J-Zcq|0;U$U#mB0#` z69P=1@kvt}A{tX0R*P=FqT!4p9=W(mQr@-buudXhsLto%KjBS}FYqhT@MdFdBd7e0 zZ@LQu#BxoyvWuHWBzYsOH@w?)`JC)>VIwa)? zjL0m1X|;wDKr3%km=&hMX3D*UpJ^e@$_%-a2yS9%0U{l4dl6YcCvsO_$in*IDnEo$ zvX-$ZcJ?^t0Kf3jyqdiAY5ID)feU=FdRY$AL2VcUMmfR~wq?J*CpIN^ljJLu2#<=p zXVHZ7lwgIM0Th(9ElSjyElx5C9{HtzMHu z8fLoNmaw&lovRC7R?oXI2u$IQbY-aJuc}1wdHIBjuw)kzgZQhRlCU4)V*Fio@1xhJ$(MsI)b5 zQ2#j`-lG8izS`fvVZS}jUnVV=-?3#%ww^)0^2;KdE%MqkY<}Q$l*7}n3?Kf%M+X}| zTh>?a7!3W6BJdWWv*9zt|CX`62ku#>U~I17wd`A3wWvpSBM&X|CRIh)IfGO!;#$sV z&rFgsNxcr!;Iuwdiqp%3(Zqux?YuONflU0fu5K;!_&e6tTpfbfU#qcsU4J}~mlaz28U!lcNdhQw&kN9r+o$sP zIzmjJhE8b1Ef&hC$}%tH3yHUyfF<0(!;}*dl5TkhSI7VuUgooerI?%a*~=!k26;n_ z%Wp4mM$Xa|e`pv~{{fW;HTo|u=^s%JpoPR=MEZ~O9%&m0eVYl9;QK|!p;fzu`~{8l{K3^6&OV^XycBL z3=$fJlm^axi0~s!Q%fa62@}e__EJGbgK zCWm)!@Z_mCzDBhqDw_@)(nzSK(I9S60CyZ4=2y2JXgX0b(fMt-odZZpxV>7Iv`!@t zXjt9;Mup?T69hOb_7UsS9hR^(?92^2V+H0KB}g7Jq?g9nl&f5FnPwX4xI;xi(r$VP z%TSpOCwGOxGyEvSq&T>ZS|z&HCoOrg=1Id#QAxyGW=^m0pyB{s`12z`;NwT0z@*&{ zbZ{C=jyxsE;izXiBaflN0_e~S`I*g;u_8S(KhPD8dpD?NZ?{Y%V4u7_$HbXdm2729 z_nR{895Gji9!Osli6|9xXyi|Lk~d;W-ty+8|8okkmR&!PRPt3Ir2mNZ&^-y=!*PwA zJtz12_K6c}*|_>Oik)SX^j~=@2-@NcO6+Im0e=2;xBC2_QI(bhYJ=ztlhE&D_Uf1IjsVs{4!iAJ+5?wmO(V0Sj{4P6-RE| zIg6Qe_mW2y3Q|oTxWaYsN?#QvtZi;aPC#Uyx@6nzTvWo&8K!MbB9HiZbJ0Rhr^w<3 z6x|m#zb0Qmi|j$6vP23k@h@6JN#Eg-g(J_uqp+hive(}p`jUu3LETwlNld=D8k=E& z<%5ZQap>7{>7tK4^Aol5wdH}U)E(YQbB4SLTazaDK1@fBQnSCTQYUk<$db&|1q7o` zv5Ynu!2~Gxv>%o#&tm2YpsU7Xi6?z$@b7RQONNL7e+&`R5P+8!%@0D_rf&TL|D*wi zTi0kFNKP*0qcwXfeeBGcck!hirX7;ElvL}Sm$b}h+nM23ipd|_Euedwj{F-d4sm70 zG<>_#`31|j-yyI-IOUtUuquGozbzFba~esjvLKkJRN;x_m7PILk0o4(==#)6O-gX$ z=$|m(TB;Hmzv46oZe&*M{p|~GWtm$hh9Db7Lf^c?3HX!O6IS2>UrM2xGGm*l0vJ|- z7wj|-k~WhO6t-uC!_!Q0l4p!Mf~Y)9Ov0N+eNDIOVBMxI7$aobXP@|VD7|!qIlaEA z0G65lPT6!AXpn)WD0THY~r#=pqZ44K*zdZsnxYhR8xl z=gHSUnE-#S0Y^Ru4WMRzc{+3b{O z8Z#SUe8nRTtvGVkied-vMV!Q?i=m+s&I*%FROvj#qXjF&V7hZjhcv;*l5a+|^P|)2 zq^$5HRb-(PHH^$IO_B*4HxN`5sg#qsLnnsCcl14-Y)iX66?jcp& zDlL?U)*JjyJ7Ipbbgxgp%E6ScbKHb8jW0vwS4_#gVzG(Vz}K(OSFdi* zSC?#ia?UWUD_Rwh`EtdgjVq2xdt$MG)@#Gm&pguZfWp8bx$OB!r%QP`IAs9kZ_k1X zEuN2_)yp1uE9SthSpnNqNo3#r;=@KIQ0XNzzzy$)X@QaHz9pFlzpkGaD!a5CPKb!OKqs}_s^EvkCX5hz6@#}%90Sd zco@CNj9GW&4o)G*KhYcBn5AW)^`IY?0}Z(S%Qe6fGsq=q$b8}~i8vsUq991_nNK8h zi5EO0lFXYvgZVMO9af$=dy!hfcqzCpuOI@pd2ioh+hw28kO@P4%4quxWCDl~`H7RZTD91~iCgrlTz@__#;(D3)a&geNGDN zNzk7-nei!*xxPYXYL-HOg6C^zQ*-o9%D`oJ=U1@l=$tBKGCNPw(|jNv2vU?(D&fV# zoA;oca!T`HJ)l7Y&N53wk$t~x^t7skPCKM_Afh%t0lDBscaT#t^yYT>QphT1O|y;Y z98L*;Y0&Mk=vV^{R)M_4r{}nAIA*8X!EZV-8@o*Q1s0{xatOzHs+^_Owz7i9(_uQi zXbWK)?R0G9u@%_kLeGkAgUSL^!rF1B>r5vyWllL#S%#m^71Iq$`So8mv|5pTC!{Yo zL!wK1gyUY)oOJSoJf?FX73J_Vq_=WN86f?gV@Zez;lF(7?sZz$q5zu7VvXzvP9K(6 zWlX1=bQm45#OLWI*{++3a&7rDfj*IqtI4lXs+^nD?OhltWiw*;33QH}qmg!!uD(2T zE*eAPm`0l#X-ma2jAGgHM?S(|8cyk$H%XFw4|n({s`;Kv0P@wQne4QjU9t$m`<4!~ za)ESU_|TAMIzHUzw7i={T2HE@^?y4ex8A4zAiS`+MW zEccot*v__Y>*Aa|P6zQc5%8LSmI)>9tzzYn<_-H1zIufPl&=*A$EnxvSjGIbdjH`A z3tQmnGZ-B5B`pW`$jf=l&sg`i%>6t2fFkuib;W#6I7JESEIpt#zPnQF$2>DZYg-v4?Zw%(w;~Z(WfAX^xUk`YG;`=`C#k%NzX2(!y38 zV$pN9Bf8_^50~Lm(WOj7G4RQ;RP+HQ;d$XNq^MH7@?0nfYEb}vYtWYff%2z3EU*7l zjuRe_cqW1Qgk%z0i2C|#W%udr1-};f!M#2$T!aVAA7Km`VW-cfK8{jlyX^7Im*!Wlj2p{D!G@5293_@j&cW8zQFxp@c zZrkal1u(-6L~&Tn{I)T59*qj8N?av_Mm0MSw4A|D!A;l zXsWfA48MFyW0^7Tu`{%BcO|cuIc{f4n+R^YFCN_CO^XYRpulCJO8B7PB)TJd;>#S7 zC>*AdjdJB7EYX}}jku(f^x3k5Wh7=l=_-REEBJkJYZDt!=qi4{!jocq$aKb7S==L# zGhJ0~RC-Fr4nf|fE8lc%LphKUc@fXomwBP3%T92Im9b~Y${$z|mv^R6gtl@OH%}E( zdNZxL(?YDgLP;2T0Zzq1s}Vg);PQ13Bk7biFK|1rG8+aPM}EkUODqwYbH_X`c6d>R zSv_Gz)xrfh_=&4>=g>5Z4YCD~GRlAPBu~sUZ-ohau}UYtfWmPt1-$uQ&jgGxsY4e8 zT1wJcBU`P!4(mEh=1{Snrpl4SXPBW--mXz%FWC@!lQUucSornV_nF)1dAy!BqQdC4 zMENH_6g@dislku@LGF8pgSCRq za!+zC6Uy6#7%WxhtLhP4pSkZ);5>%Sn_*t+gY`)36>KXyMH_jzHPbos2fur@UVZ=W za`oo*74tJMP}Xl(@BjFOrSy;0@9#flfy@2F9dSvIA5W=k_i%{CYy*vR7xh?v%yZ-i z9gndytF)lSa*m&hccz$-PY$VWQ7*TcL+PH0_n<{~SQhus>>bE`an1AgHP6?`^Z3EE zM;SHGtgjZ;J?_0_K7M*|rwr@1j90eP{UR>fhzo{yFFCozsR5ZHfZM!i`6vI8xyQgM zFBf#1KW_i>gynk6RyA7sQlfoEsiGDFtc=`J2EizRhFuj#q#MvCZ}4nzn{IudJQ>n&?79(@~2Ydzy-8QZ01c3UzWSSIAQDf%;}xz41I5x*ED%!;gSO1Jtp-{@BaKA1zw&+XAgo~{j?a1N z3Ou0lDcd$t*6XyVR(xRwoG|>4>-0s4hWJ5Hcf*UpC{2^nPYwjGde4M8;ue0s0Z$&u zgn1PUxxwS2-oPVZRmsYrmNUu!{CCQJeHxaD_|FA5RMji4_(1F(dzs zuA-EO32X(JaiAfRnbABIdH)7uVbb_s19qS~`ZY{`!*lS_K*;}TCXd91r?L^8B`?x( z=`UN$U@am$^~Lfh zPhN>X+>6Y@K*TnF0K|{WoK=C!S0rvLltZE65Jd&`0RSu4#5u|X4O%!3>}|ywQO8l&*4dYT40df z1)b0pL*iG+>@sBrSa>j5c2?SWKme}JO;iTmv&}M81!x&+gNAb-NdV+qHd3d;e-n@z zHuzOWAm*-|;+Av59R^hK_k7upEY=X8+3FluS8%%_^)-7IdK}y(=fK`vovmKK!6Ha! ze|Pu9S-K2|qTp^(2CV*<{5bNTEoEHvvb)AYs0Fd<%W75>I29oCz-?h%3_uKIpc`56 zF(q$6M3ySuek7PTdxj>LVR-65tj7+^zMz1;eBk~Asi3r-{lSg$#|Mc+oGKxHVEBQy zQ_j{?AeFQ8>nzV#Z25A_T*uc~0dF~}<@VZnlhA;d^YsTd#%61n-~TIR8B1V>NMQ)& zDXW5+i|5?9Sc<4e)?M>`P8rGeH>5XKbIOZFaf1wYQM_n7u&6nwHm7QkjweR1_fJ2d z2)L|?)ajO`!58x$o zasiC(*___tN3QMF1y<=x+5(kZ7lrwu`{d@zNuPuv|P(frmrfd_eL z8ADFUpdSH*nXyR%c`lE>n@&BGxHyIz7|}Fvd8V!YejpussvDPQ4Xo!hc!i-O1KcSKVO={IoW3}@-nixVsZd1Wm6 z@DV!7s~i>%m?2MNB`{Bacuhn@gqGOA{zbwv2_f*~CzMV+f?A%r{Ox;QgShDX-rrM* z_~@}j9r%aecsq>_Y}ozMk2j-O*%o9;hy`D%)8I^D0GJG%yfz|lI=IH8K+6k}ET{-+ zRG?XrN^eQP5kaDwDVAQd_k=fz$ZHBfvbpa<3Kk}Wne-cQQeFfauzd=eEG&YC#a$fA zCa5K=Yruupq!W_)fdk_m?-9HHcsF`57KN}jDyf_{zQ-$-NK}h&m>2-WF>k^HR7AW) zCQ{-}Ty3iCu!XTAZ5AsT3KM5^+D<#kIQ)q!@r_^yX=iOiSqs2H1p>hIf8>*2z%!rA zhN}4}J9H>Ezz$v5Ahi?V9p2^HYz}@WbKCI**7THDElgVGs#vJFaNA&uAIwpRkU={} z6$7n9&`idXh%gy;qiC&}f0Pzw@a)&Nx5LU;9G`W?qt;&^zncG#i2t(#hkY^%VI*}+Cgy#|-1P(o}uWnbD zH?LQhSX4HgNU?olxKKFLsbXRh$QPB2S|)2%5l>E{ur70pv8!K^^vKUMk0E0SuN@!5 zU*O4nDXh14{5c+t{_qNayODc3-eUtFPRj>*IzP-*uFgyoa*iHDe&tv!H&KQUwjR~4_MZ& zu}=Q@j{L=AsdH6m7}m|H8w~TZ_~L>g z>GO@lu?+vhlW9GyUvab4dBbyaLy9c(-YVaeDDD^FT;cwa{TNptJ@@#0_0IWq_}#vK zyZSG0{%!T2{*TYA-+ujV^~*2+ofXl~oRiEZ$nYDBC0KWseg7FA=C}`@H-onMWJz@> zm0w`|{IUkRQq~1f8x)ia6tLH1u-0NX&;In01vFR#w@>g#y^VF8GU^=JteA(lbKH(b zSjWA$&`G=CJH34tnAjkVdgTX9tf{H9Ta?-tKJ=ckcCr~cb2+njU)m@UKnomNfUV0n z)ahF2CKuq_gIKL#jh5uECOogmhw zFL>nN+j#oK*O2(PO&u@^Q@Y3`vH;@(j$8SKF7g~7m8L0W33z!6ynKdNB1;nY2b=M_HtvXBQLb)9r9z>?uDUNf$3-MECG_+`g*CHMqJ{?aBckz~Cz zkXZ0n>4RO`AV1!HCRt5vW9s28PsCSFauP4HC`O9G+H5bwn{7xT^E;4 zvf_Q9ERZY{FL4b}G=U&sT!rWNBw}cSGle<+6R!wo+KvbWv3*lj(Msm3J(Ue}+%IQ` zLjAg~RY%&~45>LRnXhE?(uy3K$e7@ewUN9E!4& z>Sbh=Kf`Jjh@}vuovIKl(C{lAErcfw11k^E!5t;gFK1-CCEk|d!E6~}csfnMVb4{l zXAJGpck;pyiOpOuhKIBYUOJcRHLFG;b4ll>#ehBy-nDcnYvO@XNoN%(RzUtaWySAO zngH;xNtca5hI7G>3%*TD`HR&vGSm;Y6ssMZa%O+M(>i6i%C8;f`PEI1VN(foGh(mo zn`fEBiV<1Zk% z1zZj7XsW}(rcNtc`2;tYX-s}3-*{KN|+`9yn(gxw32) z1ssK8&so6m;KGs%BD%HAnpL%%OH?$J&hAS`y3A9qSo+A?wR0npzf%UZ9Iu(2$Kwa;b^$K z_q)|6&O+XyG^*UZ{dv9m-+uz(?w<6T_jgQxxZ`7o0?lbB&%|-QS=t1%j5KyX!Pn6G zjv;Fn^OT|1VL&`hC~7F>>58(D=>g1ty}oc57G;bMdi%_I#GFa|^1#aK9AifPrEXr_ zzU34ZEvnph(v+c;Z_7VdhtO5@^~$rW@9gw+rh$Q#$x09DK$v-t?o&2p>O^ zLSJ`4=DV2f7vKlL@Sq+d3{T^Rf1a`yGW_JpuV4nW-4YYL8JYkCdm-(UtFed2c**07 zfRhMcIsZkluVV2^L=(59NU!NPoN#{1yY72F|;p4v7&;@&P=6%M#;`Q`%eWEUI6a3BG_2t z=bR-klTK`XaMNkyw&MD9o}aj_nDWw9$8Erk(fn-H%3K`h*P)#BgTw|hXq$e@PCAU> zHZGk902!*bdM540Xrt4P2DjEGdO$lt=L69jWO(cerRR#3BF+_Dv*+D48|l7bTagbR zvA7*Rve_`hcCh-4a@Vi$TKnwq*9wht4nyIwX^~m3bR?uKraJS-^Z^0ivj(;-fI=KV zBzyDJ>M)cp5_fDkMa(6=BvGpX;dGv}^Z6?45d)p5bI#l{gANF>0FRZ4PExa{orAQr z!j$LcnY`Hu=g%=C#}p-bHX-W8(KPZ`MY za?m8a3TqL^Iz)cO`awcnz+@S8I~<=7iL8>hAt&LWj6fu`3Igk0>j zEnDP`ewHKu{V|{XF|Ts|E}^$9%zoqIY~n?Ubz^Ioa<#9kcU4n4)fql7_#jlVl8)_! zcuFhN9#BSonvbPbI;odL34hejTvmE9@f2T2AY`pLts8-ql#ti3!C7N=cXp^4sBNVXWUfi}`RQFMYyCa(fUIx7>t>vL@ki8K!4}Bd7QbnVq;#Qh+aIvvCHM zc%A&jyQ2Dn<^XR8JpVR5{4M>&(J)I*WEyBDbkNhO>GA_a8D#zxPm=6e!4GWV^N}Os zTtWH32_}dyB%NB|CdpT~Z&t6~yvr(at-rU|ES>=F_dh*Y)K7Sx^Le`xL(BWXxnaoy!$LeXG^6qfE7LOg}a?iFlA2|#8+(63X&kSw9!>axB zk3V9$W!@tSr%JiQ)gSLDC(uT1q;9`M$NU>|earJUmazj{;c%cbagY~+RGA=2`i~Ve$5ok1z!JS+^1pnUA(ZMGu*=`C;PE53|%!;VjR2CT4$vPp1z0K$J>P*3ruC z=L$unyrqFpBcFKXcZT7m9KvMz3mpqGZEr?P`bBME<3leBU@F*1q!q$jT3ls$FxY7E z7kYVJ90pAx1#Cb~zrj0oDsYP&P7vtKD{(BN{2M#hfHz&FsBj6lO{@hlQwNA4jNnN( z8JPL=ln3+EvSgTxXviqanIA2t8TsjjAtTSUbD_+8aT?LMxdK$~QYKSSW*}%rUWi#q zpI)|X-@XEO1U|Y1|M%X$jqcmN;yE%}m?Q3l@RMhRMdA~q8JO7dXcM2r&FCgN5l<=C zBS9xZO6CC8f^6YMi#Phfbwr~_Z=m9w936=X-H832^d}Z$6vqq^KCu1-Y;hbx78hXw z=8@-kNw~ZhaN*)Kc)>9pK&2FYT`UYAxQq|dpb2tZlgLDq&;S}Oaff4pXu_rp28h55 ze4XF>NJYvm~= z2&Y@MBr0XV-TCb#YzQ|rV1A`l88i=VJp3xBk#*=z1yJSBn@fmbKGxFs`_qup4P**h zWo$e(jSPXhtp=@bCWg~VY+YiD63BESzsa+(z#+0r_W@)`(9)U*4l& zw2_k!h~iI&twoPUFV+F^MRJG~T29(`{+la3F_Xc!i&^ZXwWxI{N?uYiFR#fT;!7wvNf&9h zudGG0O7@P03?AGr>ugdJSj(}vlF#Nfm+g)&m26jker9VF8=nWxf_3QM?8*rylz|t{ zdfu{8@hz6$S11=Q0)PAV)9Q!subDf?@pAVM%xl9E_;{E3m}ktxbWc5pk)s3>;l(p% znG0C&~Ns$yK?47M^;LAMJ0d5{`IR&_WBh5D7MbHFaaf6d7! zw>SMjaz$@8Cig>*db~sNJ20I=3!sXc`D@!liJPp;J!NAkgmy^0PlZCkw=7B*-daF$ z`w`-l2^B#3gMXu{ktPkm@}BxeRO9MjyaQKqNm+5z1}f0j&+-ttmb?6dpqJ5g1r4z2 zCoJ0%#Gi`lW76{TSH;gdmKp#(T3Eq=v7W^t#>!+o=`NV5cW@ot1c>y;;%eO4FJ{w?IFa68|M}GR0c19Xi25l2ae`A_rt@$ z>P`#6a|BO;g`VDtBcMJ!RT4~Z;z}$8d3x!o4=KVs7NC06S6uTwvI1kHB+eqEfPn>g zE0)`gq!D7ZV>WH2fpt3#=j=J0>(G^dHp=acQ5v$6P-5hQ3Wq!o+Ezm8&Pr$3B+seD z4AEQ==uoahap#!nv0KC%@dNPd6;7>_`Eo?Lv=MP7qt=cOAKV7S1pru2-d@q+FeFN*ctn#626CK~ zGLBMbn2H4HOos?dq%lWSsf3NM(pW!Yaj?$G9JJ`*v*`mSKn7&spGcxn?m6`wiZ#nd?Y>dO&G;+Pz+F&;Q2#12Wt4 zk)fi2a?a4{fuZ8nBYEV$dh4H2%uwDa1LQVoGM%_I$&o(u(@oxYOt;YgJxc3=RmGN* zr^oBn@9)l6cOULopYBk~-1vHXoy9(f%}?NFUgIris4%bboH=tF=WMD_Gw*eW(xnJv zsg|xC0(Ak~C#B>wiXaO^pN(~SRF5DQ#K!2P{WFvJyz81gY_EAS+>)$ zZi5cSQ)aC{mLto6iZ8S*Yo@IVmrB!|tIOVptaf&>)rN&2F5>FO%_wD_NP~qDVZmzK zKzXvX`Jemf2yK~$3}KcT@(f;J1aH%88)crTh;v)#Z3_w0>gQAm<0cI_`fQ#wz;p@F zVc#50NB@^oZSYo=Pkf)q1MINf{8T*n@+V*Xaub5zXcKK4i4oQp9-vJn^y519N95o$ zNvSv?CV#@2kEPPK47Yh3_|lbrF2TlaS2?ILx!e zF^>hZt<6^?apF+yL5poL6OahA;EuFyVBdi#M zm1i&Mm6ALJ9G}5QK&I#9qqsvOjEG_4k8}K#PC3NOSEJ?!M+BsQ;S$N3S#$*-ahAyO z6>Ci6 zGm+y)Swe$8f-hn4bBp7Jj_eEtF`KT^$z{kFi$yx3@GkSVV&K)8#K^<(s<-&4=<*{i zxUd1Q0;tuDjuY$2j?OpM9~x0<%J-8)XiVz&B!}NWpt8KY%F0#cq7^JF(NvVR8l)U6 zvo<`or?K{g31o``rJ@i8P{j}HhYeANFl>O**+~oeV$I9eHzrJZ&MU82s_4WIC?WKm z+v4B=!``Ip1*pD67O+wsMjbXSb}V*jh=D_9bRnc z=TK=ZiSVr=K%&F9A0#SJ=WF)tLsl-LIJ{s@e0sCmU9sQXD=b%7gvivSyH-^@UX?$} z6*L_3d{hA>ryrRM_{aioJzH&_1t-7WAgauA=g zuF|(rv17P5bN}2nhP*Hz?CdjF$pWsW8TfOpe;cfSD1evjyLaU&B;ea&vAW+f-;d$f z-PuoA>K<5F!WJ-EWH|+7|ME}Lh_d*?JVdN&o5LHj*ZQS$f_&@{l@ro+C{nsEqENQK zpaA~DJip)mSg(Hj$fA(%D1$6KIfKvp$Mx!Q%N#kBrNg;HzTcxSb#c)-L-Q(^`4oK2eWon_fdLr{uiM!im_Nu6w%ah>ymCc-PqA3DvG#$JO%%D8!nbPbM>@O zO~=S;;hX$56}c7%Z*h-y!!l&K;nuo&#)qRDan};7)fF08jQOFAv|fu7QEO0y5RXYUb;J$tgjUnV>#kaY<}UVERlwztk|ZA zPX9X;iW?LP=Pvr?^2`x*pBY+qyB5np(wiYpKkR0JLUD(XhUduGBfKf6T@EgynC~l!i0r9iAb-r>8yEPx!MA zkY~;bJ#5KyWI#=i@MV!LO4-qqEIl%E$qOvn`Q&bmoHryZdTB+o4g=DoRMGGIU^yi6j+%oYB&RnL5^ z*+=;ilMf@0BV-GkOk+R!WR zc7yoP92@~DpYv`^5Y>y2ma~GGBrTZeyd!A}&9eoSk+{l-1&@CK4R3_J&Tfzz`RId8Xx38Zf)o)4xYC|r8 zl->vrr?NZ{cELc4yRfNvgQZ{#YF*8XR0nWB)2Q0nW2Qj4;Y)io%y#6`c8*#)e!q}a z>SVx%Q(ho$8M5&Y-?%G3fAPY*!zVVzT4R94ns{J{5JJ!e2Q;-dxWR85GL=7RST23m ztzrsFu>O=mjjM>3BO5?E9$yZk13NklK-Qhza0s); z!8I;sPe!!-(usOXJ_^q*MMs-MH2FGh0i^wW+uJwnFnx!<>BOj=ARO zm&>cK`5MXt2H>Omg;26Ye97<-!jP8*?=ARos zJbq_y0CJqnHRthZL@}U+vGe)xD_`+=xcD>aVtpR7o6OT@;|lL*7?fz0spe|OMWldE(y$2cE5BOlvQbHUA1;BO)dELyC7cFs+RUI&jR|8P} zNKZ;r_sGk>G?`z7hOe<2fDagd_cTv!L#S|sg0C>TI=K=6E@grjXgq{AOjZk0Tf}k2=W$yl~=Ymckc8y z|7>Hxx6g>p5I)p%@-Divec(S$VVKdbp!mqF+}`G-dNRGvYS|aq=E##!|NNIuFKLR` zfXYRhR+!}(+4k2f18^Vl|HvO@<>%i=SB4$fQ6vLN7LH-7u;~UN6|jhz&J{{vuP7Lo zphd6l;0EZspFu60zfoy`(3yHG-SGDTNmi{0BQv7c=2OYi)ooSeF@#1&8~b4_7=Ixd zsPZ5h1K|71N0qjO@O-rqO(Je)z;^)SiFiY&b`PNT2HmZ5|yR zc(&oi0C*tn4-TcVZZl^_+88UAin9G6KQaP}-?s1pYrqj9je0xfcW)W>1K+iH`P7|L z@t(OxR%9wFLMyn+Qg8Utk$UaoZsF=Iyg1eFS}mtcpHDcJ1tY^VETNvV zotFuf0KO$W3Q^`LM)8{tRDd2F?S?jS?jm>UIU5#K09Rgmpy7!0HS6$xK7Ys5@n6vu z2RU za~>$|`-8{-sN1v~JiD~SwSZke>WfwBNfY4cy`8#x^dHxogtfk=@!2Q5v*)NzrKKKD8`B-iFn-GcR4%7s{a* zMHId3DoNX#@-a50JUY>UHN39n5I)Io6wF0beu8V-5^SK-Ha@OT4PH*4kuSIdUjphS z!iRp^rJxTD^|4VApRz7PuCRzuJ`6)6BoaJQOK^@G3zp%e$@uLSREo`GUq;k!$yu)) z*iaVAi!@1tWkhbmB&$V_ZjCcMv2oL87dmuH7##;jI^-AV>uRl@Bue-7)ewJW@$X(g zBL4`!5yB(E?{F3mi-dyaLUHYENHg$Tc7#@bLa5;afVT*(=u#@bC}I~N3|EwkYtgVd zl!$UHej0wh$(fI3V0>Zf8g4}_L9!QIp9@{)Eqv`bB~wAgFK5%u^_|@1vX2<4D$F3P zc+j`-(ys*gCy{mx63F4@cQ!I`EhCX5X^QK7WT`dZ01GA&D`N89##}T{@S@Ks+B)XMO z0&S4n8Ksd5UK=v=InzaxR`W5VON=l$YL`XWROXI$5a*jA9e0j4anU@Tnhm*c@afAOFh6jZa^gUVJ+I_rGyWi_@AI>L-`(X4TL{CPsrCy?V0O zgtLu)I#qRuU)7|6$1jL7II`+jWHfNG(l}y-^?SUcd?p?DFP_ck8GYtAdO^P#@sv{d zLEklidC^eqK08{5At8N4vixBCW%}}-a^!}MmT7f~Ws|h?2|Lb8{N+7|R#Sd&nf|@H z&;a}gvO)ixuaaQodgh+GmUj&g%bU~Pep8qcOE#$7Ts}Yxso9)y!J5p^9GUVFKDWR< zF^YNs&hbemuc5(+-~-dr9HHVdD$f`rmZRtmeZ;^7_na?qcmVV13!{IY?>M9C9;M`3 zV(%)~BHgycHHCbZJLz+SPBzhy_d-x`wih9DEtmOYc}Shs(6Oxhf{KrF$Jd54s$2um zkyOsH!~l#j1uhBWpYnif+oJ*K^sh#!`9=_z+-wivWjV8+fa8q81#3<(UGEA+ih}ih z@-;7twimvD1|M>v-`R!IQ}&iK`Nsex?=>jBA4ywJAix;Wr1M46cEnLk;x($*Ig5^B zTGtf1Z82W_#^;td&j>+L5T^bZqC)x@15m7{S-JPJ2PjkxRwoNFp3*iD`cer^y`xJF zu^;-l0SZR)5+7kcFG(8Lyf&djyAYz&3*t%JLb{*in$PNK&&9%GkJuBCSL8Pca?4E#;-lFyW-z=U-vq~Hi5 zod5io9Gw0%JYfcLO=_F8&^Ba43QT_{JbDPhzy)$W3P^xDKZ==vlK9~l2^TIEBNYO0 zhuKfl;5ZG;8z*tep8!jb3bWljlfdM&QOXw~@_^sUWdrVQJ_}C6X|#Uav?0N(FewAj zcT^!)0Oeuj)G*N{4kIuJOw$nBAlMkv%F}+*31R?x)JYdy(@;V$64>FUk)@$^m!MO) z2o?5FsXlndW4LeVk7-F589=Ev!17N=BmNo*kU-=xe*SD=5@ssoVWQE82?nNlBro-A z8IE$oH;tc0VB~;a@YIR;rSZM4`z#Fq>8u71zIkCXB0P{EJ(?DexVb=&*$jjFZkSg6 z!dZu3nfhJ}s-4$!RM77wdt1J{8&5t>TjeE=PB8{HFt=EYC#?Un!#(Gt5@$J6QG);( z$)ju<;heb>HXVeH$(7u?2sBNm-42jh_>BHsU>v>UtT{)Re))x|+P}WdF)e@l$0w$- zf8w|i3_r_=h1X6x`cPJAsUF;n04zR~QPmP74V}zDS`645FYcC={N{KmkDo2-JLWrs_HUixOK{N3=h&Ym>YcHx#EjT>p4V-UQ1`~L8bY4b0i zUk?BJ*N=xw4kG{j`76iK(6#Uhvu8G`r0sK>Tf>49uCc&YCR{d}5PZc{{~LBRzkkO% zM!pq%asDMdIF|?ge`6GqS0UgPo8B4$ExjBS|#D8Yu5pV=&b@lyT* zA`s3!23JTg0x zg={!{t+nA%8SGe7F{MeR%8oW=qQ6CnCBu_g+Czf6R z=W{wJXr&{=_WlFit`)DXE+bMTy4#b3c zXfeZKoXIAfag6-X0blZIwx52w$ojg^pKtj}#23C7%XxPiTo@{T2iX2bG4eYyHkn&Q zg(47Wz?|O1Xv1nd!x+EgsE!MUfbQK$L+|G(ZFcf9f~o;vnMgx!9pZM4sccr59i@ji zE6cW0fBjdojgh*4{Nv-{?|=Vv`1K>{0se`# zc)pBSuG76UCF*YJQ`f9H`prn_8KZ<(H-9?({HMPje)^f+(ii^>bI+mE(0m{-{KViT z>nlB6na}1%O4n?5lvm!=UY`AWiiZC=Uw85Nrqa+jR|hJTyr-aa-K)>mQFD<Z>> zFUmz;;7G4C3un9lfC1#cZJ!Z9EtKSwVF5^Rv+|U(q z-6d?rJ{BzFEW|Cy5nnlyF5!DgH)N(j%30pRuL>)qVe7Zv!AtO@hsGrxE;TI1g$+$p zLc>RoM8lmOb1~>N5P(-qWU5#{y2lCtTwucxs(tXc_(>e$x`alT#x_Mww{ia44GV*A z;^wz9AV_o)wH4oAAss1`PTrOYr2j0w7|9zN^)&48(Acx3Aueyw>W1|_nTAb8pd*Vb z3=O+eOE#c%t~NkF#zHJ;#7-=;NoW5g>+6FpJ4!CIM%cgH=nl6K(?=7F^g@NAcRDJ5E#E^dS2_7H6 zykv8WM#-Bu=m1^3VTbDt9q~1zbRKi!q0JuMa>8y=`w2f=rTASRY)LUC>K%9P2_Xrl z2RbyWw-`kpN_>q0c+Sx$8i3NbvwZOw8^8N&^xloUd_!Z&AgGtNf}us>(0v1VA%C zYX{+JQ;t2B*mE|P__dIJ35WFg;vh8EQPoeaAgw(IkdEE*VMj}3@^*~;mJ>C}1#^?x zmoFK)zKt&-$53Ju#U&$vY?9RB>5KSco#w@fEvD1Skp%5%<$=_MOB-f|8##~zYT7@`^!=&7>(2e71cfFQt<+1Hb(kgD) z@DtWUV?;=sh)fnM0oxusda9_v5@6GtHq&;IztgmreetXywqyFF9cOroSAM3;{Euse z*j>IFY>y?hJu1cS;XmNrB=|j8g_!WyG7#8^C@{h_T*wP#_oh97Pc!Q>n=a@CZNkxD-e5suVLDzK_W9eE7G2umkn#H%2Y} z{MaS3{+XSwhr@sQUpX#?^!&KS{*7vJXIINQ{#gGM-w$D9EA?w0X0(;f8`syI zmx$rb-lV3>Ug;X+@``nA&pl7?AHUrl{`JB37{jzSUN0nyzwO?=6|y~Hw?GBvCQ4m-yFUpJmt@N z!w9(L$2QLL=&}{_#x5;)-35)6xk?QV{^0XHvKmQmz0&R^4+ zD@o`>q}R*cGznq;2*j^-Ue~|4VsM*RLqCuHa7!xnVcJz5xy0UGq9=5Ie1J`_@(B&Y z!HhFMaR`ap7g5uwUsd52qkUQ0^@%q;aG^+DHVv{^*E|F!w2$zm+4P0ZQQ% zkxf?mqJ)JXB4HaDiMPYB1Ibz@S|z#zDkAWX;5f2jMa~#7mcU0`-XLs}7vN7QP@RvU^%Ep>6 zM_wEedXG_Z!J)}#j3|Bk>X#NYyrJeu4|G+rr`~wku{+YEd@mS)@;2R=-Q*!_su< zy*vER|C!M(4r{*is~+DlK1i~L>*sHLW)1jfzZ7D}t$x_-k~1ZtnYE#$(J50$sbB8d zMU1|m@A*nemIkmk?S`*oV3?h;cCH5C4PX1fnB{g#F!_T%Ga{5iU>Vl1B}qiC(IX8U zw6+<5&m1Z9!g+x<7aFvWj@Gg3_w)_l0cOL|?bok||Mm}bhEed#KhF+-{+W@^_dhX% zcfv>>Bb}(s&#Qgo^qX(Mf5nKnj}gG42S$qSpZMh36UG>$q^D1uop^T+EMMdJsuBJL zBb+o~xtVWI7;m?COm%Y<%@aq`++oPwurvG(n?`Opj^={t-b;+4XExbfu-o?j&KCm? z(dNh;vV`veQ$FBx&o_%*ljx}98Ak34`TmGejfAAbL)TkhZ8v>MaQ&ehPArS&eaiXN zKa@yzp+w8K^#<2zIuKDSnPj`8ep5fiwav6{X#9E94KE?&DNHGMltxf2zrM(zj>x{B?nRK#QhBSNT}Fvm+}8ziRWa2G7{cZerr{ zl1!Pj?#Oq&c>6+_w#fE~IIomn^{B+-wtq@AVdKUb7yu$CvR1YujA^%B+}g%Ol~*c& zFJfUJ4I`zAWAMndP(nK(0<2qFX%%pTBt$WNRM!dVkI-H#OrE|d8Lk*Db?QT(IyUl% zwU^2EE;0jB-QosTp2Z>R)paxgCs;6nz6X4T^~1vw=!Xab_HldvYuLuDz!U_t0NW?z@f=WPu zMaZxq=vmidzMgR~uZS-cbuxTpHq7T|Y;F9K11o_#B#AhmKBz6v?PuPFLV zh)lSb5tzWHuHcPqa6sV*zhe=P@QL3Fenkal7bnC#F2mNx0iE;_l6(xg#F}hj7Mudh zCkFS5u>rO*=CZTT!K-Ps3`5fCcs-v>{e!c-8?=<3(p{QHB30t~No-YLq7!HJ$Mn3$&&mT#p`p~dP zjL}hI(P`G76j;G>rA`IE&m~CYj%Q;Eg;;O+J5A0IQl|vyKd-VFg$ArGs;riRs%?5RN0pC zCv!ShZjT9ZU6t#)?lKa@E>pjux<*py)a)G7Q=`m|5`n(-7@b!)QWf-9KP^Uw`4dyT zKfi~TYxR)th69`5Fp~M^?cL!W-|W4|0J&#`=^RV-oKdqk7+G&~E+Of)BWCo+X=6XX z_TUttyfBE_MbZ}q4B?X(zK%iK{Q88SVRIDH&9lO`Z9tbPPs&)$T24t6`9xkJ@a9_X zS%;-8*T`XK^bHtac+QdIj6<{K{m2W-Cr0)je$|k5SN0`0FHXQeVbDE3yu%Ro6LK1R zz)=Su7?pkWY`-V(i^RQQnouL-8pF|@@SflI!kK;fY#o^zBbM@{q514bu;KfNk;C=} z%5CfAgP&PrWb8${91Zh;Tz9y47*u!Y?-sq^tAEcjWNoeA8NNhME*UWG9;f5fxCb}a zXoj%uBz*fKVm$OG@4Kl+-J(OTv~5$4#f*lddug;i^o87=o;MhBB-f%tT!2Zp#PQs`RpC~@`h;2 zFg2I@sXkpRnFFkOF}dL7!*Xf*47+x^9eMIONqA?e3*`cm_}eliU7;gi$jjOR2W~%u z=c|m#cE@v+fKJn6Sw8g>96_L)MoWS~_}@!D%bYR9I3t&93t+!zaKrsII?6T4ddJnX z#RrTh@QOPbM0m(YavuW1k1`4`-1wy@aWC8sl!Rk=PH>`?#I#fZVU(ouNVZs}RUi6E zyfEI4uWv$l*vF>LA9}(^R6V=v2Lmt!h4fkp>C^FdqLaH3?iiKF6~7DqL+?uW24H{} zZaVz+OwiC>N(-t=CPGmInLt4cd=zD0XoNMR!f2!GQwHO+9+@I@V)ej2xqmsfU1}L4EyXT`JwBMTh4qY0`ZOfW_l%_%7jhhD`B^V-Uifs`vMd61gMP(HIPYbKDqqbR-&n{2+sQ=odcdhRAbAZccLq4+bF9 zSv~f`PSqnjG_WwHyeTJ+M!s;Qi1}syE3tB$X622+Yo0jDgIrD{dp6y_=KCs-S~Bl_ndd=8G<*AzA=`?>?FS&k#dQFEL@#{%ZV2?a3!KsO%%LvRZ~2h0Vwo!<~_ze0H5&c3NkR zu;=_SZHj)+8LjM2b-s~}werI7-V;;s&rDl>^V_*(&J&wLKK%NPB8INv|BO5_%pa~9 z`9mL0!RJgtjcIpuBQ{0>HYP{O@M*hu&y4CZx`mS9?y(|VoZ7G6MDdMXbPi;Z012fEF*=F1{I~!vX9Z@`GBq` z)c{h*UZJO)6fzA^+bMPBi-H?6yjzcK#MHB8Vcj4CD>3uJFA2H+@g3_}-}?0t0&_4n zd9kXdUn6p~_1-cYgMxaCUoz=Wl4&o>M zVwImhuA!B%&@fOLz0I@bCe+A;H9QXq@|hAx+}x>WMumC#PdaSx{rZ%$tNmUh6^@~K zA__Iu575e~VyI`KN&%H`S8$D4o-L*x!&lkdM^Q@tf4p`H`1hn}l7aZ0)Gfu>yl;9n z&;)-+)aO0R6r=%C{T9+*rDgdsV{9Zu3=9BK=D34^6A6G>85~T}xTIkNC6P)oY!h3E z@{#B98mI*v8IG~~jH-+)ocAfEzR3+SzZFc^Kfdg3~BDlE~Dh27-;#lO3&pP8-;%LfZBqor;zH zRT}zKdFe=qjWMBdgn`lXwVDoDLIipcBQyQO)3hUdj5RtXLrr&KtLr7JVG+h?U_3$I zb$u^%kZFuClGDIek`(b8d+MhRd};72Ps6xtR96)7?V@xwFx{~!Oh!mB@H8;oEt}DZ z!Bv9 z=Q3?Bq<79Oh(O85($M_Nx0mTmUzjTN5aTtSmR+1YF4u#3 z7ThgH!~g#Glfwr--S*4R_lN)VFK3y?W^9Fb4j0L@z6vA9Po+uHkxe(a++ZMh-}8Ol zl~#@3PG_ql&wSK4MCL~}O*k@$Y$hq^1fqlFP0B_j;wO^wYu+|5qgeCBXO#D(!G!KK zs4vl}XE9!2v}#~EW#45F@L;&=90TwHTsO>o{>qw0&h9f`FE3f2=TtHJ({Ov{r6`-V zRDGuZtYhlVfG2kJzF_bk7$tq?NSP8WaP1!HblH)tW z_$HRyKl2RRgD}*U!iB+- zvPDZ_glz}LOw(j};TfHq-(cmxKP_>}k5FbnU^Lz?IMV3aytT+Yw5t&PadOZhEH@J8l1{w&-g7-CTF{`dfA;-_d4?BDJ(Zuc00 z*7GaC41cVc-*bh2Md}E&1p~86k73_22*STZ=15TA9$C7Rw58Q8_jg#4gP-Lls&oXe z>c6Kw_|nZ~=E_djY?Yh^4-XHiAi6RMpJMsDMAKbUY2t5%d*~SyU@BN>3?1>pB!N8m zyyKAqx1IyL;B|Yg;7U$oMcuc9lu*-zcSxJ4)oCwADLxW0{dJ1KZ^Bkd^ZAdiu;V8Q zT699Kg>|1OXjGT}f;0KLDpy^D?Z}MR4H7@34<0r+ZFS^fB#EY?0SO4d_=QU2O3-=( zce8}_8TXJ<@j~AQlgIq1H~n0Agpc79hOO|a^fnkY$ZZOwYll-D<(vnpa7o-8!X+`K zABMxj288ETmj*v6O5&5^;AI3SycfO=7e)-7ZPyt|D}vOOpKsoLLsbIeA6OHWU81rC zs>Xma+lX=7QE+YbCqN@V;pR&=lmKz&jz|h!ina~@&`_qx8Y2LWV-SWnxLMz*EGiA3km@K-iHFnV`KLfo(NgyG_G&M$l|;)HYj)Gb|cMx`Pj={sXuR--JNd06xK z#0CLbXAyqX$Ah}U@bTCZC9^$iPFm(nwBjlo#xcf-n@2qF&ijEp|HhX}{F0388!zef z-6X@}Lj-g^9ADsI)YAO$SRO~QEH|MWm#Ipp44EcQzObJ1#oNxFct=3|vy6L|onh}7 z3H{SAmxsUn`Qq>=Hq5+b)amQDOLi8!1Neb8fhK~D7#bFopX?%5ZWkFc+NELlz(ygz z6YVApFGr73Hc6w2cc*F;MP4&@h8%oR1b9*l9&05rAT@Zp(Sve~j3*jY7vuvQM%<;W zzPz4!S&&xSrj~^m(57F2(Z3s?ve}Msg~-eRUPnP6sEZzKjoGPiG5kyIFN zNv-ED)qp(Fj?mt+amT*TscXN6bjs-KB`+&}p~v-#u4DBGB@I&FzH;Q1$fikSSzTB! z)E$0#@)HJ@naEn{T864YAfO@Kb`Q{UjNV^X^H*%24inbqEf-dHT z;&&(nd5{*2Xx@Q>qPGEQKB3y*bwVa1m8W6SI8JWV*sY#BPNKjI1A0tyOvl`Ie$a^lM(6FwNy>k4;b|wQk!ZToQ9@k9g!rZtd>dEGl&-vC zt)3dMY<4i_pLGoxq-Pp2JkD4fc6x?kAYXVjA0@zlj7P*HZDqAu(vQW3@cN#b?rSLT715>S4g&m=gZ*8RN>G;~H3uswl7Vt|@)Q z05t6R1iok7guT%5J1vzxsX8=r^#(YM%@fu~x^ZC{e=z{B-XRADAbiZ*7yt-h z-fAqJvcUqb{NGZ~9G!$FX^yJoo${*CoeKZur*{~EHyD5%^>cH^RR2B4z5MNP{qZvf zFXh_WssTuzX{30($QfUWdGRxIj@pyIkL;*kFW{!n^>E6k5oVoLNz?*0lJuOgllg@& zg!p~w?l`uLSPlWr3na!=zGT8nfYYj!v(`CeK_c~R9>@3t$+YL9Y{cNv=D}E$Ys+oR z!Xw7tgS&cTPZDceh4FXlvIf4xe15^_@HmI>0fWm5mE{N+fljC2f=gi1V!g7Qbu^!{ zRk}!@A{r+!qY%JErb0kj?LMyDszsc`d`| z7=D4H0GswltyN?S(@Z~8c3f^^xwU?xtMHUhDvkmbJayTEst$=3XS)V0N>}vtyZ}Ov zhpCg+KkwEbi;U0W`2$$+OQfp7kEiX4;f)Ipk|fVp)=sRUF^nPRy5#z$jvWk}fRmmq z7lOtKZ+OzT<~4znk36Q&5mB}k(WmdOg$o7KF>pGSwv_kb%AdIWAcIeaHDMe58h}G^ z3ytS@17Cyuzj^wB{0dku#49s$6PADDR(w*{RBk~H^KoL25(Z`;Q>4k_txTqDinVD_ z?u8N~PeEOos5^JU`4N}fKmYTiK!$B`hVSGwJn#dvMeb-BM#@rf1>Yqy=<{r0vqKOd zBO>@al#iTtnCUciYV%8X`7+ zc=-uu-P{^gnhC(jT44q*&&utsA*B2XES+P=FhC^$3p^qTtYh@%8NKGY(MfgW0+576 zZ_?ntAWeQk%Qa2jXBZN$opKG8I|SDVk@IBId10FGd36Ae*tpq2QvBITDp&JGp%l(b z9n#qI3~2P^w5zs}ux=1=ad_VR?VKF#<4z|aJ!G~+mX2ck6F1aKgV0>cQB{~u;YKdf zwxkiz&;g9x%6`F!-z6IYE*X`)G@oJVx+B-JX-N60*cdEesu$11^z&S&9=*fSAZKh8 zIKjX<#eb5KA3Jo7OLz&s$*zo)DLOgBBZrad)q+NuicybO`K=n5z?nL8bBEK`lI)I4 zI($2KHnh0b@hh7uG)BJhojOMg?-=>HV}peU2A=Q@+(%^PkQDY}K=JH7c|th!Js0of z%V&5H$NDs<=^T-;EpUBjHm@im`Cy)DsAPAryRykh;asnGfebH<%pES?W0aV;9IxV5 zRleQ(%sl)#qkl2N%zR!Z_zmsmzjk%%x2*Ol7`e!%s%M-hkN%zW&lwSp5q$)-L zMj|CNb>9(A&k^(!c^>_9&v%F2eVg@v=6^oiANi6udAVvov1sM zm-?e&mt`u}A4<7(OM@#HX{^EtQwC*$7qX;{(S>ir43&ZzB&>Nba7Gv&a>lpJD3fxx z&7+M`6zXBlaHO2OE>YAA>(S6k`)^wbix@vxMNkBXlA^5MUc!ql0qZ$X6Eo39?5=s- z!!%veF!GponJ4{`X-6acEwPHxwk){8Kf*~Zd^Q=?Q{xR!-0>%}8|&z!RXY_DCnJJM zU=8K!T}Y7aM?zyq7_UJS(liLZu8CYKY+mk2Et0^8bbge55Eq?sHPL^(7WE%vei!^z zVE8QYcLer)_WoBOe-yC_hOU`5^mS6fBm%DJ$)z3tm1}}{?bEgcGs?$+M+`WbnMQDh z^yV{;khE@80NmaKNnGL=wnXi`3^y!9`7wNxVQ?a!0247drT01`1G?ecU_e@u++CY7 zjlcE6W?EX7PCF=N4}o%8WJbcRY#JVMz>;41j&5|kf>&=q z!U!P#l|NN8I77|$O3Fqq`VC50+B3sb@dHe3D|ickjWhd`b2~*0z!Mr$7uLJ8jiCg< zn-0m!LtWaaWYo_NZLZLh6}RcCtTc*E#Q`x?*fF(&4cYt`(%W zCDb_l(wwx#AH@g@;nYFPROPBn#`zC6=o!r;g)XA^OCC2EELR#W)3;G;y9Ib}(N zcJ_%P5A2{D{4?rX3(64CS;)_ic}ulXJWgBJqJrv|+S@&$6S*E-YR zo^^O}{^@YZ4%|o9;XU4cpe6ZJ48X`vnluPfk797vI7yzuy8h)F7#+(_%B!xK2*?#LdXDJj zcI1+q*9lO4flwFVO*v0`91^pPsF%EWSf_-vE9*3=`B2YMFvn)5v4!8$|m9{L-Z0_g;{benMW!j&3DP#Qq3ivUg&g# zoyy@3fO;5j+`+<0JuTW0^5N*M=mSr1_#UI{Gg^IcSzg+Jy&{u1OH}2-4LHsnvlpAbV&}gM1i*p3dr|A$9R1HM*u^)mf*O{yM+gYR1WCT6Nvm6 z<(qO{A0}>a7OJ7r*?5bSc7;F^VpD6{)j z22D18IwcE4qOH`$Svp;AIsyb2Z26Cc2%LoTGcO0nL?$Xpu8u~ABowx|+ejzW%`fTu zhMi3VG|Hy6N1wEz@wGJQQH~uMJw2VLUo44HN@QISBe616#z<4-@HRcRV~(WNu623{ zeKO_gyG5pT8F7)vsesYbA}387Mg!+ED33dS1eqrDDjB+9g-fG7NXku^YyJE@))fZe z^(96i2LwA+>N+;_UIXdE(F}H&e$`My_Ke&hp7t6g0u^zt9tOs#qoNoW8TqpjS4W_x zj4eGxo{?9X)`iS5-o@GL4<0QiIIHX!pY%}@?YzmfI}AS0G<;@<@9np)0lfE^8;l%} zF?oK*_~DjBK7m6Xx>MOQ?yk}o78yEzpdj2#~v1FtDvl8TnIZrf17%cqY5}vB0EAIEtk~#LCAH z?taGqg>{j9kJ&Q-eTfjD^%|VCS*?54X;Mh}FwZRWZct!nGH)QlTaGhA7yAn)GD4>8 zWX34-0Ar0okALwX=sOHR4`Y623BVbne`i;Wd@}miFH$(o>yBT_voAL2NIfk-o`k`m zY1B;}Gm-eYRynpj+(YBpa!8yS^D7zFU!8LJ_#|0?eKC)ZaQQbngXKSboJ1 zPh9$@BSKkOUV`E2pc5}KX5?}4SoWwn)DMB8LKR1h#Z8c(G`)xy|Pts z?{&$iqVXF#P~8w0lq?`WFbK*Oy$aLEz}kpIG(6M5+h`(}VZHTNPOUrFJ;}jl zIaVlc)lSP#w;m~N_FW5jS@LVZP^^-84l3qJX?nkCtZCnLxa<^GjOQys#SR$)}ZH zl!t5v;Xvgtx8x}!q*rWP^`Pv>&tDE7_%z$Y*AJ}0`x%kmhOg%jszNs*Ir5jhcj^_| zt3Jv%vStRtbh|^CZ7zHs<(x9}`QsPX{@r1?zhMOQpM-zK5MPd-toqNlvHIU=T^3|O9l^hHXe z>NM*^$=Bqk1{IWS79=rcGwnp$APJbkwjP)-8Y|hN_G| z9v?z7fzh*YNg6T{ZTbva_0crAEeQ@Pa9?X2kS79I~_>&)nzmR)wBBUvoNK; zpe+?ro6=!q=&ty>n*sPe`Vp+6`}{qFBh2skf)=j76FEUg(!T=(ZnTVx;7N26^gEyv z8^@o}ZQ_Ma9_)o5kYqrBOJCTiPXbbe+)f% zCYdNcuBah5L4B-MAQn`6HsYNE41|!F=@4Ov9yV|c-Grc z@h@q7+)b!zvKB`gc2;R1kF+(KeA0mQ#>~LA$~fs^%Pc>e0~-YSLEHw}blV|Erbrbk z(u(FKi!YaG!BuC#&Rwj62-}X-j!iiYAD*;&K0cw~M;05WVL%T3T|iC;1HNMm=0Q-q zNJX0<^kM``F|-X-HU+~G!*tNO)j(`|#kK9X0d&OaT!Wf5cTNYMXaryk#1H_lqkz(o zR`qN;B&|Mh$|t_zZP3nJIpim_bObO}Hl*yFWQy|Y{4UeJPJw&ehoh3`jO4i^(`m(X z&f0Tl=disnBBa5P%?S`rc9a1km`Kx8`OAF-i(U*TO~80%N>~D1EyH3A zJdRNjeNR6S=8|8gaO96qnVo%QWQqfjF-)GFX4U{?dJ+qTd}JiW(I7{KhUPLl?RY7A z;h0|lG9oEIbJGlVbp4{GIwuW!n$sCU0{PG;%isn>JajD``bujZTdKN3NSU=wHuV zmUsK3lzR0*xb2{ZlE+jv4d{sk#Q+32nuCN!QZ#ClomN@(3pOuzk zgS>R3Jivtz{4}a~h%u7U3mb863;|jW8d%nl8Otc=BaO5TvIpY2+tBmEG!B(N0!J6q zk+}BHu6yK^!=_u{W0V_a(+xlKC&2pQmA71IyM{2|MYfZO0Vu47z>J6l7c!#|(`)CQ zOfVh%n}Ny087uhmf)d;u@NAmLPRz9`|BDli7`>ChdWxL~K^rRVCsWq0Y@ zYo>>Rzj->mfAK{Klz9!ZSOEpYA?4kK9r12#|&sY0l;q^qLXX=)m+7W!vP9 zj#9=_)-=j$IG}U{b~F(>q&WsO#&I@>fajHt34HZ-ZXO8-kBp!=qGg$5{oA?U;LWaN zSK;#_BCMPTN4(sILfcWR)#3H!3OQ583TBw;axLHs#?KjF?=X9^>lyxjw(ZMTw#RUA z@f$w>rg7quyEhjc$b63x_=&Y~C_%OyZ5*EZGZLJPB%N3XF^e(U)UWWGxoOie@J`rN za)F_HefkB%5T1TAj&+YuOffq(>e{&X@A>Kn#?c)kaC|D5O(?%H6^?$NgnPqh>6jJ= zH{CpC$AhrlIFdYoms7W>me)28na;)_3=z(Oykm6LPxC#H|9+k1g`L+<|7PQl`JOz4 zZt@pBTW@GI+Gh}LIt){1B-|wDAmohnTfYpjlyb+_E1j07sEE9EG*a2~?P6r~g=WEP z_*$Qzd0Bx&WJrEN=L}s|7G=_3`q6D(Mhw_p<~_V~Bo3mPasEYSk>^&EsgTgj%N2Fn zL(*ORV*W|m65p?;;E%Y{1udg`zFfOg+j0*}rd^&rY9}%>N^1FMU1?qhkt5}I*e@BD z)X}kOR9pk0*EV|slsOS~^yZOpbt+8Y>e~lhuBt!>`q?F|BFX@vOe#>~T z@er6cDV*~l^uYM6*AQ;}bxE1T2#dbcPTFP|xNyfEH~<45DeyPnLePjtk7rRx#4#rP zEqD9N9^`oKBlU;rF}l7z(D!kF@H|>8riE_ceuu}33U4c4DxC!!1zM^4e`K@}cCt2z zj5c$_+sJ5b+?6!cZ=sepcPkX~;U_zW$HEog?1K74mCs&)ffe&ruz1E9_!>*l(%TUQ zM5u;LcmU_eG)0zOV95^Bq+7V8f9MS<9SfovksxSEZ+}JN2}=xgY*eey;wO6HC4LDZ zrJ<)YG8h&;6miGyh?jicXdS}?yys=dNUI~nq+&-efrJyQ%yt+;f$v%{8!<(q+ZCd~ zahpqRG=PuXx@ihGIPt{p9mK#c-6U@&`Jo@s!j~le#22U?^hyOX*jQTjiFTyNBT8h~ zw?;=r9I;|bij51(ny&$9Y|v?IbfmGep<5$;h-jT_{@EB3$DK}6xabvtFi~p)H$JU6 zMwLcVg>GHcfX=r^A#9r3z9L)b+W6A3q3Cu__6~!Nqn=`Ucb zjzoWT5$v%(SL~p?x#6SrOhewd6B!+R{`|<{#274mapN2V@m~pl#}Olr2wq=%^axX_ zFuY}iiwP}^38#jqePONJ;f2GMO%v+@qkjwvrLc|2dQserMmf@Hhn7Y9F4T8qPQ9zs z7P6!#;m~j-1j6DnQKly^E^ZlR zy~n`*x5GEifRlf9#3mZjs|a-a7!1?VLeFxXFGgShKKltf%F&Alar^a>r!O3d4b3yA z<W<2UDXT3`0i?vHM~mp5DGYJhEH+%(EKRFZabYhN|l~ zNs}!&gH^z43~HoO9%2BR-x`ySwDN6cmIXZWnK%#q?wNo1$xjor4zjjYXd8lH5+&Wy z=cae#2_{=x5iG+noqDVr;}IDw4+xVy%ZPKxIZBBfiErOy@o+t_)9C8VI+E!{%c697 zaa~I+)UkP|SgCV98{mbEt&<99O1vzEmKlBt>q`}J`Zrn{fEs_j(*nYmVwu}K@f{4@J3_9F;?A10{lm6hWaNX zV=Wee3Q_7g3bHNb4TPIKGTgKqBwDe3>WvdlaS7U8!g?)IQ)F?5|E4mb15!F!b9L7M7HHM zSHf0z9#%n3LvI=cSh5MTM>d-K)ir5)6~@DG--7prE>z|53Kxlncwv1eVBNqret?#2 zKQe-+v}L^_O>OC=gM*f=7eApkUVAkC`%AzfDZNcL{ke{LG66V)fK%TTZ&8j>$A|bz z&uAOXG=T8Pnl3s;EkG-t`5rldTf|IP8z*SgYLd#NPq5L0bh(AkC0+zt0SzvFXj#kc zR3cjCTM)Y2h=E{{mBv7ND%pP+(H-z;FEh8TD|cwp0n&@nhG;n00f;($nkbTC10ylR zb#Y)}bU_L5IX@UT8W21SAg#Pb4{cd@luA0rRY%dchB#8O9O^NFUpFFU3X*@PaNGTE9MVJ2|1FJmtv;)?nx&n(qt{*m4+hI z(0}^nr^6>cUH9<`wE266F@Jt~hp~RkXdma?xts1fQZX;4+DLJcf}q~2<1Sy{|#oFlDQ&Lj^pz`t;hNjuV zle>kh{)PoX)J-?0tm*1+Am&HF?^E3<8;Za$x51IG1$qVG4!>hTA6X=z9A#6m9a_UH zRk%fF3)u=2ofsPe3T}&^6^(yDgbGh!QosyYvV;!-;cY~(u;@=^BiN272FD67(qPDJ zyy4h~@H4OcpE4oT=7pukRSt3;m^8i`CL7R@R!l1*f69?cDlg>O)^+&kpA|T9ix&v# zOmQ0%H~EK>)KlR34gE=D>DXCA4|$~R8*8*2)*>422!L`SAB`PNFyXzEHyVH(6=9m% zshe0ys#85SkWgP12DA*07`VA2WAUYPGV8S__EjTFA3%dHtUQ1SZREDGhc;#s;yF@@ zi>^V&fM`c#YLrcVc%B)d7%mtQ396wO0Qu)q-@-O6rcWc+wD^gtb9(q|J|Xt@?Kz`F zr-zSxbt5Ac3^X}ojvWI$G|Nxu)^q<(VkkbamP}Fn)~i#4(muIobP8AvuQLn^ zzrdlaUalKFVI3Jj713c3d$%YuAY0nBYCH8ryd983KkHIyc^PSdcAYkxq`ayg3}Dv$ zMGi;n+?mWsr}c2_h~b~LjC3A;n>Op+Fo^h|8dTC9LM$3@5+v;Hi-NNINM@#PD(?)QfrGVrXE*4YV@%$0Gz>?llpZ>qx}dRq zP9D2K=RG5c?=QdMcY_CK9CCQ`BYJ;C?k``+5AyCq&K+b)0Y?4R)eZUj=5X_l&&z@D zI?rE!<&$tvpD_I3eTNK;T%G~vNaPvk6Lwv(={CPw9xps#nUFK`jguD96C;3({@va& zz5I;PN*Yd({R{)pgYKexjWp9>d9bdVe?)W&H4sUwKW2RmA>fkk6-7ka325*F(nG1O z--hD?W-+jS`q$%nI`Wnj5Z6)OR z{`fDQ+{P(`Bc`l`V1(VW8H0`}r{nYT5m=c@ub1nA-Rzbx>QLYEj7)8JfN_>0`mipW z?m>*)#+4pKiKu?^D{zG@KcD5h4>!ksdjZaN!ZdW_o}`9$Di`t)bo?11lzoDiE7<-L zZ=lJ;ArV5w2;Bvs96|P%TX`1&^l5#QLPmk})`h%^Z{DmcXvI%bLviQ!_vVVIH14K~!Y${aN9kGO&aEkE@WKTk#99)#s#dv3wmh)dgtUAzR2P)77=>9n95LP+@(38a@O ze(+eC#Wp{C)eWr`G%<^(ajmvS3=qyzfuU)9!V5k&gv4t;tIfZS5;snMqNUc_;P`CiO<=*Az%=+no!G%ME;p^LcybnKuqjAp#>&?2#>H%5(N2_~%3b%iECsr_vypbM`iC0zOgB2fOBT>Bkwr+o-Y zqn7W)VkGrjp^TW&xx4<$Q3TgpdPybl;&96*m!9PRga`;%&tZZmXmBS zU@aLN0W@Hv9Xl>=RqPbj32Q8mBYUt`WOZJV`Sq$^Q?|)t-2gQ5=qFrAMgqT7isY4bRT73rIuydzhJn271d1Q!QwFcNaD`SL^J}mjkuqQ=0E(S- zIN@8yuIRtuaOiW6NV&ZFj1Kvd25TlC?tW$cDeJz_)%i90R6*vMWx`ZJW3rJmTEltp)1=YVYw)#gk^*H}6Q zoRQz?L%G$%@kPTlBwfT;hwvR;>KG<`j7IXp{5f7e0JMHnmXtf1DP8qt8=&sR4{iA4 zk1Qk4@`qkvq$^B*16vPH5R3aJfx2eo*?Axw_dBLUHvFb$94z~fQz zlB#rz(t4g8E3c*bBT%q164ab64@mtE=oVN```?n6Sn*6_nG}k69t}x_?&A*OR zCRSHk;vL^?2;JljaPXGU;YoZ7=|)P*-d;;8iS8Z=UYg%v7K&(7;aA!W`u=LlOLwaz z(lBUGD~NKF>2Qq~zYV>>-^2SX?7+paN`oyvoJGk`8=q7tj3ql>JE1n*d!i8HI))65 z$OA=aM-~j1q*?mGD4wE67>BZ))P#>lq9bO@;0Xa` z)O?<}0)jjIlh)Es2j?^RlGFI=TXs7DH-lWVX6%JcDIVW(&#A&sd_Q(egK1?lt^tZl zgJ*iY?L48KkrIpzC66ehjUj@wwBz(02PgYYTzZ=;r>nurE=AS>Ub1ub{*jwQoZ&!pq?T($gINwzvl zsBP)ePZ{V)n)y=A6F_j&^<;sHE>T(x1^JMVbeJhuu8m`)%mx4Xgp|{P@{;uEKsV)U z@*tzqWT2z2v45FE&QvnS(mA&sZt#J3y_g#fqG#xu=54ctqWMR>qhoHIuw(WUWgegO z4ZZkn<15zJoiieI!id^WKiwTJ*hKN^_QT;b>UsRubMsuM=#FJOddsI%rylP7L_YXc zkvDJOapoU-zWaE1xJ5d?^NSsKxMRBa`SefR@5uv9t1_(BS0@r4Zu55TxAz~gmZ zSl`IdUvw3V+I*V)vs`8;vZqw#);FRx73bX7ZhqPNpc=5=~nPnlOT7InG>QXu2!(AC#dI%st z0Zv@YK*E$MviW0LG?-cQ$Hou8l#(+=X(#2A>D%xbP>f69ewvJMAnt3 zoV=iMNLh5#n(Z8T8Nr9GY0e+A#Rv*r(#Bte!-?NV;*v%q^skFH!FDWbXn|Iv**ryj zaI8lu^9W{o_*>YCmyQ9sm&d@lqG-a6^3sK0?+8Ya@dc>gN1u7Z9bcO-9}wk8q7n(W z`feZ+UuHg)wr<2RDAx+_lQg|nXx#88&1P|ADvZCoSMp<^zC~b#`n-rY?8lG=`yX;Q zL3W(NplUIZEyO;zKrBTDY?!2Qyke-bq1k_8iZ4j;qG7Q5Kp38#2oZ~*iN-au0R1&) zo&zN1IkqhEos`oOJ{rBJWwGjI#7}zmsaQlCuU&888(Yr-Cbc4fApO=A3+*4 zDTLq}O|1=Ptk8wZ@6Zr@yB65!B;iYt4QK_(Qv~if{3ME>{tw22CwO>PeE8Jsz37BxMe;PvL zz@^Pjrv`wdn>LWjzVxjKxkOg(#F;kG`LpZr$e*C`tUPv%`A)6hI%NkgTQ)hfjRv32 zGHa-i)l_P*Dp;oLLf=lQ9g{|Brrg56!keYI@bHp^%z#^nx2Bl##5gFEn0K=4tYv z&-tPcdNdC$9xwd#`@)Fou`P_UX|$T3cEsZL%MS3x(6b|!dCDI8((e%_P9Z;Y(3?}> z?&#IXeqdL%v(?vEe4-7b`kZqk-Bo?c?%n%`-+Hh%2H-vA@$~u^?lB6`lB1;0PfWF9 z0D2scXEWY#=<_3^OP8mt_!;@g7z~|{@}sr1E6;iu02$=cH7*SK^?B|@eTNrV^)!DIofPWFqs+Wx;qqhNq*Wa`kJLkn z$HjVFaQNRMNmt92{B}`1WLC{UujTe>48R}5C;I5f>-F_x$m{q&eu~^1Iv$1JE+r-r zukHoX#$qL6%bUF>7IEB-#m=X<;nK389HEq=#Y`aXO)h21f8;`=kv4DR`T|#(E7Or? z00UE!+jBhfp+IgjH1l4=@U-Ypgt{4Na4T`5B6EV)PlCl4qc|4b@8w(c44;Gse&HyB zSc}d?hHfb@oor}$A||eSjsS56-te&6J%3MskBh(8lKqHRktbd7D!(>SOLq$J1Ev9x ziFg~iLJ6H{Yb+gmvd9KSV`dqDbOLrzCmw&|v9lO2?;X7nXadJfZ|sh`JbK&=Z~DH0U$9o}1jEaX6(=0JizP*eUSrP=&JrYPg>lVJ z=*uH)ns@t7VIoAxe>$4+hR}4Zw-^g7Ez9MIkw<&bl>t5@62yQ0{BZcUf4GK>sbH4% zd20;buq*g~_}8BgpFTNNjZp)v8wH*;B3Ne@eO>c)2n-l?Q~6agd_r2%QzDAZ!j;qdnljJ7fY_k7Q8--ow{4_~hi-(G$? zykM}Na<<@!yLvS&R-r{7_Xzy!N6Hc-c^asXtlj(e?Pqo>gU8_Afg@ZplBaHRybMM= zpRGH4;#i-H*I?9ZKRq(-d(W{o=_Fev@xoAroaM(!!0~{OV|&cnE}0zS!CMn`g-@fsgAwy=f^YlS2uY^2{SLp-CQ(sOjS7`u}X4@pEoz>+C zY?62em-N!nz52G&BAoz!LN-5! zn28OnA$O#2@D@M*I2+d?g0mG0&{Jp^`~pEXDL20=TWM{9QE;Unqzz#239}M{jF8bp zP^8=RYz44EL%Vb~?yo!&2$6AidMR3Xnu?Zp;_-w8KSxqcXJHoN(M|f-V{{_&!a2&Y z@b~cY+i{Awn2X?wRwI)ZB->=$fxYrB`2_?mn7Wj)UeH63Jg)dXfkDtI#^B*B3TfDU zN<%y&e)t{r^OH>)f3%zUZMYy5KJ&J0o4BK_PLjW&F9-9YjlW_UB8&~A9km5g1JF^k zO!cPG^{5JO4+o}WQnzV*VTQl@L!j|RqsSH`9^yHxEhAcX^nm%JoKB;vD;r+$D?EY+diur*^tk>gyX0-JiM&S8hE*OQw zSftaxCXf6|$fvLWcKGt?pNFSYjVgxt*jVw*=-T0g5m!d%81Fm$ld~6Z$)iiZ5zX$~ zlczTa4fn6U;9!lPT)x8?Q^$zLPmC+3qi->M{`;?whkt&!MM_2|8Mkfx=$Mv$GQn`R9)$<2Q_JrhQ*HJ_Z{1jQZWf_mRAQzF@-&a%Sxx)62dL<;4T} zG*~ryW7Ip6Y~C~dovCpRK=gYw{(K$-Eow!F89lXbkr3-Iw5s%_SDwsMEmB4dYXDLf z%v$mh#Zmsi<==v^@p4#@mjv_8I%?iG-z;y0%TG?L4kt~(r4XgE5nC8x^`&jHKJlCv zICcfN@#C69)BQ@y1NyhlXaGL&lBZ!xiG>Wpk`HTS-!#Xd^$bnQL=9-lWQ0z4K>{s{yD~>cJZ|f$K_=6mj#?wuAu7 zf8~IvG&kDPk^*4_>iQF1>d#e#^%8AR>o~dNPi!?!~KtXzms60 zjRHsZ2|Yd~QOS{opu2JCbnv0DXdAtlOk5rL zOTTydFMvJA5ZL7WeOlrT1!?v_#HMWE2h;HU;5LDkyXb)r9YtD1V81%|#7$}hiImVO ztu18e)YXk^kt9)*(G^@?;f&G~A*RM+4%>U#9BlqHDA{T|y&6N1P6J8m=8nB8PvHU?o(d z{3Jy788z57c1EWYr=j$XJ3H@`HS*Hv(jlF?Xx&i@8eT6&wYyIKBFC15u%DD`u<)k= zcxuO{A(43ag$j=)go~7O%eTe>9PEG6nA)gfs@NgStuC%O|H}^2GxuzKvj&dNx1EC{ z7!c6-jIn`%!cvTGOeK0)6fQk)3WV}1hn=p2JWqtVBed)G_=MU0j6!mB zilcZr;w8I-rvr|`!Ha-ph*7Z8wTvUFnWB82g(5$U4vmY-Z@Sx&3KJVP*yKHMnQ{~- z<%#KF^yi`C-!R%PH3UyFx|o*LC^9KA`MfXAq;13gA>1o93|E^!hDP$veuv8 z>KY@7Iw7}QsW;Y@b(5FY7YIbQ4blK%Op`o%r8Fd}_+okc0^-Y^#-G#c-sCzmf}bf} z%9MqMGO3>Ar@Tx4y<8Q9WrY{k=g5r-X{zMOkn=j^(?(u4?;Bzoud5%!a zx0tNw4QB=H-0xwD`kkO4NT#F~!Q~o`-$#(e-x9oVj-Z6>uSP^~Au!K?NFxPofse9d zA*;Q>G*YZotd=T}3DM6rPW**i@)pLhKo-1w1HB@A*r%xYOXlXeRC*=*p(VLZF9i;O zory9nj3b>CInvQ|2N$TyU*Vz;5H`J#&c-a>VcK{ij9cj|z2UoG#$#DZq-($(lDygP5{bSz$*=FYZTCK{;%!u&4&p9CNUiXM9N!>Dc zyT%0sKoBHh+|1xNKqIT!aItw9K8-Q0*n@)3ceqBN<)P6V{qkrUI=52OS~SIALuThr z!$Q+XrJ~`bq4rICo){ibavG*i*@li=d?ZP><@Ah+{UWhBjyykuV;a!F;k^cpMr)>E zX#6V=@vjjHcc{v{G=Z-Fqid#O(M;=MDjlUXZ;Jk(xnr{258c8wQu##S* z1B0>h6cgvK)!1eT>IXl!=h(Rk!~=}|KCDwP!YPnCPCG!R0@blPutmG6Aq}2j0Xbtx zSV!sXsL4io@!QQWp2Meq<#l)_eMypQDZ>NsLu#? zox)ALXnezOa`VZ}l&sGyMr!3%15-v^vsRr%&UTp9e|Xy?w(5Nrlv%^a8P+QkTbdHn^N93$gyUyQGpOGXPx ztC21WFL_apmL~{cwOk=%mp<$bCBVRkf0n}~>pL&m6oQ$U@uvakaW8!R8yR9`@|BZk zXg%MuzVL>f%E-%gf5`=?8EKLZ^rfv~rhJm2I*ePR(Djktj>JLVtFl!-@eKyTPcJ)e z3PI;J{*sF(tMw5$a9&cseM;*Y9ayHITog7!F|Wi_C*_MTn_wn>Y{5#IUcjG!gSa?BXG7qZRTiXZyA2#4WmCM79lr* z>c))dnU(t^^DezpBAV zpz9F{`k#C)Es!9gq@deD(63y>AB z8+n0zj3DJp(7Kdeb-)gveA(%zF?1vzxAEx%XYDbq`oQ|Ohi@3rjIh06XnTep+hysz z%7Fp#jF`SJ>1VByG?J1n?o>c}OVI;tnu8)ScdMZMvmXQ{d~*V^>#)I4>j zHG&uuezUpV$Q3iZAREsPR7TSGm>RfPvO^}+febSE(7<=p?~-ZW%h%t~E7tun@~5B0 zgwSF1@!}Jc#ypvtzPRC_XQqBN;(MV0uXTJb@&``yD1OV)@*~?4XF8E^@;$~Oy6WMpE0$Gw zZlQ#af?5p5h~;QhKj9b_Hw@uQ(?<~#Yf|Z1yt1Leq>alv5O%L4f4tNoS<7vYg70=O zS}T1#$D4=-_o8@^jn?^3bQfXMn%(uM%M6Wff+?KBatla&tu1vZBRXA1ks?Z6MlXFo z6t?nXxlTLnU7KqAnL%rv8ZM_C0hgx9)^86<%Gbez(Lj|{9tVd|r8TNFrtOpDbr+#5D6bNW~%Tpe9%2+&np=!0q1g-Q1?-T>` z@Bi+!rPH$z_}FphSk6GsgSUH&V-f>=h9f~2G)SgE4#CNp1=+O4brn0dAB$#n(!16#vBya^njrP3R|L07EnhHi~eN#$=}KT71QOfCqHZ z6ZAH$)GA2yH=4nC@DXdk^c3cxIBvXyVkuo{gxM7WXUU~4uwF}XB{Z^_iOXZ$3eOKS zhRg-L|ADM<<70S1EmA$I420{ctV}E>(%2!}Ida*@U=)Oq|lR@d2;=^r8T?3B2NKoMvo{FAN;qS2X&LmStE1Vn1!C z=+v@bQMg0jY>555m&b%;!7vhV=`|kAW%MnQMWK?UcxIPdg@rCtoPv1DWnxj~*_;j3W7P}cOZi9zqPTrkj zR%%{Ja0>{ZGM7h%mJvx<_0V#*JiH|h9}J{+9=2=4UY=O%#}q5pDk(5@5L@5nWliV} zX+N+|@R>Dv59rRrGX@#P*^5)K9Kd|(LC#HSL$f+XUctSm!KzB=dn0S)l_6Z}4D0+D z;qzu&32NdnDRO}KXQrQD8S%qBMc-J9=yC~f<-$2K zHNF4uBY@ZZ}XoKDo^ntdE!iAd2!GBQp4rVbdx*S%pdQS zF>yVW#psv11_caeF3`p(B5_dDg$Ns!C_tXz|cosUL*@E)++4%5nT7-{pa6 z63O@Ctvtf7gKM2nX+7n3#8H~k8vUGlp;0|~G=X}H&-wv<OD~ks%gKXH0Dt!UuFwz$1XY zLweIP%6v?tA*u05Pj{8jbQx__@}{^*6C5KURWN`dQeI>+er>2IUmGhMa2o9~0B1Bw zEpr5B3_F{;X%O|ly894(N~exK8t@fQ5|A$+{%}RphQv{UJUk~_Bg;3}4|N994&7*B zp?99GH=|1$ff}bw0n#96j7YA=b{g*?GPI=7Mcy**z>U>`0XWmioEbtm>1-5f_%l+} z^Mqp z=~}GTG08gygLTa*F1teY&JnMNMmjmF<)?pPmh;a%`Gy*0*jgy2xHYnrL!yw^5nHk| zaO%+Lf&MGkbcNIWz{5t2%YVVP07q*^$ulz7=!&R>MFbtjkzv7?19b1{Hw>UZm^%KQ+mSy$ z@kabJW$?%d<0A$jUopndlrwAon(}p{hoAI=PSf7Ve+(+D9Iy{PXek8C(@^+mDjc0^ zE#)e|tTN!HEge1e$Rl~Wa_6z@5ve024u^HxV~RBJ?l3^_EDH^(+7m>Ajo3^BWIcLC ziKnWFsYAyJpBD!WK=^hfQW?o~g{I3imZ2_!%@ew^N^kNMEahn3HZSEtH*i>88GVHN zbadJ?ARl?zc*X#`(pY!e7Xx+cKY-yWy|}AyvIUG{!HEC>Lm%(}RY0o0WYif1?DQ4z zYlJs+ZPSFW9YX+nq+6Qmfpx()YL<3b2i6NZawZGJ@$y9etrHNd{c(ATGbv8Fdi#R; zNc*l_YO8rpA4=KFH#zsky30DPFz08&lwCY3|8+SaV7sHv*AA3O%#%OCwtN=ll`>h( z2(aa@{&8FQ=2t!R-WPeCOUDWq1m6+0AqX(6TiQb9S?Lzs8w2o&Ivfkb0zQc9KZiMY z2m3DI+$$63EFW<=isKQZfbFO72izoAX9E8|N&;OLfC(pQ(1Ux$Z>R-K9FW{Wia*?@ z7el2RA3?-`kaJIED&?Xl)cA+a{7%RUU-*rwLRi>V4*Wr^pLuL-D=iQUd=M|H%d_Mq zrgecgxo-daXOSxGN@~1r<>7PP6Snv}aEy!qDb40kuenKnDe`%Yv0jFm@<(xo5*}~+ zxtTHTq+6`#i;NVhK*`kZiUz{z%8nzk0uyK2k+c=h#>YlVqYs16hDGCyh9e3J03*-E z=o)*yk<#JX>GsC9Dt$RkP*z~mz`ZS#7k>Gv(P|nSV|C5)J0q0Xud^Uotk8C>O<18gQi(bSPKK z2K%P9h@3lTejC+ds`Z(2y=I-7>lL3GrGig*jlK;tX}iVeh$iK~rxY)l_H=#X7%Ph& zY%1k`dFY+>NsNp!&3wlu3Om^Qo$@zueEH^aF&vlj4cZwl=ng!-lxKORY>`_Ai2U=XY?PFL z;%VI$W$3wmW1L%eV4C_c@}yH`Br8Lk@L9XbsGBnFWyL(;_BbAnpSc0&4ZDHeQ1imt zz$?xXyuyg_n3jusWK032&y3LdE#7Cp%d9?F?<_pZrs-adEJhL?@w;S`jxT7|OI9OR zX09!KVol=3CF>y>`D+u3FB^>@StkLv(s7wjJ8SH)< zfxs{>lB|O-75rgs4Bzy|L}IW#uKwYRO3AjBX{i;nO->yJTBS25Xq4 zY#B)fjOvuG9&)JuHX)5$xRIX+<4>$c+t8A(8(6UU(Lu_Z7Y%DVOKp#rDGf^XOsadA zaYh)jNgV#{@)ib))ge>BRD9Jw5(A!@R*qwT<{~P&t-2@AT|T7E4FoXKI==_(_!Z1F z2R{=N?{PNq`a=npGCX^XEOFCh}n5JvyV`!M+b6dI}TA_n?E{4B(pI z6?8mQKx5_^l7+`d9BsB#)=guFnHG29J5EN57qe~)WwSR0^M3ctPC7~eunB5h#If-E z3&RgcjPM>zJ0x<&SYCA*JgH2S z$xJH>$&F#rB4#>;8ocP(2x#=VaNX``8G(yeE2zeSjZBRr2Er_=_i2Lz9a5Tqe&%T_ zXd_Hx)m6nNE`w!tq{@pwLZdXgWZd8(Ip1IPo18YlG^n->8VEKx=3{4C__KTPnO`np z?7ht&hJ(|$$wUK_H{Ib5`Zk)=;+Y6pU;tuFUDM&3w$TtfAW~qah}o=)sz%mPgIm_l z$=jd)bjLS$*_eQVVjh0y(_NT<^o!omZi-jIo9_{!#q7kIBMfW!JAd}K6@EZv^#dPYAXjr| z-)+(H`jErT3XYI6mkLiB6B>XT;7Sg>gw5s*2! zp;OWiPrtI3(Bn_Y0=z$y*K3CsJ2a0{2H1@?jmDB6%g#+9@fvS_iSb2i_L-|7X? zY#JdS=E+eYZeOU(&WvDappbX<4B5LN{{b1$d@vGoyEow;B-Z1Ld@h%=b?H5VZ zFVm-G;jx%3$C-vzmx$BP9}F6sJk8tWang%s*YT-)=8sWcrlD^zNN?Hf!d`PqiI)I4 z+8ul53P#_vBSjpD?R^KG8%BRU`o}Xfr;Q=+)I$xf*3nWE1@`KtH8N6$oD zqF4^oYalt5t#SM0?0}>D=!S9LAmeEwdGw`n-MwH;Sh54oYqO`@TBYIFsGhk*Z@t@{ zjCP=y;YUEwCOL&i+=~ttE8^Fa2jczYy-5csS-~c$2^G zT_4Pocor^TlLb$YZLyK{6HnJ`bV~eo{FfZfVZQ3SrDgI(hvV@sKGJY@oCpo2n=DwG z#^<>(2oRCH#xmhfzkFj2ozpy@8Cmp5j~hm&?mj$a47w}SU4u=+Nfi7L5~(t@}sT#L?g~a+u8JmvR|FIil&PBzQIY9Qng=wES2I2aA-IWtL!g zbSWgRMbF09XyxT?hi&=MT=UdWlt1OAeyk2BLtGuN-Q#Q_Y`1VgxNtk^{b?B zF+6YFD1p&%{|!U;p7OyczGCgeM5-fb(huYTgwt|VEUE=CjTmCsIkJqbX386RlJ?mf!{-(w=t^UV7Yj!^-9Y4& zHd+NWM)q9a=;*ITV0B2tRXT*}w=9s&j41g+hNigL!x2W0onZv9Gcw8Gl#OM&>T`S- zT0W<(Fc*?A@8lPlNf+4@4)dv@fsDGB{|4FJUOmEvo10eq0S@cK3kJ7mAj)GeojfTC z{OGmD133J1YF`n!$--%RM**8Mri_B|rNI1~kK{^SdISf?{j1-`v%I*{S<7OI&8%=u zetRsZp(6m(5or2=2Tx#xjs99U24S(mnjRh0eRi47_Q3pEuj!=l#P9YI&N5e$ejFL!q$x!)~>Gi~;4)^9O|8hbDHaqgni~NAw9~({^96HIp7RX>J5A{Vu zMJAu~p>#&*z>hswKhmlG^g4Ac7*I8y8MQG*L+8#^KEcITGHxAdV0y-B)j#<5sc zT0Av+fdn6zN_}0Q+3Gv1$nEC#F#}K-kF|1ZuE&*mRe8HC}u|%l|*1S5Fl&0WS<9+$$X z>^++R`~r!imDj98{F$l3pZNUQD{I&;=|FGqzB290Iy+OEMc>c;abMF}qM8?-2f8zd`Q9VXx9g(AKW>j05*g+}_)k?j> zjq<(n!cZXTJvvDF;jA-nU6*A@UNrt(>*%!d3uh+2Fk+iNQ5KDsBLC;sZmP$;RlITx zj0PZQ1kPk0FIJ8y@!35X$DnsT9n<()sjh28FB2q29y7||v~0iy&JKX?1;#QKo-(ss z9m>sE+Vy!Ew-yJPNbf2~;(3}kuhBu=;;?)z%bru;GI-TB^^ove%J2i_)6RBeX0V4P zKeBUnrlvg*8$LCOGD_7=jXvrEFE;%0H4Lr#J! zUSn%`rxud+XY}38E|=uH_M&!I-qJo(=N?MrHH_w&yr`I#k!_jAB5jc`w8~@J9`g&V zjoxxS z+7pu&zFb#K;S}egB?cXrHV8ymE9FU8yBY^7? zWZ2<%96Rbi@%-ON7~!|+4j+zm?~KP)B1e{1*5iJ%xiTw~Er^^eJV<`R5YQ5s@hZ(E zTe4o2N=En>-21q8z(h{e1{iw%@-v}2c05S%R-7xIN7ocF&aEsYDbvJP4%m|;sM0J#;aFT(P@~pIiUl^jEVv_5hcpS_QCl{P`JFB_ z3s({|N%`8y2mp^^c3?Ipb#64eaYUmqmB5Cc_>4di&RgNQd?R$K!n8KhbozEQbd(u> z8WD_e>}kMlR1OC*1YU59jD`Ws6J?8Gu>4MjCVc%y+kAVQMD|E+Cu~!Y0Z86z%u2H= zw6yB1X;6nKu_OP)SsrL8c{*Lo!*2U)uS-$Roh==>hQdCh2!qe35<%Jfrl-!S5CIfU5} zpQk$LX?|YC?I=gI#m6{_Q{Q)#1s(kjQ)Jg1C-U;lXWTqw*p8BXwCk6SK;u2DmJVV% z7jezB?TiSG0XTB8tSsNT&BN)k9Po$Raz|*Eg$=zO7t^bCFo2aR`Gdza-d^A(0T05{ zMKLH-5_OYHU>*6pcD)$#H&6HXw-^1n zH+DJ6kP$p~yfWhIDBuU;H6}iO`pQVHH`^!ZrQ8s5^NICy;CCnNr3zuE2fNc*%b$E( zrpTTAx)v5+e9u{zW8`@_9Of!|L(gj6LU%hSa!sq7fAKn0l14g(?%F!Ng zMu8$W}K^~J+cXUp-<^=`<_x@z%THjn84 zvs2KFN@}EP=-Mv0BiOH*WB^k38UKuKKf24GGI4bDno&}xkkc3HE*XSBjX-Oe74ip^Ht8s)pldn zVoLy7Ny~(!la@xB2B5~X?U>W%*TlISd)j;Al)uzSXxhmWIK&04b#{zDC_qLk&d#Ve z$rBjq&22iaco2iQ^@}(v2Q7ID%(RxRIHifZWhF zURW!D4c>EF;1v|UH_>Yrg*nKI!GjatF zm@qp=_gR|l6i`+Uypv?0r6TT)gJ;6t{=u$q-{TtOhUp5rAKl|vqQPr!^Qd2H=;Ir`9ro(*i%3#UT zI8mc%3&@(hEOe%&rD{=eMiC<)j{ebcjzJ)HVPY(tB{nZKZWV={k7ecCXm9-kf0COB zfG16P(@?dQJd=&EHUb24pRUSU(%z=mFo90S1~?nR!MJj|(j9}h$mNE7-Z>r1c>f)p zv`5N3dYlHEHUJ_$)|?}0j`+wCcxU8s8cshVp}}Rt=_pUSK*tnk82}n&7+uKA=`Qvx zT>Oo5_FRK=ixKdFv*I)WKYd~pjn?>{k&hR4y3X26^~q5i@Y^|1GPAshMjFFGa(Ao^ z`}B$3d*GP$Qj}lt@C6@N@ZE?nVNDS_GQ`Ny)h!1Nd&~&D)p~FFXb@CTqqWnSNEyH3 z#VK?0Xc5@qpd&BpN%>vrl%3^H8C%q)vtSH&^vRJ+^-%iBRe5VTunvw-lDx80^ufcP zNpf#z&L)PJt6z8x`I%3zv4Q3bQ-QyN3xoL;pv{^ck(Zs@S2lZG|Ax#k8lI5z3!}Er z$m7GOFBd<1-_(ZoU|U$-3gL4oi&N z^2hDStH%?06q0KvUtp$X3JYE)ohJ6^o+_6H4Tn|xDK#(g&vYhb{(^x-I>maWG39Py zH&mdH*Q}>|MlT+y_Z~%Zb?xXS@`0z<7k3*=XI{wmNO+^l^1)wx!?T7<8-7&VbQm3h zp5-wP@HBcUjZ=3x<*JTLXHA(~r>HwHPY$;#wO z;K3bwLH7j>$(SZ&f^v;9xI8;;{K-EF$e&W5sd(X}?Gt{D7Oz-&maO*mE%lSeOY!~n z7ItC{+dRF8*Z-rq_i28FH(aBz3R8~z<9Uv|U z4{ZaNGLk(Ty4A4If!o;}7XX0*Y_Fljgl4_s4~ z3;ART{L&cDK{iJ5?eJ)1z@6Y{g8~K?#)k(9U(#7$!^bUCc+4O&nrFv=!GZDT(Hdo3 z3T}3wfskYi{#RqEvFK=O8wcoEoQgVhE-4_qI#7&14L}To-x;KHONG;#|JR?`t@?>+ zNgCY`A6d)CD32YIBU7E*rlABsjd(IW=nh;BrglO~iz2wYqmyLA15G&V;7w0Q!6<{} zrh#Z9&+thdXNCzQLoZA(UU}}@2aX!?BF&8U(20Yi5i1R|bZyC+PQXsqS~0pvI?Ivz z=3tqi8Vl`?3?=e{|I~zZU3T=#0Ccw|93mbQ6Yudho}+lh2-h_mAUL$xksKHBKftr! zsD0(DB`@q^{lZy!f8~6_NA&6w2Hht|rbNRHo1^Wh&hK9tGXwWm59|H2XWcQ{bp3#= z-N3;qd7Lq#k?{0|5jBl6`5+J1=Bb;`8pAK+4_@qu4R?e@BPe4Ic+0#$-Ng9`KiBs4 zl0z=759y^)2mD0bICbq>HPSt6L@_$1o|On%wr3tMbjx)3EjoC^$f%n=v{f7_d&01B z1X2Ugs@sMY`0=~PzL2=_1xp&7$X>~a+K(~TOm(C;8_aT9K7JIQ;)dQLa^~z2K#;7hZJfnRTPCt(})MM^&w>;IXZSAIrpz zW3F?{s6|4Bt@0!#m~Ddy=hvsSVzj&xN?RF!8kETFRR4t@Q0WH4ugP4h;W0AG1@Tl* z=Y^Y*OhBu*@_>7c#d+4xgjIe>2r^#?horb45m{jGe9V|ev< zBFZ&%2Ilw$bjw5ioP4V9wu@v&THLZw3ns6|@FN{H+N!oVInW*k;1FC?5 zjZyG0113G)qs+M?vg5@o_IWPE!4D4`&Y0y^D{zmp8=jA!C5!VUD>lYWBkdI3G~)4= zh2_pWVUk-IgPET}9t)<$Yuah}fLM7O-1-NHcxFUv(k}`|muAO@C%gkU_yUqpjr~r$ zd0&t_CsG8h|{TS~jePY4{NR){PqA;B1T?1#mjZ%S!B}j7Lg|h%b)B(fG3NsB^tmM@R1oEyI|$gLC(K+_1CtE4w^z zq3MXmEjv*^v8h1=;{hW~{C>lC4!6b_rL~&R%JH60C#w_NrWEk+MjSYTE=bq6n-L;7Z~Q_V~> zKl4rD*Ox!RHys~&(Ku2UtS_~D$ob0e5gW$6^?llhBtnGOO4oDr$8XqH^8faaxb9YnB2VYn)G&B%2JgzYqt0!#mamuwLNm!aN>sIoFt7M-aoF6oQg{E^Ff5{}!pW53`x z>etJnZ8XT@S#E?C!(95zef15&KB`v~qpKix->%Lo^jU{34ckPKn8)Eo*^6}JA1aH8 zk45kZ&oREiAYQ?iFT9(}jfc3x&5v>3;@~+IY^9$VWm3snj;7mbD$k9JdLmRCAUB

z4-2EMbVb8V}d}c2lREx`T7b;7-PypGnG+Vdk4bVW%@@SQ&5gOZD z;i^!33|Gr;AOY$a&V#q>D}D;@g6FZfSNCQGUhrY~9%fHAaF@EpSb_ngYDo8WGjeU6 z*tDa2wOQIwwD?pXKV%E^ax;h;U50lOW%@oqG@`-to@`JbS63frL@Rb-%`v)wT8y%J zm(e~|Nbe)O&*~(Ov*A23`w-Q;j@b{1;140;x|ncS^8pO@~2;t)cDCaDXX9Q$vmh$ zE;wahFtXO8;$JP)OzZ+TEFBZrK&Z}msNXD%Z_S$W(1~T*Jj?&H_Vu%#cGeN#RR=?G zVs9Xf$(Oc>86?j_hSnl)7*FEw5@V4yy=TS7p3&ztpkG~;T}D7WDy=JkV%3=WrQ4zK zzBAU)>I>ZLSNcIc>?8S$x@9O?9ZSYUtZ8EZ)U`O?iaA8u7MBrCdRBow62FBkLvct+ z0DFr?73w}TN4H=XDnyr-QM)hFR47j+N7U07u}a zZt~T`8trN&JSKavm1;5_l^7RE%18BN*Bj;X3TQV{E$qg_ds1&2{=(Ww_XRDMR@uiL zN!O^Vk0U;)&m5fTit!AS-mZZ3xQe$+uCB??O|C}byA4N@s^1?-ootKgFI~o2<1gKX zqu@z+NdCCAt5nQ0T2Fcj^s^Gc&tLc@5WNQG;hWBj0BS&$ztZcKEv%7H2>Y5RFTDO`Pc| z!wMUraziC-D`|^FHnJFI1QkfcN-~DA`bF|a|DJWJ96fTzIUWpwP|>*mVo(fmKcvL= z9C$D>AVffHM1?Qxp-sOu#pV5>iBze)z~uyx2W|3cY;5QU95L$$KD{=+aL}G!PCnfG zyg*zmS$2OGY6CC|BrE|fBm%9tiA|IQr8fWSp3vCG1q~g>6?5U+SeOIe!G-FfuQJ9U zqG3M($k>{FwjpXUx)H=##m>o{;KXFC`&9syazKA3@zfZwMpZ05EK@_(pq-%Cn)1F% z5>e!?9iuU4_a83ye6N@x=pGlK)wtRVL5aKZw$?8JZ*^U=%alTj=6Gs!d)Ee%p}K(7 zcLkE^z#=@WXA70+II&_} z>%?k|K1hFcm!90by%e|gq95(|@*YAong5M;*H!UIo_SLlCOc zs${s0MfU=e{>A=oVo74j5~m_!#0Pdk=2o}guQ`@|)dxt&*ed?){|B%K#ru0OMpKJANlq?_u+Jqh<4#WlJqSq5KJ%{U-6* zaNb08CHRKV$d!!$(y)5%3J-03|MuH$ezU56XgMQQOpl7J!ROVxp zw!dt3sIZG7*U<~3y}xvEnAg1cMasHV47L(K5+RMTAM6k|UJWBAk~!`{{kF@R|8kZ;r=EESlbJZHFdnQp z+W3uv*0OZXz_4JhZFVj!j`--^x)iqQW-5^tVztb6!=H9`GL9L*;eVTGeXvcixlsXD zSz%RsM(?-wY)V!Zt$o&UoHn59M?n;a53ur(W$CIps8_nt74=nLrmHSojMjy`uUxy` z$Kd09L}Ux!(%eRW1UMS0EyKJ+_w+Z&j>5TtVuIeuccpkX|`jk=Ay+_sGvPs<8lal@kqO>cmDv7{QJXo@bI4N@)~*l~YoT*4j4T*5*i zImb@OA_^K(7A`9^!&WFCcWGC~NlV8#R%JDQ)R2+n3eD);^kZoV(XQ!<59>DIU*9tP1 z-am0Dq+;AnhyoGHOKi1!lWMP60-op#Ke{Ygl@4Ku1HL%Q5;5o`nOj8?<(ZC;XVa@P zh7|H~JM+>S@muY_gpZ_I*D>0M-yn@xuQwR_eznn=4@M*Pb8$7h?ay4?z!XrC-N|RO zkK9N194t5Y_df_dY#$)R{X>!jr2iP@_B-mCW&Isk9vD>?cxo(H?+eZ~iV zViT7V(pc;<>)2>j?EFJxd}>|P=RityZOLjRox}qV389#@x=V~1_I4q8OD6mGV6zwT zz~0LI~S}IuDIVK(_H9N?S*35oj5uo6RC^8&1 z{6LCIC#T}H-{zZ+mo=bdw=5MFMXcV+))5LGdj$8AWdCCySn0R~w@?4aL}D-Wjf!nj zPusqz94y$SZS@CavNb--%*}qrCNTKK1u->e)*FCuSsZ1Pm3vvkZ& z^=@No!A4p~)Fy;8!4As+53Ref0HZl>%PfHnFY6kEf?QGhJMaqJ^^g|O(Qcinc1B(L z>d3$~SzXzX`E3jXdZ=FM?F4pnAdSl>q}KWiR`$L%{({}OCuB}W{1Swp+RX%z%Y{5l zp^cshCSmKJTMjv9>Art|Q?ke}dMF9}`t{+%q8A0mXnail5x=VNm9ul6M8t&8s8I9_dRW>!mw>C zVX(qH`AHU0#K6f}mza444U3PB@Xuws{<%jtG|N$yQu^c@rUH(OK;mtQ4@n?+`sCzH zI*nn>ys9q0{*0wf*-|)BS4z}#ovX%TtYIxbbs z1s{oM#tOn@!C3w2fy5Y~#hh?G#`F_Gmc*w2almFe<7og4_TxU;ps!&AbJX)9+~e7k z6@D#+y#;Rb!CC=}WeG<+Sqh!qdaWeD_p!NwT zX+JHjOT>OKgv-TB)Ly=8=1^GQ!=xvGpSeemgv}?oIFWF^jZ{F%gA;c2H$n*kc^YWi7!i%0ZMr~FvN7IvbT)Nn4u}7ry*FWSTSt<0%jKm{_sraT|NrlN z({sF)UwjdnAV`tgO66nsG)g3ZTp|-mO2`65swa0zr=aE*u~Q4*si4s(hS)A=I!VCK zcV!b%<6@j*2x6{A6(<^6jdfxPnq)Il`8i5_aN=)OB;bSF^07hEZaOiSpZ482vB}i!l6(UHszDQL$dpdDBo}T`0CO$rPF>OKW1Q z*<&~b52xuZx7I#{-H7cvFX-jCqi|s31nUX{Q0@98UJ2m6hJx6*)IOHB)zrz_x#pqx zf#)qRb~oKxI_In%^3FwK;T;<}<*X?uqgg-?eHsiw1#OKv_!k>nz1jGNx9P5-d0Vz_ z*DY~Yv4sxm(p7aE%FPM~_P6BQaP6}{-L^QtVgFxc9IpvIho6K+6MH8-!1*Q(k{%~M zB1nc+xo=7Ux%}&m_WRGe@q@F1q(_t1C#~A)0f4^D$mFO$=GN@A7Dxi9)gF>Q9)$eu z>t}t}P!Ek3geOrYep2=`^L&Y}eXC>DU(y$%iqM&D9gd_9W^A223Elo9w!eY&Q5l);S>Y5mV@Dm&fm5UE}iD7+>(%+ZM+| z^H+&v8IjF<|Q$8k6w(K;z>Kg`N1Fm{vT6V?FyF{t_9S*z@JYITK{T zC1>m^T?^jPxR$s?s_d>7sGo z&Yj#hhPPK7po6k-mR591p~7Z}8nc-8GDyHooVT$#6+NoKz?&8}@wZk<~yRe_V+Q$pqi) zdyc&y--OS}kDm&Rr(Q(nAi?&zqn#&gI<)mNull7!4}B0bKgUL}!$CAj7SfStqVWW6 zZIf{;T zXtcdW+%||O$Iocdg@99**2SgC6f{MnCJA-W8Bw!t* z9)C31qc|%;60*th2?3CuC}Tl(1|A&i+cH2Z)i#|zV4{saG?iBA+OZAGYz@-Khvcu? z3-`3OhHucw!Ly&Z!rxkW0kh!JU9}E*hm4i_Y3IlZBoBB^<^ZPXk+=*_HmBy1!bD%|PK;MJZ^O0Ew>f^e9p)(>D&Kis7_)d5oENp6u3<8MZ*Gebd!jZ=!9)CPfR4R=#T)*DbezW zq!LzG@WpeYp(JW4FnQr2u|i$iBwKXMB;8GMvgRgu2qUMq@cHv#7!aFdZ$N2)r6RHm zU2V(Q)$feLvMqp^+W3Pll6MmEZgXt$8*>IOdB&g(bGgw*EgOT7k>S?p5WvhTvk%edht&Q9R4g_$bo(f2WO zr#WFj&rMG{R{^GUEJhuSW=9A+wV~2_1!1gm#Jnh#q=eSQ!F6N9Te{V<4R-1`bJ&GY zok$pR-Ywjjy3_XY*_ZCOBe9xGdLxp>TFcD-&AR8>s};cY5GS=^XEY{eHxIR2;L7@( zjRS}~R1T2VWaC}}KgSnu#hwp3?G^LHcDQF`T4RQVc2?z#-2=Tfd26hlxTansSwo~9 z>J?yH#jRiWq1u}pR4sag{1pSc=Y4z??4i)+!{$)#cVlQ=NnvhuoOo#SL`obycX-K$i@gU%Re+FR4S!xk=U=SjS^ zG2!u3^LQFk3{FWgte~Enes-Q?REeCVP=n`jsDXY6bA^D4W;%R!la`Y}cVW8WOYMD0 zS0rNW5RikBWOhM3DxuhsW>R--GztKQDn9G@F^(Y)4O=;;Sq0RwbP~uhhlw<;s@)gK z&_oIY!$^?J24h;{Exgu^lo8Q%>}(2uN^T=tDw_(Q%0;7X+2OCK_*TAe-R@+}frr_{ za?OsIE@;HWA=a+Pn(=nnI%d)w7}95~sS;j8HgGX(JWU-|Q8bapwwy?B1(v>X+E$SZ zI~9BU+{Y}@QoK|hNbitiHI{>l{e^nT(mDQk5Ol+JjZzOYw3)L9+0uKwYiO77ufe!e z=BhW=UdS)`teEgR6g!BS%rOEeVSoBbSt$lUx-q2ocU?X_txxdl+%esmAbwR&Q>da7>7?pJJeK(Q>CkpP9 z+zB1N{!H%)kDChKGYK*=W-W^ldnJ+Y3DWUNCQUV8bVu#8eiF_JhA@5CF?SqmBWe8b z$A3iED^aCe7@0tWZG0iyB6e*bQ_)GHp|<+yvEjQ6+nbJpd#I=+kxAS7Bt_`50_U+Y z25q9RiVehumn>l#b2+(54xo_+zGEd(ACksWpM-~m`g2PNblZW($}RGY&3o(Eum^1bi#Q=;%svM|jA-viEg)%)B5%{4 zh;EjfNx~#zJ#h$;?I0E3jG?AoZM?2=oFXPop2@hB@KCe$J3AX@sTNoG*Xf*x< zpxy}L)WcKCq3NqbCd|AJp_XGYi(F&iz~2Kh=*KKLmu$j6MmUcT_e?ntyQ8@Ebq_$a zJ+jeSe;JcS`9ykTX)}++JcspY|IgWa0FP*Ul6U~tH4ubnto&%cPrnjER{b15`k-mH zCi$ZxpJB38!!jgqtRhO@kC3U;20d01-#v5FM}7mCXAOST<6xft_~YsQAAf)PsEr3u z>j~6aebl99pQHug^M#3#gjAPi#l;odmoI*gG6}bzuJKI?0>aLD3QOH?Wx_>0x}j$R z)Ovl6V`aN$|QDqeKmZpZFdDA1~T=1bh@CV+rvXgE`Q33^*p-QSWmAFukHftZAcJ z^r=}Up{xqxN4#Uk3gWb5M<6qRQ}zLIPjE%sLV2i2OoQlV^U^QP$(`n3@?~`ixT0H5 z0lL71xOK5af46EJz*EP!BVJ3K=dNY1>}?=7-RnT^QaTTP8{}=$^ZWO_7c;kP9GW_0 z2;>~EY@8K=xx61NdgdIOy}r8rv)@{e_W$aEUN3lZNaXVg?RvO7CHugTA={SxB*Amy&NCMm`5v3q+6}PFhe);wq=du1l12Zw;KWuu zIm_`I$&Tg97)iAUL%-yTB|;6MWmVfDIHx7YDL4rFIN(*ON5dmqlNzd3>EmEFb4qRKEWiqF>a_Ain#MI# z?`iL$8%K;o9s)2o0!jck6eB%q_m6ZPx$ z9xAEh;yKu$c%n(!zsAAjresAVHa`PUD|mS{io{TYH~x@=pafD$968i?{V*`Ai#ha4 z^88bCS_M>ckYwfnXVbCeT9I}4giMh`-rS8s>|41;9G`X`NRN65#PyjaGg{McYHq#|5*q0 zilt;UPGj4j(y=M9GtNMl{q_T5`8wROAof+(#PmhWDivd}kVV-!VdHY7j!R?^ndDI* zKH73@Y3pUE#v4(xOpdpbXrBWaxBYU4+sV2>hOfbKS7g(DS$B;qDcg<%-A2CKlFtD) z22l3BV&^23v6!B!_cmLdwDBo%Xc^Ayav&rLj&oMWH~tsCBzkzbM@$_`YgT;KM!H>! z0+Oair(~>FyTw8X;9o2#?FsJD8tfdeWsYiew~ijj?wPq#bwM0KTu5_kvjRA?ZZ6^i383N`2ygc+GRI3T9b{b zxe}+n@>(~e(ZldTdUF;ZH zyQ~1xXj{Y@J~S*(w}Fgv+o>r^Ol~bqp@}Ej1fJMy?gUCGeY=aDKbl=YHru-qw*W{8`-f8)!*n;gUTo01h3XS|tv=r88}e~i22X9CQuYB_?%I>1`2~Dnt-R~B^-;c#&b#I3jUp8y#je(7 ziPp&p$)Ap~Cu1LL*>(a)@`oRlTxx=D8O*m%e3BvSQp40%!(mc>c`1yZG5M|;mu8Kh zkyxqhiy@*m*+&0|eGni6rwyip>F?t?0d8LD;Q~I$5&n!#w+muk6@x%0@^0BiXjV11 zcSW}XO1yLos>Y~~TU~ZuVibQJKSNDE(F}?_DSvCl&ITNZwi_JV?qm3y?$x7xoX&j-9@Za5T|5Fg5S!llXRy%MfZfBWOmNL@ zS#unhXTQDwstJpmB6L8Rym(X$aj&r@iGT-5dag<8m_#*xSe2-FVk7~q$?->BZsyYR zcinUX{(Joz2+s|~-bm;wf|ZlDN4A3z|jJX^hZ2GNls$$p;gRjJj}8;w3pm&`tzO-hN@vj-YP&G}IK` zEZgBcl_@>4fflYLLWTO~ZE7l3_l`DW&KT*D$Ah_~vK%7|E#AxAjN~$b`fw9-P zQfyE4gw}5b9N4(Gkrj7ic+=g;A9b-ZYo6lnYtA~e#G1bJ&W~p8!;E*(F5m_KK<e`r0DbL)sOS}3>WRRPV z0rn{a$D=eRlktytxw!-lZX(GnFHA6mt0@~pww**xZJTGT)h4IIjuN@{2a$Jr)QeI- z)w($a=ScwANT|za^ib`+n*$#*0`i5L!E6eh|jSqRV!OTVhQ$P%Y8G1#rQpTaItB8wJR>}wjNkw6{_t) z;<$k0m1O?$sAAgyXzTGCPkh_OMr~@Ppk(>TK+G|U6CRs%qR#>MOFl6|{tk+9i)Y6+ zaz$(Z_C!4RLknnZtedn$+nBz)+t9PK#PiB>m867*91YpRM9zUtyo*1ZKa&8?Ue7A` zx3`G&cYK;g6kCg4TCI1vdUq@{ zQEGQ;zCv+!V5i-m8au3WB#+}x-9y|C@1ej07?1Y(5iSXXN#^cz;{iV03gM4WCNoX= zJh1tL5 z5ACdUAYXh{OsH82T=YH*CazbF@Pa-+G0R1A?m6yRBMYIgBieXF!5VJHF7b;nA28{=b{u_rudZ=uqy$Kl=g{C zbR!>DVaq3*1(LQl4B4K=n+w^N)ll7JfL$&?(&o5~ery4uWfT3ng)xxR@tih)s6su1k&AlEEAN zW(8%CZ5Q4~d=g0W5`R|M$`0EIZJD#;0k>6FIHlLT8K!8dE)VV?0o=1TTbbHdh+Y!G z*_F(y)3!wH0dM%5ZYxanWr<1n{^n%HZ>al`ZqS^J-k=rH4(QE_lfqRcP*6I(OGw3(59ue-F4F0vktH?h(mOo)=c@JwZ-?`J5OTORroIYiPdgapa2Y$)p zi=NY`!i^o@K7{wAZ`Y9AESLF$V@xGEp6J$}dP3+4S0{=lQbLv#AX7c7E9456?(-%XU~U)ww9WJ*NjD>S}oaP z>k*B2iKHur6M{a?T5Y0U(>zpbcLEZz?3V+7YG85t6nOAXS@(K>>cA^0eUhHQ?D)Kv z*$Rx&uElnHTivzLDfbraHP*$RjGfxMs1Q_xw^p(OC#yH8Iad1$ll3}zDH zF)mzcRrUZz$W6eRUCN{LyE!j0QZEIv8cm~j$SU( z_c6y@9d|nevt`vt@+t!Ml*rqx<$I(?^DZM^d`b(0Z0gA$Z=iV07&0q;w_7G^_E}92 zB!i)MWdV?4uhTr)x6I7gk#9d|u~yyVwH!%y$?c%F)Ilx9v0{B7Qsj2U$Byu>=;02T z3F=@4aFV#G*(Rv_4bZfkfUXh_@@w#0x5IVG>?Ge!sib*AxCC~<2j?1pCVM+b=eauy zgEVW-?Q47*AlEng-EqCfm6EgXSE@+NT95YWjY8*9jbV<)^@DvQNj&N8jZFL$Sf;rC z-qd$~)A!4lr>{=_@{?^(?{qns6~Avvu>3tMy>m6OWj@u)5fdK23Cv@o6%cX+Kl;TJ zVJ6_0WF#o+MWR$2D^KIsMhGYXTx69T2KbC99FmWoT>a4@QBTh#g8X=h9hB$ z-)mA)USk~s$+4n<(X}UD9G0x-Ak676Z;eIH$z|b(X9(LX;UXAWJDg)I)ik%~3VeWo zj2g)4MNO3sUZiCTJSV)Bq>9d9u@!B?ClS+TzbuX4cCh?IyOgQI zD*LKLgXDY{z6P6^M+crV`qERc?B$ZbHIYc6YXw!VtJ8cL3%%u|z@8Xqqfz{>)#cc` zYvJ(e=h#GWZBv34AQ4`VskPhQJYJND->`*^+M=gDKGZ;I;+xOS)!>jhSEhmNiP?r2 z8JZd*m?pxYg}my|SY@KB;xx`Icx&5^NU0oI8(4$2C}wBBTgvf-p~WYjRON~p_AUR)-mSi#WH)*WY_d7G5+H-ebVNh41n{f@HdmB^8?u9ti8;+00q3F+I_yhW9 z8GCCxIu}@B%OgsvW;KXAeYq(^ZQcjDdo>9NZC2q-l3@0wAg)SKQCOJeY!NeE$Y)=L! zJ*kPwF&e98jz#co1YPT=GNyFKAI7lBSkkZpE0{c#n*_}G;5JY@2&L?mlf!pBPQmz4 zFoI2bpsc!zk3ZBZ@h|ZVc8+%-Fev?kM$|?CstP+5Y6v`9UhI_s{>CQgPaNUMKi3fL9S}ZLI;0}LH zN{>AUdtGM9qvUU`@vHPQp7wt`uG!0+d?ymEI*Z=bK0&?<tZT>sal0vHQl`s88MX2js+fM6=y|1Qr-O!#yBA%HmBpxYyfFiod8Z=LShYKckLB zAkY5OGXRyWbyDEj&Pf21Hc5;oY-TXMYRb|G^||QaXeXI$5ORlZE**1uR>@5#fWoO% zFF5vxVBr@@Pom8}MJ^IEP$$Px|R*n5)dwk%zF#f{l`0`jE;^oWrh3W6@4QvunY?HW3R~xMIP%YVVf1$=P zBy_BawIvWOzicP%8f0PgxQUa*Wi!W!5OUrK!v#6)sf^}mB;4Uzz#Idri){*l?xN;6 z&cby93a~{aU*qN<0nVWyC?;kRlX9$9A*UAwu%T$xOu9wpUu-pFb3QVTDxi|7%-JeFpv&F0S^Y!Kz%wSE(YEHe|Ox>-x zXJ!vg)kP-+BM~bn z5Uax2TnYzF`^7lgH?;*8Ti8U#$pXHk-8HT(;7RltLi~;}3dq;yQHBlQ>o|~JlKf;&dpU80ZC=vWkr4$``@m{?kCi5&XgH!mkh_s-YLfM&UU>MZd#ZQ0H1ZQvh< zT5lqsTF1xcG3M&zxi&6ucIfuTS;lU(=?}rj1n2EhcE`3$e0yKYf~_-QOcv+%ME-r7 z8j$DOniw-aeX?ohX4-rC!HQrKz^|16es}%FaX}Y=oV8i8BVzqsKa!n(-XE)QJaF0x zQE9x_1D~Ij6#51dE<@@@6Uz5mnR8N!ZxCyTO;4r}@^bRw6-JUt3HY)$i4VG}zbi3K zk*5I2zV905fzw`*gv2P4)Q|*#*DE`**D|UN!MI73)z=P^6KPNI8cW%J=BMu(OR``( zVZc9h><@IIX|w-~-})AajD#~DjR_m@VQX`-{OH9kXe4cJQ>ZTw^rjG`IY;zT~*^$R%|~CW4mHl23qT zNcn`|kSMM2F_f<-sDWJRxPg|GldLVge&Dze{AV@kd8mddpK!p1nq!}uHag{)C1_*I z<5yf_S5h1cpC37X&5wLky$3J@orrJM>~UR(e`Qf(Amirgf)XSX#26dY`S$XOD+<7J{0$W zbwFMqXR=KS=8<^YIqui%;0sr*9bwS}Z>^B*~Z4U7vE{$KnliU2hL7EYEBEWaS zxD)uR?xJP#;luZt=izA;=IfuL>jBVT#sB7?gJYErF-1ocqrV%)WX@8K?-)(;R1Lj3#QMooUHh`$ZrxCADtz^$arc@Bv{CT zi)ePLv5!895#LkPK*lN^aw_uGlXG7-geG5-IH^q*H5J<-nZg!@#8)=3#H)7ey5nH} zA|VvHM0~+2Cb&RJCpL;c##DAOHE5E7T${(MF~>7jRyz?b-GXdnD|YN8!dUvaxR-+y z15$F*U$h_+57-Kp>{2H@Wlt;@44Sl9PVC{zTl6AOc;L1LJW=T#F?EcZCTNNBeLm~Z z2?4FB)t-Km&2ZutqmC`}kzqWxXW+txt0HXwaqRG$q}Xj(;;haQ zsfz+V4hudA^P`J+-%_-@6^Jqd5OE0J=5E`kZut-yknF-!J~K_ zqnvUkTt2AoDE;Ahhw8q{BZjp_-W}R5ajW@eeXMU|_t$##WQuA@m(6J5R=)gR(aocdr_ zB9z2W&k|Jf=LArka1&i?$cGnUNWl|$CmLQ=Lb|>)$oJr!w5hh=_>Uomp+r?wA4B|e z(t!^#<4-Rq7T`Hi;d^yTg!n@SLEBgR>62y1XE6|eG?^#ERbC<;Curzu!!NHgMt1q0 zSR1d}c!n%22rZMA6E*o|r<_RU4d`KNXWywCYf*2?s4WA(HYXs8lGA%9Wz9rJ?cP9e zH~hAx(aA7z=om^)aSJ~*Ae>-ZKgYpI6O1l2rvsx1+IH{}Dtzp4UXXNAIPZir-lyUR z6~DwE^5F3bH^Yiv{EMuW5RqZA`*a49hDf7$l(VDVZcMkFR*)ppG}!a1WVewT0q zgIhk@|6-r7+NtwW&9w=2cC}y*MoYHlQ9Trn1P;h+5Jhgn#Y`3R#JJ*#GK=Y9`7<%`nPr3Q{fI@nzn;%>oY29q#(GG0D2{VB$T#^mdSrA}W3mE@4`mO1%TooDlL z;nZ3>%`4GyI8Xp4lRi2w#?_@=cd)O7!w*4D@&;KNrY{KsNsdaCXj#U4GTf5)*p*cD zzDdKH0RWvsjg(6fo!8PH*p-~b8Ot*@r%S8L(h4QEf{zWg$`mFS zy7bzf6Shj)8oAiX|H__?J8jgQDI|s|aNljpanP!8ViQlSB^+be6%1B!oPrgTWw80K z@wS~$Xgn7D7=wxea!XXOgI?FjG>)Xu*XHv|wIwTgHLInu0fcwxq-hf5D)bw@Y4_HL zSX-m#43yiC^68wZg}3#*9o~A;^hJ}_hgobnkP!-RUlEC8PV}?CPHK%epMDFhEsoOk!yieC1Oe=pXK^G8skAF*~&M7kv1zVB;aPrcc(0e#8CA$V=$ zQA3*T?K-(joVDJxZR>nG|1T|`?>N>p^diyWPF;Qp)(HzL002M$NklN^?#H+QtddJ&TGLZv=}XJ1NgCfjf6VXZ zDyhn3im>p-BQYdFdeJ4!XRaNSAXLJIkH~T5!Z$KlO?}aAlAT_)lWzP^k|bX<5U&h= z)32YrdzL>MgIDzQvv}ZI9}~b(Xm~3M6Mi$X<#rK~7vD2m%KP2FKMYUs)fDA3VATKD5rn;MI;Gt6@yQ&>*RfGnFF%H{? z7G<9c@af{8|I$V()&Wb;eYLqWJ1egmOJ#gIBGJY!G2>+Pc%(b&2MK*z@>&g=UbS{& zUBZqR9swho&Z$V^1%*AE&TZZUK~YVqkwmcMq37Hm2nkSBk;3oVmY5Z-QNS!0K}>iv`^jBzn-@1men^LyQ*C|(J{T=QcE^&j!~#hYZ;8#U=v*Pg%&k@%B~of0&@zr zQm@V=Wx(oBC@+#q=rPFO$>gIrKLVGb7H#QpQTDAEgUaNB? z*S0T@f%n>d<&xrM+t=BZolB+;fHH9$F#k&O#qnGecvJ7O?hoHLweqWjFOwagNKU{i z0VKEbP&i3-woQ9IwLf<3QTXnLTinpAw=K0I?3^aVsgfcC2%q%Y={kZkI}-&NS&SN zPS9Oj5JbzPGxV%r)-Sa?b_>p4shI7tuA&{_HtYerE&-o%Pbsq(=ee`we!IO|xH&!M z{<_Txbheyv>6lfRy8`Fz!P`|j>*96HM`2I?`AxPro|2hFuk-O|OUc1IeY{iccz}Ch zJeGb1=i#2;Rhb^b>F&KI+b0 z-4OBN^XI2``X1o3ektUIM2&=vRXvh35h%Aju&*jdXnyEDJEIr(k)}^ z6Acn{#sW%o-+mb}tkP)Jw z|8vTLTWjNQ?M@GSZFTfcz5_TohmG@yr`&}y#!3V7AjH_FyYk>1uLWaivDb9h2jrE^ zO`YpKx&(Xb8rY}Q;B4*g$xXD;q%rC04M!Pl_kN|_(? z$8ojbU2a@b@(1rN?p^}?P5B&dCMabqPai-1@$|R9D*^n^|NHch|N76TKmPuQF9rK@ zu#&$Y@41oVbKM~FMGp{G68QWrms*`{)x-#>624CQG6@qP?1-hw*rzY2fb6n*=LC>z zHA*Vs^9(?rOOioW@UA@(E6LOaY5*&#=|l($Hkf{8pVdJd^7I}&fnqj$U;U>@v^e0%@5YDiC0!R}9n) zqXwJ4IK-HZ__?N?t(~QB>5|1Bm)Cv4)Ug%crnE!W^3n0?9SMjXC|=>2s&?KtN^qUD zlZqoAeU83YwnQYNPJB3yRivF3mEqaJCsEd`F;!diFCM#InyrDLigLPT< z!w0RnePrTdVrJs5#7eXN557wWSbfBippdoYRD~yoR|k2#in_?EP|;>G#ipiFuf7Zc zOTkw|yVRI5!2n5&xEw5+Wk?J%`GWa_8NdedM;lhLS=dyb)Xj5GJFsZ8Lyu%r$telK zkb^%L#gN#+M*$<+W;;l?eb-JCCsPP825R;|pi!7fp3xKo8@*Wy*>#B8rQ(xwq(k|qA9#rhJ=4J^Xrp9IEOSOx*dS>)Oe zu-h+?mv)YG)A9=*B`|O^7DFRwZF*qhf&BFtW>m53Wb310p&FzAxv|<}#OE-{p56HRUuw@NHvV4YpT{h{J5-MYf-mc`rR1v{HXgxQ;4WVb zBa|7)v^xh^I45xHajCZ>u|qmh8-yd_qbMB755R-QqPMhKbZd(~Qd>ImllIhvb5eHr zJERk}HQ{!R=-;Z>@)~nD4Yca4T~p88={!CWxQDP8_Iq&7yFMXaEja1CuDOld&-dVU z{=cQRC;VEO%IcKv^yQa7^hlWZN@jGe_352{twYy(HIK3KQ;C{aMYKvn!lN^j(~`Jm z64Ya4w8Ftdq%+ZlmzzuK`+rUn@?AT=`&Y^U7$Z}t_BuZieXrG?7cvnQ`%EI@)f(B6 zK9^^E1`dJ>lCcU?&N`6^SXL3`ule;k)L6VdND{>K7Tb(;@?&~W5)Tr9 zXTBgQANk&*e*r~4yknCduK6eK#LxJ$!j!~kdPCYwl7*4@bpqxwWE}ATX+W0036E3& zoQivmz7fCDW)E)bi697I^Vq%v{=Styel*6RCY6Bwc+Ce{{zGa z96<*gj6DuB4*MfJ4tb;`N5oP({?zzsTq0V1?87r;?`+CZw-`v)XRHFS&xUt^;+JoL z!nYh7c^Vztk+8@T-(@EP#Kwt~k`=FTDG^dK_5G_7K`vvy z`=G>2?`dDMQlj7w@H&n?%#B*sL?RWc`m!bDGLhChCp3SA`Y#De5fSh*CI)hNF) zo%GdLI`u~}C<#yG}? z`~wR3>tc&`rRiIl9!m2M>sIvpd(k5NdEYSP*b7E0&@0X)3w4%8W-e>q%vtNrR%WTy zCEzu5iFF!3Yn`+g&83CVj(bO*l=KO-F;1zErQr3RW9!lE%gmn47^k{3ch*XKD?dw2 znp1O@*lka;Q*&2zpLn0vKGr3wY~5kbDt>oe!oPuk?oiwSbG_&t1HT@8SF+>w^DXbX z^J^0wB%KsBE2Uy`XZ=b29R%TdJr@ZgZ2uaX1eixG)5>zCtT7~x~B8JZWPg% z>V57rIllkq%e{Qgv)cIbJvVtcUzon($n%YZQU;WNpn{zyDV0Yga*@xv!4 ztLj@v_Pt^#<3dxL#DkWKD)K#s6HL+Y69UD-NM+{-jgdf4jVnOnE?<>P84WRGqd6g9 zT>6Zg?5K;H9-GyZBz4kd`If_DWZH+On`R3hQ}~j#iP!-zHozBzb~ZO*c-2sHQJeK7 zFFDJj$Hu@Lq5Bew-)?A(1iEP00l>*$Fd$JnrftI>Fi^dc{FNMD;GZ_%AjLmH_Do|d zzxWQNgz}P{3wFC9xsbFi3H1IM@O=&tv)O9ojav}{7`bK6_eaG&E;lj!t{*{_=U^D^q}cTQJ0ZP z0+&@4WaJ7Pt_~ZC2mOwR*e;!Lblr3t5Ey1yK^p}F&OSvWGjXX~ zWz*+eT(WJjNyhneJQNC_-@#c%N*{l-Qb^l>K3&uzc~<;bI}JK+7pC7MqB3SMY-h3A zeqf<>(`H`-TnIa@W0|%8*P-ngICX1R=pJHwcshpW7cbIYBFVsLxg?s4+eIWgOAoi-@$6&a6~1 zxu&1hv`nZb0)Q-AV2qiwL~_F5&SLv4DH2gOo;64UOu`oX-Wy9sO(%(TBGNWS@<1|7 z45Wk4(bAq6kql~;lri%X)_d9e@uKMp9bt4yf}tKsgOh4!7}l#@i&ni@3ZGHt4*|!r zl0NMC^0Y@MoA{;8tCkI8|M5x69J?w`S}Lgq9a~QRYP^ni4Wnb%URd7oDnD~lME1Fh-cZS4?b9SH4@ckOfYhcd@jj1j)V2YvYz?n??(TH z6>ez6Zj8%=5;abgSLxyy#~?)Ojt&^cDst&}@46aVomr;a*E+k!m0A1E}XtU zp#JI&haZ0UG!LNG7`TbWHRl2Y7^cvlRBjDlh= zEiO0*<2^EQ2pxr+)eiCgD#l+k0$b%n_pciEZ)~^Ede>eRB8t5+IV+*71Wwa@5-E}a zW=8!?8Vgd1f2*m-3^q;NPK1DImPAPsMuH~U_gZOur(X#1FMm{08F`fSl7slj1Wm)g z7yCm=i~7h}Mhz!Bq7AujBLjeyX+WS?$pyIdk*{RpS@=ki(sC0?CUufHB%zT2a|iNQ z^^7DQq**6k^A!@kLNJR|%C9PbE%Hpl}X<`Kx;ME@(%o z0Wna?A}`E*pHT@Xm$h|Fo%H&-dWc8XEn@(nfsy=Udlc}SMtta78&%6vt#w+tWRb7U zx*UV>jPdh08BAg&=O{5mu#XvS^0?L?$3lKvR^y7kjakoc2X_He0ba)` znCTYBY}<=b^)VQ-8;(y&s~Ywt2ep&erniko_-*PM;;z3V9&kPCU9slOP)*xaxInxs z0i2Dm@J|>ggq3(YM>4C3?C4!f+Tu6vmVPbXBDWyC0&@XbfOlJy;C^#g>pXD+Ixo1x zy`;P4tG^}fpze{ZcBk$h-YyONK8#y|SKEFyz}BOy`dIyKKP;~r;TsEilGWs=3HSZS zk53=?^^Z@V{2e!v0%lDoeoACWX8im!k~gtlctng=?|jZH6ZGRmm}NZ?`@o2mgvpmQ zNpe(pR0iLn^NLeQo}Az7?p;=2{8*Rgx-mrGHB9oioVZSYz#%Cj!6GSO7B{|XiPp60 zb`l9&MoTY}6DsYwT&qjgtjvMYmp^Hft++x#S(3;1hS`YUGTOjYNtu zx?bA&H79?LC4S-q1F2&rMPu3%@SG^AM;siJc6!gA3nbLFS0p4ZDW&B+Cba43{o_-^<{g+k;HGd z7Fh-zzic_XwwrT^7}f?Gc%NIb)4m26OOGlzN(m;tN1_}0s$Kgr3zttjEc-b-$_E2w zriHTFZxX;p-qQ-t`xaY4-O{-R0GT~M9&P7(ym-C!efE*|mVXZa7TMs`XT>?tpTN7; z?@4ZI-s0d-9q*k!o*&PffSxxgE>`^kdQtM<0>=^1`&knmljgG?^i1;i;nPPYgIN`V zPSU4&$w`OLRVKztD3S?kQg)66R)3-;5s6)ro#Yfwen={mfcUw1I*1%Y5)daPGW1;- z99?9;*W*%pQtwO6u~Wt>S>gL<>r#FEbzy2B4pyST%r5|uGa0Mx?{lFeX_6mwoAyn{1G(B*h)c+Q&*j z`(qgV#`0aWID$zj#dPdju6-ijqs@08kyasO(zl(UiU4{FW1=Vu+RGpJ)KY`_IENti z%tFyZqhTz|7OIoeI0~dTc2i+IegVX`;TMI7T9@yj+7VL>*RL186mh&`z>sTQp z`_v;Q(7IG?>_)lLv5$y|(vQ8hpNLa9uYLI+tdJsK*ol2}O5kAJ&AqS2Mts~_YrORc zntEp~Ba6ii#xS&&Sofqaf=`c5{(xyA>YcJl0CyzDVF=dL-4ni&#)u9)8VF<5gK}Hr z2!BhT`$smHlkwCC^!N0dHsecl)oqzm)Qw;SR=RsSx6p0@yG6Erm~^IQbFZoIRJ#WH zUs}d-`fI zUl?EAY~q_)u;o!=Hmixg>?;}xA;*pc6r0#cqJn)K;1zt2Q}*LyOd`|#B+*tG{-6pb za!I(rs@Pe|2HYa1iGyk%J8H#5M6|GPzW1_P{vi-L&}zw$<0L8~oQClI4+l8ze)B>blYwpfj0hPfK_a(t9n<*$QbM}v4{@xV;X>W zIW_WV)29~N_I|x5?^tewG7n<|rC$OO_e9`?uu*$NchCJt;DT|j|64hq^5w*qcg{Ct zdpuq5$QyE&-I19|61B=qdr13jP={+d3rF|bhP}E|_gWioFZaf=y)Xc*djh&3_iy$l z0-jjbG|~&+*1V&iKj?d4B!F7|BN_CBOLD;t5l#Sk1dLXuSkBW1oy5bln~62ZI0=%!`DKn+u*%S5@@6AR5Wf-_AW0(LKPg$(_&OQx^OD*$%acsS zp*+_PaIlP`DkHVC#Ia%t*9nj9FMc@L6K*Gcsl_KD!;awXNBQ7b@;DN1u;Cbh%cgcG z_k90S+Kzkc2A5-8zIqJkPPXt(e=fzB@ur;66_of`D)FQ+?NoGi)Ex)T8^=R2ahy2s z8Uu8V)rYloE3(#!ap@t@zL`jj)c~6~LIcM<)dn0r2s+m2aBe|Ihj?1k&~<7R!dywR zd`nz%w6VsqjTIWfA`#5-pE0@}nbvCR<7)8Z(Tv$vn|3PEoa1^Qd6M56fpyW)bxK#P z08Wnl7R|kZ-{Sba`UiT0JQ`O!bGybCx)J8HrDc?b36L&C!i9=^*}Ngoe>{#MWG^NJpmA*+7@a2Sol4 z2V;^`;zXjM%Fj|GNzult8xtwtzx$zNvwg5#goVq5>+j|<6L`k98SO|0aNMurafakG zpt$Nw3jaua>f>S9!3Wv#>KS9zMzL;>NjgrdNP=5NJS>eua-fZb1%$S3yU@U59HnPB zB=01q{4=j`geIz_kZC{A#XhksKSsjI*qTn*%DW!hi|%56!G0%BIL^4Kd|Ws-B-=S+ zN&3KKg9j*fv!RZaY`q^{%SEE21aj%hPuj#QcV$NppN$W0srh)(wcQ}9Gvp#qyi*qa zvIUOp41tm}!7e4zjtha5?@{O^T zQGc*TV@K$iWUbAKc`W^_a_$@ZYev&?`}vk%t@Qi=h| zQ0w7Kl2d#lNsVugi82?@i-r}7;^C>DFaK33mhcM`x`??cgu$vKoP;8NbBvZ`6`Fh; zNg8${XI(kqG##tHALl1u?-D%~rK z#erIssX3{=O|zV7pFC#A?eXRuaZZ4|4h;-nT0(>^?I*4PVtRe3`ebPTQn!mo@@wha zdX0UH*4F3Ng?@zB^jUY7Z+>G1YKJ-r{G!d_^l04VsI@k4?3)073E}(3{%Y6x&=kmD zWc}6dzX<^6Qg5#`5Ev#@Z9E8CmuJ6y)&I=86N7g%i5e?+=CNX=O$2|;IbqSt62+5v zB@HAIN{e*NIBHCAYHmduXv7$L@>4*FylowEO9}lS{HPT5dg;}L5G|&8ab8%jw#y{Y64=} zwn5AaX0d8t0_x}W)umN~foZ&8+nXK_3^PMuZxsA4-)v9EamwW@9_?T3F1`=&3R_Tp zN!m@x^8&v_85<~U*{3xGOm7}_+Zc?W+`!*DRu8wVvFo@KfjZO6g2sHquqy%VK!UN= zra$wyGFu+}Tgo~8bG-X(JPOg)&w_2^h{h(Clm67aWnhxMMe`Qf*^OCmYER8s`ciwP zRv#djbbej_YBWE^Oh*d#uTR|%dr?#SkN8_Tfak@y?B>^YJ3d4ZGof$b!TQiJH^ z75|q~aq*~%YIlhi8v4T_+8XE5UiV1?9ZPGW7u`}!>^Wq5eq)!M9g*0<4Bz0GlI8lPUh1j>2Fl>YI^rQrEOI!dJ=y`NwWW}C& zi^gBs+7HY*kG5kvCwq>!jpecI_8dNzJjc1--Z_->yxGRoo|@j*7NN{vB5xqQp`SX920RDeUqQ2(WA-F48&+Fr+5U(6DxoHB; zs#PY(Ebt|9a2~)xlh6D)5fZVd`5aM_1tw8e0L4)TIKB@i)lAYfz~QAo5<6|kn;}2m zKXdo3k_D19sAA?rtzj1CeoUS(B6XTOB!xWb1iDO59NbV6sv7ry;c47jI9U)qdM zWvC-g7k!Fz_OyTweR9o2^9`lrXXA;N9SJjdQ4BPZQC~i}7O}W7NB!TS8wS3pDhtZ?bGVn|8jCiDD{EXNzwu4^0Yqi&MB;kt>!wd-^ zg2(0-(Q~aW#*yr7=Sb!?^tZw<+*iR*%2V_5XlLQ|LA|W|T8Y{A)SjBRSh!Q|785^F z_UDaeWr+{XpE%0D)YSYb{}(#KY@pa3?U+?00_hO$UTKGN1IY=KMq&-ydVL z63?Hn`uLR$D|_5+N?t}{FeY8$`=$dY6r@zFY~{V436}{l$s9~LAj5OA=v6Wqu#OTa z{efqn(GxxRtW?S>D{Uk>`UCBU#*oQXeEbBT$@fW*wULdUs5`k0kCC-c<*W24NitZi zNX-(U?~XGPQ=T`(9kKS75+kN^1LFY65l36gY$tBv@AwIn#@2Tq{x z_(@3ZWwjBX+OLcg6ju72$m)B7+~5=6l9a&fGz!NRGS`&0eXab0SzauJP3su3ZAKw6KbGFW?soYXPh|}p+O7K|jMq7M z&Wj-5f`8=WWh*|z4#oC-;0=JiJ>DVE1qN6>hDYLFFv}S3FlQBi3S7ef9r$+y-~q$J zDj$?{S@&knzfhYoZ^k`FcSIiok89-J#$>3=l}h^fbr1h8u97Gx2}kk4BABG#FV!Dh0>7bau%>QIojNy>CTADTq6 zF5{x*f{P>%wW8y$A6G(RN60v*`Tth~*eBaaBin;gznF23#)Zh^WsA zX-3&P_5)vt8=IK4jq6yE9Aiwl?2Vy@;7HVYtj{<7>PmzdYxIespVP?r+ke;cUrVhv z1>Q)KGV<8h9vlxW?chtnUQjVEBfIV)m6JYZ(BiLJl8@`sLlvkhvQ+YwtQ({yj3P z3q^ltUl4;M6FUVdgH61m;l!@aB)Z$Q<-*++I3c#i3FDA(IeJtzX#4? zR}AkB|Gz|}{=##}pBT&{+Wbo(AOCpz_&05S7_?UV{P-6oPl#w@d&gx)4wjD@M3M$2 zF-jPaFpC7wGZW~+_Hja1b0gnrW5@+#tm;_|U#!=<;48t(+7lv7*h%&bRQ@B5T(ABa z4D)WN9tI)cL()AY__IUQC@?;p)C5i@>jbeTcE~QWn?#42u@N6sl{gHeh5}HqQS|Tt zP&aYX_(UWzG`Us*NgiI_C&~W)%}!azK`bnM97zhwh-vEt44;y?wLkz_phNUL~5 zuSA2G4zQ!&7^%TAX36-tfTceT$Hx^LmM$Co1L1-W06l1I=rtGc#+b~fIcKPjj=^=9y2pgoWOl9#U^h%NYy{0j{I)h=9$*Q*We z0$}x~54&BI--zf5WfSXPnQ}lE1${ef;AePoMZHI8EN)p1T^~yrd267 zNz7O&(#DD*Nzl`~FFK~vdr`QdD}B_G8kabI%oPS|CR|@))F;dMRJ4vToULezR#Nw# zL`FuV%Zi`@lxQvSB++pa*7_hKR<)`mfu=A|!(qb5Uwn6JBn%~E@(WvR&m>L~V|bRu zB*10IcGX58$x-y;tA$ats!d@|WUQNPy8_oM4~jNf9qcAS^CeRJ!4ZMD1_M8#;g9hE z*QR(m`QzAVg_Oc-rxR8CEk2@nAv-^`LJIN^#hi1&o(VIFt!kdv$nmos1lxOtEg)8Z z;T3xSU~U#F3ku?IX>b$)J6go5ldRO`P5E;Oa8^#YmT=A z0e|>t7+^;knApZM<4J%dQ1Q~)X`k!?yoR8G*g#5q^hZPV#vHOR*)py{o*Gu4Ff4g2 zzG$9@UF7a=-EM%W9lO5a7=9Y~%FngzoeAIy@r^pS2Wj7t^?*-hjsi7HUY5BmG2{Kh z?MDnmZ`OZ}^4E+5tNy_I*9hX}QE6TR}rUoUCtX5^tm2M>}W8#!tRwAV)+@^!#RhiZF0u>qD!#6D8pK4t2AW;MgSxxk0 zNS1{f4eLT{J;O?yqznw`*tJM%+K9Qh5t)(3lq@WH%G(rpklG z28k|AV}f74a^B*H)#0mS2WgsUTG;TLy6|ey#%YywuHS>^!yk9fD_Z!x$j|29H{S__5NK6Nc~)Z6H8x<^_IeWS4HBDX_Y)DK(tX&u5{#n`jCN4pAa z2(1wEE+4#qH*Sl7WBIQh!{20lP}TS3NJ2b0 zqbsYl=gBcXi%tS+8E|TKi|5LOhymNc4u6J`j-&xLE(lutRGUqcyM41&bAXa1?~Oy! zs&RVNOH|`J$%wDH(>8a`BKP5gEHHFX>{{+3CfRhna6~W1L4FNiLAL+33Rn-(M#qVu zV)p*SSI2-P+IO@PM}rAc$LU35ebJ>|uhKd}!3XThk*XQ@vo?y4Kkk%WCr=tLzA>)Q zC7=?FM8m*Zw6D&3WJdD8=s#OOYC5lf7h{?dA*6+j&7vN$(Wn|pt~JsS6-x84>H&zcu6 z>wR;-%R_UGJIHU^*t03x9{DOiqWHL&TxIl)h3*cW(@H%k!m^=j+04nZ4?X@j7rD}p!AHjN&v+(z3edg^Cq?q zpMf|A5K}G*5lIl!1j$(?!0Ghy2uCyij04e+&bV?`%RJo1G*sjsrdg zfUY%o;Jo~Jr7N#gzrp{XA^O*hW@WWMn19A_f2NJ?xVHVD>B}v)Kz12_fC(jEkvE^G+m4`1D6I!69;9Dj|QDkXSe&)k>sL zyg3P#9XVkhi4}s{>Z!J>YqQjHa>Kb{xrj^MKJ!n2 zr(^*-wssPkl6SvWb89TF7+4ySB_Zl_LyX3>qsAcqIAhmbCn4==^_#m>D&UgTb42`sB9Yfn^GlN0@Q3a@J{D-hx zlh^1Rg1rT!2cmlT7TR!qG-CgT1h6#+vJm=k&a@ub9<6zeHTPS->*i7K(VD--5`Bl% z(o4N3r1ALOv&UOBZ*M&suRWOKa)pgozG-aXl^E^$uT@_WyEkyyAHW;jzs8e|6OZin z2ltHmo18-&izH{7M7eCpLy0R1{Gpo%ekgf(=DUD>O-VB!t7ck?A`9@u&BU7|5OUJ8 zPCy8WFD;Uu$QVhKKf8EavtlABy@aLDC2R;k-zkLJX9}NLd=A6sg&us>nYlrb3>w~9 z&cxc~Q^d;RkpyB=$q9)EI%o>uMbGUc`OTfgNt{Teut$7&Gz~stm(7!SAM5hPzG|HO z@t8pyQxmq>!N+3Q7#}AM;9`g7td-`L1BJMH5Tk;ReB#edF>H#J zvGAAp^ZQwaB;{8ypoyi z_yVeIWc4=;OL1ZprjC^4N_VuX?|}d#n{{sCUmusQV|2lY^Rmae09m_<8*?>4d!;tD zr6gD?ruh4eo>TEd+bA3lWZBP*sjntI@S19~MHl%Y1?<@ckJY;wzCD>}JEV#G)0-X# z1DSk}i`s{I;?sTtxFHhrm~e97e;sR{`$uMfbzc=zf} zBkE7JiS+w79}t&2f`HZD?oj_dRQi1B`uFg9@v{8RgxyDLsh#L}V%LgN)$f!LJ-`2` z6)ZjbtS8>OLv*Z+*@E8Byrr3BE1%1XqKQrxKIm>^?o#EKHNJn!i{F`=7{9sQ9Ec!jT4`J7zYPTNBuZE%nu zMI92JPRIbx48lHsSe!%`zeswi;i)+BBaKs>odi$Vj5C*elelK3&`P*rpPZLFIPy!0 zUnhaSTr1z6^?g8aIw5gviJ5QwzysWhueh~r<)hthyxySlKyzHDP zl4)JX1e^Gv_*WQ$$M--R)2S`wDIhpk#Xb{D<3OyqN(M31JZ{e4bV^1x3gfhbv*y}w z4}jx5aTixMFfb&zRMs2>7_)&B& zD}Gn9rlilCJ{=i5$61@dC&nbsijw~LwBuJn{0j|gdjeMS!TI1sM}QwbeR}$j|MOo@ zfB(<_c>4PFtA2{^%hTuo`Sa=XKmSMdKaI=cPbUZV)4}sV-N=#u`6+VLmHjW)kn(#5gnFk-Ve zm~GO2HUXjx4#UWmAaaPYSByD!U}91B_!HpCi35gl|gyLm=)7}oIe8W7sTM4`IkFy^wC!n6O(Te2c$2MxwzqOL78DXRJt0nj{pONzp@u5&%I+m?Vq7 zVl<|BFj!^tc(da4!p#`K+fHB%g~2wYy4igkka05O#M;1CCP}kh^u1LDfc!C!x{jk) zZr#tZ^m~&8NF@oNo9d+Q1gd(2j<4|tP6^{e`ydjdSm_tdx@gIFY@*(Nn#LG&vH4Gup=aySdn{n{hrf)?gO!{`shxJIhCm@vqmo?AH2Kg(9MBR^=LPTO zJ{bMgaIXgNoB7^o{Q7#YkIy}0#Hv3e?@|8Mb@=e=?N|5pA^z#}sFMv%Y)(i#VQJ!e zA^Fn{A|z%!CdR9LOks82p{k89#B=vBZ8jHA0?YYn9nrX{;@h7}0A(}hk@T7Hl^A~4 z%_ytSNAR2`0IE&;zDYs;jYH(bi=+_SZ5$71Gx>_+7vKGo@3Ko0V0rs!MTsj}fEW%9 zq!StvMeO*pX=A4DWFZNlbSe>y$FUtSwTFA80_s$vfKROlsuL-cG#>wHhPKbTW172& zy+Ss?tP!_8p4h}MO7`(4$47|Zmdz5dEoTD5$DwQ-V^z?DS$z3M--#(n*YK;Pu${4LJ?maMn3tqv7zpUGRfZC zd_3at0o0SOo1(REF_6hC6SdM3r;kkZp8Uo1#7yF4JJHFEhY)>s z$Z6AGOiGv`I%B{G@U)|;hCE7L12qgn##E))X`VF7^}e`@7!j0OMJ zf`)Pe<@gJvVg@#*DL{LCx-9?nz6}vqj+x~6z9DUo8QJKzB!pqN#^Ymyo`m8bNObh# zyy#~ZijXmejTAxyyJ8qRe&{7yj(xZB(}txQP4Cqn*ywlwI1n_eXxDiDXF@zATSQD_ zw?_r5D8p#F^B&c#NS_fJ3JnP18u_8P-vI6b zFbnu=0B2pCn#Woec1TJ9A3B0%EPDfaeaISXz z_0AZf-gH-+{jCIFAEVa{7whAL_%%Skk}l`V_MF-Fe8g?y>E+Ma zY9|;h(bkw|TLKT92cfp&YgbnBLIxYz_--8IEJYt5;`_{9*&IH7kI|*ajGm7}5HN{{ zqejU~$T@Brs0B&>97|j>Ep)<_zWmT%j;#^PuG)5lTAN}Qt`t>Pms&vp8y{7SMZD>l z6uKDZ84J9Uu_pQ`*e~?d_ZEnugHL$Ua@fX*Wbwg&eZF!WhRw1q?I60b+Ld|G3Lgr+ zqai3g@&Eup07*naR04l4m*i*J{k9Rujxp`at*Eoi)+Gzx<5vUCy0akxa}ajQ4J&|q z02tY$Z)w~9jwjdPtYB81J-`RhWaDR;d4Q+aLU=d_C&RTEzqZ_8d%!xrf2|h}K0=%? zy*(KEcY%A+%HMZZ<-V{o_x0&3KLe-Bx$l*9u`0+TTAT#+d&`p?i4=(u@ylmrrdqWn z$2k(6PWn{ym=_WYE&3h*#v;7^nAa`VIBJd>6 z<=rHAonSc0BEw)hW(KPbN_=h{Q{;1GGwWu`Z9RsFIw2^lR_=C8 zf7TrU+mVH_#)+Q|*L6d5f6Ufql#b7FB!s9~bBQ#`H#bP=4q@?$IdOIZ<6|sY)u`gJ z!$VUAXpeyS`o%G#$&SQbEn~GbwaSUJA@@Ep#%?G=la4w#QMTGPl(dq6DI}M@rv)@VxCz6}%@2sKRT#$Bt7F{s;T0HPX5;1%K2K{C zF6RpP+0azcEW&rR-hce0#DfPdb7KQGC5vkEKDDLIi%p3m6CjT*NpfN!W6|=8p#(FJ z;!{@c)K~yZg(@HI_D;>%@nmaz+TjCYOz1d(4F1SJT!iAC8tD5yLLyu-LdFv}a+YxA zUUuTz*~me&ACpA)Emv0CmhDwsClyN}&v)_seLU6pq60j{!dG&yNAY~nV{iU{_TEJ? zZX^e`blcrC_wN7y>+W>>v2jiSEUF~gk}cb^yRt+w6ORBAWHF)Sqxd~w_D6pK=91{! zM>`S>68)1sF)0aZ;?rzEg;~)w~z$EYpnc7A#Fq~ zfU`g;{K;1BR<7dsDK!3C=D5L1Ncaib&h}P*WszyU`{hz^AJ7EDwUy3V#%7X062Yus zT9nrJrLcv6k!iiYT{_(mowXjWpK*Y#e-F!kff`lN_!`{x@1%E_d#;^B@dCD_1L~+; zWbVZ2M4sv?0bI2ELKn(e=Gqv%YuZKgOSL&>z9jY?`0@MPtrxXGJiZ3}YjhrVe7}qj zbAKo5%f;+DQNiji&(VAJvJBL>aztPszIgx7|K9xlcW3tA<%Q3@sM*;;?hQ1#L51%< z3yD^akA#vjjCb2HP&3Flgw9FNfj@P(Xd;}1<4-RWrcOJ{@(04Jh@^bL$a9}DSYwxj zf#hyW@xk%w)=2=dMILfwbc#y|Xd1JS5-_kaK4Pmz;m5wcItk;iinBiCtLMA=5W$y$ z5)Un4?iBhS!or_(}-)kEzEjA;oQ3cwK+Niut50LWIgSdgv7BQ}m`sx0ieR~8DfqJuB z!(Q^SPGx+n&$TmF$7cH>+zFH8soJ=E-L>OVI_LwZc%3o6_`ZEdsCKfYk2;G_qr4s$ z1Qg4NZ7bV@GXlfP=IrA|?!tf3+PZ<=M}SWvpOJb<`L3oC_l!Isa}VmCQeFe|sJp9u zt@Mzgm0|l3f3Y6fuKFYFZzF$K@NaYNJ8S=Ydj8{ks>Pg**#3Cy-|4`a0pJ*XzLS|> z1@^peNfvx*a1tk;F6Atj)G65jGeWrpoTq<3zVD@6!uak;J|dDjFMi(3y|8vh&ekt&^kREP@uG(OUAg3Ft%UFK*7La zBm@f}pD*aTFFr3e+%Mxj3FZ-@`tk_#AV1Lu!~lF&xvzAZ0elM5L(W}$an(-qit-dg zFC_C*jX$vu8=Z$@`$UKl6Ui^h^Ynf_>5bV>^gMCyF!mFDcuCWH+?Y|kB=9ecm6$N_ zaI`f+Nb;A2fHBtljm+f8ZRVamekXYE1w@Olv;%UIKNE=1IBpW-4@nlmHt|ys(HW}L zYuu>n!z54+lE^tb*d&l6@gq-<0`CW$w4EvH#L4`P*ayOk`#;*#wWo78g)Z z1ey47#HxUWLxy%~2ZuzKkFg3^d;`z@?ZY4Ob^Ppph^Br_e@XslpW_MmnhDJQ(#zV^ z&*dvxFPzH7eoa?=Y>c~+CT7K_LZlHdX4W?DP{JEu5gSv2R4h8dlreI9jD}vkQHwoP zu+MQ{_30tmUNNkJJr1aQUe&I)E><*r+4lmSmA+7?kC*b8<&EP-^83`z zzML&Q?$=rBs{SOU6z$*uy&|I@m5Pe~hpJ(~fk>~h;EIa2pIu}dU=1X`* zy)|DT0@r)xy8QwsemunW@p9e%@gBWSi^QdWjNqCAH3CSn)e?W)ND4Qx3%IEf(u zp%oK6{)GYwEc`DvO;kJRBf|_P30Gw7XJ)_J?TG8lSV74p-bT8M0J}vz^ck0=$oR!zdGYIwj zGFJ)U3Y--OjGbWh%v;Ex+_*>hNsgV(KEacdCCmF5k1aSU(1b zF#vBskiYbEJ$ixOatvJ`N7wBaF!RepOiVWUV30Hc{OiAY2qgE3F-w%+0eZ;X@w|Rbk92mn7&9-$B?1 z7MSV6h=X|EQ-_ZviO0;|>dj7Q6MG!J*oKlNnFOE1k2-!wD?;`M&5eZ#3$iRKUw9@9 zxlHN1?ZVS$ww)C_C6fY<`pA(S5EuW*a`2T|z2Vn?97+H4_lZPo5=7&n|L6@aKu1}6 zeF94hn^==HWgnSbrA{KZ=~3^igr6n!x1aK4aDH{d zUAID{YOmKAULivX(+5CS9vW=?XeIUjT*ec>E7r&DIP@oRn6f2 z$g6*0qi|_0|3_`>ZhbiZ5%?x|zTBTl0Bicv(d+hQr<`jS`PWpt@B7d9?gf2%@WB81 zJ^X$iykP9U)=5t~U#t8I^*Dxhd4=x1I+xi0Gmtar@=BJ!{`-HkefQ?iEPv!F;ADYW z{&8?)s*Qw%b0tUbp2Pp(Y0~f{M*L&2oXwL^x$~vwrY57!CRxebEZkE^;_)d7Ck0%z zJHU5_@DrCMxkTIw7MjWk zr-W=$A`@%GN~_B02dc)ged{bBw3WlFBvq=%*pwr|sAo%#aC=*8}1UqxKCXmk18hm_C!HE+lc-IA*U2ULL0&!)x zpSIOsjLPU&=scw@4*kL?e`k5rjA1GWB99#%M0g`Ma>%F12Ol}{AP!TB>fNCsKMQol zF-e83dbmJimk?#()w$3*+dK14^(Ts*G=6fm{k-(-QhUB*+xfeZTO5wktv|Z`vc#jR zFU)wrlLtsIZ1fp$FYnA9#3$^lXE^%{h~DY_5A$~ig*Etdyjbfmu)RKRuG=qQ;&+7L zIAE}1|9jsauL{Xv|L(v4ee<9H`~T!MEj%Tf*R=fa@5t~_MP(iMlSnvYN30z{lf01_ zk}NP}GWda)E!b(59{$=aP7_I-z>mIQnOVracmuTqgvTw-6dr`&+zuAStutClLU{r> zpAXDTk=Tyxz#KXnRGSrY*_hB3yLNX_hNj8ljh-`rGJuHeVKcTz=6Yjn@Vl;yhn2>| znz}oiNTc=kw~0~XC{}>jH|`xVv0P_OD&Zvgb4C?svJZHz&L^Ji&L#cBwy|n*h;zIr z@T0#wJV_olCdS?xkp8mwLb}%%%s_PaWW{Gl-EMGl>=^g3Aqj*%5vPDk8 zJ(lLk#1SuVH-Fx&6iZF27aS{qO&`>d_DB%qAVo4)Ky^MlIeC z_t*dZKfWS__rx*#$5Xu|axO{i*d7N`zQa3Uk{B@9`ioz|Vy3Pm4rlXAa_F~!q{PI8 zLDy75TiAR1Hi>5vN>dEa5gnMd$x6L!c96(cA0|P;Xy4xlE`wkPK9eUMf^sQa-+0KJ znV||E5{FVvXN`aSWlLOoxo;h-bp`M-+9nK%O(lw}-GJ1q@hx~H#Qx?lHq>u><9)^| zQVghvZsS|uE_EJK_GR3>;QK9?CR;X1#21o8V)Zusk31P(<0kmd;xf~l_^?Nbu>E2m z=FeGCXxm4(I$uLs<14+yRNwblie_dXy02oJ;=@M>PhoF*8$$d{(8UWS+{GDts%-KX zdlSRO(eYCQpX|i^GlLIXJVr^9A-hE4@T&!Jc#rd4~_tEy>$j|xk zg1pZ;hnf2hzM%2%2=(%Qi+JZt^BvuPHP9~~$LDlyWBzl!c#g+kklo{Fw_gyyu^)~A zgVp{jgb7^Y=`V8R)i1f7FE0^h+vVf?{CY=zErh|4q_Dc2q)8a&$YQ{sSvZGe2E(v+ zH<|3D(Wi?UykQ1{%%mf92S*Z$Fh)Ifih_|1vhN)%MF>u{6#*hy7B|b4u@u%8|QRMI^(FC444%Uy#svEL=MaIYM zLw&U)<1Ip{xvjp9$h2i|57#0Y_abbN)>u87)Ezs@ZnOT5g_;B=$D7g8e92o zU$if^mAOzF|F+L)7l{XSF3cZV)4!*<^SKbj;~$s+##Mt}s67e60^H-i;PAD<6- z03^vEiQvclR_}+rEV?s-87y-@821VCu*gvu2^lnJd7Grbgv$XiM<9bA$y#O{`Gpb3 zHFOwcX}C|@T1?qdO;chuUUbFG!sh`e&H`X z5=gM{b9^K|3QpSwKpE&6?2RA1qSPKLp|uO3MLrFB?<-^?TRogWF3B6oVLr6g1#e*K z0#$uN3Yo+g*>*43;0NO)YTp} zW-@q4lm{F=J#$}R8s6|8%I==sD&>Kg!R^?lLSiMt4tDUtcRnxtpyv-2ivuMVQzFNw zOj4*R8YKaXgP2%Z4L6CYgJEo5G|I?|DHO!w9_SY%+SiBmLrWwpK_TJN-k~5?oe?~% zGY{Id*_>H*O21525*rf~?T#5#?&zV!(lycDSSbbui6RNp8jIih4kZay6UX8#9V1PS zgw85x>#N&Sdw3ixjY+VOsax5uJ!ltStJVZ|@mGyY#w3!P??K-}A1TH`A$)}(`7paW zyVZ~EF101DgD1t1{0AZrz9e)53bC?{52ol-^fXL66lPU%c;apRlsUvs6|lD_)E_GN zRl5&ypH3T`FTv55>F3k2Us4hWA1TY)?Mdt_62L2ztL6#&3)Qby`~vQ`vcIoicTWu8 z>g%tj|9xZo)M)5MzOb*uo2PpH1vySYb3#2NuiFRXR(VbY7)H1}xWCKGK=qMdV#ol+ zJ$&y?{(3xlOrZdqp)DgJNg-Rt2ZtmQItL48twfGd>7Xb!OPT(9n zT$<%U50bhZNbhr*mS2PDC9@8E9qhx*uKAczI4Pr}mX}CL6c|t)D!GZD!EHvx^@^{H zHbZxd4nA~Wf6D!64vFsfAeejv#nBa0#hYPMR0k?L!Lo%a7;Yk+Itk1U$hrZq60Xm! zMLK*z0^uxY+XK+PAfq4IU@!5}E*fhP89@d`ywd7!2pX>k)sKdF;GCAl9Y{9D$9P8n z91mm>NGV2Qfi!W)RN~9$ZIX5-tGYj{v57$Ur2y@ZzRYn!vZsaUs5V<CC4y_lReKuc&W;PPj|D zLQ4Yp2ryF}TB0t14t)F85bG>~7GuHj7rXWamzJl#gaQ#G{(qt1Z2rVUKKoESh{VceVq_dtLa{a{ zN%ekI;lK{~=~&>O8;%R(g8IEO9ix*kS{4`3$FR>bPcZ%<48$v(tL77sze=PtfDbzL zIlOD{o(=Fh@bJC|{!9D#a2K?aFT%gOyq^B!i6^<=ZHF-Za4SD70w4bQ=gmKVll=WR zOMVJ2rzqx;&jTM1Y=CIl9N0I+@mDxwRwt|a-3@?In-`2nAx;M z=jdOMvB$cDdXt3;(v@(upKTy#r7zTVxe&krGGg?reg3#lIj?%;NLq{vIw^%lhX#G5 zE>&FI(3eA)%B85bO}c=-u^LSDhrjVSlGoVrl{0U6k7A0(2w!J|(KJFZaXkEwJQ$Sw zK8^MIi7xf<4_~2Cpl3Py6q3h>%+yC_lV0-X^>ZJrpv^JI9ikpT=-985J$xjx>}!&( z#2`Ox(taVnzOkJ)AgI}m^--J%FS!Ppu9 z3F1!@d3GnCgnBKcm3(1t<>y764qhE6Gg2mDND`M{ z1L4vXmv)`)%RPA}QY37lnp7|Z9|L8RDJ~!LKnY6+NAQaAfd@p~zrkRXb-_0$DlAzSP&-rHo8TzC` z+u=jk+QhO3>R!EA`6g2WMCXh{tUP|)r`b&>{5FFbqEa{xUy;2t~AV^2}f&$ z5MBA;^ffyn(eJ?pc>6E%wn<90DYZCbly6<5ezG%Sm(AyR7pd=CqXXYiQ2(lKJYDIT z_W+)Ozp--<#^sFvpuiW1-@~W-CbhC(#{2AlA?3%!{Yio41o9-oUr>l+ZkJ!s{a?-H z4v_VlW6IDoK)?Mf3EY1&h%w*xF|&PnRZ9xL?7=|mK*s=<(;0)E_hMzh1CIpo4`%_B zM27c?OR&65_@BH!CNqcFIDRpN(_!>>pOcV%hyXGSye14dMnTL?`H*P)Z2*UYZZMdY z!WUj`gAYeSwpb(E871(F1lbuURPqyOzM$Cbrgpq1a{U^&)nR49=k>3~&L&MJ=r8`V zXt&7Cs8qHTAewK)XduUAB@;C zDOJo>+l^_DJ+LWfU#p06g<|^?3Ax2g#iLIT7E=kBflER6@St*D?cM1~D!N_Wg6^ zzkSE--k&acK}>X_$f=B3K?i5#0P}B#vou0rK;}}RyEn4T%Jm!{zJoO~ByU+FkGP3{{5xh-W2hKOvc(;5c;Y)i#N9rqn>yg@u-k21$aQ{w8J#GidPqgB zniqZ9DCATHEu7dFNCd2F|R(CE|H z)2{5nT;B%cqWQgRFK7^`gyMdAl<`fX_mwY{XC{Cz7=()t57e&hT(=)kc_GplE$z|! zLiT=bm@h`_yLM0Or~N_u=X&&l-97b7RNB|H7c_T+`cedXbTQoSy-vvvGVU?MmtB(y zqPO{B&9{Gkc=Ilc(n;8Qp3k5?gDGwF`_o;Sf${0#+$ZL}V$8^p??pZXqXh-(VUYlO znV7csYlX=%fsFVwa5AHk1t;>?ahKUB9JS4CRQ2djgvnPe#~~I>d`6$ayFW*Uh#IAl z1R{_H7y5vT&L9}qA{%I2LkwS?b<#)^8OREtW@)8XLP!%yKA-Z`i`-*%NR4jz%`~Qc z-sr)2uPgO0WPg?qQ`wgWnmP%-G3%xJ?sN2J#wzh;AJV789ekv*{Y=NX?-Qa)QTCg= z2@QCNX1SDYo%-v;vxG| z<*8W6t^H@%epKz+?q{&CMc4d;Dl5F(3O_ReTnpc0yN;c`U)uMucOO%0=L7P-$c=LU z+xJsq!oK1J@nesWAJo-7206Lk$}5Y&3}zg845UdCIAgKA%>e%{Gl1{@{L@4Y$2~s7 zWb2tN6)(Rr+sAmz<=Fg+$R>pB`r@%xyE#c1Jm|4M68XsH&+h}@iAhczKye~| zlG^wJYDAfl#1Ci~M8{T;I+6o-4AgqT>P~Vc)da&hgw0ke%2ZrHhCn+6Y^CFPr0no8 z8vy?lI{->2H=ACBQ%yJ+Ia*YX2K6+~ZNw?~z$aT0o5Pd!AtEOBB=;I#|09j=DGBU@ z3xE1;sdJT@dUC73Q0CdjSw5D`;6;+xRpZ;ouY; z_#`g$r8>@f(oeaSlSNyx8Lb#WJvASe?j!2>fsPaV$PC6U%9ky(a&JdR-deg zM6#YZ9!X&A?7foo#qLCw9DAIv9|K2EDZQVuv1$8ayAlc^$Y0dTZ@3EP{(-!UD#%wh z%@+J6)g>m@ks;!jvav&wKaS_)7i%I$4ER|?W<`6whp54g9Mg`0s#H^@gIFrHoSB!gZvt-t>Q$S5|W7kxRFI7j+8Ne1-9`Z z!O-upXG;!aQjva$&Q>BKT%t}~P?DLAa$35ny4f`;AL4@%-HAb^CLmT&Ln|6_#$2mVFMoMZ@o`)XgHqe5 zsY7MX4VUB(jrfc%{3)%by|fx-YB~^=z06pS-N+!uer$5c{)E^CpY4}1;rL)bamd3nEfeko#TAxnI|PI{Jyw z(YTg+xXp2Kh5Zu}z$*_PcJ=#Ff3o@S*RhvI{<(p=wtn4y>E8ZOygfm$(d+ioZ`)TA zfevc?+6PbSx+KwJ9?h$%pJt}R0jx(VgB-IZ&a^mqhQjQLvvm%ElTbu{_P;tgL+4py zKMwA)M~3tL&XQ%@fw;4IoY)=G#ljZL&ep6m*19Ouh>KS=S#$to_2cr8Y51EAS zz|0`6uImNSCU&LbAC)8bB~+*37Hi9ZX%CwlEiQpI4Ymc?=LL-Y8|~ZWn3gS z(iapNd|FxE%qsiBqF$9v1`{v(vKnxJQomx;%|To{Y^QH)uQ4BGj-BH;r5>;>(C`@x zBC^6?mmVMbnYIZZ|7dVr#m|lD-Y2>!P5z2;0TpE|ZAan)WIH~7R;+7$8PPNO$JKv^ z1JALE?EUhM3E;z^_s#qmir#Q=-^w#0@cQC~N0&jMU3q<8J|o0uQI5~+WAwUxmcP|s zMFg0s<8?3oA_%W+$-*2DV>9np<32vN?%V8Q2S8>@*tZ#&7(BT*@NM277@^8#mXG6{ z*%^m;$dL;rAC%~N2FLvFus7AG{Wfo)-pkK@oeV;qMOj#rKWA!40C_qknEH4btXHQq zSfMk^WHJ%)ApZI1f8PB0*I(Xq_$I%C@*zI>p+5}5_G@Suo??v^{1m%D^CW|v<-;MV z=tN+2nEAX@MmDUSExe$PAjt{*!&>N3GjTx#p8i0Dp5!?Tg~X42#J!c&-?2mS?^uwE z_u^*-SPBWU$&5U(N)Jc=u9_UdUVb^1ir;s|$4_M8WxwLik^SNqQ1mo1Nz}Gqz^ny$ z*3qxIFv(P>ak5#`?8ho$IkqPb7z~cb^WbT7`qTa~a~EZNTN8=TJN#p&Iv*3j(3(V6 z$YU}%M-qrO0QRrdi>uV8wMNF)u{r2diN8O#91c9e>|?&2=?~!DBSDDHS?vkdSL7QK zzIND zb+DenHiNKO4(L<`bI|P&yKW;lqTol58Ab>Di1>}f1$=eYtu76zykTZjODIrJGN1{l z>18rDz6Q|wSStYH7F~rlJ|A|6??#;^+_kvWi^FRV$g!#IN;a9fXjzL`&qnx5Egw|% z>q>TdBGvEsq@-f7s?v6++U-5{jdigj8$)uj$HK~O%})TQ0jqpxL(g%+Z*52BFn;R5 z70={PLt_lnr#3P0552)&{M}a@Ut}BV_T_@untFp{f9$*lPb*~49XhdY)yAe@E~9bU zvqyAh7gzS6<{!P+9N1^=@=Fg--MdvEkHE8{`#8)CaE_D5V7(sCUZ8UevB&3bmwwy+ z8WG^2bQUEQ>kOtdppxt{(Z(#uySx;dq$~4iZ+SNiC4wYtUb00n$=?p5U~&9+IPBWN z)+#eN892ElD^}{kasfBG9bCbVY+gg7MUOF@T$u`T6TjFpT5TUPLzoF4d^B;5j||t| zpUA9dW)Hb1u|CJK@r{a!Tsu)?uJw9qNRf;p8<)|IJ565eBewb{Fl>Ut+Cwexvi%!EHp~R8KmAc~<=G-L+sX}8rwxZ!UuXb>{Kgvqz17Fm{9^?*W&Fg1 zvXWV`FnfKO`IFRD*5T_{R>A1(VE%zh((eo)_SQxOiQz8lVJ-zLO=jzX#OJK+EGVzB zY@e?ETl#Z-Cf30kIQIH|R>-@KGNYQaU?u?#3qhWs}goH&b zUkdeNr6!|z;Igm0oSwRu*w+s*#fk#rAdH>GJMN7nnMYQ+U}j5meL4JxkMb1ZmymtN zzTDDUZ5olmUcRCT?UL%sRTL+<DPC5Dkl70?-cn7Y> zk=9QF2q{<`@cA?8uGj=_bZT^Ccm#7rzh>J&Uo_8syik9W8atYO&^UIzU4wV9mdFg? z>nwZVy-x3bMX&B24nM00_q^~V^|QSBj&`q4JlE~-X!-{I@)7VU(G2!n2IgUq%RPBq zCXKx$T@K>Nyw5#>GdtqxILT5U6iAZvK2ppSMhPrV$|PU@zkdF5SVx-?Gsza$izBxW zcaRZsjwIRh;fY9oz_tT_2Y;df4EGQ^V*}O{5`!JQ9caOx1)C-~^Z~q-BasmUemsu6 z?kSLDDqCZ5$ra(G&_6}pc12qaC0x;;D;juvxp)P&k%s;&u$=an7WVFxA#`K!W!nY1 zar7PBCUqAK;veyg;q3p!+WRUe)(pJtBgDdM+yD*%Bhi%$#!*)~ZAjf8+9nF<_zy&R z6+%7*UzuelAxpi;fUIoA6rFg61+%_D0|OiRV`ZIcioO6wkq@-s_WKXw6BcmbxJ1zX zfzB|GJ|QEq%(_7zbDv-)rRj??i<}tfJHwcYMg%-z!2il}#NaFSUtEp8O_0AC`*S$w zeQ+`KLleN`0J+$|)m}UTetTXV^~C`51w4CruD_U#pAE!G#uL{#a<2bu-){DwAA#(@ z;~qdShxU>vCvJZFtpk4cdCsv8;J%7wlZX&`N|XWeJqcPb)z5a`$xW^i|8|0Gp$3OC&0xx=e*ZTbk2CB2Dl$CHgkrhFH zZrK>4cSrqBFVSYa2}Jp#yq#Lb-Nv}?q>Z3BCvz7TksqJxqmJvRtNk^*4XzP>m*$s>hd-bp z+wj0(E4|H?b2eL?9^-zE^3M`_z4tG^s*45%uz_E%Fjca=XRp3h|Jeq=MFD4@QV7V( zem*!~l>qLE;VG`%WWILGCAw)9J41}HYE9T77wg`NlXm6gv)@(eRvMA;gLWv ziC21fJV`tWAU3@m{fS@yn9I(w`4*p;S((8T6RiRmzcbR>2a+2|eDFOV2$y8E{c?sf zJm@;ysjkSPJH-KBOJW^7NGU5f%~FD+P5P&l?$ic&A#&f@GK)Tfkkc3OMwt!$oaP9! z8R8nx)&zHwIro)PlLirU787>j0s^nnK`}973ypnV4{YzbPI(-GYh0p3DFa0tTC<;t z!_m(kXW+_GuY0Bd5bQvG#7_jbj9q1821}i(!`GA}Kw~Gmpd07ui!*l-t?!E+8Nifg zOVSns`m?PcBOjXLIo78M)~m(c)fcA&p08xUJqYz zZ!wVG%I_V4dj~QDS_icr=bUh}kVx@x0f|C%;F(bIKt+xdb#l4O0e>SFITAzoCSqU! z1;D^UU?#3lu9Doq)<} zB(C6PLC>K)ve)wll{VcDzSMTN9^rRtv43_^|3_Bf3NPi@ z;(};yr#@EK*UoZs*|oNyTSkYbNuQV4vmd$lbMF7FtdUvN>e6!mO>6@KsxjH^Uh-di zp*Pt90^^N+`@bCkR~AA@xVE2J=}#N6rHCtSqqszQBT(iD(@4n%t}RwmnO?{P3pnHo zi_pfR40x0t&+vjUIp}b@iE6R4)mF%}T|}^r4;m{|?FZHftn~-j&mrN^#_c(JFD`rT z({%vOJPe=tUyegw9PrF??4@Vw-Nauw0?*!aFKquVoZkE!j*aU+UbpXt<<|ObBG8j5 zYcK01S^Mz*?>GPa@Big`tEXKCGLk><3*@-)-aoz>)H9rs7zW^cdDWRZ61F_c;rJK< z2gD>{ULp(Cd@Xv)DrLj=aera_;o+0_@d+P4k}RHH`*O^%;0^9zWnAN_+$Ip+Qa_R- z|F=oPieEEhh9auWgz;%&xOJ?D=4ju3uOaQBVTB}f{&C9aehl!$i6A8yh=EE)dqD=> zAYw%vh3@dt_Y+~Zl**}IQ{PX7h-~TfS)J9?q zd~I0K*0!~5G8ppsaD%Xwmeu$Jr#;{DVZS zT}DjbIGzUQqWySHpQn#VovM#3J;DL&9G^$TEjfS z{3DlT`Be@F0S3W$evK<$Yqi3E;c@qKjARjcx2bWb)|G_Ky^w zKF3dEH*v5HtxIE1ywWBPyU;i4^dsDjnPT8Y1v*8HR$VuqLjZ%4t;eMJB?&M<#n)U{ z7d36KZu^tth#-I&5bcw-QM5BWFd*9p5^oYsX21J%J@lg!=$;F@EKe#Mi3n4rk6&Bx z>0G`A>x}c_^(#Nc-+n*D^F`1v?!^u8#Uk+VPJ1!Eaax&Gq6Zf|ei zea8swX_P_HfsaHXi5vIikzkRi^d7k#RN?=Xu_u}znBgKxx+HFUZyU3P&eVZRvcXK= z{2Us|-@8Bini&UFl9Wspk~@;PyrrE>lKAF>8u@binwne^{^yUsqZ^x(&~#>!X|+hB z7uniMHj0-abcPcDvt+i0*G69k<9_qu@q4`jnA1^@T>8f4Y5K@E6||MZWC*QOO)yCi8H&KUiY zKqQH97A~*7FnJ0&a&MF5amn;;9_0AII|L^|Ytj}h25|1}%kk&TA@z?*41?!@n>~O} z6dnqB^X8unsL1BGZTaarej(&-euFqN46*n^ads`)WTd1g-;7A_FRWyw@nxKK07nLY z&^Mt;1sZWlB0(SZCA9Sofi%^@FDnzrkWFI5lQjulgwPS(&FD#kTuf|g2Y`v&iVVOs z<8x%d#8;EQ#N!=t3kI(s0pchT!~%&m$sb8C`;Im#H;MMAJbZ(Uecx?xj5D#pN7^Y( z{^&Y>Waq~j{BdPWF4oma6AJjOEh9qQrGqit%M-OF7?a4o&99r}NQjw8y59AiZ96Irf0=@8SM{|nHM)M|q4Chwamae82g3m9 z1Gtwmb@q+NLiFdw)QB;`8Si_`XtX1AS!ky;9;e=e#j)^_%Ny8Rmby!r6MBfvMfhern?FRf+J|Cl6;`vB!R5jubwcNkbdX2ykFfkC;KgVPA#%er@Zi+zV#j0I{2dzDEzs;_@Z zP#D%eGE2z}i+X?!2KJc|a`px1nJ2;}Fo3Tdbbz4apR=Ev;00@E`xMd!xLOg@T1b>8 zJyY*S_>mq8o7%?za{(r%r=${rcpz^5C9Y)~r|koRS)7GSt-S6VX7Wf@oxz2-%k(9l zm;`Z;=bsv<&q4b;Nzuo@voI3~7XHK+V`LAKz(aG#(xYBt7C&_y&EFP$!pkMehBkN_ zMdA<=@gTPa8v$JDmf21E=WO24?31_!Q&*Q#!*BtL5q)%1^l_t24ffWuVv2i&#oU}RB(cl`c^NMvX*~p-K*Zggu7q| z<3hTp{DAB|nWqvKYvoV&mz3=-0Xzlc<*N?|{pIa^2gH2w7!dwdg%jAV+#>Km1RTcr zPLTMqWaf;gZa=)u)aeljUxHbP`@Xvravqf+7Td6&L zXNa6bk};F2e#HI`iY8=9PM{;hCD;!i^IkxF%>9BUrEod6Cm}LfI$@L^-QaU6)H3pb zHpyelQZ}90YN%Do+Mfwy_HQZUzZ)=9j`hJyrGLYx5uXEdV6QG)79B~PB10cH2@9uu z^p%xRxiY1bgtMRi$m|xE-*-Qy0zg0P&$QhiCPG|tXLhy;pRa_8WRu70u)o~5ToTP^ zXI6`^1EIDY{*BF2H+HlLK;z#28j$L%GdM`5eW0VGdUf%aKH}RSNlNvJV-2CuHrYR7 zpe~^0)1=hGNpEbv4gS3X?)Hni-bu7i9&8-*ItpI{R#t6Q0@UikxM%GJ2zpQ)svDd} za_~(s)=zFO#cKNZNb` z5BH98RTmow=@B>RUaf$e|%#@3c_CoXaR=o0w+)drh$*Qz^uX@JX28~d{{M*0AYI##9_ztr)c zEFL@PT_og%WW4B`1wE?q9lxa0MmJj%+Z+&0u;H_>=xcz~V->l4oCMUSBwan*$JfIy z^~AmI8T_%)ggb)u=UA&;;F@gxd#(>VQ#peDC8LMpmjoZ+e@^$gywAyBOy3f~ODw*! z_Ow8MCHVJM%NOl(+WNkxUJW`Yo?E4BtvXJ3;1k>IUdeJ1%i_>p!goI4QK-ZobRH^Viv{Rj{!J5H3!Ah*`jmSb`l)warC*T5-U>KT>v2Nd z;D;8!@n5bAHNhHrmLFHHtkIk}n6W z`se;V?F)|;+8i%#fgYP1e?YL2(pa@F!MGNij*Ew!J&IiRrK)sLwTo{37gT?Z!q`E$ zw#G_>nq4=^Ey)+M!L7fd>8NdGw(Kd2HnpvzT^c_C- zwR0C*{U5f%J)QU-7M}_JO!3D&z9oQt*^ye#E_Bzju#x3^FGaPbw#w z>-LFttKK5;*$5nic?L@cC$4!N+i1?fa7hA-=D@`@#>gU0;S$M>AzX_*9q`_5=HcvqkGCK(+=d#uaG#@K#WLBb*K8Eg)fnI0sZiK?BN zE4EmWaUy@%rvxE&Qdt&gBY#myjlLTh`PktPaW-wv08cyRLhs=3nlLh>#IKCR4_z=Q zBC12J=e!^UUoYwZ_$@ZNBz?0S?=>8(?V~DLaj$1zl#OFJorMsBlT9y`>#_ax@_qKH zul>mkCC7^UH}Y)z3Yo~$ZcnYRZ`!Ak4!WO>FMXjOn2%K!8iQc;aE1b%+|71%O0G?1 zg0_B($;>wLHg*d>c3EMe1`eO0PdRu|**z^B{P9!KLRKsE-B){@!dN|znaH>`v#tFq z|D?74pF1%gzldwsxYvEWGIEGt(QO{gYmhtbTLO3|9OuT<0(jPVZFPFE%WL!PyZYk^ zhtB`{`|!KQ=?4Df2<({KF)+s!1Ji!H9BG?anG$5c_7ZMR#0*{zo(|ZUi$t!ok{nnf z%i!mw<2SuWkISo!cU+oe%TX+@#*2q8gRX-y0ukKVrav-+sOV_sT4$2X$nFde$|9b8 z+X0>}z9PZ*2W+fRZ}q6J+>pz^vmTv;hPQgGdqQSq_%!9}WVec-)T3eDm7fkA{g9(u*a}J(ABs@tqE!sAh+FngVyL4ytDXk4!YANsclR}ZvOjpLn?#Ew z6C8hSgf{zx{gKa6#I0Y@;D{6XmhwCp>nN-h#$k< zjna1X=qZBBo_aCIo$?lIMYTI#Ny}<^gLc)Fy57>udkUlX^EP;V@$mck@tB<}dSd=m zcWw#bgL{jB{yK#d!9(R?>O+#hIPJRs*X>`tdpGxANd!2qoGv37=t2s{fYhsq)H96o z!eAayVD@Lnh3NW1XA%izm?2Wtft>s9p!d5RB~7u)J!&KX88}V2Qt#N!APttH@<~v_ z&Aod~Itqdu*jdMi%ekVSD-%HPX^T{o$U5yzAv);u2MiTDr4z{2*V2ctpjr^_mccNM zNS|#gk^1_Fe*WqOwhpT?n;z!3liQE#v?u99bed9)!UbHcZHh~Sg&jxiiEonRCR}X! zIX(6f_j%@$JPBLFZ5*1sZP!3-U+|@IgNK0>u=(f~vdk#b2bKXy%K zoh&^^XYJt120U2M0>YLrHc3)48%QmeftYkpq1Z>F^F-Ocd#`chn$VC#qXgYrKbu@Iow)A)UH5~;&4DMCrQn&e-h*9JZe3B10 zfDwc0c&&5HAY%eI9+CMmV(Zkl>s}M)GxT?mODB zY|mfH>-%pbzv*nYM>2p9Jt>6G>=bg?z6wl)xL5A-ba5<1UOyvDqS%3!K4l@Pz#0Eob*W4f z5$YYdu@`=X-Jn!$Y0#mBq-$1a9|d2IM*T=E@O6EHjje8j2$rC@Huzdeown|{8l98& z$<|smN!-|}QQS=P^;Sj&(?4RIcPuuI|HG%JKd}$lcPZG#oAsL(g(tBueuj_^8~@n! zwJu5S`l=qV1X0h`Vx|E`%SEQPun&*Gw6EQ_Ql#PB9sP6AqgP&JjQb>;K#tyFS}V0r zUp0F$8(g7TUE356(3U$j8z71rfy=f=&Pv!F$;0;We}T=V-*=sT;LyA)@a$GB-PzA) zfQP;KbrZmsJ`jk{%kPo%9(aB|ee9{``KrI22K#$XyuV%FZXJ5v5y-K}fZ0T@$qEVJ z`#c=*$J@-dIlI%72QzpK#tyKNVOEReZeJbqo?i~xK|gZ*+6VH!%Z}Nv)bm#iqQXoU zgR}#6z5`}MNiuj@v@?xtn=tYfVW32YG*8SS0g8vk$3MPK4E*UsKI$?Ex1znQ^uM-A zY+?%(e3-I{1Wkr$`LOZDzFe@YmG!72f?VS|2{85(6U)f4Q8swkJ6|?cL|P;&gjsFZ zkd3m6DtY5j;i#Gj^qFDwqr$!s_rKL_)j!A0jCb}e>Sx}!oUSOjH23oVFbuQ46 zKm1C3G$gUSs%C8kVg6VVj|#Fa*2J!;V`>#I&9$poA)}9<*g-znB;fIeaGL!=#M}w^4c4#7aBi*`6(|xV8OM?~vQRv#tC^>mY&l z+ZOt}d+ld*^7SNu?)f{r|7XNwkHhELeryjup*wuF9}|0w{ygV?L1|A&SG|XJE4K*z zqzLTMw}V_0y8fz$GzaSpbIitNW{y)r^NMI@aAcN<uu0hgH>eB8m;WCh=*X9!bebI@p~Pw}zIQZUm$ zF~X{Xm8^D%udHpI8~i%1Fl3V}lcOe0i?Tk{9)kS2nk_Bb^hKnq?lod~r-DSKF0z%# z8j>L=VM7T_HYDxDYZgRpoL00UFSA3LRH-2y_LNe$hSPwU0MkdRWY;MUpC($jzJSD?^#J|0(M_O-r; zkIl1PFt^mXwpRWC4tYe~9Q?I?R*o#)Q-#=F@oM20T+e=Z!1Eu`$Jdhp?ve07AYMIb zkN5L2xwOwX--G%14tz%PU&uP2ME-@{zjgVQMPLUxj!Tv#Qy)JinM(rTW!_T)$Wy?K zWtYQ|+jraHL&dVo&kMFf zG>HcH)o}>#*SV8ZowaagE*z7#2z}tUfJqXVg34@B?-h%#vrHX&c~GD~y%u)zuSlAB zHg$-VHH2rn#sEHJtOV#VcDqbTvzi0|I2V%G0j{cmBc;h+zOMSk1%zqs7CwOZGz1d#X0U>l(@ z*)Pu6P8@ttXZ*%MV|ua~xg(t$9QzR+`umoBtW0(yxim6)l2@DbsxI~z$jh#KA0PN( zTqV&fiW(E4jUC&3V&m{?)sfIAj~?8QFp6qKz8`&||5LDY6#cD@gLbi0k_y$rkG*Z+ zunoqcJkBivyIVhGPL=g*)J~k=v`Vb*?16jz{5eQW81}b% znc>TTOd>?m!7O6F3;gaX13mA#V{G;T5oV?$=WJOpIL(+$Mf5}Hl=G0v@Vvgt%&LP# zF{O=f`d&oFeQ~ug12>6LGfEE{tORX?j(}7cg&eC@wa$j5$yd#z*A=5Xu zOUGu~ItN}Bap0G6*tu9!07eGUcR=xTmq<{pLh0aoqTP2$H91Z>`vD`%+K5}*YD_m zS^TRdzW!KwzR3pzH87v!J>Swz;}(G*5&^#1Uh>VBLGJC_oI)AYS>(a5E4~YEPtJ!- zhiPTGoSE;z@l{~36pDcp3|3QT#)!`*oANIwjUBj2I`$qia2E#Mw$@&^^yestj~$@J zggwd2&e|RFRH6g2DA-HmgqU{vd-7>9)?b8)$m-~2R%{P28yJby21}U{4A~h}Md;V; zBa$_e=d^dhyY9EVs}bM9UjE49%%?v5TOV*Giv>sFAN!8REC^UnkCLTe`(tMKocV)( z*mn9a?Mbi!&pQE$4Y4L4WTuzIDn0PxG^``g`kXeT!?83l!3yHkE1JgGmoYq!lkNKf zDPH#}_N*Bv7?naD6XjttF^xe#+QAAmSnbcTzoBKJh|?;9mql#^YOf-zbtt3)|5lDT z9+mqsncZ@a(FE`@?mh7vp%KX8eLfz~^$F1fq|XNr1(qLiO#cWQ+uJ*V8sbB=mA`Fo z5qOmm$d{8rJs$>TKAq9qOQoUQ`To+NERioAi2++=Sx5j6H2I9IBq%fa6VWCt(l|Mo z02Yg;HpdjRY7FYmROJ;k4!YuDxgX?fS1)1{vkc$a1iP0*2ROp|If>LJZ#xCGK6R)M z0N6N%dns7t&m=6fo1H;xzcq+V2Kl-lO)K@&3`2~p#AQ{M=27kglblNBGg%23bWB!R}Tz;+AU)1(*D*y0T? z*fm7J%E}qZx9eMI6cl!YErl z3~@M4#2b7tF*wO`m~BdL2M+V{)?WqG1@G`N>f5iw7kyg!f9saGQ4-Tuo*aljpR4d> z~ufe9UXiXFq;UH1lW)Lt`jGg#Kk0*_uX-iV}4G} z%fBn9L7X43V+&1pjta>L>|P2j7ptCxwNJk)u3SY9kg^(U^@7(=F^C5MB#w8>XsXnt zkrz1Azr)^@-*@y?Z_LT;h=Ws$2nEyMi}v`btL)D1k8Ba(m>|a47k@B2iQXE%@w?Cs*t+o&!Q85<%muGiMaE0HrV5Hx1$WM)e9fHOS{yq z&1$_w@yfBY*scC(1kSq-q09hYlOEOmZ5f{6o)LyQo`21FJfoja>mY!Sfd0~fdRp&q zQvZ$!Y*IsV#w^*p{6d8H^JTzu0QGAy-vc)!9GCBfPTl-VHYY@|uxV4Ku) zEFl*x@xY%QA2EHTA1?GIF)X?MDFI7`Uo)CF=Inw^)9~-@h&e~ z-Zq1sgXr|4=aeKEb5d~-V@zTsoy9~#5)Xbr&OlG%#KNz9goZvz7)ce&Wn4o6{55zv zv4>+aF&tIIfev1Dj&H2(rU@E^BWUDInnY7xt+0tW>jm73*xutI4 zkw74eJ`?|7B>B5D8;h(mY*S1Gr+#rv8_v2q3z~~=iLLt|H~pY{!S*%*p`pcY`qB3g zc8kp;1o{jm3I|bdvZ4>`&(hdpn7$1Uu~NH*4BJ+=V*>&#x^35o&qfvdFv`qW3c!9{ zqzK05MHl*c0V(AqUIL^G4s5L4%JU+ykv?nvmI>e-_H)fs8gJ03>MdvizCk@2@0*{7e`N17v5D`fDG55#ZZc^vrcRuBxJyrk5A`i{M1`8kmZkA#k5HTCRIH9DpV5Sw;Cy=s&wEy zlLS#%qmc&DqUcnuPQUadbvUD9A55C=_zZXP@G%-JXqM%EF?q}7^3F`Q|Kc77qB1x= zHrU5`33zP1eU~lAO)#6FM%0->;xhXp`@j7O>P%ktsbKyA$?;}#&aB<+P3+n`NH+Ah zJ*n?>^G+eY94JSj4vjxnSrYGkxJK&4$|M*m+ffVFXsfGN`NxH=CL&kAHnufNYj(5l zgL3u=H?}*6n@_6TL5W6yZsoxU{H6(D4y5a2;KAfnfv4X zNjU~xuDm7zbOta9hRG6_1os;V4sr}=of%AOk^EuLcYIGNRp18#MWzZWOE!Butl{v{t#7IiC;z{CR5=U0kmu2IW52e_L0oJ|RD`nQx z0T98n1NfQ`f7@?r7JTKS4BLY-x}#R%tXC#m@Urw_5F;i|&1T^~@4*jF_f^Q?@{a*{shTd52#OCSOaD?| zd8@RsKRkm@ee3|2QeL*x zhCug^GUB!sE~mXeq@Gv-_zd_&wSR%wFOvY?IXFJMW6np>X9aJ}I}y0W?M^sujavjx z5#ap8;N#XoErT$FW8M?TtPGcJDerjN)pqI`Wqk!m=nR%`|NQgKA6ZBsy+<#2zJu;B zW)VpyGDu}a^odoiRc{C6JA)XqNdp)_z2xc%vftrP%udA}k~?2nvx(@POa-(Kifrjp z2lplb`5m+Tfo!UgEuF9d;lgx{Z__su>l`Ds8FrFyE{}T&T^U>Ys8Oh4AwGyTi;M*zR9_+^O){QR=g>yY>*62Km;PY>AjvGjD!f2$;4j;k-=5sJs? zhrq3Ji@i2{RQlE9DeGSl-mzyBJ+w|Sv+2ewE%`fABy8Nt!3UF!R^hn)m`OKK_xJ z9A*lS^CB{WWxWG1-lX0^9!!!l5}x`AZkSz6q(TTFB>LgKi%EP*BAfh0FSb`kdS<-v z0rV{-cqR|2@SwzX!7NIS0pZg|zsYi9oexQ_wr~%w0^O*fhtWCs?I-&r!OD^?J8b)f zO-Njd&VtWP%IXJ%!*Bixz$r>}T%kabMLn^g&XPWm?D5_|6DH!DcKfb^^xA8``VT?j zLAw-Ep-{|{F`nfR7_1N)6L>IdcjF0`$4hu?N52449tpIfPn_7EOJZhnPb}%1ovg0D zDT@xaStx9avlPk0Uz*)23I54G5MF-*)PRz z|7G33b@vv5FGXMmM+WW>+{=|&zxV(A;}Dj#?~e9|_q}Z9AUa6xfC%UEDvx5I`A25`K9WS{2~u*E^0Q6B zCkFLe8=48xrH-FY9LB(rEMgQrX3qkM|0IC*7qrkhal@T$bt``)2Krj-ti>Z9U}Hni zA`}`pt5@W3lYI2mFiSzDc=%P@=nD}hd_-KeAu+NEj!7iKVY44T8nY&VVvwLtf2xLE zys82HHX3l3PL1T7#H-0FPe^yak1vUx{}6y}LP^rzPy3@ontX7D8=C~uHLT;(_$7fA zaUFo|2BBaNB1+l))z*B_m}3d0=oG8#n!+eR^v})0+}Xm@E;3cT!>2K*Q$w&e z;k|rW{Fg_5?TFt!0qlY1p8l#>pkIuyQokwfH~Y~@eEq(86!ONnMc_A!fUh!{#P6TK z|L4pdgEljNCWi0-PLDI!mI3_3ht6g(JLo{h;7RUaCiR}-G3PX9cSshQ{Yjf8Cpyn{ zBpN%&GHWKER7?{N!2Q;eEFqc|2?l&tY4gE43xoE@%rw=92qe z!yhwy?1MziJVw}8zw}1VNHbe3TIw3_S|4b)7-pPCR7Ko6W33U#r5XrKOt#(w)&LDCdp+JI1>?|f{jVj$lx5qEyPoiE+3_l8hpJviQDhAO$g1LV2*J7vfrCL2CHQN zXr>BTzwxMzBVI5&J4!-C0z{Hg3nn9kkEFyn7Hs!VXIM$Lns9-2l+;Vdg-K>)UVKA( zdQS((271`3T=~V_Fm^jQX=oOE;AKCO;C*Cf@vr}Q%)HA}OP-u9ukMNbvEIdV|92dwGkO4botDom53Bt9pO+@HGp0lh9@fIoWi z=}sH^@(#a{1#=LxHFmWaGCrXvlq;;+r1GlD$w@l&8m-`}Skv=tb zK_c-$Ze&nyf&d|n*_ecZjl-u>_O6FF)02H@WrQQL{?=xD(Mdl1U>qWuB>_qdyslea zX2-m54&M@gFQp>q%a)NRNgv&b$-3BtDl+NICuZ0vZ0d692^{^$2a1AtgFoq78+gY}<({WmX!&X&PDGdMoYn-gcoY{t)wVyR^DTUO}UG`Uf_HHUlwb%u*|*WM>@VpNFvy+$#XL<&bgo zz9a--HzxH>_o9ODUa~%*#-Hd9MC^vPe3Q*s;dh8r>(l+G`w;z0=<@d`@Kb13DhXXlLLgjFYfpOJAub2{oZ-CYS^?N`RyszNOCW z@E>oJv6Y2!i9M3aLY{I>k&pf^EBI5lcy;dJPj%*- zj3)uS-UYM2z6tiG{4x<>-`w9n_pzTMb6@L5xkca>fu}|wC;SZXZ}UqYfByNOH-F_4 z9y2#2fV|k*8K?}(8QI2|yF0`f*7Pf)#rv zS~$;QNrE$pnkb0n<3k417Yx%qyzxylk%!P^>SQNzL-!+ZP(~&N9fvIK1y|bmsv9JK zX`2LQh7@7qA4z08Ta_C0UDkIT&ce*%@j)#6C@EQ(prjy=Om-M5%5$IKB!DDuZ$9Oc zy*6t{J=!F8?{lB1$=~1kRgkU8yI_#kBQQj$FV?+=sR}ZDo!68l|p(O-yT`aLU2Xa;)fxZG24KjxB%0rnxhg z7pj`ond;Bo(3eY$ey%THZ~cK8z^@0pX})9x=F8G=&r1T|ux=5!Mc|ncFgeK}>HF?7 zXuo^6m+tazznyJLjzAK?(r+&VLFfOT7mfBBqC`S!h9M%@eVmLlDlfHyTzm~_0@A+~vKCusxGx;O=x1Mc$RzJU> z@`ee(lP^>Y+jP}?MY;UTOeKC~@zS}b8v_zxr&EEVGhh&Z<4L`72 zPaa_1NLLZKC4g4}`TotjU)t|)?`Gi^fm;M#Dgw;#?B&JI1~TIVx*42xuaJ?Xgl>|T zK|a|*2i_Tc)qzif7+z<7I_QE=F&T@@r?fwkuw?W-24!tRVmPj?rgS7R!Ich%P@t*b zR*B_JeeCuAJubaY(HCSYCrlK1Iu{}2@b**uTR#q2{X*_QYo8)t%7q@%l+f^9og`J{ zfr#bWc9UoNx|bYLLB4pKYA8QwW2kZ?E`AtZ!kt7A+Vqg>?3X6`-QV#g3D*abF8TC( zF?vj}ABlnwf9U_1O+6}gG8^_Qmx({*KENh_L{JI)hA73PFmz`E*Sp11fEm&3t986e zp_R}W)}HVi7<@Cij+~;brvFtn2CT;OL2QIEqoV3(1qs!ykoxP-kS?21?FQW}_;xC^ z`cTZcIy^+TJ123wN&7C!S>jedN8pwKo}=+q^&Y-YQ+}5rV74ze1Ty$J03wrNiG+V(@Sp${ z2RZbpgh#?cwX4xdTYUWjs6(GRD+-4BsmjHR)(-Bgs&Vbso->!Ij4#TKKj53Zgg7S0 zkIvFHNozmCn9{y%vb$70UJw%LjQByh4B`<$#v~KhNCwm11ZVrveZ;+yjg`sz%+}pW z7NT62f=bfnzT~%$_kO%!lX z7f?SU-+gE=O%8pP5Ifs=yYod?lI-Hsnpq=Px26^%*S^~YoJ#0RG3q_d>!ExvOYZMmqNd|u{k&)vC@u7qw)B5+Fp zzv(#OXgnXC-voA3zD3{`fmav-zU2&JKG~Tq1E)zt5`=fTMA)Y@xirXSz$}0E*BzKm zqc{L&_!P(FAha2zOe)|=PhyjqAs;$mi!LA8%z#B~X1^S~MIU?z+$1KEX`(Pp9$)}q z{2wnAs{}fx0NSyi^bwqqs{d(%qd&!CR<0r%J$Re^6)Q2IZ<916y9vz11q&ET+$I$Q zK7ZjO0;~(G7X1oV6EUK|hY|$iO}vsmVv|`(rjJxY3je!qpTfsBNnrNn+jnCWQGWR% z^d^DG4W9FUiBB%`5=$PyL3jPpfUD6#58u`{`+*P7wNN(}B!o$LnTL2LW!xTLf+q z_!T0MuR4Pf<59o$9kh=d_ZhV1oCnVtF!wZ(Z3o+Qm_#TKhV)Wu$vY29&C7(7h`f{Snlw3Vb2&s%3X_J&;tBISll+hvo^))K_85Zn&Io6oe zulhEL#2Nzk0U2r7pns>uYmxLR#+taJPVy=cVC}QMg_HZ)B!SYft zFZo8BzEz_4i_X4A&R8zjP>6(@xVx@8yp-8o8Y=3O%nO9RyF8o+EqFy47wGxJBUCiU5N*9}5FAGizMN^LO9UoHRUYfGKj#O{$GB0vH|f|2c!_{D~hxU2o>fR)d-!>O+NO;rAW_Rd8? zZsXRrmgJoK|G#@;Nq4Wc0g^M49Oq<|IOD1wva0adK!I%mE;hSM;-M8sH7>LSFBdP+_dF@)544$yFP)vYx?-P z1=!a-F!C{99Yb+wY;jsB;)35Xa@ls`R1)?xu&|?$o3Hr!ltS=B@UuAA$5+iX{Gs(v z&ua)mFg*)F!Zux*P*`7& zLgfqq@5j}##~WI&^^)*QKUEV!b!}Hc9pvRMOsKIM+3L)!u<=K_zy+z?%5D$u0a(%d z{1hANcSz+7%?T z>Qpi ze@K5r(r5%8u06#6GQ)RP0Dg0s|H%vauj>Dk=8pJ@z=^ldq01~zc_Fe}7Xfb{BZ6!@b<_(%8vez8TPO@E_IPN6 zqBMtJbwj}$4GTm75FNeoOkNA4!ArM1@Ldl^!2tkch=PMHaQPN#zxjHku3fi&Ca+X5 zR1}5Ti{fnXHH8?4>3d3-iOkXC^L}|Y#EK0+!gp*7A_U~-!4_}z4nG}j zF*Z)wH>`ev7JT~P0g0ZcnOw56dh-2AWE(|AR_@Y8KSvjUGnr++u(QUl)i^`@Oh)f1&TF z0AzuC{7J6IapOebMBrUSz<)lIE%?mVer_xKP5C|Er0Qe|H+jOhIOGXn3M;Zp{z!^` z>9LX6#5IYI3=@G7jRf=jQOtx#kz`R|CPIf-3rR^6U1W-!bDh0?y;Ue0x^cJCq(&|9uTIMM@O)bt|8qgf9%ZfdKXcvzz{ zydP-HV0q;F`P8x%d=0s71h=t%UK0ZVsB5zdv5aG4wR)Oc`N7bYjB9~@M(I{w9At?5 zG<<#Cx*DiB(!SSd3f?SU1bqtsh8uZwXb(n)S8)hvbny!b*4{QFrezdQ_G<$3f1!an zW*@^BfE%XmUoii)lUdXs^zTnl0RD3h|9D+Lx{N>8IGhuK6M++fe2343?f=edakXc@1Kubbq_} zVy-gsj3dnf<%l5#;q1!cfS(aeK?)y0zFY=+*9ZC@LW?C$ zS7Ikv{q5e2xleBV=tq7AokDLM?Ipg#f2zTg+R1SpLX6DI zuwEsgBE{)YgCk7Whdkiv$O=s#TdupsA2GNae#8zWeYiRG^NCnJJzofLvAOeAe=c`v z|AC&RHa_1sZV2)HPvYqcs?pxvf*uvqQ2%HG~RU zZ1^BTJ{R^W1>hDJU-Fs24}GAsNizjR|9R`bO%!M(Q+BA_D@q3OA%Wm1H#;jPmV{Z0 zlW>a=d6Es4843_dqEmNd))pDW`f!Ot&D*FTuN0G!56#`mAy9y{_`^ShlKep&U)Ddg zYiDqngxOuop@BIz!wH)s#Tu`%-+~8u(e8pG^YvDkNc7>Dcw=$RoX`EG$oonRSqH%& z#`r;D*y50{gQ1w^jQ=kVOyg!cE#^YGVaIM}K2P|S>l1s}svMFWcXKUKlIn!Dq)B*= zhY0;57yF9OG7zOH#|a4_dxj;`n0AIep;w26#;+|d;a;ZYp$BD}zVDdn;5(n`>Wi_q3IxlxqOdoCGb(erS{B))|Rzc zcn{rz1sm%FLRNsqG7hl?fAPH@x#i9E>2=4GX}bNGkG}zkz>{A2mUUV4UOfC8xw>@g zhyameuE~q=xQ=z?#`pau=1NbmEylfu`#%jYV6X#$BPTnCv=@_-@bUi01HSUt-WV#j z^y>Vhv-%2s$KXFw{ulYZ2H%1ZmfzzU?x)(n-}R^U?~eaL0ho(q+y1*4hj=1zB5)$` z?jyjz-|j&18Nc81`@A7oQlvK-P$XC=Ab5x4Wq~mXG?{}JpPeIFwn%A)XpxcPFIfG| zVaF62G^H4VA*l{v$K5xj#sP#M!z~(CL>4D@z4Brm$YbkEs<0MT2+Zy32>5%%kyAH5 zQZ($&+)yJ85N&)^7~oQ2_aP8OuuKR4Av2F9{8>74YL2YevpVE2#f3WxO)n-u z3$i)g4HX|m0xE4Z(z~LI;tW}(_B2XtDD!46*fP`O(@aw= zudD0RYx^7j*YqFE|3gdq z2L&L`_Kp7ow-5P5;6&g=;QdE{1jIp6HU%KNDty~r3om#S3Oy(qJp6~9!ioXM05M{h zDMc1Z(eKLZeb-2|$Y`;_c#f!wkY1de!DXtMj434H{eE&9oJc<0Srn*k0f}YTw1t45 zSp*zkW3;YBN`uaJm4k6(p@7`}OxQ$2U)2v!K60bB>zoyq>S8lQUP{+%jMvd%F!b6u zz+cLu(p*Pw?SA~&6zCjC@Wv0&@y95nZ=(;5B9Qk1M0ryz=^J`WUp)mmsk2MaT|_Rw z74cM)0+pDdGfuSa17`e6?HL~1sIz?ve4kinJ@B?bsV5Zij8rrJjTPtXYOId}3=TS1 zYyh4Xnqo}9$A>JB)1%!^Ttws+?ZUjc|GB{rmZd}98aJX3|M*X{;eHTj$ijZa`&RnR zD0%n)UPynB_hvpEpc8=;ffIp0bp%Xu-tJ4Wlf=(gyKL+#4=jW{iNK_{NdZ1OChFLtr`Us@zoloNF5~Wo@%1b` zbW)rGHED&CfvWbMdja%kjFRwGSXtKh%P)Q@a#+~6zHs+23;{*yX|Rg{311(!D599B zZxO*l+Vo%x4g%7@u@@Qi5V}>wP$l$xeUz|i$d0_bt?vHu8P30D9Up%AoE=@h^qB>I z&6B-B7Xxkbwz~8gv{Z8Pay>)Rsrc7c>1!zvUrahjsyi5^u=|Jq-nwh=Y{-6#W;pk-G&(6~YU_r^I7?*(!}GwJYw?=!}m& zSLV;(>fD0r1~3z{3s~XT||se#OBT*Su zJUQnS9Cmv}iXG%>vK+ZO5xCaaW1Y$q(u}=!>Ww#pQB6T27$V?nV90cccR7p%T>|WH zn)WfJH}vSyBzE|t^9#MIRBLqc^8ur8Kf?Nx(Q*6XdcAu^>=k_VeqfP%{9o6E9Weet z`vbRt{{YGnIT1J!I1zZK5!ipXNp=(k776M72c9I#fL*L4Z+4RSl4!;hOe9&pueduJ z8Sryu#K|lhT^Y3?JuLq123>pLU~6{CdfS+!L9x~%PCHRXjwfQ9H_^w36sqhj=GDC{ zkZE^;!7d@X#p`;mVlveGS4QBim&K^J0yYNnA2QCPcNHAijW37{7A&2D<~Tm0(n)wu z#>fiqH1p^oQVb^f3%0QWGvmuVs3|JDzVz7%G?x2WK??bRQJiWXGhl6z4ITzyvyN1T z?6lHcN4d@`iXS;1beOJ9wd$$>9n2T}a*zs)E;TM0XO1ifO%t_$FP7*TA(5@++u~!D7AVp6lfWdb!9uOxOGB5_s^W zeMjAZKIyBo{eYbU@QUggoCurF%hZB*8Kb1_p&1;6&g% z5$M0Brl~D3*q!6EfJleNxJQZ)5h9%=Nclw3CM_pFzo%AirUrw5+*iI|D$TAG`8PNu z-$|-1z66VoKuzAkXo133V>DIfbQh{%wEzr#lk_C$D2K#;k2xQ;)IHfR+=3Ct=zt18 zf9?`lATcS$-f|;?+&2Bn4%_Uw=~!rB5Fr!3x}iaw_82}WDCW?1mC(o5KujO%u5SU; zD>p_=rZYxYdzrf%$ZhTTjIG{IuU$cSlSEl?oJ!EYhm9I%JJ$oAeZPhka^91Ja~nD3cw$S>Tpg3P6SQ_ zUPd7QfTpbS_U@N_4M^_jHb*C!ax0dj`Ixko0tNXzlyMh*WV!rB2)d1by!RjGBw&A+ z*JNEHXXVk+PH>e=vUZmy`1FNt($_D5r>RTXbvKKHc&~2!rg@Gmw}ZWLj2&M36M^lu z7wO63SZdj-VFdHE2sn)3SO&*_Upf*yZPmGcuC7cq(FX*xU2`=+*-?i`h6dT751VOT zk_Cb;DnZR3>x2|vDOPhU_=ETCS@T`I);4oQbFDMzxUm6IU2O3X2?b(k-bx-;ys@Iy0i5V{wGA568ya)&Hr3dd13{L_02ZD4& zP6SQ_P6V1B_g`Fg*HR*-2;6^jd6=R9P!GifHz^A>$S+toR--%2{44H1!FHZIV$l-=BU!J- z*3jr|W1vMNE9fp-d10c9A30ocof#}CguuWkkQ2vHWqey#+D=Fc#C5Ao#M08M(R~ z9)nKwOX-XvhZp*7bTUrQ3wdw*PtmVU^kCVd@AcvR0^u@N_Q*UYGc3S$Uc4^&7LRZB z1JbPXdnQH$7E(%z^*v$UW6;;=D8GYl!}q;aySxS{pa1>6^{@8!4a_M3-@zN?Ea61p zMBv{Mfg~4_7du1w$`GE`{pHtubqMJ!|E_*aLM09PQ1B$9Cele@k=ep!y=}VUA7!xp zlf^&!>@>ME#F&ImA*KtV!!t9CQutV*lgt=Y^|GJm=h}961zn)n5yWF*dj=PRC%P01 z>;+QPWXBS`?ilifGu+yB=QE#yR2x$0TR>H+wi)YtV#VhZTL?rUxRoEn>q4eqKa5;t zye&RHe&Dus0;CTv8sXw^?+)M6bPGGIg{Odf4V}+zU;Rc-yv79|@8UPSDfEp$MR5H1 zn$Hf#JsaOcqKHSsP;bb1`S^x;?>p(dx6&37xgP zVEcH#IH zVdxfI@=TGO#BITdUch4GBX*`I-Lo@9@&}ziia;EWl(=CGUq~#40C@4T%`oeThB#qF zzy8ek=P8Qa#s*A_A_kGA5Tf|A(2!Xli2+a5V(M=7b36{25e=O7euv$X;a@f=GE>Z0 z(1d<1gI@qiymMFt5+mlkMh0a4Kn)tFG;CVPG06I_BG3hn@aR@UH8d+b)65p^lE%KJ z6t-p!E2sV3o~}~^q5-r-?|U%1$o9yZ^m{$IWyPmp534d@0MwWfH)L$ny|7)*eFo>A zeKXR=<;&tmqXCUPG>$=G4Qu}!wC@pC|H;Wp2IlVtPq}Q;J=``j9p77aB7AL@|i|%$kK&Q+q|b1}ST!COEgK%E*RoXwy0xU(}rf zXMEGg@zq!{rbvs=Sf$$Wi?Q`}3LJF<#&wC$8-tpp9BTpjC13Aji#+SMumpAN#qrqD zsi6fDhdHee`(B_B>SBt?x$adSObH0BPsQFk^HxM8(FW6Ddj8zyEWLinzRjYO_t4#N zpzEpQ58h*V%Xd_>2s{?_81g=-KlBCCpOs(Lht6eV5XpD;ZyT_+h>ekmN_Du@zPP14Ttq_2tceP{6j}Mc<>+xsHY~)&;FP8l$j2T#cdKq+A1&?{Q>Cg= z>YxS2T}%W%#S7mfXrZIA@F}SBpo9-?1Y;ArWy=&-;DPmtq6^oMob{yGZ&bKuLyaWIH^*Y66%{K~^VDd=f+ zXY356w%`FqA1UllFMo*tST$HyPB{{r+=0R9Co@>$}Ez=^;cL?HRXoi~cV?EZbq=l_2F_1EOM+3h0V zkU%-eplP2|XjuGBX6&s{1Uc@GVr~<6bxCG!8AL0}M&f>oX z86;HZehJhU#4ql5MjKqV_Qo457S0i>&z2?us3&Fv^C4G-5lGFAMUg?RBAKk&d z5!O~H`c4lGpBNNZ(sg=?ea{$0=m&Ba3;3&5+xHH7nYyM73*-5c{^tk(NdNZ!pU3|1 z*Ej{>fB!W+D>xB25%_mRAi0D@#m?WS6n+$czvj1OyBkO%NkPDFS+?o?`j6a(`^a|# zT5wQ$JX>TkZF<^qWU}Q0K3^%)7A=YpikUnNu{qjXtrkRsl1>x^EIt6wo>cTUp-x5} zT-n$78q}d;amF@^aid?8()EA*$WNz1WL2@lmL&c$OEGA{g)T*p67|Aybey4Ukr=rO z0acsv+eywe`5lhUDqx3^eq>C;UvJS8_ldu9v4=Fj<$Ql<<8QewpPzu^r~R_i$7FqF zQ(bMaEbh)`SRcMtCF?(R--cL~7>B)Ge~ySqbhcR28#Iv;M`U$Cm4TGP`rJ<~J! zFmLXIF4H#ezRFH#qXjbHf6=(ec5oN+p=eNCcQxIsIq{etyZ;S|W}I8}=#Mx+6#l}V zRWqW|^GP5q61nCA!?!eW)XrFVdel{@g>RQ25kf?D>r9=%c!-vLV{eCu@gUxWv>z`T zTkn>Nu8!q3E{KDs+hZ>DlC=eMqJt&Zz0%^s-V3hl!CiJT@{8VVuz`_Df>0h$n14{c zzu$j@6Xb_q`c=W$Sp@Q$z8bO@N5}whj{kA3;{az$gHd)Jn{?M* zVBo40M8s_&7-|V{#}Bdh08R|A^pn<@Uo2za6eGgm>{>{07p-~7YLpAT!m$$5WnV)? zlzQsIsoD!Lz!xw1bG>U6d75npIui*>-j-@K_2~|B)%Wt&9SdhTvI*an)ps$r6!y3ga9# zDB;&bna&>%2F3roWGRf~vbRTQT}!atdIZK|Xu8+k)-F|xwvckgQY)^(Nw#FbOjtO{rN+rcDKQdST*#~%Wp4P z(60PGkNS%@PmP`0Oxk#2VVr(a#G{MPw^|jyfInPOTKfkh2Ff_@X`QCX_0Eq-l6v!% zo?t}=j`VF^+`>|oL~pad zlhW?aVKfmAzcn8hgSwFzoH8oTQ#a^$BAyau=MX)jePwE=-#)O;bX#$Wi7~YfHl-QEQdc{Y~dt8 zN$$57LkquiI$`Tu6}01XG-@(oQ8JZ^bvHByP(QozbMd zVAglYJ@yL*y=GZT!Xo;ILR{H*W<4j~aHFRgN5~l$R`6xhjXszEY`U=023}?^B=HL0 ze2kanmr<*Jx^4$|+X(Wp9+HAAWA}#+G6+slBJD0Maq?-1{iwenUL)vq{ACumS0=j? zZ~mHd=1}$SyBVju|Iq9Y{6`J)L8rd+==iB7Tpq@OMA*4$zS3_2P;K;m#)BcqnBgLT zeorGn{@{Vb$z*%8f+g@EVX|d5sj3it0SQiIKN%L$ih2-oaBf+eNnJ{15)aZyWZ7&K zk{kg?mU^K?q+ls_+L5+a?+tz=1u9E=xLfuh-w-?lLh%TlD4Iy(1=aS7@|L^co=6V^ zo(R554ihuUK~cZ;-jDZx5^Qz$7<_P44O26kX~+U@P`d+}B(dwAYkwO9$JwuN)>}QB z?MwL=GcgQ%>y-kE^OBrRHDKj_J03iv6xiaEYQN7+r?Iq5@rW{6*L<%WA2`{Gqag>d zE#kCd1AhpCWPSe|cYZIneL$2J%&`az3ZeDo>QLo;+LAA!FGR=Q0cPlaj1>Ha|0nQ= z*yLG|U~?DsWDeS8TJs`@6!e3vc(wC_=hkX{6Z1Jv=@UB%5kHvyzMgRt5J=I%&peU_ z?*HTpCx~WHA;2@Xq99vJ(@wrNYJmAajExv zlp;GDSGQWSb!l{(PDdrNnoL3E??G2sT?B(KBxDGjus?XSTV#|5lQP+prygx7C?cr~io3FtK7jMws{bH5tunUe+`&bzy zEPO-Ak0vbW5PzK<^Pdz@M{De8eE*1U+^qdf-4|l}Q~%qT$VMg7JTNFesYOP9wU2C% z>-2f&8NO8S#L6%Vs6>Ct{G7s-r=Fu?;FPp5Q=h0!+Obta6GcMfV@dkPL98rz#*i;x zen2hf)Afrduu-&il4-QE9AJdTpkmG__qPxHrFE!`XMRGs=TK_@)bA;og}*pNw)^f% z846^t%5QYos5UA5jy3YU!j@MBNqlY%U#7BYhBz3}L~Lf##6~Nb=qHyO^(mH?56-61 z)(eLTy$rp=uDci9!*{3vHk-ucpH(r7Or@`bI zWEloIBwu$&WRS5jtyHb%2_0G8X7vWqm!al&T(jY*hr_cg7vnc?y$-mki->oK4Qdd7 zVFl#9FCcu00{JMceHoY_%pu%`otXp(ODVmwKxvL$B(=hINex^o9z+DGunp%)rLW_! z&Y39+Ua>%SMfF8%MRouKZt2aEna2W*-=!kPrviGRDo-N5zx_edVVhPpMB_OrB)U$e zrSow>MV)*l-CU(;08xP|qUP*ZyGT?cs_{y56}iuYf?~@OWrU0ta6T+|?4q`O$+xiS zP5Aey$_5bRqH;XRAsiS}->Xw_9GoUHFeY-)Y3I)hdO+ebFf8S5uvDFmArl_Z-_r09Jng-8JA;)4qC9>%g4W-KFelIZ-}Z!c zzJ**B<2Tj#Z{e5b*={a(-uS?E`J30pm49hmA1g4IlP>NpkJ%l3N+5}Ei3Xh}Ct*F8 zjh%-PN^W4jCAmE06wU3nsiKyAyZ69cDWF=&)7moY3+T^9V9Gf};*ivlVyj8DJX-dU zk#$^@MX1{G4tuB51{ot;S7301n0f-OK7x;+ydieI=CkC0s&PRh_HOmCUKBl$$R79S zQiUECIw_yU)IWWVse392H|OZ5Qby;AveJHd9?jN*yO0ZJ2w6fBbOPwb5KbTIE5B|t zM1~m7U@N-NC=rA+_a3%gz_9+!cOo@wu8)EP_GlC}K`ZM#nzKmdrgzAn`MzS53#HJ( z4xd*lBIBMlnRfSHh~QeEjV?Z|Z}+iAH>-sVHJm0pkX!1CUUA>RED>%p=U z)JB22*b9gUF-^1ME;OW?UsK+@L-l{A+I#{ntdS zi5K`W1nm$HYt5p3|R}+@g6mOo=eY$c-}m z=GS29i_r~k#Obd{>>qAvCd#~mAh(5tn^OqRQKtZU0XHuR*|L*2NSGXk+;ufqb<`^= z>%6a0qAaxE=Af&UWp?}r{3`61y@nxZwMLqpy(_q$N$p+w^EeULNm2;bV7d#?3vO16 zK&QKhSjSOSH?ol;HF*a|Hawzq3*kKr(~%|A1_uNqek~5t(9>sfLx@`HiWF@eE`Ovv zQl{N=AAA%(i@X8?;taC3zXCU+D~?1^nncL)WYQ>la<_<+bXzwB`-7v{>VNY%d5HxmxG^85`O)A|^;%!|KcGpqEPwl{LGY)55 zc?6gBwehvSP!cjD$2xJ?j{-!^Xz6G|i0cvDuBm^v%{iM2)OCe)=f_cG)1@wXt_mp%J6-PihN? zqBpgOfwc|N;*>rsErs&%*eyN=9;zx&+0vI|IEMj^O~~8sOs^Cm0vfYWmpLgPpgKdJ zl+V!y>F_@#r3=P}CI51@(*KDbIq-5Tn1_*!<=t0Ku}i&W4~l8oHq(+}7v{3NY|U;@ z5z^f*UUJ?PbeMjZt#CCygo&DS`BpBKYycJai9+@0irI}rmx{fg()g~YE%E-8D52bQ z`tdZKC&3!r)8prK*m*Mg&EE+JwY=(R&2P324UdX6EV9=jnnK&+1aj(ttPm~#YGSC6 zPwP1Fs#PL%c$6!J z9Hn-Gg+c;+DZd6=S&enCMN~jVJ)GZFoyYuaZA$3~%WaW0&}!-m*58gjSiJN=4CeFm_feMe6| zzZwH>E~*;Ou18@A-=vy4vC}sB4~qK}0SQkbl|U)QErDe+nM4yms8|ja^y8GZp?_S@ zlXtHo@{}3cJ{C|vdzc>y%Q!%BiJQsv?}Hlh>e8{RZ+;M-OHRYbF0&=p>!Q0$WzB{j zVzoOCKKZs7VSM0SOz4ZUUC|{H8C*uV>t$67I!g7vKHRL(+1 zL#a;v>k$b#iSMm!L$yJ%ug4H|yIL z;avEkS>XX?Iyt;4p*>a!UYpg4FAa{VqleMqx*0Zs^?!!AJgCJAb=v z{CL`5{CLVKY%^&x;W81>dX)_t%~~5gYm)Cg-~pFfpoV&lL{cJ>LZXXeA&yU#quHcX z#g0-wzk^3LQ)HGrpnq?eFzSHS(~T7Ho1jIA8~aAzG_W;wGRtzG*gFgD1L=X?Ix(g= zzEW|gSRz*)(MH1^b`CB$k8}GeTZb{G;4E8@TKRMrM-=njI~w&f*CJ}gTK$e=sD(Bq zZ*6;&J^jWINfH<-%XIim&36=^!;(;BFv!WT1Tn*a4ZSVK=+Cj}04o^8rDL3Pb>!Ip zL>OBEJ>2~JdRNj*&k9@_y&pc6r)$9VS1g;~xoa?jcm-|Ciys=)#D9vtZbrOkA33JjT=Dr$!8g8<~O)v(G6P?;S@!C)i*C`n?YA= zje&cLWEB@CLm)MGMd5bkJfkYl`A5%elj2~jiZw*W*9%ku4-UGicGW~z5xk_?AEk`P9R<<+FBaP(s<7{9hLBb(WH*vU?_%W`!w0t-vyk3rTQHFIp4*x% znc?q%@c7H_ZrE#d-r`BB{>PMo?~bTAPq1cPmTuMp%{Mz|Vj5`~=%ebTlg3m~uNc^~ zx*USQ&ldA73L*H{GhL8?4I2Uc)_|`jJ2Jluwzku_?m>~@y7A7h$(Vn7$ok0^PI3yK zt2d0<86*!yY|o6+!)KMysX@!yBMYpMdhkr%H|Hc{;_DJeSv+T5(~N#*XV9& zw6qxByYhQv2)4(Mvw?n*NbBu939KVw(|}DBGGTQRXGPld0L9lUg1pCje^C^L-$9eE zY#YeFp_qDSPt(xTCpXf&8XL>I5*Tl%TQE8ljyHAwpYAK5kM{6)%wNNkmkcCTQjuh% z<&Ai6-05Wd%@`8GtA*=(KXok8i z@lmo_St453Vk$JiUsU2F^e+410W=||MjX82kRfCy; zn=|3DL8{HQYFZ69<{}>GT`a^#usadYc>a8bBix=A%GY=K2kTmV_8gVeGs|i1zQuWs z6AIFE<9nL`jcb7+{Q4!wxqBRz25E0Hl%5`aM`f-H^^jd|gZgpS1~*tSh|ftlLE9I3 zcgF&)nW-hGZeg9VI(%)gdq=91ydM~~i)!M?E%8&S?2@p=PiO8e@W#jq~%!-CjRJo}*idc4Nm z1%9cor`a7x7Tz-ceS=pHRh3RPp4S0 zJF70xJ@PYP1W&g-o7%jRRb_-}`)5^j?q~{aMNI2G9`Ct6AQbgk2kQfQhr7z?ucW^(}EV@0z1c|+0jF2YR{ z1C9Yc@{uvvHU}YUm5h-hxKs{w8mdM$!9(Ra27$qZ-{%IeT$33-Aat|T`5x0^)Z19! z(nuXX>tU`R(Em3pOUIUB1s`Za5hdt;L-lx##|XJ)PYomGF*EzKkNW|5r3&IVgx>$e zx9x+n*<;s9ilVERS*CkU#o`l3q`wQ6gy|1QBh%48XghEETi~S8*Hq@fNDMRj=;v!a zA^fxS&ZnELj}@ecQBR+v-0jJCtUC#caC%M_)4{>YFh%SvMfxuG&MG5ggOm~tlsipF zRI3O>ajw74it3mDs8w`E;m>AXXZ|JFymoo3!i<>z0#V>K{M;QY*~Zl-t#?_)y)4y6 zy4vQR^xmz|lT*`9@bJfVw__^0TqzABZ-pCt;*&6xHAYFVfYN(H6gF zB`CJ-@$MTFuU<6gh|Qv?6h&9(H8rkeu5FR6wb&Z49b+t8`Cmp(5S^E@Txga6?IP&k z?Wj(yK7JQDG+YdttrsI=A}PNa3E}6%zfXO| zv*{KX)wiZe`{vjl4Wq_&dV=X|gTm<3grItwwaM^>zO5Prh5tPS0VrBU&W&;L#YJaE zF8{SP5dea$sw}56@(TP0`(n|^hJ_S1b8_ZeE%7LWOcG(8uT~RDLM>4Qr&PiYYhzZw zVb~BEKEWA|Kn+DN9?-d#^iLV3j|Ta`s!GX4oQxl$VI0+lJKDzs>;Z~egHuWZN2InO zlc~%sIFOG8%~`lI2NjnvC80#lHV-1F2SVS;1AnHL^;`OYVPFaYp9&)9eYj(VfrctP zdK;II0z~YUxp`?&8Mtmtd3Vd4(RXHtmYwJUQw#hBqysGjans9&N<@J}OkC?pf}HCx zsfmBwP?dFZ+k%p1Y+38#3jOt9^~AQ|16e&sVY0w3=?gro{!=e)AtWQ!uhLfA$Smzge^a6=J?cJ1%Sf=WCipAH z`nJYp32%z;6w){F))K0qvGVy$9^dpaF;+3dU9e;-LQFFUO4!Y1rG*Xz1a-S;|6q?{ zhQe!*ByJjZw`LaY^(VP?WjD~uy1swvLkHbz4E9-l*7=%EVY zBvRH;C1>%%z1j!UT%Q|bx;_W4II^M7zDoLE;sHNi$n~#J%Qpc5?`61_C(4QH*<-E} z;b3w2dBc7OVjVVVh30wbeW}%9EYZUeWDAqx6`ri=ubC2VKy?D4fs$(NT}FMG1yOV6 z6jWFv2!-th=9a6)UpR0vRZd7ejCPusCM^`la51sz>_;tdln248S>1y@9A{Nf^m80- zrAI>MZ$bl|_cBc8&iEPfbcM%LRo`J4T5ELTIZ&%6WB>UyBm`}&uLd+~bebk?rkmyZ z`bx@79~y&P$LK!kGL&wqnP+wc>8?fl*j}jr#VVaDmYBxpcbIL{drpkVjU(U|J_^7? zIM8@%58WI=%DxC%noa$fOT!pD7GKw(48NRc1v@z4^f;fl$=mM zjog{#?DzlvH>MCAhDuDA@z7ze1jE!~naJi$*%0PWqKWL*6l9kQTN8S4@hZruzonH*MJyrTr|x%>b(+c$pr#HFt##WIP7`KuPe*f{K2^S-d34{AMpJ-%+J^2 zZWO5RLg0h-bteppSDFbn6Zk}UNxYzZ*74A+(EL-Ux)?otcuaGKzP}x27muVR+;g#J za85vB&j*sMr&kk7L}B?d^Q~J;(zL5sx7(*Y4vlo)AxS2f+Vjky+G36VoQNNFgf1(J zV~RZa2WoiaTDY9fr*DjF_4u+0x^si8T#oSf#xvi9r_)qTS3yNr?TCnOr0UHDb^y{M z^i0&&hW`rV5zWzGZngKcy}ulXi0#znpnO5`k6ePGF9dqP22Emzl!)X{bhQVi{DcDD zA(KLm#BULo2?&4CSvDyHmH7pk2oH3g5Ld~D=dkvvaH!$C+7a=T0sb2_*(yi~xcX+M zuaX6|l5ngY)Ny@HrvZ~pvCMGD?p|9r`CTzgQyjj-Fgg)gUBU4KnPxDA(Z60CL>^Ph zk$g-wSX){}2Jt|6ju3*}mt8Z_9SyUxF|n5atb>iO*9F392k1$-RLL068!q(O!pkAh zh+R#{j}zPBPE7}1`B+FKOwXIk7i7j-QxDU0MrqwvfG>A|-t+Cs*=DUx(XC*3!(Lvv zmdh-vnd6S^Yz147b?I8UWvjzpwKOE(lAqr-VQ@Oc%?UGG zXMe4VGF*dF2-7E_KR-EzozV)3fs+^5X&sPTUIr?#dr`rvgi|FE`#AReXuA&!jps_W z7fiHEnqDmHDVRlaT4dEYw&^1Y zj)^0H(S4mDMYpL)=qZ4!xyUQqZ@I^AR3#*|2K_rxgp8^yd5v9{0>xN>3gY;-`vLAT z)UV;N-q;?F_!nd|6%~CV+kNJUrq>^HNrYq(askG8hxp8^m+$OT(EI$KeuDXqef725 zf?*Wc93Fjrlp!*yhE0a80I;t#LjV>Z(`c!z*TL&!*&hj%sK2L&oz3*lEL_y|UyI2i zyW&l#39?-DKrAd>fR+<9zbB37>DHLdW9ebs9*~QG0wLgk*t?HhcUFFg1gN<|T`3Bz zkc#t0=}BVBdxXl(w{^To1h z!xZgY?PSY0urhmNc$y8D`V>pik>d{(HvSmOHLL^1j;flpaycRQJ{EdNXV;7f~E~nER0OIX5F3$M06TUP#5G-vTn zk7R&bgPW(R8AF?ppo5p`g1Bp1_x0zr;t|lynpK4X_daY_5`pTf^8NQQ5*K1U zUsDFqtx3!%{hpMxS=<80 z0eD@83K@O{-U@)W{>^8;awedrCcYq(JT|PClB}o9rtJ~HJSzH^w(`0hz2BO|>##D_ zX}MiAzmVV!4^zQ*y?+vL-W>XHF=vzu%~Yn4B-kyb(||2v@x2KO!5v~ON0g-mFRyWl!5*qCq zR$!{2Lh#UCWqc>Wio|0XnSiiSe&DnN9c7@pRewB61^0eMi?Fn{vvG?R$i!=Q+ui&} z!bS!^vl@Q&!xVub59JaSs>Zl$y8`=nY2)sRmI0hu zCi7ncz%GZ*Ytv$!ty_Zi&vg@l(Qv+47}Cl5=@2!2qB&#_V{{&#)VdlY2Q=ym=Gb+~ zv>=>@^AkigUK0lWBGtx;AD0%cm}^&}VYFM`Fmj+GcrRmvn3fnGx!K#=;-AfCd+hOG z*RR%%9jQU~*gwf1WK7qVon{Qfw4&(7XsNqWUQpmGDMKh@6}nipVMhOgV-Q^E`_gyO z3WInefhZe6CYTN;nZg+JUQuz-U5}!%^e7zERy4bwa2Vy^HGH3`-=T_6v(yW_q%Dog ztKP{GVz^G)W49ZbG9!dCn8mAVHDq)-vx6AXF)yHoNhyz-4Pt0S4-D$e5hDL(Ew!6c zrh(b$8++5!M90lb`!`lAAT2r}oE=^;q?A0gqv|e>niCmc-Pi+jmKtH^s~IGUulOpp z9~#CbuNFJ@xod&Gy_Djwns_|gpv;oR-lbmzxtzrFzuk`wTL>AwR_^P0G6wjP*CD~?%aR?FQmDfWteM$UDDTJiH?jb2NLgv!0=ZSP%coYRdl z`V-v|WAV}Lh1B8VVvoi0tOF7_eqO(39-<0bX~Vr1Sp}sRbwgXWLb~4!##?q0^pAXf zKlDx7$>pww9m`Ft2I68s=icjdm^5<+yfU%TaW4{93y62V|02w&xJg{KH0f$xrv}zV zI_UX4bNC+Z?3!CJUb-cA_!p?kn}0TLu)Z=;-xk5qf3+1JXjBWCWs*gr8XCTQT}`lv z73+4j2xSf>w^Xh&UZ}j2j3rj{nt_avplsEXE%4)l-Z~P?a>#tP?m!CJ$uJ)}RUTN@PJ@VH$9bK0&NFozNHT4Eb z7mCJAxFG^uR@hljSUL(&)`V*pLjKa<)^#9MU)*(T^OVAZUh&vDXnbexOy~qmZqa`c zn#SmZZtgEalY=U$N0M-s)c%sp2s?Va9Bm2~hvm=lY@YZsgtU?Jru2Tr>gW?2*H=7a zrG~ujbIW)~IK0gEGDDyyF2=C?SVQ&uKxXUCb+i;m?}npPqkM=5P#uzCwZExER45cK zT*Ul=AnxhKls;l#9pGXl41>1j6>xRg2xG9$Kx6*G)Ka05)l}XY$t(Zd@S|I5u*CM% zAX-GcdGdq;pKrl3Pd9_lTE8<}u`FZ+E09;2r7s_OOmY%n&g&~%0=19`Se8^jAra8uTc*>IN}`9_6{OTMQ&-X%<><# zB%kk)gRva!{U4~17zj^TNlxV4G}9rucMlm2hoz$4!&INjwntMA>pA^#OFX9X;V%Ta z6?udan*=jfB8~X8e@KI9#T`i3EhL*wr6(@5opA~KLw5Yk^iE$p+%EhW-0uB2$TxXuA z)JCPrX0_b|&;b9d`prBtvSH{#n8;SKVwS$6FKoYbs)Bhj2%0q)q}zMz9geW;a^H?; zwF8d?jvSf@=&xL6%22uWkV)(Ns~dF|y|ymh-)n0|*pnD~8c18cZAZ~Chj4J6r+bB? zEruf{D9%|kkBjHhAN_gA5t#^gH4MS1YhS0&Rd`41crR;{?Wp)QTU$KA%nxs|( z7~WX#e9P_xfaDDM0Zq%=iZszzL`gK`k`I>G?&&~8>OmB{el&MBU9FF)E04DuiN)zy z!TB1xM)!to{IFM=Y)ibQGM7!z;KYEAw3811F7d96L(BxeV}~!OP9Dg{v2r3ES}!IV zEzQ9hF%0kxpNZBcqx5@b;G=XO7Nl14j%mXp>5v`9=rpQYJBHr5=PH;go2Kfk{u#XR zAewHl58^dXt)_j1V0)%^H4_N$ml7pHG_6}BgD?0ry?|91fvSNmcVbXUD5?_qqC#*L zvtL8gG^YM$O7^Lgg{zb75V=?GqiN%olI(IEwFa@TM`;evey*W?vboT1UWG3<=l=^v z0p>E$7mdwZMSIL=43qUCDn^?szE8&FemteH1qd@_v$JYKy_hBaPljs>K!dx%7Pe2i zwufUBNiBMH^pA*D$UKSWJvkR^O!gp+j?GmZ;_26H@pS#GBlqWU`E(6^z={5gp^Qyk z*ycL}gWr}}Nv}G$D3^A)Ce=D~!@=C%s8Jcgec7)&>R1P!G>PVi28IqzpQ6K?EJ7#W zcCk3TYi@zJvG1iDh)cD5LL!7D7cy}Q?su0IwBM|=gw#q z*Gv|~2gv1miIhpqVUb*i_<0J47PC!&NB@&e?#p)5(SU;w6xXJbUuW3z=Zi{?B6DfK z8Sk;%e81l1o|!NFKbFe|rf!$HH))qk@7$R-8ARU5HoS&6k;Liz(-~d}UgB=rw3w=d zw9$|hRVzH6DnU1tZ|P|6$7?;bfS8Iu4#TdihTs7LL4Qz&Z=$1y?B(MRolM==tUqEI z2&cQa6%He88h?qkb8q2#Rm9g|h=r5Jp+N#iPe?aisW7`@))%onO#v?0tY zUbAP79~^TFf=BitCSzHxgHMdaG8UYRfC)QsZdbpzcroSZ~y1EQJvNlr)4eu-Yx+E7cg}TW9E+ zYEl=^u7A1OfpT88MfR3fbtC%}_^%9fPmDg`B?iLT!%4f4JQ!ihw8oQKCumTGVjtU8 z7KvDj0<`Qe2Jh?bpa9L)gUtMvZdE{2SDc#_o$MtUs|}&BD__e+A{z#T6CB9(?L8vC zUToUnb8<5EjPHiKvNi-n9njf3TTp))K%4jl$FO+rLnKK__^MUdMqChFOOc`STM&D!fnyhlQU# ztE|N5l0O(7dyg)?4Kc>2$}@k7ZbA<4KIE9%IZC)n_LR8xs$uEpo7i8Ys9bHGcKDiD;7F+C3ry+YXbl|gp zI}y#nYDiolj{iGO1^qhfr}Y(5v%=m1U#nLe#t;?AgJ=jHH;-t#84 z93%Ah8m_p>DGWS6kS#0Hw}zC!;J&$#f;uHuNJb(OSx^Ji0Ox>WX1v;g8o2!e^{0`l zUbD6Wg|YsUwfciZK5H`@OXaYr50qKx1q!HYF|zYk2-*zkMRhFsGnm%7e<^>$(oh(h zfK<#qYi@`-o{}hVa*FdDi`>ps$Y)9p_dAFaTahTmzI^^h0zrcGuT0b_3_+1(`Ue0_ zsGQ~N1qhJU^K{s9-s5mi7(+nJ0nZ{y(9Qq|9>3kiM<2h9X?L79=lJgCg*TVWNEgk3 zr1q5%=mT~3fW$HW&TQh*lK&cn)h<)(G(h79jRxmM4E0N$)P`q!BIV1;77pt?Vml9MRT^Gp>*rW1cYuBZ+4? z0rzt#_h2%m>8$i=s8Ma&+0xlS%3d-iVkl(Km-Ld%l4QD9*zUJfDQ(EAo<8UB7&ao_ ztAOn+wV?YKeZp#15p|(28v9_vXKOPk5b;Qud*|)FkJ=>`Jz)`p6xI}nD;m)~xV^%H@vLnieHj5B)Q zNxV%wii#zV(R;DY2>@0|Nh}d5nEs{6XgBlFy(BWB$82B*gRst&#>p(Q`c#w1T9BOX zz7J!Vf&b?P5Uuf3Hx#GLNAN-y&!k5LN#Gww5_IfrmL0+quxh=3Zc)-_gx&^|(Ez4y z>v@I?LFjMiSm6=X?e(;$V+rKN!q2>{wBix$r!6f6BXa-8r~b){z>n}r+SeW8U^!bf z5xoiG_RFj7?y`NMVU(PeuG~AF(`pnN(oNpG)e*kBHjK4?c#dipSwMj2=KZ)hC|2{G z>lLE`l+LURZ5VhhMTv*Y(*e%H;Tik_wjWF`BXVuXjCfe6Wl6F3%NH`A8GE7p7h{eP zT4V{Idr^;Tx{1_`PC9TuD?M4#*UKq92Ovmq_jtq9gQAf7jgJ->rq6goP$II(uw{~n z`on^c`Ur9mUvXBcaX}Y5g3kXYlsOM|PfCNhW7rVaa|$6{Se70N_n1F?ej1Q_{RqyY z!J}5+QbD-7La3EDO~Yq>e2Cc^EM*v?-h1C`3GqXcFfPdvax3O}7)8 z`4wu1fj`;X^{;dk>8?ydGL-a~+4x<(BLcALu~C&dXo_q>qKCw0$rzQ$KNay? zvN|q~VIpE@qqkI%Z1HgR(=MhcOPp;~{C<%j@t;(2 zyVwMrnsi!Bm|{K1O1DFHtSKNOAH3l1!C2&@-?YLQq=;Kpc-lL@TFd(6rebmhNc^_5 zy0!nyY53E@|K+rEQUfPhl9zbxP5>Mkds6n>6qQwjAd6wrm|Zhe#2yU3XbtHN0L6z@ z+JX9j?r3Q}kx*8f&xkUT|bu)hCryXz05F8sy` z3i&C(cVoq@%?~~ioqsW*1W>CHK%(Nq`PV}{U*lwR04E%nZ*YUTNxcDsj-l-*@}ZJZBM1?piPq*|yKE=NS-TtVgHPtj zDC)OSwGM7B$oPjTMwdVI7li_gyz1X?^T#P_Hw{*++Y_xqoB{y;GVI%!`>R;TGkOw< z?vh3!B=hIFIV`x}ZsyZHoGs_^M#`HGR4i`z68V1pl&1~0m25b@!ANEk+C#y7{1pN) z;kmGThv8W+i{X{Ksn1Skh|$KZS4Z_GdY`sDtE8B6lPggc=Av0Q4y9EnjXOh?{ zwGD*Qrh-zl*}`5f9%5+)LfYK;7J~qCxUNO?IVAr`M}o$-`W%V&Sb;_1C}H^DTDq3J zqu_H}Us6@qw8Gz|K=VD)Zn!;HHECgYM8CLT=s`&6AKQJPAA0-IqL-Q zz8W~&3i#b$IUXI9M9@hZOjhxRoQM0=$+s?d3zNV?HaR-mvTQhK)sbv-JeM???8F*A z=5yn@`&?@OY`knqf+{AE=f`ngMjfll`Mu#BMTSTvuOGW^!KVzo51Z}j)|dUh5rW`E z&A+@i3NNrwyc3{GsR3O;;yADXFr+5RaDKmR?x&k6QH#os88~lvUT$N06W*WtliVA@ z5rW@1cKk06X*&&A#nRywm(Jy8^*uP!VFf&9qU+jqnC_yeYy*kHPT}xR4Y-I>{%t>F zmbvI9bccB#4>J(XQ|TH9wK7KDn2_(Rr#miNv58%^Q{K?Rn)<4DDfdbkwi_DR^Ht_h z0`kaQZ$KvubBjvW+aS1`z0m)7Y$*Hu)0_HJkb>O>{qk;l{4N%-mn_{o*;4fQe2Rn* zn-GneEkR;Lu{y+i{QDo7G#ZuByfcJ2&gWhoi@JCWEq2lfX`^#evEaOGM^pZBXQnizYWhTCc1C@;axS?N`ze_%cjqDwPM4-RNo;md`Jln zWByglws&r6&x$a^Bb^{dKMKZ%$0&P^`D^DcukSHNSkuMzB21(yWZv}K^(8+zWER}m z$y@Y>_ic&mXwp2O(jxF};;iN|avDY0%l_$KV<-_PM9X{A!BlS;VK43UFRge(J`iE9 z+~|xJ&p0g3uTHK^sqHlmUShaA=wWFk2Y}VJQ6BaFWcB&^1uM2Y9tvL*0`Fj`M6$ZD zsXLUN^nVgZ}j%+%}qrnStij zadr@Rgfrw1Y5d_TDEYzvxMhNmEJ?KzV3lRym7CTL6eZrBnCLF2ui8(JLqJqIqDQNx z86Z`EIU=s{V?`8N<=Uo{s8}9cTX@gJ@1L*K+d!TTXy+e5 z_y>VDBKQaER*w5HdT|{)B`v8T>&FMpMg=ia%R*2I^U#V8p05du6Rq(m{OI)Z#1x@s`=cJG#zw(s@ee8$kxK5z}f>J{$;l15I zbbeg#H~MVlfCb59i#xG**PMvb6m5~>Bj-R+l|ZVSFa^HPuol zIZnBr(rc%1g)DS-&v+g6i^_t+&pgKp=sW#P71?z1*7yi=wnXHAZ{COsM9vsn>ygLR zXx??XsgI4SeF?Klrt}**78t;#G-XXq>tGyuT?w^8)&xAwMm&TxaMYZPA5Q{sl99!|ZAW+(mjV)0-gaqV5n)nG4NXp@4r^qe zX6}s$$~mTPp%4Ah^UNI+oQD=DL*x33(QO_s<*=!2o8;8&LCb7g z3O^-quwYaaLGf_dDgf7ExXfXEYJP7WJO@_6@5K8mPr?&$He1mS{h;y8X4i3~Ov!#o zC2bI6B7C2Z7Fw7RtE&r^#DfMuxD(vnAviBC!QBb& z?(QBO0t6?xyB$2Z`@sqBaIg!xGhb%*KiKuG)vK$zyV{``_r}VNSI?TTwp}bPT_m4` z!?%CCA=;o-zd19h$UW`md(JD$KT3tXANV1hKUj+!IvD}@5hk+JLfT;EiLsGXL!1j62 zVGM438%H?5sTrd&HTiY$_TaPW!0%ofu+YnU2Ze+ol8C+2PM{aPMZ5(TOBJV2WbP+q zQGBlJzxUg$L188H`OR9$W+5WhCTbQH>&m_^` zUi)A`S*ZX-?!@e)hQV`UF5T(kc~8zD@o|G>NtKQ~Mb zJnd$1^j2Law(YI8js@d)zYO-%biZ63+5123&6Yg;G+3)6BEYgZ#^uEUcYs;M_E-X# znwy0856*>(;Txu6UrJ$&5usV&Y9a+yzYi=;k7EIJCTZdjxjqe9g@CkH<&Y~#_=KFt z@ly_9Xm2dCd$7`lQ1Yr0PTRyZ7%U$DyZg1W)H=BG^WwPLOKEHVew)P;)c^AyA5(05 z5~H+^{m`I4Op$QLsSb1<7k+bMTJ}@#bn-t#z2iSTxn*S;*}JUMTV|SgM2XbgC4cL< zHa>OM>@Y3j;%Giu`p=>)$by%$t#xIiMY?y=v@PzqJ_7FQz~#@6wvlI8a*?1XV@Q^0 zc{Y2axh@$8dkIPNE1Xc^IF{)8Q&#JWXp&!4J|62)#R1l5ot zOAxzmKn<;E8YiocZRb$TP;PoI$l5r@0sjgp8;^RpWV{Lz3?Co2 z#@qkIDmKD1Ijrg8$02!(;IN3(MS~CR&a!7+=?C!*2?M=4{H8GcjJRK7!ULwr)hX~v zHR!M@(l@J0vHu$1x<;Lh!k$c!&As`O@jZW@r^6ArZ0S3`3XSK#B7I=hjn+~4ze7Y(5J!n2rYf1+MX-iZwc|3HfC#L}iL(by z@io=DPIec$a#T;u)*IBv{8+!e(F31NQhqO=p{>RD!!-8ps&O$!9o3y!&+;E=vD(Ti zFeDOnxpq~QIgY-YtADtIqYVd`{F>O)&h(hp1ig3y&yTm&99kAO9m7;RyjD^K`G}E) z`lv8vSGU3!s~xkA2rv{rNvO7cZL~_D>9omfd_z&XrE`^kGqH zXoZ-hjX)bLa7HswoJHO*+}rMCv;wugX~G2qm8Beq+n<$*55^=!jvCxmUXgG==hv|n zM6}_&h^qIBe{2lBy0VCV;!4mfmAz03Atog?G^KK%sTcfTL^Rq>&Q>Ms9D9px0(;xQ z4?l1o#s{5BsUe>Fpi}O6kV#9aTWrH5v@sY_lSQXzn-*O#E31w9^vQ8@6CM~ObQv>x z2N}{w2$39W*R2(b0)YgCd3}uOZZDl00}nO}SefYMbR#~7|7{UgH*byEF2`lX==|)E z8-MTLtgr;ksv`V?iIk&6eApERQAm2mWqhh$0C!>&jZ2LZtYE@J zHCTP5Ix@IJ(6>Fxlybb-AbuKkPsUvOB5g%FWUjEnfl4P{=sFm%<7eiJ<2E}ayv(*k z);a_8IWpJ;j3+CEaxePtq#1@cW@6quuSw44!W8e4@-v>YVEX^5T_r!exsDj^vkR^M zFoztTFxY?hs;F1KyrVO5nMrJyDJUKaVCmF>!G;edlZq-+{CnV5KY)dHliV`>#ZgDo z=NG)_w@3mmiWijlppZ$-rqb4E%#d4Hoh58`o?3tZT(q(VSH7QZgM0!iEZZF4Ag}+6 zo)7;N2Gx`qTHvr0uBg=NndrYYhl^otAH~f0yR$Kh@HE#wWT9Hwj*n zQcU>UD2`pedr^lm-h6aelr*+jppS?YT{*+fH2g4jMzWY2S}TceF@fu~!VZTh;h_21 zr8T;=5bylV4pO|#>QYnZcWS+Uc{+k&BswY*S&t{sh_hxeZ+Tr(;UI$g`luHg8Z+%W zL>M?@W>hY(|51Kf$5z+K0rj<2R7l1o)4FaF%#!KA#y$+FE-b zY(;g3oNA#7X-hZq1i;b>)kfg};RIsCOHN0R7Oq77e?#xb<8xU8d(u|c8tpGDG)OS6 z8>-H`7Id$5i(o#NfSMvYYPI~4N^iS)hJ}o!8EzPFXL*<^e7R%ko+`>-L!B`b8a zN;Q&!Rs!{t9qNY-Iwb5yb{)NRvwd@%pUeLO(|fSuk4XueuE1}nIeI@R`Qx(ND}KE& z%SKO4BkoI}Qsfj)za;wRLAu13wiU9kXIv-jjk{1I;3Jcgw+G6`M~Hs%em$qC#pGn| zMe8<^&59cuob|PYdG`bs>wioTME4-SD598>bHl)k_fhSVcQQSYNytv$Gk_Y&AERuQ z@d?a$PC6FXmMhZSnf?y*lg_@+v@*sg%Y21XXTOOps&8qf@6R5koFYWwHMN4$a6-t? zDXi2?Y z(Npf=@Z<-uX=ce~@K^|}F&_`lCSVVB3iXUMQm%{nd|OK0V+ebY$eSH}B%@q+2gi!Z zd*C*OmYL6KWu@22B=;NQrkDo;^VY7h%#n?{j2TD` z)h!M)ERUt0ty#2or4&A3U9ewkRoIiSPnWeTsG9X|+s=p3dR`%mfH$AwC?B9qX0NR_ z&ao7ZvNEO6>dlog+hw}2Rv$-yh+CDHN*LSJ3M#GxJLP_KbMtFpz7`fX{`4~luh1S=e1dx-3kd# z!(KEysw-l%!urb^Lv)^pxO&{++nF86fSAOV*5%mdU10qtJAFmS82x-Q0GW} z6hlWPs=cYNAQ-s(q(6wcMOLZj)01{vwsW~}4hANK(IzC^HD(9h7GLh5EnGccfC(zy z30SrkbIOw4O?UPcmY!)~TnEMKWy#Ny-6bJ9-rpn_gYM(lGM8AR(~EAh)mLRyn;n7K zlBX?r0obiipKkKK$uGpWkfcZ>%YjfM^|86pDF>O=^rUI6!0-n#RAS<&c7Qq=hoThzXGFnnb8|!yvtcB}7H{)2 zX$6n5^H&3ImGxTX`{~_=-@y7;lxkQU??kq2+VnLAViO(smLBqJM zJBIml-5t3<)f*nV2V&1#42>{XF1!Hx0|q*2Vg{*vQt~L3GwbRutzFH1tg2dMA&o3W zBv&FAG+!KHOoQ_(D?&S7ayuprEk=+upb&sHzpd^ z-FgM3#QSEtESaEy3M3qC&1NemuDcC#d$)>0qUJcR|mB#Q*u(jj;8cUk#(Id!Y5{uS_bO_(PXuCEKw$ zEmYxQm7e+fmTYIXU`)ni>7hpLO}0otbWQALVWjXLS%?qn-JWb3-S^?&@t8qpam_%b zRZALR$Zj)pDlALv_+ic@JAGjhh45yUfL&YyZ>>BXAtb>y{3wD6J279`xo2qWzdk` z&FUhy9(6}Xk=y`C6MEIV&|Dx^p1yuJT{fo;LwGL#fmPeBD6|l!Twvt+j`lqs9+1cY zm^?edho|t>ky2qNSc25I=J2s-D$|aEp{Ztz%CY0l!4yr~!pL8w^1h;a;bG{ZG0^;z z)!AuNRGwU|upjGuQ?KC<$zJ(`bP@K8VkTxW5QRyGIxOoFiyM5Zg)itX;X<~SFTg!J z1^sAtI}Gz=HtG+T2X>&GF+h#YgY;--vHT_Ap}w=At$7q$97`)dLW0nWG3) zC=lXI|4Yg?UEGy|6}wRC;tPw=d5^sr@-Mv=IF#Mi$wI;shKbu$-PgHof{imc>X*^v zQw0E0mqJvTBXst0zVyS8J2lPvFjQb53~7$9{mB>aV#w)(yTOQ|smi?#TVv~!?`smg z1({SbXBSQ-^T8N2Jk8rzR)<)=UCgoMg8w}U@u)RRt07ParMAN9E!y2I7~hle=Pt%$ z3B*|4(jR|5luA+v$wEPUO2p=JOfs_Ha|Xn{*VlK&^f0zM)H#zJ^$(zX0E9ITAjZ$8 z!|;OP8+bXz>+HuOxq8x@AjBR9MKDIiu!C~RW?;m@-Sj_1;tu=oKM+Za?b)YKB8N>b z5nDbLRLq#8&iB$z+qQp`VeK+Fr|dD`0YFmjI73N3&=6;mg077yvbQve)~UX~@2g*s zN(ON3e6!k>TbZ;nRp{J82nRb0m=}~hTo1@nY}YJH4JLwu1{^@V}g|yEv zJ~s0dnzM)SFEn*tU`g~O&c%|_f}g=;-4Wk5jmc8Q^hStu5oMwwLxPm0RW)XYkGMw+ zcI3gOxdj2Sta|`Kyf7pIVJv3GFo$J40W|HIiDJerZnEH2ZjEHJ55k$Zf=%QOrrQxSY9GXvXWEy9s1Dm4<3C^^X)$SKa( zJniVmO+Nf2zWmROOQTR zn@##Mku}K!St!3ik^go=UY(1$Q;Phf^3ykkQ~{SDc0{bSj>T%96f#?(@>C_2a!kjL z$qSAj1HXiYLQU%Hg?{lM49+rPQ6SC!p%SH3a&(!igVaXaY)2L8{amg3SO9?H#e$+g zFxFfXjc5c!w_!?4?^fyy-+aw~(thrRMdn}QHouZ24-Kf&`U$MPp6C5LkE(zzNG502 z6-r`|i=rXcwuf1b;An-uqzCG?Z65G0MqVaatT3qWb!m%$(%jlGq+-G*-BI?NAcJKH z+aq(}!HWCRHjd14F}w>s|0mQqph}GhtEC^olnRG9uB}FU+=mejH^5qgUA84I#O3#9 z!sNw!X8gVb5^XO0>I0Z+{6JHBKUD`Uh+_EKfEJ5NnKLSnWM5-enK&tvPpGJxhuHLUh2q2L)?J9RE^-;)qm> zs62o+5DF~W+bd*I?G0|0(KTIY!cEsMc$zV`TS6Tad|$&Ms2&!-$@7&`0m2^FTs+F- zkvRj6A8T`E0lg|!bAYW}v^S=jQ~0=TKfNG+Rt?|efKI&^xBWjzu48>LbRq(jz0kz zN_nvBg8mcDskGqcN&XI_!@?0L#eMFtQzg<)47H(QSzk(XAoL%l8FRb|LQrwKmVbiL zq*^BAb;A*xQ*B+V>Y>#)9^Jim+Eymjg&O(GfsT_Y$xLl&zY;dS+e^CF9wf@IP`TbctU zlwxOTD=W&I5qH(p7dmu#%q zX()(p>T}U)1E3|NVD)YYWt2B=44(Pzuuu_?)_zB`ZT~zfuay?Hq}J`tye%F7-(p!_ zScWL44ehij5##R8y+`^y(R6=yS9hS4L6x!gT1vF&BWm=epWp<5AHBKvs}YZC3uDX9 zCrv?^F0H^z&;&{ri$}q=fr8h|=Vv-SK;6$R znz$21t*0j~ecDV4Nc@H~(RTNcdc0cZ23if%>=t#bE1Zzk+@Qij3_e@m-?$VR>DR)M zND0EL*44)cj>z*R{~xKY(MtNYml{Ogn!4K*udFD#Dw57DbA=~<@T*1MrwRhYqfFK3 z;!=eG!TBV;mHtbhYQO_gFd(Qm`S>Mhy?2U8CzVK8x&_>|1X-uJ`w$|iQxmcL6%od! znN$m`hsx734lyLWdnvoDgkk_dobZii71ql6PrIJMB(cvviuHXZ>zA`$($5SiM!p8D zokhb~T!$_?^+T0l{J2~~rD>%fG~9RNE{M~r&#};qPWYeHY>%y}mVE7nld65kf7vCvA(AWw4tRgz@KIWO^D)HAK8I zifh%8U|Zyht2JTnkKC{I(swEEgBpBCPY>C!b&Q(x7fTCi5ABtSPt0IAQt{#W!aItd zzs%BELmyc`fk924Es*byh;>pkdj4)r|2FsuOPliRo({NFZWEL9*I}=4TIexWOk)&) zVQDRy;zpAC?lOQk$94f=vKfkl+rX0d5{w{qpXTc~`LwcRAFq+SI0Zuou!#veUX_S-=pZbBQn5Ok$QOXL5c!yhO&?)ZX>t zuts=l{dr@v6@|E&CF!BLot9~D*5BhpbmA0Hap@~*gkpITox-z(t$046riI&19!eZ!VFZ_vLQqnRtiVi5_7cxT*y9M|YQOq(= zfdn-6x#sSFMQwX|D5>I1D46TFjv-s6ceN?(ZxpZ`Vif}BTvdgcHqo|qD7m-Cn3RY6 z4)x*4kL@M6*Mqf0hpi0F4}Ess69eGkqyL8A+sVb_&|x=2n?W5tK4tN)<2rk0mmM~t ztxc}_LI=MgT+GLJ559=sqQ89lc#YqB0|YOqp%h{KPT@5pC}E0=P2bZx62z|;QeA-k z`woN3csL3clVTon(->#oT$lEGJv$O{4@LtgFX-H4A>zc>k?Zy6tKob1s!hK!Z139D zb2M?~JxdTF5$u0e4umA%jXQe2*OZvCcKdlYeiM)GWxUf|HIB*QBt{%lO!T-zaJ`|J z39I@hMKNj-8yAM`zJ=R;?~?2Z351^=8n-|dp+SBuQ!9)Mjp)Xy=~c9u1F5l6C;q*n zS;;FO!-w`k=GD{9mN-$r82hj)jPXkO_Be8X2+gcw|*Et(b@G?qVTd| zGO|Y%!cRe$WZ?s)E@PPSmgIq?-!!q(mK~F^86QI!d7TFGjLyq~eqc}wlFyPxZ zN`c^-fFW_)vNz2=zmMx7)t1NgRZvQRBCRg};W}%dz2ta`*Pl_?30dVpq2!ImPB=(F ze>O*%Tu&R;q6|A{B##2zeP!nYpH@yz1%s3uN|FY#`A_^^jp=vj{SFIunYTFXQ`up2 zZjm@l_%f}JlubJR;+0p>^u3x(%4zadt58`LS{!)UQB*{(;aQqc+B=dHY8>YdX#!Q8 zcFrrRzt9OumZWtkF%s%rlZev_+^eow%lg_iV7uL|36p(97=*9BH2)$@CORp%=gQZa zLK+bH-x|-fy?wkEg6iu4`b34%t0kc{ zMH$|AV`nux#+H(-f)HMTN4fkl?8rV+)N8A zXMIG4mj%4n%AV(OflR|}YGa}|OD_?hc&?Ybb^IVZ2)y>+sCKuCOimwOK2`$ix%4O2TF~DsOJw?k3=O;NfT zK1M9jb6@?_;9L1kqbte7gj+*{6VXJ_58dUgmV`Os6tWFpmh8(L6Lo_|y-!Lq74z(L ztxNMJf9}rVFRmK(IxaJ?m0|ZI zLTI*%?^|w#*Y_F^A93`r9WoLn%nb1)l^xB-l&u~$yxC3_F!vR1@}S%9#k$YGvbt?b zvyavn{se>uLVB{7({5|IzhXdrCUAB^sJgk}MH-SURjTQro{`$j{k71WYz+LKebSPzG}AjeSJCOz&vR>|1%Pj4`J#dT`19=Hy&B8@dF`W(#M&RaV zx382em~oEgmrCaxBqpmLTVBC@fm$P&qyMxm)Y1dd-4`24{nxDigF^eSdU}nuZZ{+w zNavJ6>WAu1H)_MJH5L5L$3L&Zf&v2ya_5!oPUo@G*3qNS6-RWNI zd%b>DP&8PUGZfh7+}-Yw;H=*K4IdKi(XW4YbTAk{bNE`ES1UNxuvas*=!jEc z%k6inZ|oD`ddk?X({-NJZML>mJcwK7hVX@M(Ku#HM39q-?SB4KtM_j}LJ=MENvOq( z)w}oHJ2=@bLY4o(0l}x|I$39a7nL=SGfegomYUkGK#{muRdp?^)0wmyjvBX_?)a zPug>FxLRP|%|kl$Wep00nV4pCYX(6&9B6q>ce^CiKm{B98&MtqcrUoic+Hx{$Vj_Q zG7E;ldSLF*-C$Oc_6hxl_x$v_Z;^qHUiQ=XT0aBa&cbBR6&vN~^=rLwR!ZRO+6Mn? z#vA(wukokyia+~T+)#(%I#Sq#syw$pmeI%1jAEI{^*a2aT4*X5^~tG|vF*jw3WF!! z);C0!t$TqeQH=J+Nu@bswzY2b&F=|ExX;081(VgDFKIx}QKOY-GOwfs# z;mJH|50O!bZ@Z}L7~=W`ZTh7pO##HKBzjiU)orKaFSL%t6Ba?oA}ekILi1ezKNODd zL*a$-?v2JE!6(gjKATYNl!BlrFay_Ec`?Jzc=UjAcyLQuP+)hTq@yI<&=X^am3 z*kzSwBwrwsto5N4YvJ1ZCz;@6T!B!9BNA#$;_u1fMVNT^cQ3GTTg;ofPR^*kFEuv5 z9@_9EgjS*Kf)LL4cbEMdTubZ2cwwFj-T$)A_eH(sTZ(v0Z%5%h$~e%#&EZ zK&pj2_a@OBmKV6i2@QosmT-b`4jKhNkA}aT12$`%RmMtubkw$yJWN}rTDD9`7Sm)8 z8mL+0S|VK-mc?@gBQaG2+yL#J-lw}*(w9THXkox*RAJG57uF3+Rt1p6{P^ZRNkS=> zrl07UbwJ(@=G~pBE=OV0-umO+F!KpY=#-W3O1qcT(TuLpa00m5C&)oPulLhGaA*=x z|NOf{mhVRU3_p`h1?5c?XykO|?Eq*Q_H6*N;jAU^K5LA)kUf>9Zm_ib2 zyN&#JteDuQx5wKKa}W&>5dl&?;561ylBzo~X1q_)uABB5)3mQNP_!Y8VY55XyR#8_ ztTCv$=S2$JuDjxkaLj(c^g_vUe_ig)wF}`6;Irt<1JYj`= zKAK?UpMcC47w|Ip`BHRGG0L^}h5*>_bNL^O=ELn?*wgX_vr%JkI6=RxZ_v-7rFQiV zDeA#?F&O^72?8_FfDCH4oT`Cpb9W`VZgU2IxLeNdhm5IJE~YaZ`)>ry zMn-j-mMbx+ZoQY$G|!NZl7OrldmbX5P-xg*EC|-JP??*Kv8umXTR5M6jMpnZ>w|BP zwZm)p>I?cnN0oQbzzEp<*EuS4rY`Gl^aYJu%5o;+at^lnUUCa7o)nP{Ntg+57HYTO ziTKwNU_NiU2oSB0Mf_fIjjba+ppXmf`a{Usztu?4Poe|<<@dI$h2T%YqCa8Guu9|0 z-hNi?7DI_obkL62J#kH&unHV$Fh8DIzBMeluhw^sDPJh^8lM(7=L6)7kT!rfQUj!h zD~YZ_!irBF|Fl@(osr*%7F!_^V44;hFKx#SzMOL_#sZ0PrlPw_@)s^B0 zAg8=8-xG@T!}Mq@uQw2e3b{x1dt-jP%{C0Ikk8N`ELK;bE{v$swAb*Ox3Qc5oOZ0? zxMMOfobYsrUGm!#xZTlPbh|Ecl8@z%;Yoo<-&N-GJV}8Zv@wa1$?gh2J*J9 zCvzIsxR7!sQ!ptlR0Si_xLF9&bY)dweR^XGg*_uNe(^+vwf4=>?i1 zuHkgiu;}`#r+JZKX?{X)+k#9zJ|C73>i+vu}GD8 zj>DO!+Z+{%*VeTe^PN@ZwWB(Q7GbiF(swY+hL%U$MFfjBp7{laHC1+H$rhAS5I~t* z(b}SQgWo^hmv4iXFxN|#KL&p9kmBk0PkN&Cl!c7<9}Ndzl5w!8INT-|NRh_s$MT*6 z;V#!MFTZ@}_*tKfR0v7zU{475J~hwU)?1$UH5zosR09QZT{w26V@qx`ZK50d321=S zbL*K+K)}j_5|^gl7P`2B1i=j5MbUZ{QUcDtfoS?_IkED_Wq?)YRBfzQYaWT=7ZxIvXGSj<9L2B+FPc1=3Az9 zH>r&wY!b;^3_t6*d;@6kNQJb%gVK!8S1C1doK~}kq+RSTOyU@93ce_NVKizVK^vlI zs_QXlG0Fcnsj5s^i@HN`76#9 z51$%~oTb`rD>Y&)inrqS$A0Y$W;Z#Y`9c@T+R3A|()qPq`!q&}^vVdw<jA9%Vs{#v|Gw&x;okO(=ht>Zn@E5r zPK~!al|Rl4hm&E~nW{|%P}|ov3f;svxpgY*X*x&SgWW$+{ZkjtkUQu|nEc~_pey_E z{3{o7k~^@eC+~Jbe9tiE%HC!s%YUHASLiiOVB=CulKPXIT**D%D(z(6`B+T|tCT(U zy*(87+ERKbeKh}=aCFOhB~$Cg3$nrEAmeAnrYZ!R#@n`mo!4dMY~LR%UCwQSGb4AK zrFfDaUcu|>yL0b8JlI%AG<-t^J}YkQ1H%wA$Y@&~7VGgB5;mm=E^nzb;=v!Q@Cd&4 zHeWn8DWoAIQZJB(we`hH+a{fUr}+ipr}c3XnYt#ni@BuFK}vk;sN5T(3Z)@@=q=}u zE%(+O#fZkED2gwS*hP&O7mG6)8r}X++x0{4j=dIcw6VXZ=neC5IU#{ zhXTIQ>Z*q4Ta1`uih&L1ysHD&+wrm9aEm4B7mkipEv3vV+s;0P5x9%AED}T~OOlG8 zRDBSF5RCZW4RW4s>T>lfw2&8u>hh<;?$-;E5BBxdnSBaQtxbABj)HH+*DtmvGe%CZ2FF}c8R$7Fzm(O7aAZ!M8$QW z2a_~|Gf|lRV29$&r+HO%xE-#^qzHQb*?MF>a%bq69n8_)hVsH1S%thJ!EawM?X2tm&?0~m*^e1yR<4lx0p(HI_E9so%vyru*L4C@24bGA+XGX ztfj`(;3?@nj}z<1y{~=51wz3c^9A_5Pnj3?Iv1?{Q-*lRzVioX;6Q9j znkQ=bJHt4Qs5iZY`VpDw4Zoq@m*0-R)_(lGFrZoL_+J{r166HR%N|XftcQdtR3tld z;BYXxd5#ckOxnlrupA_FKMd})N8VSik|2G{e%>N>wrgbo??U(lfIq_)6fO6Di!t+^ zTe=r_oZAXxhVWZ=j@rZ;#Tp+7TPVO>Z#paXE1h)k0pj^Zg>qOsd*bsEYAn7yW>zK$ zo-d&b#MblNgPL;jGO!>Z;AUjRzp5QHZEe?REKZkM15VC3m!f^JPvhscy4`$&L#qkO zZG=G1OpSeOX{ z>DT`N4y4C?fQ%4PNKx^O5Ko6()>_=WicZP0FNjr~h!DhCDs#K0mc&QpL_WfaTFAgW zY9ph4gZiljMv!*O*Z3S=!ZUr!tQN3zg7z&^1Cq$QI<@i8XU4jYK3m+m)BLSUIs$~!5ovV+{AAaDm()&l?u}L z*$S|+XskD@V;QZ2U{`UOMVCrvY-h}RCm(#Cbv*V%q1u7Uv)E+x8$q`U7N-P$Q=cEq zg5y&Y7_T*N!*S&i8x!=k(LL_IE*bb^mGi6cq-*=RCOb4|eFit%^>-U@u+Qjkv*-`k z?@I`eaD`w#1c7Hd^rdIXxH=xt4egrU0Cccd@I7YSa-{W>fHyP@?}SMOLZy!R`i^qBzq0H8N! zeb12wfYImJN$3j17cioKx)qHWKTEpV; zY$&?d;tB!%q1oYe>^&yi6gjX{!L)9285r+Cm zgYGw-B!@8no4fDF@jnnFk3N`Y{QUz};hQSSUhmyqdPy(A~6 zD&D?j%t3K8JKZ6y(oHjPOrb7_4OChI*eTE{!?9X#rJ1lMu9=>|M&|e$#lq; zEi;FOL6%v)d_&#<0Ki?uOIrA;B~Lf-7dThUt*-~~z<5=XK>yQ@GT?2BUB%AvlHLsV z3N+jO+T0OI6ks0XIvSpL>hD1H@FO9ZCEa@*iQjukh#?QQ=ag(Bze5QkD)|LbN3wNU zsOs*$I7Yll-(JdZLX)*-JqNm1B7a74jOJFr5&@Z!C0}xBSa*=aC>1-WXLa7C56HqC z44`OiOLPqai2*)MCGffVe0YWNDY;TR1JV<;BWntXR^CSaBH{Y&V07P#y4*7&(utBr zni#08CR_=kxG(5j&6T7ZT*-iR&UV@Jm%p}(H^?}Scm{I_5SYU&2GKD~qqpaus+mL^ z<_*zaDyOAFT+V^6+O5&T-LcHo(dXLuOuH*<%AQhrp%xd*=nn?07n{y6dGCVSiIVX1 zKTyix6T-M_xjmCc?+P>v9r9b?we7s-n_o0 z)oTe&=oq!aX~`DaU#{nx_O#7Tf_&;fAFme~mZ8KJj}Ex(7x=>n^SXe8RI8Q6SXvPa z)cfwp&L6J`+?E48tvUi?5Fijmhz36?2+iW`EjT9&jRWUeOpSr#T5I`6Z&a}D`Nq{aaS;`6fsdKwUYDkPJoB$Y z4(TMaf!$flO#w$z$x{RT^Crt%yzU$0VzkvnNGOo@A2dkpW?$p?L`eTgXV_{G|=ZGCh(y0lE;UdXkjocS&s}Fj<_>j3mU- ziW)s!nBEIOp$17cX*w)GQuIRgpV=$5u!UA8t$kiphbXO;u7wuB`CX#j{peyL+~sY=PSM67EcN^0WAwhgPXG7Q_bS?9L7`gAn`(jt6msTrf_A$~pk zd&9lges=akepGt3hr7&wnBlJm<8e+RvGq1_Tm6Pg#lee8bft*~@&3t3D2P{y8V3Cj DN8rs; literal 0 HcmV?d00001 diff --git a/projects/mtg/Makefile.linux b/projects/mtg/Makefile.linux new file mode 100644 index 000000000..609ac182c --- /dev/null +++ b/projects/mtg/Makefile.linux @@ -0,0 +1 @@ +FMOD= diff --git a/projects/mtg/build.number.properties b/projects/mtg/build.number.properties index 63a056a81..721346776 100644 --- a/projects/mtg/build.number.properties +++ b/projects/mtg/build.number.properties @@ -2,5 +2,5 @@ #Sun, 06 May 2012 11:56:35 -0700 build.major=0 build.minor=19 -build.point=0 +build.point=1 diff --git a/projects/mtg/iOS/Reachability/Reachability 2.0.4ddg/Reachability/Reachability.m b/projects/mtg/iOS/Reachability/Reachability 2.0.4ddg/Reachability/Reachability.m index 566f4882f..05ed2692f 100644 --- a/projects/mtg/iOS/Reachability/Reachability 2.0.4ddg/Reachability/Reachability.m +++ b/projects/mtg/iOS/Reachability/Reachability 2.0.4ddg/Reachability/Reachability.m @@ -161,13 +161,13 @@ static void logNetworkStatus_(const char *name, int line, NetworkStatus status) switch (status) { case kNotReachable: - statusString = [NSString stringWithString: @"Not Reachable"]; + statusString = @"Not Reachable"; break; case kReachableViaWWAN: - statusString = [NSString stringWithString: @"Reachable via WWAN"]; + statusString = @"Reachable via WWAN"; break; case kReachableViaWiFi: - statusString = [NSString stringWithString: @"Reachable via WiFi"]; + statusString = @"Reachable via WiFi"; break; } diff --git a/projects/mtg/include/Wagic_Version.h b/projects/mtg/include/Wagic_Version.h index 918f836d2..8b3e45b2e 100644 --- a/projects/mtg/include/Wagic_Version.h +++ b/projects/mtg/include/Wagic_Version.h @@ -13,7 +13,7 @@ Author: Michael Nguyen /* Wagic versions */ #define WAGIC_VERSION_MAJOR 0 #define WAGIC_VERSION_MEDIUM 19 -#define WAGIC_VERSION_MINOR 0 +#define WAGIC_VERSION_MINOR 1 #define VERSION_DOT(a, b, c) a ##.## b ##.## c #define VERSION_WITHOUT_DOT(a, b, c) a ## b ## c @@ -30,4 +30,4 @@ Author: Michael Nguyen #endif - \ No newline at end of file + diff --git a/projects/mtg/wagic.xcodeproj/project.pbxproj b/projects/mtg/wagic.xcodeproj/project.pbxproj index cf9275fe4..8da43af99 100755 --- a/projects/mtg/wagic.xcodeproj/project.pbxproj +++ b/projects/mtg/wagic.xcodeproj/project.pbxproj @@ -19,10 +19,6 @@ 12059D7214980B7200DAC43B /* zfs.vcxproj.filters in Resources */ = {isa = PBXBuildFile; fileRef = 12B8122C1404B9E10092E303 /* zfs.vcxproj.filters */; }; 12059D7314980B7200DAC43B /* modrules.xml in Resources */ = {isa = PBXBuildFile; fileRef = 129654D5148AA2390031100B /* modrules.xml */; }; 12059D7414980B7200DAC43B /* README.txt in Resources */ = {isa = PBXBuildFile; fileRef = 128ED37A148BAE7B00C58E83 /* README.txt */; }; - 12059D7514980B7200DAC43B /* README in Resources */ = {isa = PBXBuildFile; fileRef = 128ED3EF148BC94B00C58E83 /* README */; }; - 12059D7614980B7200DAC43B /* AdWhirlWebBrowser.xib in Resources */ = {isa = PBXBuildFile; fileRef = 128ED42D148BC94B00C58E83 /* AdWhirlWebBrowser.xib */; }; - 12059D7714980B7200DAC43B /* Changelog.txt in Resources */ = {isa = PBXBuildFile; fileRef = 128ED475148BC94B00C58E83 /* Changelog.txt */; }; - 12059D7814980B7200DAC43B /* README in Resources */ = {isa = PBXBuildFile; fileRef = 128ED481148BC94C00C58E83 /* README */; }; 12059D7914980B7200DAC43B /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 12211ECA1494811D00641703 /* Default.png */; }; 12059D7A14980B7200DAC43B /* Default-Landscape~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 12211ECC149481B600641703 /* Default-Landscape~ipad.png */; }; 12059D7B14980B7200DAC43B /* Default-Portrait~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 12211ECE149481C300641703 /* Default-Portrait~ipad.png */; }; @@ -184,36 +180,6 @@ 12059E1914980B7300DAC43B /* AIPlayerBakaB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 12769484144127380088F6D3 /* AIPlayerBakaB.cpp */; }; 12059E1A14980B7300DAC43B /* TestSuiteAI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 12769485144127380088F6D3 /* TestSuiteAI.cpp */; }; 12059E1B14980B7300DAC43B /* AbilityParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 12CCA02F144A05D100E343A0 /* AbilityParser.cpp */; }; - 12059E1C14980B7300DAC43B /* AdWhirlAdapterGoogleAdMobAds.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED3F5148BC94B00C58E83 /* AdWhirlAdapterGoogleAdMobAds.m */; }; - 12059E1D14980B7300DAC43B /* AdWhirlAdapterIAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED3FB148BC94B00C58E83 /* AdWhirlAdapterIAd.m */; }; - 12059E1E14980B7300DAC43B /* AdWhirlAdapterCustom.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED413148BC94B00C58E83 /* AdWhirlAdapterCustom.m */; }; - 12059E1F14980B7300DAC43B /* AdWhirlAdapterEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED415148BC94B00C58E83 /* AdWhirlAdapterEvent.m */; }; - 12059E2014980B7300DAC43B /* AdWhirlAdapterGeneric.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED417148BC94B00C58E83 /* AdWhirlAdapterGeneric.m */; }; - 12059E2114980B7300DAC43B /* AdWhirlAdNetworkAdapter+Helpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED419148BC94B00C58E83 /* AdWhirlAdNetworkAdapter+Helpers.m */; }; - 12059E2214980B7300DAC43B /* AdWhirlAdNetworkAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED41A148BC94B00C58E83 /* AdWhirlAdNetworkAdapter.m */; }; - 12059E2314980B7300DAC43B /* AdWhirlAdNetworkConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED41C148BC94B00C58E83 /* AdWhirlAdNetworkConfig.m */; }; - 12059E2414980B7300DAC43B /* AdWhirlAdNetworkRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED41E148BC94B00C58E83 /* AdWhirlAdNetworkRegistry.m */; }; - 12059E2514980B7300DAC43B /* AdWhirlClassWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED420148BC94B00C58E83 /* AdWhirlClassWrapper.m */; }; - 12059E2614980B7300DAC43B /* AdWhirlConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED422148BC94B00C58E83 /* AdWhirlConfig.m */; }; - 12059E2714980B7300DAC43B /* AdWhirlConfigStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED424148BC94B00C58E83 /* AdWhirlConfigStore.m */; }; - 12059E2814980B7300DAC43B /* AdWhirlCustomAdView.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED426148BC94B00C58E83 /* AdWhirlCustomAdView.m */; }; - 12059E2914980B7300DAC43B /* AdWhirlError.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED428148BC94B00C58E83 /* AdWhirlError.m */; }; - 12059E2A14980B7300DAC43B /* AdWhirlLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED42A148BC94B00C58E83 /* AdWhirlLog.m */; }; - 12059E2B14980B7300DAC43B /* AdWhirlView.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED42C148BC94B00C58E83 /* AdWhirlView.m */; }; - 12059E2C14980B7300DAC43B /* AdWhirlWebBrowserController.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED42F148BC94B00C58E83 /* AdWhirlWebBrowserController.m */; }; - 12059E2D14980B7300DAC43B /* ARRollerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED430148BC94B00C58E83 /* ARRollerView.m */; }; - 12059E2E14980B7300DAC43B /* AWNetworkReachabilityWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED433148BC94B00C58E83 /* AWNetworkReachabilityWrapper.m */; }; - 12059E2F14980B7300DAC43B /* UIColor+AdWhirlConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED435148BC94B00C58E83 /* UIColor+AdWhirlConfig.m */; }; - 12059E3014980B7300DAC43B /* CDataScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED484148BC94C00C58E83 /* CDataScanner.m */; }; - 12059E3114980B7300DAC43B /* CDataScanner_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED487148BC94C00C58E83 /* CDataScanner_Extensions.m */; }; - 12059E3214980B7300DAC43B /* NSCharacterSet_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED489148BC94C00C58E83 /* NSCharacterSet_Extensions.m */; }; - 12059E3314980B7300DAC43B /* NSDictionary_JSONExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED48B148BC94C00C58E83 /* NSDictionary_JSONExtensions.m */; }; - 12059E3414980B7300DAC43B /* NSScanner_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED48D148BC94C00C58E83 /* NSScanner_Extensions.m */; }; - 12059E3514980B7300DAC43B /* CJSONDataSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED490148BC94C00C58E83 /* CJSONDataSerializer.m */; }; - 12059E3614980B7300DAC43B /* CJSONDeserializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED492148BC94C00C58E83 /* CJSONDeserializer.m */; }; - 12059E3714980B7300DAC43B /* CJSONScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED494148BC94C00C58E83 /* CJSONScanner.m */; }; - 12059E3814980B7300DAC43B /* CJSONSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED496148BC94C00C58E83 /* CJSONSerializer.m */; }; - 12059E3914980B7300DAC43B /* CSerializedJSONData.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED498148BC94C00C58E83 /* CSerializedJSONData.m */; }; 12059E3A14980B7300DAC43B /* ASIAuthenticationDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 12211E2814931CBB00641703 /* ASIAuthenticationDialog.m */; }; 12059E3B14980B7300DAC43B /* ASIDataCompressor.m in Sources */ = {isa = PBXBuildFile; fileRef = 12211E2B14931CBB00641703 /* ASIDataCompressor.m */; }; 12059E3C14980B7300DAC43B /* ASIDataDecompressor.m in Sources */ = {isa = PBXBuildFile; fileRef = 12211E2D14931CBB00641703 /* ASIDataDecompressor.m */; }; @@ -287,40 +253,6 @@ 128ED380148BAEC900C58E83 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 128ED37D148BAEC900C58E83 /* AudioToolbox.framework */; }; 128ED381148BAEC900C58E83 /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 128ED37E148BAEC900C58E83 /* MessageUI.framework */; }; 128ED382148BAEC900C58E83 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 128ED37F148BAEC900C58E83 /* SystemConfiguration.framework */; }; - 128ED4A9148BC94D00C58E83 /* README in Resources */ = {isa = PBXBuildFile; fileRef = 128ED3EF148BC94B00C58E83 /* README */; }; - 128ED4AB148BC94D00C58E83 /* AdWhirlAdapterGoogleAdMobAds.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED3F5148BC94B00C58E83 /* AdWhirlAdapterGoogleAdMobAds.m */; }; - 128ED4AE148BC94D00C58E83 /* AdWhirlAdapterIAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED3FB148BC94B00C58E83 /* AdWhirlAdapterIAd.m */; }; - 128ED4B8148BC94D00C58E83 /* AdWhirlAdapterCustom.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED413148BC94B00C58E83 /* AdWhirlAdapterCustom.m */; }; - 128ED4B9148BC94D00C58E83 /* AdWhirlAdapterEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED415148BC94B00C58E83 /* AdWhirlAdapterEvent.m */; }; - 128ED4BA148BC94D00C58E83 /* AdWhirlAdapterGeneric.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED417148BC94B00C58E83 /* AdWhirlAdapterGeneric.m */; }; - 128ED4BB148BC94D00C58E83 /* AdWhirlAdNetworkAdapter+Helpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED419148BC94B00C58E83 /* AdWhirlAdNetworkAdapter+Helpers.m */; }; - 128ED4BC148BC94D00C58E83 /* AdWhirlAdNetworkAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED41A148BC94B00C58E83 /* AdWhirlAdNetworkAdapter.m */; }; - 128ED4BD148BC94D00C58E83 /* AdWhirlAdNetworkConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED41C148BC94B00C58E83 /* AdWhirlAdNetworkConfig.m */; }; - 128ED4BE148BC94D00C58E83 /* AdWhirlAdNetworkRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED41E148BC94B00C58E83 /* AdWhirlAdNetworkRegistry.m */; }; - 128ED4BF148BC94D00C58E83 /* AdWhirlClassWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED420148BC94B00C58E83 /* AdWhirlClassWrapper.m */; }; - 128ED4C0148BC94D00C58E83 /* AdWhirlConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED422148BC94B00C58E83 /* AdWhirlConfig.m */; }; - 128ED4C1148BC94D00C58E83 /* AdWhirlConfigStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED424148BC94B00C58E83 /* AdWhirlConfigStore.m */; }; - 128ED4C2148BC94D00C58E83 /* AdWhirlCustomAdView.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED426148BC94B00C58E83 /* AdWhirlCustomAdView.m */; }; - 128ED4C3148BC94D00C58E83 /* AdWhirlError.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED428148BC94B00C58E83 /* AdWhirlError.m */; }; - 128ED4C4148BC94D00C58E83 /* AdWhirlLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED42A148BC94B00C58E83 /* AdWhirlLog.m */; }; - 128ED4C5148BC94D00C58E83 /* AdWhirlView.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED42C148BC94B00C58E83 /* AdWhirlView.m */; }; - 128ED4C6148BC94D00C58E83 /* AdWhirlWebBrowser.xib in Resources */ = {isa = PBXBuildFile; fileRef = 128ED42D148BC94B00C58E83 /* AdWhirlWebBrowser.xib */; }; - 128ED4C7148BC94D00C58E83 /* AdWhirlWebBrowserController.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED42F148BC94B00C58E83 /* AdWhirlWebBrowserController.m */; }; - 128ED4C8148BC94D00C58E83 /* ARRollerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED430148BC94B00C58E83 /* ARRollerView.m */; }; - 128ED4C9148BC94D00C58E83 /* AWNetworkReachabilityWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED433148BC94B00C58E83 /* AWNetworkReachabilityWrapper.m */; }; - 128ED4CA148BC94D00C58E83 /* UIColor+AdWhirlConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED435148BC94B00C58E83 /* UIColor+AdWhirlConfig.m */; }; - 128ED4E8148BC94D00C58E83 /* Changelog.txt in Resources */ = {isa = PBXBuildFile; fileRef = 128ED475148BC94B00C58E83 /* Changelog.txt */; }; - 128ED4F0148BC94D00C58E83 /* README in Resources */ = {isa = PBXBuildFile; fileRef = 128ED481148BC94C00C58E83 /* README */; }; - 128ED4F1148BC94D00C58E83 /* CDataScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED484148BC94C00C58E83 /* CDataScanner.m */; }; - 128ED4F2148BC94D00C58E83 /* CDataScanner_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED487148BC94C00C58E83 /* CDataScanner_Extensions.m */; }; - 128ED4F3148BC94D00C58E83 /* NSCharacterSet_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED489148BC94C00C58E83 /* NSCharacterSet_Extensions.m */; }; - 128ED4F4148BC94D00C58E83 /* NSDictionary_JSONExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED48B148BC94C00C58E83 /* NSDictionary_JSONExtensions.m */; }; - 128ED4F5148BC94D00C58E83 /* NSScanner_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED48D148BC94C00C58E83 /* NSScanner_Extensions.m */; }; - 128ED4F6148BC94D00C58E83 /* CJSONDataSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED490148BC94C00C58E83 /* CJSONDataSerializer.m */; }; - 128ED4F7148BC94D00C58E83 /* CJSONDeserializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED492148BC94C00C58E83 /* CJSONDeserializer.m */; }; - 128ED4F8148BC94D00C58E83 /* CJSONScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED494148BC94C00C58E83 /* CJSONScanner.m */; }; - 128ED4F9148BC94D00C58E83 /* CJSONSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED496148BC94C00C58E83 /* CJSONSerializer.m */; }; - 128ED4FA148BC94D00C58E83 /* CSerializedJSONData.m in Sources */ = {isa = PBXBuildFile; fileRef = 128ED498148BC94C00C58E83 /* CSerializedJSONData.m */; }; 128ED508148BCB7D00C58E83 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 128ED507148BCB7D00C58E83 /* CoreLocation.framework */; }; 128ED50D148BCBBC00C58E83 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 128ED50A148BCBBC00C58E83 /* AVFoundation.framework */; }; 128ED510148BCC1900C58E83 /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 128ED50F148BCC1900C58E83 /* libsqlite3.dylib */; settings = {ATTRIBUTES = (Weak, ); }; }; @@ -577,8 +509,6 @@ 12769485144127380088F6D3 /* TestSuiteAI.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TestSuiteAI.cpp; sourceTree = ""; }; 127694891441274D0088F6D3 /* AIPlayerBaka.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AIPlayerBaka.h; sourceTree = ""; }; 1276948A1441274D0088F6D3 /* AIPlayerBakaB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AIPlayerBakaB.h; sourceTree = ""; }; - 1278F94C149145BB00A7A373 /* AdWhirlAdapterGoogleAdSense.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterGoogleAdSense.m; sourceTree = ""; }; - 1278F94D149145BB00A7A373 /* AdWhirlAdapterGoogleAdSense.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterGoogleAdSense.h; sourceTree = ""; }; 127D4C6E1376B33200109AB4 /* mtg.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = mtg.txt; path = bin/Res/sets/primitives/mtg.txt; sourceTree = ""; }; 128ED373148BAE7B00C58E83 /* GADBannerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADBannerView.h; sourceTree = ""; }; 128ED374148BAE7B00C58E83 /* GADBannerViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADBannerViewDelegate.h; sourceTree = ""; }; @@ -591,74 +521,6 @@ 128ED37D148BAEC900C58E83 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; 128ED37E148BAEC900C58E83 /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; }; 128ED37F148BAEC900C58E83 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; - 128ED3EF148BC94B00C58E83 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; - 128ED3F4148BC94B00C58E83 /* AdWhirlAdapterGoogleAdMobAds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterGoogleAdMobAds.h; sourceTree = ""; }; - 128ED3F5148BC94B00C58E83 /* AdWhirlAdapterGoogleAdMobAds.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterGoogleAdMobAds.m; sourceTree = ""; }; - 128ED3FA148BC94B00C58E83 /* AdWhirlAdapterIAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterIAd.h; sourceTree = ""; }; - 128ED3FB148BC94B00C58E83 /* AdWhirlAdapterIAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterIAd.m; sourceTree = ""; }; - 128ED40E148BC94B00C58E83 /* AdWhirlAdNetworkAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdNetworkAdapter.h; sourceTree = ""; }; - 128ED40F148BC94B00C58E83 /* AdWhirlDelegateProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlDelegateProtocol.h; sourceTree = ""; }; - 128ED410148BC94B00C58E83 /* AdWhirlView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlView.h; sourceTree = ""; }; - 128ED412148BC94B00C58E83 /* AdWhirlAdapterCustom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterCustom.h; sourceTree = ""; }; - 128ED413148BC94B00C58E83 /* AdWhirlAdapterCustom.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterCustom.m; sourceTree = ""; }; - 128ED414148BC94B00C58E83 /* AdWhirlAdapterEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterEvent.h; sourceTree = ""; }; - 128ED415148BC94B00C58E83 /* AdWhirlAdapterEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterEvent.m; sourceTree = ""; }; - 128ED416148BC94B00C58E83 /* AdWhirlAdapterGeneric.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterGeneric.h; sourceTree = ""; }; - 128ED417148BC94B00C58E83 /* AdWhirlAdapterGeneric.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterGeneric.m; sourceTree = ""; }; - 128ED418148BC94B00C58E83 /* AdWhirlAdNetworkAdapter+Helpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "AdWhirlAdNetworkAdapter+Helpers.h"; sourceTree = ""; }; - 128ED419148BC94B00C58E83 /* AdWhirlAdNetworkAdapter+Helpers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "AdWhirlAdNetworkAdapter+Helpers.m"; sourceTree = ""; }; - 128ED41A148BC94B00C58E83 /* AdWhirlAdNetworkAdapter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdNetworkAdapter.m; sourceTree = ""; }; - 128ED41B148BC94B00C58E83 /* AdWhirlAdNetworkConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdNetworkConfig.h; sourceTree = ""; }; - 128ED41C148BC94B00C58E83 /* AdWhirlAdNetworkConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdNetworkConfig.m; sourceTree = ""; }; - 128ED41D148BC94B00C58E83 /* AdWhirlAdNetworkRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdNetworkRegistry.h; sourceTree = ""; }; - 128ED41E148BC94B00C58E83 /* AdWhirlAdNetworkRegistry.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdNetworkRegistry.m; sourceTree = ""; }; - 128ED41F148BC94B00C58E83 /* AdWhirlClassWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlClassWrapper.h; sourceTree = ""; }; - 128ED420148BC94B00C58E83 /* AdWhirlClassWrapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlClassWrapper.m; sourceTree = ""; }; - 128ED421148BC94B00C58E83 /* AdWhirlConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlConfig.h; sourceTree = ""; }; - 128ED422148BC94B00C58E83 /* AdWhirlConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlConfig.m; sourceTree = ""; }; - 128ED423148BC94B00C58E83 /* AdWhirlConfigStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlConfigStore.h; sourceTree = ""; }; - 128ED424148BC94B00C58E83 /* AdWhirlConfigStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlConfigStore.m; sourceTree = ""; }; - 128ED425148BC94B00C58E83 /* AdWhirlCustomAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlCustomAdView.h; sourceTree = ""; }; - 128ED426148BC94B00C58E83 /* AdWhirlCustomAdView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlCustomAdView.m; sourceTree = ""; }; - 128ED427148BC94B00C58E83 /* AdWhirlError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlError.h; sourceTree = ""; }; - 128ED428148BC94B00C58E83 /* AdWhirlError.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlError.m; sourceTree = ""; }; - 128ED429148BC94B00C58E83 /* AdWhirlLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlLog.h; sourceTree = ""; }; - 128ED42A148BC94B00C58E83 /* AdWhirlLog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlLog.m; sourceTree = ""; }; - 128ED42B148BC94B00C58E83 /* AdWhirlView+.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "AdWhirlView+.h"; sourceTree = ""; }; - 128ED42C148BC94B00C58E83 /* AdWhirlView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlView.m; sourceTree = ""; }; - 128ED42D148BC94B00C58E83 /* AdWhirlWebBrowser.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AdWhirlWebBrowser.xib; sourceTree = ""; }; - 128ED42E148BC94B00C58E83 /* AdWhirlWebBrowserController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlWebBrowserController.h; sourceTree = ""; }; - 128ED42F148BC94B00C58E83 /* AdWhirlWebBrowserController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlWebBrowserController.m; sourceTree = ""; }; - 128ED430148BC94B00C58E83 /* ARRollerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARRollerView.m; sourceTree = ""; }; - 128ED431148BC94B00C58E83 /* AWNetworkReachabilityDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWNetworkReachabilityDelegate.h; sourceTree = ""; }; - 128ED432148BC94B00C58E83 /* AWNetworkReachabilityWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWNetworkReachabilityWrapper.h; sourceTree = ""; }; - 128ED433148BC94B00C58E83 /* AWNetworkReachabilityWrapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWNetworkReachabilityWrapper.m; sourceTree = ""; }; - 128ED434148BC94B00C58E83 /* UIColor+AdWhirlConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIColor+AdWhirlConfig.h"; sourceTree = ""; }; - 128ED435148BC94B00C58E83 /* UIColor+AdWhirlConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIColor+AdWhirlConfig.m"; sourceTree = ""; }; - 128ED437148BC94B00C58E83 /* ARRollerProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARRollerProtocol.h; sourceTree = ""; }; - 128ED438148BC94B00C58E83 /* ARRollerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARRollerView.h; sourceTree = ""; }; - 128ED475148BC94B00C58E83 /* Changelog.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Changelog.txt; sourceTree = ""; }; - 128ED481148BC94C00C58E83 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; - 128ED483148BC94C00C58E83 /* CDataScanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDataScanner.h; sourceTree = ""; }; - 128ED484148BC94C00C58E83 /* CDataScanner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDataScanner.m; sourceTree = ""; }; - 128ED486148BC94C00C58E83 /* CDataScanner_Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDataScanner_Extensions.h; sourceTree = ""; }; - 128ED487148BC94C00C58E83 /* CDataScanner_Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDataScanner_Extensions.m; sourceTree = ""; }; - 128ED488148BC94C00C58E83 /* NSCharacterSet_Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSCharacterSet_Extensions.h; sourceTree = ""; }; - 128ED489148BC94C00C58E83 /* NSCharacterSet_Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSCharacterSet_Extensions.m; sourceTree = ""; }; - 128ED48A148BC94C00C58E83 /* NSDictionary_JSONExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSDictionary_JSONExtensions.h; sourceTree = ""; }; - 128ED48B148BC94C00C58E83 /* NSDictionary_JSONExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSDictionary_JSONExtensions.m; sourceTree = ""; }; - 128ED48C148BC94C00C58E83 /* NSScanner_Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSScanner_Extensions.h; sourceTree = ""; }; - 128ED48D148BC94C00C58E83 /* NSScanner_Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSScanner_Extensions.m; sourceTree = ""; }; - 128ED48F148BC94C00C58E83 /* CJSONDataSerializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONDataSerializer.h; sourceTree = ""; }; - 128ED490148BC94C00C58E83 /* CJSONDataSerializer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONDataSerializer.m; sourceTree = ""; }; - 128ED491148BC94C00C58E83 /* CJSONDeserializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONDeserializer.h; sourceTree = ""; }; - 128ED492148BC94C00C58E83 /* CJSONDeserializer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONDeserializer.m; sourceTree = ""; }; - 128ED493148BC94C00C58E83 /* CJSONScanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONScanner.h; sourceTree = ""; }; - 128ED494148BC94C00C58E83 /* CJSONScanner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONScanner.m; sourceTree = ""; }; - 128ED495148BC94C00C58E83 /* CJSONSerializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONSerializer.h; sourceTree = ""; }; - 128ED496148BC94C00C58E83 /* CJSONSerializer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONSerializer.m; sourceTree = ""; }; - 128ED497148BC94C00C58E83 /* CSerializedJSONData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSerializedJSONData.h; sourceTree = ""; }; - 128ED498148BC94C00C58E83 /* CSerializedJSONData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CSerializedJSONData.m; sourceTree = ""; }; 128ED507148BCB7D00C58E83 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; }; 128ED509148BCBBC00C58E83 /* AddressBook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBook.framework; path = System/Library/Frameworks/AddressBook.framework; sourceTree = SDKROOT; }; 128ED50A148BCBBC00C58E83 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; @@ -1188,7 +1050,6 @@ 125C5CF213B09AA200DF2F2C /* Tools */ = { isa = PBXGroup; children = ( - 128ED3ED148BC94B00C58E83 /* AdWhirlSDK_iOS_3.1.1 */, 128ED372148BAE7B00C58E83 /* GoogleAdMobAdsSDKiOS-5.0.5 */, 12211EA014933D4A00641703 /* minizip */, 12211E9E14933CC200641703 /* ZipArchive */, @@ -1212,148 +1073,6 @@ path = "../../admobsdk/iOS/GoogleAdMobAdsSDKiOS-5.0.5"; sourceTree = ""; }; - 128ED3ED148BC94B00C58E83 /* AdWhirlSDK_iOS_3.1.1 */ = { - isa = PBXGroup; - children = ( - 128ED3EE148BC94B00C58E83 /* AdNetworkLibs */, - 128ED3F0148BC94B00C58E83 /* AdWhirl */, - 128ED475148BC94B00C58E83 /* Changelog.txt */, - 128ED481148BC94C00C58E83 /* README */, - 128ED482148BC94C00C58E83 /* TouchJSON */, - ); - name = AdWhirlSDK_iOS_3.1.1; - path = ../../adwhirl/AdWhirlSDK_iOS_3.1.1; - sourceTree = ""; - }; - 128ED3EE148BC94B00C58E83 /* AdNetworkLibs */ = { - isa = PBXGroup; - children = ( - 128ED3EF148BC94B00C58E83 /* README */, - ); - path = AdNetworkLibs; - sourceTree = ""; - }; - 128ED3F0148BC94B00C58E83 /* AdWhirl */ = { - isa = PBXGroup; - children = ( - 128ED3F1148BC94B00C58E83 /* adapters */, - 128ED40F148BC94B00C58E83 /* AdWhirlDelegateProtocol.h */, - 128ED410148BC94B00C58E83 /* AdWhirlView.h */, - 128ED411148BC94B00C58E83 /* internal */, - 128ED436148BC94B00C58E83 /* legacy */, - ); - path = AdWhirl; - sourceTree = ""; - }; - 128ED3F1148BC94B00C58E83 /* adapters */ = { - isa = PBXGroup; - children = ( - 1278F94C149145BB00A7A373 /* AdWhirlAdapterGoogleAdSense.m */, - 1278F94D149145BB00A7A373 /* AdWhirlAdapterGoogleAdSense.h */, - 128ED3F4148BC94B00C58E83 /* AdWhirlAdapterGoogleAdMobAds.h */, - 128ED3F5148BC94B00C58E83 /* AdWhirlAdapterGoogleAdMobAds.m */, - 128ED3FA148BC94B00C58E83 /* AdWhirlAdapterIAd.h */, - 128ED3FB148BC94B00C58E83 /* AdWhirlAdapterIAd.m */, - 128ED40E148BC94B00C58E83 /* AdWhirlAdNetworkAdapter.h */, - ); - path = adapters; - sourceTree = ""; - }; - 128ED411148BC94B00C58E83 /* internal */ = { - isa = PBXGroup; - children = ( - 128ED412148BC94B00C58E83 /* AdWhirlAdapterCustom.h */, - 128ED413148BC94B00C58E83 /* AdWhirlAdapterCustom.m */, - 128ED414148BC94B00C58E83 /* AdWhirlAdapterEvent.h */, - 128ED415148BC94B00C58E83 /* AdWhirlAdapterEvent.m */, - 128ED416148BC94B00C58E83 /* AdWhirlAdapterGeneric.h */, - 128ED417148BC94B00C58E83 /* AdWhirlAdapterGeneric.m */, - 128ED418148BC94B00C58E83 /* AdWhirlAdNetworkAdapter+Helpers.h */, - 128ED419148BC94B00C58E83 /* AdWhirlAdNetworkAdapter+Helpers.m */, - 128ED41A148BC94B00C58E83 /* AdWhirlAdNetworkAdapter.m */, - 128ED41B148BC94B00C58E83 /* AdWhirlAdNetworkConfig.h */, - 128ED41C148BC94B00C58E83 /* AdWhirlAdNetworkConfig.m */, - 128ED41D148BC94B00C58E83 /* AdWhirlAdNetworkRegistry.h */, - 128ED41E148BC94B00C58E83 /* AdWhirlAdNetworkRegistry.m */, - 128ED41F148BC94B00C58E83 /* AdWhirlClassWrapper.h */, - 128ED420148BC94B00C58E83 /* AdWhirlClassWrapper.m */, - 128ED421148BC94B00C58E83 /* AdWhirlConfig.h */, - 128ED422148BC94B00C58E83 /* AdWhirlConfig.m */, - 128ED423148BC94B00C58E83 /* AdWhirlConfigStore.h */, - 128ED424148BC94B00C58E83 /* AdWhirlConfigStore.m */, - 128ED425148BC94B00C58E83 /* AdWhirlCustomAdView.h */, - 128ED426148BC94B00C58E83 /* AdWhirlCustomAdView.m */, - 128ED427148BC94B00C58E83 /* AdWhirlError.h */, - 128ED428148BC94B00C58E83 /* AdWhirlError.m */, - 128ED429148BC94B00C58E83 /* AdWhirlLog.h */, - 128ED42A148BC94B00C58E83 /* AdWhirlLog.m */, - 128ED42B148BC94B00C58E83 /* AdWhirlView+.h */, - 128ED42C148BC94B00C58E83 /* AdWhirlView.m */, - 128ED42D148BC94B00C58E83 /* AdWhirlWebBrowser.xib */, - 128ED42E148BC94B00C58E83 /* AdWhirlWebBrowserController.h */, - 128ED42F148BC94B00C58E83 /* AdWhirlWebBrowserController.m */, - 128ED430148BC94B00C58E83 /* ARRollerView.m */, - 128ED431148BC94B00C58E83 /* AWNetworkReachabilityDelegate.h */, - 128ED432148BC94B00C58E83 /* AWNetworkReachabilityWrapper.h */, - 128ED433148BC94B00C58E83 /* AWNetworkReachabilityWrapper.m */, - 128ED434148BC94B00C58E83 /* UIColor+AdWhirlConfig.h */, - 128ED435148BC94B00C58E83 /* UIColor+AdWhirlConfig.m */, - ); - path = internal; - sourceTree = ""; - }; - 128ED436148BC94B00C58E83 /* legacy */ = { - isa = PBXGroup; - children = ( - 128ED437148BC94B00C58E83 /* ARRollerProtocol.h */, - 128ED438148BC94B00C58E83 /* ARRollerView.h */, - ); - path = legacy; - sourceTree = ""; - }; - 128ED482148BC94C00C58E83 /* TouchJSON */ = { - isa = PBXGroup; - children = ( - 128ED483148BC94C00C58E83 /* CDataScanner.h */, - 128ED484148BC94C00C58E83 /* CDataScanner.m */, - 128ED485148BC94C00C58E83 /* Extensions */, - 128ED48E148BC94C00C58E83 /* JSON */, - ); - path = TouchJSON; - sourceTree = ""; - }; - 128ED485148BC94C00C58E83 /* Extensions */ = { - isa = PBXGroup; - children = ( - 128ED486148BC94C00C58E83 /* CDataScanner_Extensions.h */, - 128ED487148BC94C00C58E83 /* CDataScanner_Extensions.m */, - 128ED488148BC94C00C58E83 /* NSCharacterSet_Extensions.h */, - 128ED489148BC94C00C58E83 /* NSCharacterSet_Extensions.m */, - 128ED48A148BC94C00C58E83 /* NSDictionary_JSONExtensions.h */, - 128ED48B148BC94C00C58E83 /* NSDictionary_JSONExtensions.m */, - 128ED48C148BC94C00C58E83 /* NSScanner_Extensions.h */, - 128ED48D148BC94C00C58E83 /* NSScanner_Extensions.m */, - ); - path = Extensions; - sourceTree = ""; - }; - 128ED48E148BC94C00C58E83 /* JSON */ = { - isa = PBXGroup; - children = ( - 128ED48F148BC94C00C58E83 /* CJSONDataSerializer.h */, - 128ED490148BC94C00C58E83 /* CJSONDataSerializer.m */, - 128ED491148BC94C00C58E83 /* CJSONDeserializer.h */, - 128ED492148BC94C00C58E83 /* CJSONDeserializer.m */, - 128ED493148BC94C00C58E83 /* CJSONScanner.h */, - 128ED494148BC94C00C58E83 /* CJSONScanner.m */, - 128ED495148BC94C00C58E83 /* CJSONSerializer.h */, - 128ED496148BC94C00C58E83 /* CJSONSerializer.m */, - 128ED497148BC94C00C58E83 /* CSerializedJSONData.h */, - 128ED498148BC94C00C58E83 /* CSerializedJSONData.m */, - ); - path = JSON; - sourceTree = ""; - }; 128FB96A149537A600ED4EE6 /* Images */ = { isa = PBXGroup; children = ( @@ -2017,10 +1736,6 @@ 12059D7214980B7200DAC43B /* zfs.vcxproj.filters in Resources */, 12059D7314980B7200DAC43B /* modrules.xml in Resources */, 12059D7414980B7200DAC43B /* README.txt in Resources */, - 12059D7514980B7200DAC43B /* README in Resources */, - 12059D7614980B7200DAC43B /* AdWhirlWebBrowser.xib in Resources */, - 12059D7714980B7200DAC43B /* Changelog.txt in Resources */, - 12059D7814980B7200DAC43B /* README in Resources */, 12059D7914980B7200DAC43B /* Default.png in Resources */, 12059D7A14980B7200DAC43B /* Default-Landscape~ipad.png in Resources */, 12059D7B14980B7200DAC43B /* Default-Portrait~ipad.png in Resources */, @@ -2046,10 +1761,6 @@ 12B8123C1404B9E20092E303 /* zfs.vcxproj.filters in Resources */, 129654D6148AA23A0031100B /* modrules.xml in Resources */, 128ED37C148BAE7B00C58E83 /* README.txt in Resources */, - 128ED4A9148BC94D00C58E83 /* README in Resources */, - 128ED4C6148BC94D00C58E83 /* AdWhirlWebBrowser.xib in Resources */, - 128ED4E8148BC94D00C58E83 /* Changelog.txt in Resources */, - 128ED4F0148BC94D00C58E83 /* README in Resources */, 12211ECB1494811D00641703 /* Default.png in Resources */, 12211ECD149481B600641703 /* Default-Landscape~ipad.png in Resources */, 12211ECF149481C400641703 /* Default-Portrait~ipad.png in Resources */, @@ -2221,36 +1932,6 @@ 12059E1914980B7300DAC43B /* AIPlayerBakaB.cpp in Sources */, 12059E1A14980B7300DAC43B /* TestSuiteAI.cpp in Sources */, 12059E1B14980B7300DAC43B /* AbilityParser.cpp in Sources */, - 12059E1C14980B7300DAC43B /* AdWhirlAdapterGoogleAdMobAds.m in Sources */, - 12059E1D14980B7300DAC43B /* AdWhirlAdapterIAd.m in Sources */, - 12059E1E14980B7300DAC43B /* AdWhirlAdapterCustom.m in Sources */, - 12059E1F14980B7300DAC43B /* AdWhirlAdapterEvent.m in Sources */, - 12059E2014980B7300DAC43B /* AdWhirlAdapterGeneric.m in Sources */, - 12059E2114980B7300DAC43B /* AdWhirlAdNetworkAdapter+Helpers.m in Sources */, - 12059E2214980B7300DAC43B /* AdWhirlAdNetworkAdapter.m in Sources */, - 12059E2314980B7300DAC43B /* AdWhirlAdNetworkConfig.m in Sources */, - 12059E2414980B7300DAC43B /* AdWhirlAdNetworkRegistry.m in Sources */, - 12059E2514980B7300DAC43B /* AdWhirlClassWrapper.m in Sources */, - 12059E2614980B7300DAC43B /* AdWhirlConfig.m in Sources */, - 12059E2714980B7300DAC43B /* AdWhirlConfigStore.m in Sources */, - 12059E2814980B7300DAC43B /* AdWhirlCustomAdView.m in Sources */, - 12059E2914980B7300DAC43B /* AdWhirlError.m in Sources */, - 12059E2A14980B7300DAC43B /* AdWhirlLog.m in Sources */, - 12059E2B14980B7300DAC43B /* AdWhirlView.m in Sources */, - 12059E2C14980B7300DAC43B /* AdWhirlWebBrowserController.m in Sources */, - 12059E2D14980B7300DAC43B /* ARRollerView.m in Sources */, - 12059E2E14980B7300DAC43B /* AWNetworkReachabilityWrapper.m in Sources */, - 12059E2F14980B7300DAC43B /* UIColor+AdWhirlConfig.m in Sources */, - 12059E3014980B7300DAC43B /* CDataScanner.m in Sources */, - 12059E3114980B7300DAC43B /* CDataScanner_Extensions.m in Sources */, - 12059E3214980B7300DAC43B /* NSCharacterSet_Extensions.m in Sources */, - 12059E3314980B7300DAC43B /* NSDictionary_JSONExtensions.m in Sources */, - 12059E3414980B7300DAC43B /* NSScanner_Extensions.m in Sources */, - 12059E3514980B7300DAC43B /* CJSONDataSerializer.m in Sources */, - 12059E3614980B7300DAC43B /* CJSONDeserializer.m in Sources */, - 12059E3714980B7300DAC43B /* CJSONScanner.m in Sources */, - 12059E3814980B7300DAC43B /* CJSONSerializer.m in Sources */, - 12059E3914980B7300DAC43B /* CSerializedJSONData.m in Sources */, 12059E3A14980B7300DAC43B /* ASIAuthenticationDialog.m in Sources */, 12059E3B14980B7300DAC43B /* ASIDataCompressor.m in Sources */, 12059E3C14980B7300DAC43B /* ASIDataDecompressor.m in Sources */, @@ -2433,36 +2114,6 @@ 12769487144127380088F6D3 /* AIPlayerBakaB.cpp in Sources */, 12769488144127380088F6D3 /* TestSuiteAI.cpp in Sources */, 12CCA030144A05D100E343A0 /* AbilityParser.cpp in Sources */, - 128ED4AB148BC94D00C58E83 /* AdWhirlAdapterGoogleAdMobAds.m in Sources */, - 128ED4AE148BC94D00C58E83 /* AdWhirlAdapterIAd.m in Sources */, - 128ED4B8148BC94D00C58E83 /* AdWhirlAdapterCustom.m in Sources */, - 128ED4B9148BC94D00C58E83 /* AdWhirlAdapterEvent.m in Sources */, - 128ED4BA148BC94D00C58E83 /* AdWhirlAdapterGeneric.m in Sources */, - 128ED4BB148BC94D00C58E83 /* AdWhirlAdNetworkAdapter+Helpers.m in Sources */, - 128ED4BC148BC94D00C58E83 /* AdWhirlAdNetworkAdapter.m in Sources */, - 128ED4BD148BC94D00C58E83 /* AdWhirlAdNetworkConfig.m in Sources */, - 128ED4BE148BC94D00C58E83 /* AdWhirlAdNetworkRegistry.m in Sources */, - 128ED4BF148BC94D00C58E83 /* AdWhirlClassWrapper.m in Sources */, - 128ED4C0148BC94D00C58E83 /* AdWhirlConfig.m in Sources */, - 128ED4C1148BC94D00C58E83 /* AdWhirlConfigStore.m in Sources */, - 128ED4C2148BC94D00C58E83 /* AdWhirlCustomAdView.m in Sources */, - 128ED4C3148BC94D00C58E83 /* AdWhirlError.m in Sources */, - 128ED4C4148BC94D00C58E83 /* AdWhirlLog.m in Sources */, - 128ED4C5148BC94D00C58E83 /* AdWhirlView.m in Sources */, - 128ED4C7148BC94D00C58E83 /* AdWhirlWebBrowserController.m in Sources */, - 128ED4C8148BC94D00C58E83 /* ARRollerView.m in Sources */, - 128ED4C9148BC94D00C58E83 /* AWNetworkReachabilityWrapper.m in Sources */, - 128ED4CA148BC94D00C58E83 /* UIColor+AdWhirlConfig.m in Sources */, - 128ED4F1148BC94D00C58E83 /* CDataScanner.m in Sources */, - 128ED4F2148BC94D00C58E83 /* CDataScanner_Extensions.m in Sources */, - 128ED4F3148BC94D00C58E83 /* NSCharacterSet_Extensions.m in Sources */, - 128ED4F4148BC94D00C58E83 /* NSDictionary_JSONExtensions.m in Sources */, - 128ED4F5148BC94D00C58E83 /* NSScanner_Extensions.m in Sources */, - 128ED4F6148BC94D00C58E83 /* CJSONDataSerializer.m in Sources */, - 128ED4F7148BC94D00C58E83 /* CJSONDeserializer.m in Sources */, - 128ED4F8148BC94D00C58E83 /* CJSONScanner.m in Sources */, - 128ED4F9148BC94D00C58E83 /* CJSONSerializer.m in Sources */, - 128ED4FA148BC94D00C58E83 /* CSerializedJSONData.m in Sources */, 12211E7914931CBB00641703 /* ASIAuthenticationDialog.m in Sources */, 12211E7A14931CBB00641703 /* ASIDataCompressor.m in Sources */, 12211E7B14931CBB00641703 /* ASIDataDecompressor.m in Sources */, @@ -2705,7 +2356,7 @@ GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ../../Boost/boost; - IPHONEOS_DEPLOYMENT_TARGET = 4.0; + IPHONEOS_DEPLOYMENT_TARGET = 5.1; PROVISIONING_PROFILE = ""; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; @@ -2722,7 +2373,7 @@ GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ../../Boost/boost; - IPHONEOS_DEPLOYMENT_TARGET = 4.0; + IPHONEOS_DEPLOYMENT_TARGET = 5.1; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; PROVISIONING_PROFILE = ""; "PROVISIONING_PROFILE[sdk=iphoneos*]" = ""; diff --git a/projects/mtg/wagic.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/projects/mtg/wagic.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..1991a9a00 --- /dev/null +++ b/projects/mtg/wagic.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/projects/mtg/wagic.xcodeproj/project.xcworkspace/xcuserdata/mnguyen.xcuserdatad/UserInterfaceState.xcuserstate b/projects/mtg/wagic.xcodeproj/project.xcworkspace/xcuserdata/mnguyen.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..b760b735ff186dd8000a61f6454de822a0f2e1de GIT binary patch literal 22967 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 literal 0 HcmV?d00001 diff --git a/projects/mtg/wagic.xcodeproj/xcuserdata/mnguyen.xcuserdatad/xcschemes/wagic-opengl1.1.xcscheme b/projects/mtg/wagic.xcodeproj/xcuserdata/mnguyen.xcuserdatad/xcschemes/wagic-opengl1.1.xcscheme new file mode 100644 index 000000000..ff4186a80 --- /dev/null +++ b/projects/mtg/wagic.xcodeproj/xcuserdata/mnguyen.xcuserdatad/xcschemes/wagic-opengl1.1.xcscheme @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/mtg/wagic.xcodeproj/xcuserdata/mnguyen.xcuserdatad/xcschemes/wagic.xcscheme b/projects/mtg/wagic.xcodeproj/xcuserdata/mnguyen.xcuserdatad/xcschemes/wagic.xcscheme new file mode 100644 index 000000000..f4cb119b6 --- /dev/null +++ b/projects/mtg/wagic.xcodeproj/xcuserdata/mnguyen.xcuserdatad/xcschemes/wagic.xcscheme @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/projects/mtg/wagic.xcodeproj/xcuserdata/mnguyen.xcuserdatad/xcschemes/xcschememanagement.plist b/projects/mtg/wagic.xcodeproj/xcuserdata/mnguyen.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 000000000..f32f981cf --- /dev/null +++ b/projects/mtg/wagic.xcodeproj/xcuserdata/mnguyen.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,32 @@ + + + + + SchemeUserState + + wagic-opengl1.1.xcscheme + + orderHint + 1 + + wagic.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 12059D6714980B7200DAC43B + + primary + + + 1D6058900D05DD3D006BFB54 + + primary + + + + + From 4eb1fd35e03accb805a0a6f5d467ee0e20e7e6e7 Mon Sep 17 00:00:00 2001 From: Michael Nguyen Date: Mon, 28 Oct 2013 15:20:11 -0700 Subject: [PATCH 2/4] changed the default location for the sdcard. Instead of using a fixed value of "/sdcard/Wagic/Res" it now uses Environment.getExternalStorageDirectory().getPath() + "/Wagic/Res" --- projects/mtg/Android/default.properties | 2 +- projects/mtg/Android/project.properties | 2 +- .../src/org/libsdl/app/SDLActivity.java | 26 +++++++++++++++---- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/projects/mtg/Android/default.properties b/projects/mtg/Android/default.properties index 8010039f3..9a2c9f6c8 100644 --- a/projects/mtg/Android/default.properties +++ b/projects/mtg/Android/default.properties @@ -8,4 +8,4 @@ # project structure. # Project target. -target=android-10 +target=android-9 diff --git a/projects/mtg/Android/project.properties b/projects/mtg/Android/project.properties index b7c2081d5..c6998b3d1 100644 --- a/projects/mtg/Android/project.properties +++ b/projects/mtg/Android/project.properties @@ -11,4 +11,4 @@ #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt # Project target. -target=android-10 +target=android-9 diff --git a/projects/mtg/Android/src/org/libsdl/app/SDLActivity.java b/projects/mtg/Android/src/org/libsdl/app/SDLActivity.java index d6b57b2d0..6142ae386 100644 --- a/projects/mtg/Android/src/org/libsdl/app/SDLActivity.java +++ b/projects/mtg/Android/src/org/libsdl/app/SDLActivity.java @@ -83,11 +83,11 @@ public class SDLActivity extends Activity implements OnKeyListener private AlertDialog mErrorDialog; public String mErrorMessage = ""; public Boolean mErrorHappened = false; - public final static String RES_FOLDER = "/sdcard/Wagic/Res/"; + public final static String RES_FOLDER = Environment.getExternalStorageDirectory().getPath() + "/Wagic/Res/"; public static String RES_FILENAME = "core_0184.zip"; public static final String RES_URL = "http://wagic.googlecode.com/files/"; - public String systemFolder = "/sdcard/Wagic/Res/"; + public String systemFolder = Environment.getExternalStorageDirectory().getPath() + "/Wagic/Res/"; private String userFolder; // path to the onboard sd card that is not removable (typically /mnt/sdcard ) @@ -135,7 +135,10 @@ public class SDLActivity extends Activity implements OnKeyListener public boolean checkStorageState() { SharedPreferences settings = getSharedPreferences(kWagicSharedPreferencesKey, MODE_PRIVATE); - boolean useSdCard = (!settings.getBoolean(kStoreDataOnRemovableSdCardPreference, false)) && Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()); + boolean mExternalStorageAvailable = false; + boolean mExternalStorageWriteable = false; + String state = Environment.getExternalStorageState(); + boolean useSdCard = (!settings.getBoolean(kStoreDataOnRemovableSdCardPreference, false)) && mExternalStorageWriteable; String systemStoragePath = getSystemStorageLocation(); if (useSdCard && (systemStoragePath.indexOf(sdcardPath) != -1)) @@ -150,7 +153,20 @@ public class SDLActivity extends Activity implements OnKeyListener return true; } - return false; + if (Environment.MEDIA_MOUNTED.equals(state)) { + // We can read and write the media + mExternalStorageAvailable = mExternalStorageWriteable = true; + } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { + // We can only read the media + mExternalStorageAvailable = true; + mExternalStorageWriteable = false; + } else { + // Something else is wrong. It may be one of many other states, but all we need + // to know is we can neither read nor write + mExternalStorageAvailable = mExternalStorageWriteable = false; + } + + return (mExternalStorageAvailable && mExternalStorageWriteable); } private boolean getRemovableMediaStorageState() @@ -781,7 +797,7 @@ public class SDLActivity extends Activity implements OnKeyListener Log.e(TAG1, e.getMessage()); } - return new Long(totalBytes); + return Long.valueOf(totalBytes); } protected void onProgressUpdate(Integer... progress) From 84ca7457b55b2911d6e7ff7355fcca9224a8c82a Mon Sep 17 00:00:00 2001 From: Michael Nguyen Date: Mon, 28 Oct 2013 15:20:35 -0700 Subject: [PATCH 3/4] updaed for iOS6 --- JGE/include/JTypes.h | 224 ++--- JGE/src/iOS/EAGLView.h | 7 +- JGE/src/iOS/EAGLView.m | 127 --- JGE/src/iOS/EAGLViewController.h | 1 - JGE/src/iOS/EAGLViewController.m | 60 +- JGE/src/iOS/ES2Renderer.m | 65 +- JGE/src/iOS/wagicAppDelegate.m | 130 ++- .../adapters/AdWhirlAdapterBrightRoll.h | 36 - .../adapters/AdWhirlAdapterBrightRoll.m | 137 --- .../adapters/AdWhirlAdapterGreystripe.h | 49 - .../adapters/AdWhirlAdapterGreystripe.m | 191 ---- .../AdWhirl/adapters/AdWhirlAdapterInMobi.h | 37 - .../AdWhirl/adapters/AdWhirlAdapterInMobi.m | 173 ---- .../AdWhirl/adapters/AdWhirlAdapterJumpTap.h | 30 - .../AdWhirl/adapters/AdWhirlAdapterJumpTap.m | 238 ----- .../AdWhirl/adapters/AdWhirlAdapterMdotM.h | 38 - .../AdWhirl/adapters/AdWhirlAdapterMdotM.m | 423 -------- .../adapters/AdWhirlAdapterMillennial.h | 30 - .../adapters/AdWhirlAdapterMillennial.m | 227 ----- .../AdWhirl/adapters/AdWhirlAdapterNexage.h | 45 - .../AdWhirl/adapters/AdWhirlAdapterNexage.m | 219 ---- .../AdWhirl/adapters/AdWhirlAdapterOneRiot.h | 30 - .../AdWhirl/adapters/AdWhirlAdapterOneRiot.m | 75 -- .../AdWhirl/adapters/AdWhirlAdapterQuattro.h | 30 - .../AdWhirl/adapters/AdWhirlAdapterQuattro.m | 222 ---- .../AdWhirl/adapters/AdWhirlAdapterVideoEgg.h | 29 - .../AdWhirl/adapters/AdWhirlAdapterVideoEgg.m | 117 --- .../AdWhirl/adapters/AdWhirlAdapterZestADZ.h | 32 - .../AdWhirl/adapters/AdWhirlAdapterZestADZ.m | 101 -- .../project.pbxproj | 845 ---------------- .../project.pbxproj | 841 ---------------- .../AdWhirlSDK2_Sample-Info.plist | 43 - .../project.pbxproj | 948 ------------------ .../AdWhirlSDK2_Sample_Prefix.pch | 10 - .../BottomBannerController.xib | 555 ---------- .../Classes/AdWhirlSDK2_SampleAppDelegate.h | 30 - .../Classes/AdWhirlSDK2_SampleAppDelegate.m | 59 -- .../Classes/BottomBannerController.h | 16 - .../Classes/BottomBannerController.m | 116 --- .../Classes/LocationController.h | 21 - .../Classes/LocationController.m | 104 -- .../Classes/ModalViewController.h | 18 - .../Classes/ModalViewController.m | 68 -- .../Classes/RootViewController.h | 27 - .../Classes/RootViewController.m | 244 ----- .../Classes/SampleConstants.h | 28 - .../Classes/SimpleViewController.h | 41 - .../Classes/SimpleViewController.m | 441 -------- .../Classes/TableController.h | 34 - .../Classes/TableController.m | 339 ------- .../AdWhirlSDK2_Sample/LocationController.xib | 513 ---------- .../AdWhirlSDK2_Sample/MainWindow.xib | 525 ---------- .../ModalViewController.xib | 493 --------- .../AdWhirlSDK2_Sample/RootViewController.xib | 380 ------- .../SimpleViewController.xib | 723 ------------- .../AdWhirlSDK2_Sample/TableController.xib | 468 --------- .../AdWhirlSDK2_Sample/adwhirlsample_icon.png | Bin 8343 -> 0 bytes .../adwhirlsample_iconAT2x.png | Bin 10739 -> 0 bytes .../AdWhirlSDK2_Sample/main.m | 29 - .../AdWhirlTests/AdWhirlTests-Info.plist | 43 - .../AdWhirlTests.xcodeproj/project.pbxproj | 766 -------------- .../AdWhirlTests/AdWhirlTests_Prefix.pch | 7 - .../AdWhirlTests/Shared/main.m | 17 - .../UnitTests/AdWhirlAdNetworkConfigTest.m | 305 ------ .../UnitTests/AdWhirlConfigStoreTest.m | 410 -------- .../UnitTests/AdWhirlConfigTest.m | 901 ----------------- .../AdWhirlTests/UnitTests/AdWhirlViewTest.m | 56 -- .../UnitTests/UIColor+AdWhirlConfigTest.m | 214 ---- .../AdWhirlTests/iPad/AppDelegate_iPad.h | 19 - .../AdWhirlTests/iPad/AppDelegate_iPad.m | 67 -- .../AdWhirlTests/iPad/MainWindow_iPad.xib | 315 ------ .../AdWhirlTests/iPhone/AppDelegate_iPhone.h | 19 - .../AdWhirlTests/iPhone/AppDelegate_iPhone.m | 83 -- .../AdWhirlTests/iPhone/MainWindow_iPhone.xib | 327 ------ .../TemplateIcon.icns | Bin 42490 -> 0 bytes .../TemplateInfo.plist | 5 - .../AdWhirlClass.pbfiletemplate/class.h | 28 - .../AdWhirlClass.pbfiletemplate/class.m | 25 - .../TemplateIcon.icns | Bin 41608 -> 0 bytes .../TemplateInfo.plist | 4 - .../class.m | 42 - .../AdWhirlSDK_iOS_3.1.1/FileTemplates/README | 10 - .../UI/WagicDownloadProgressViewController.m | 84 +- projects/mtg/src/InteractiveButton.cpp | 2 +- projects/mtg/wagic.xcodeproj/project.pbxproj | 8 + .../UserInterfaceState.xcuserstate | Bin 22967 -> 27932 bytes 86 files changed, 304 insertions(+), 14535 deletions(-) delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterBrightRoll.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterBrightRoll.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterGreystripe.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterGreystripe.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterInMobi.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterInMobi.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterJumpTap.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterJumpTap.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterMdotM.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterMdotM.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterMillennial.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterMillennial.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterNexage.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterNexage.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterOneRiot.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterOneRiot.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterQuattro.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterQuattro.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterVideoEgg.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterVideoEgg.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterZestADZ.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterZestADZ.m delete mode 100755 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/AdWhirlSDK2_Sample-2_1_1.xcodeproj/project.pbxproj delete mode 100755 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/AdWhirlSDK2_Sample-3_x.xcodeproj/project.pbxproj delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/AdWhirlSDK2_Sample-Info.plist delete mode 100755 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/AdWhirlSDK2_Sample.xcodeproj/project.pbxproj delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/AdWhirlSDK2_Sample_Prefix.pch delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/BottomBannerController.xib delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/AdWhirlSDK2_SampleAppDelegate.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/AdWhirlSDK2_SampleAppDelegate.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/BottomBannerController.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/BottomBannerController.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/LocationController.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/LocationController.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/ModalViewController.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/ModalViewController.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/RootViewController.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/RootViewController.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/SampleConstants.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/SimpleViewController.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/SimpleViewController.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/TableController.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/TableController.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/LocationController.xib delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/MainWindow.xib delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/ModalViewController.xib delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/RootViewController.xib delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/SimpleViewController.xib delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/TableController.xib delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/adwhirlsample_icon.png delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/adwhirlsample_iconAT2x.png delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/main.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/AdWhirlTests-Info.plist delete mode 100755 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/AdWhirlTests.xcodeproj/project.pbxproj delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/AdWhirlTests_Prefix.pch delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/Shared/main.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/UnitTests/AdWhirlAdNetworkConfigTest.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/UnitTests/AdWhirlConfigStoreTest.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/UnitTests/AdWhirlConfigTest.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/UnitTests/AdWhirlViewTest.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/UnitTests/UIColor+AdWhirlConfigTest.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/iPad/AppDelegate_iPad.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/iPad/AppDelegate_iPad.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/iPad/MainWindow_iPad.xib delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/iPhone/AppDelegate_iPhone.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/iPhone/AppDelegate_iPhone.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/iPhone/MainWindow_iPhone.xib delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/FileTemplates/AdWhirlClass.pbfiletemplate/TemplateIcon.icns delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/FileTemplates/AdWhirlClass.pbfiletemplate/TemplateInfo.plist delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/FileTemplates/AdWhirlClass.pbfiletemplate/class.h delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/FileTemplates/AdWhirlClass.pbfiletemplate/class.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/FileTemplates/AdWhirlTestCaseClass.pbfiletemplate/TemplateIcon.icns delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/FileTemplates/AdWhirlTestCaseClass.pbfiletemplate/TemplateInfo.plist delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/FileTemplates/AdWhirlTestCaseClass.pbfiletemplate/class.m delete mode 100644 adwhirl/AdWhirlSDK_iOS_3.1.1/FileTemplates/README diff --git a/JGE/include/JTypes.h b/JGE/include/JTypes.h index e11816368..0e7c04ba7 100644 --- a/JGE/include/JTypes.h +++ b/JGE/include/JTypes.h @@ -39,10 +39,10 @@ #define MAX_CHANNEL 128 enum { - JGE_ERR_CANT_OPEN_FILE = -1, - JGE_ERR_PNG = -2, - JGE_ERR_MALLOC_FAILED = -4, - JGE_ERR_GENERIC = -5, + JGE_ERR_CANT_OPEN_FILE = -1, + JGE_ERR_PNG = -2, + JGE_ERR_MALLOC_FAILED = -4, + JGE_ERR_GENERIC = -5, }; #ifdef PSP @@ -80,20 +80,20 @@ enum { // #define BLEND_OPTION_ADD BLEND_COLORADD // #define BLEND_OPTION_BLEND (BLEND_COLORADD | BLEND_ALPHABLEND | BLEND_NOZWRITE) #else - #define DEFAULT_BLEND GU_TFX_MODULATE - #define BLEND_OPTION_ADD GU_TFX_ADD - #define BLEND_OPTION_BLEND GU_TFX_BLEND +#define DEFAULT_BLEND GU_TFX_MODULATE +#define BLEND_OPTION_ADD GU_TFX_ADD +#define BLEND_OPTION_BLEND GU_TFX_BLEND #endif #if (defined WIN32) && (!defined LINUX) - #include +#include #endif #if defined(LINUX) && (!defined WIN32) || defined(IOS) || defined (ANDROID) - typedef uint8_t byte; - typedef uint32_t DWORD; - typedef uint8_t BYTE; +typedef uint8_t byte; +typedef uint32_t DWORD; +typedef uint8_t BYTE; #ifndef IOS - typedef bool BOOL; +typedef bool BOOL; #endif #endif @@ -101,16 +101,16 @@ enum { #ifndef QT_CONFIG #if defined (IOS) - #import - #import - #import - # import +#import +#import +#import +#import #elif defined (ANDROID) - #include - #include -#elif defined (WIN32) || defined (LINUX) - #include - #include +#include +#include +#elif defined (WIN32) || defined (LINUX) +#include +#include #endif #else # include @@ -128,90 +128,90 @@ enum { #if defined (PSP) - #ifndef ABGR8888 - #define ABGR8888 - #endif +#ifndef ABGR8888 +#define ABGR8888 +#endif - #if defined (ABGR8888) - #define PIXEL_TYPE u32 - #ifndef ARGB - #define ARGB(a, r, g, b) (PIXEL_TYPE)((a << 24) | (b << 16) | (g << 8) | r) // macro to assemble pixels in correct format - #endif - #define MAKE_COLOR(a, c) (a << 24 | c) - #define MASK_ALPHA 0xFF000000 // masks for accessing individual pixels - #define MASK_BLUE 0x00FF0000 - #define MASK_GREEN 0x0000FF00 - #define MASK_RED 0x000000FF +#if defined (ABGR8888) +#define PIXEL_TYPE u32 +#ifndef ARGB +#define ARGB(a, r, g, b) (PIXEL_TYPE)((a << 24) | (b << 16) | (g << 8) | r) // macro to assemble pixels in correct format +#endif +#define MAKE_COLOR(a, c) (a << 24 | c) +#define MASK_ALPHA 0xFF000000 // masks for accessing individual pixels +#define MASK_BLUE 0x00FF0000 +#define MASK_GREEN 0x0000FF00 +#define MASK_RED 0x000000FF - #define PIXEL_SIZE 4 - #define PIXEL_FORMAT PSP_DISPLAY_PIXEL_FORMAT_8888 +#define PIXEL_SIZE 4 +#define PIXEL_FORMAT PSP_DISPLAY_PIXEL_FORMAT_8888 - #define BUFFER_FORMAT GU_PSM_8888 - #define TEXTURE_FORMAT GU_PSM_8888 - #define TEXTURE_COLOR_FORMAT GU_COLOR_8888 +#define BUFFER_FORMAT GU_PSM_8888 +#define TEXTURE_FORMAT GU_PSM_8888 +#define TEXTURE_COLOR_FORMAT GU_COLOR_8888 - #elif defined (ABGR5551) +#elif defined (ABGR5551) - #ifndef ARGB - #define ARGB(a, r, g, b) ((r >> 3) | ((g >> 3) << 5) | ((b >> 3) << 10) | ((a >> 7) << 15)) - #endif - #define MAKE_COLOR(a, c) (((a>>7)<<15) | c) - #define MASK_ALPHA 0x8000 - #define MASK_BLUE 0x7C00 - #define MASK_GREEN 0x03E0 - #define MASK_RED 0x001F - #define PIXEL_TYPE u16 - #define PIXEL_SIZE 2 - #define PIXEL_FORMAT PSP_DISPLAY_PIXEL_FORMAT_5551 +#ifndef ARGB +#define ARGB(a, r, g, b) ((r >> 3) | ((g >> 3) << 5) | ((b >> 3) << 10) | ((a >> 7) << 15)) +#endif +#define MAKE_COLOR(a, c) (((a>>7)<<15) | c) +#define MASK_ALPHA 0x8000 +#define MASK_BLUE 0x7C00 +#define MASK_GREEN 0x03E0 +#define MASK_RED 0x001F +#define PIXEL_TYPE u16 +#define PIXEL_SIZE 2 +#define PIXEL_FORMAT PSP_DISPLAY_PIXEL_FORMAT_5551 - #define BUFFER_FORMAT GU_PSM_8888 - #define TEXTURE_FORMAT GU_PSM_5551 - #define TEXTURE_COLOR_FORMAT GU_COLOR_5551 +#define BUFFER_FORMAT GU_PSM_8888 +#define TEXTURE_FORMAT GU_PSM_5551 +#define TEXTURE_COLOR_FORMAT GU_COLOR_5551 - #elif defined (ABGR4444) - #ifndef ARGB - #define ARGB(a, r, g, b) ((r >> 4) | ((g >> 4) << 4) | ((b >> 4) << 8) | ((a >> 4) << 12)) - #endif - #define MAKE_COLOR(a, c) (((a>>4)<<12) | c) - #define MASK_ALPHA 0xF000 - #define MASK_BLUE 0x0F00 - #define MASK_GREEN 0x00F0 - #define MASK_RED 0x000F - #define PIXEL_TYPE u16 - #define PIXEL_SIZE 2 - #define PIXEL_FORMAT PSP_DISPLAY_PIXEL_FORMAT_4444 +#elif defined (ABGR4444) +#ifndef ARGB +#define ARGB(a, r, g, b) ((r >> 4) | ((g >> 4) << 4) | ((b >> 4) << 8) | ((a >> 4) << 12)) +#endif +#define MAKE_COLOR(a, c) (((a>>4)<<12) | c) +#define MASK_ALPHA 0xF000 +#define MASK_BLUE 0x0F00 +#define MASK_GREEN 0x00F0 +#define MASK_RED 0x000F +#define PIXEL_TYPE u16 +#define PIXEL_SIZE 2 +#define PIXEL_FORMAT PSP_DISPLAY_PIXEL_FORMAT_4444 - #define BUFFER_FORMAT GU_PSM_4444 - #define TEXTURE_FORMAT GU_PSM_4444 - #define TEXTURE_COLOR_FORMAT GU_COLOR_4444 +#define BUFFER_FORMAT GU_PSM_4444 +#define TEXTURE_FORMAT GU_PSM_4444 +#define TEXTURE_COLOR_FORMAT GU_COLOR_4444 - #endif +#endif - #define FRAME_BUFFER_WIDTH 512 - #define FRAME_BUFFER_SIZE FRAME_BUFFER_WIDTH*SCREEN_HEIGHT*PIXEL_SIZE +#define FRAME_BUFFER_WIDTH 512 +#define FRAME_BUFFER_SIZE FRAME_BUFFER_WIDTH*SCREEN_HEIGHT*PIXEL_SIZE - #define SLICE_SIZE_F 64.0f - typedef unsigned int DWORD; +#define SLICE_SIZE_F 64.0f +typedef unsigned int DWORD; - #define BLEND_ZERO 0x1000 - #define BLEND_ONE 0x1002 - #define BLEND_SRC_COLOR GU_SRC_COLOR - #define BLEND_ONE_MINUS_SRC_COLOR GU_ONE_MINUS_SRC_COLOR - #define BLEND_SRC_ALPHA GU_SRC_ALPHA - #define BLEND_ONE_MINUS_SRC_ALPHA GU_ONE_MINUS_SRC_ALPHA - #define BLEND_DST_ALPHA GU_DST_ALPHA - #define BLEND_ONE_MINUS_DST_ALPHA GU_ONE_MINUS_DST_ALPHA - #define BLEND_DST_COLOR GU_DST_COLOR - #define BLEND_ONE_MINUS_DST_COLOR GU_ONE_MINUS_DST_COLOR - #define BLEND_SRC_ALPHA_SATURATE BLEND_ONE +#define BLEND_ZERO 0x1000 +#define BLEND_ONE 0x1002 +#define BLEND_SRC_COLOR GU_SRC_COLOR +#define BLEND_ONE_MINUS_SRC_COLOR GU_ONE_MINUS_SRC_COLOR +#define BLEND_SRC_ALPHA GU_SRC_ALPHA +#define BLEND_ONE_MINUS_SRC_ALPHA GU_ONE_MINUS_SRC_ALPHA +#define BLEND_DST_ALPHA GU_DST_ALPHA +#define BLEND_ONE_MINUS_DST_ALPHA GU_ONE_MINUS_DST_ALPHA +#define BLEND_DST_COLOR GU_DST_COLOR +#define BLEND_ONE_MINUS_DST_COLOR GU_ONE_MINUS_DST_COLOR +#define BLEND_SRC_ALPHA_SATURATE BLEND_ONE - typedef struct - { - ScePspFVector2 texture; - ScePspFVector3 pos; - } PSPVertex3D; +typedef struct +{ + ScePspFVector2 texture; + ScePspFVector3 pos; +} PSPVertex3D; #else //non PSP @@ -223,34 +223,34 @@ typedef uint16_t u16; typedef uint32_t u32; - #define BLEND_ZERO GL_ZERO - #define BLEND_ONE GL_ONE - #define BLEND_SRC_COLOR GL_SRC_COLOR - #define BLEND_ONE_MINUS_SRC_COLOR GL_ONE_MINUS_SRC_COLOR - #define BLEND_SRC_ALPHA GL_SRC_ALPHA - #define BLEND_ONE_MINUS_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA - #define BLEND_DST_ALPHA GL_DST_ALPHA - #define BLEND_ONE_MINUS_DST_ALPHA GL_ONE_MINUS_DST_ALPHA - #define BLEND_DST_COLOR GL_DST_COLOR - #define BLEND_ONE_MINUS_DST_COLOR GL_ONE_MINUS_DST_COLOR - #define BLEND_SRC_ALPHA_SATURATE GL_SRC_ALPHA_SATURATE +#define BLEND_ZERO GL_ZERO +#define BLEND_ONE GL_ONE +#define BLEND_SRC_COLOR GL_SRC_COLOR +#define BLEND_ONE_MINUS_SRC_COLOR GL_ONE_MINUS_SRC_COLOR +#define BLEND_SRC_ALPHA GL_SRC_ALPHA +#define BLEND_ONE_MINUS_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA +#define BLEND_DST_ALPHA GL_DST_ALPHA +#define BLEND_ONE_MINUS_DST_ALPHA GL_ONE_MINUS_DST_ALPHA +#define BLEND_DST_COLOR GL_DST_COLOR +#define BLEND_ONE_MINUS_DST_COLOR GL_ONE_MINUS_DST_COLOR +#define BLEND_SRC_ALPHA_SATURATE GL_SRC_ALPHA_SATURATE - #define ARGB(a, r, g, b) ((PIXEL_TYPE)((a) << 24) | ((r) << 16) | ((g) << 8) | (b)) - #define RGBA(r, g, b, a) ((PIXEL_TYPE)((a) << 24) | ((b) << 16) | ((g) << 8) | (r)) +#define ARGB(a, r, g, b) ((PIXEL_TYPE)((a) << 24) | ((r) << 16) | ((g) << 8) | (b)) +#define RGBA(r, g, b, a) ((PIXEL_TYPE)((a) << 24) | ((b) << 16) | ((g) << 8) | (r)) - #define TEXTURE_FORMAT 0 - #define GU_PSM_8888 0 - #define GU_PSM_5551 0 - #define GU_PSM_4444 0 - #define GU_PSM_5650 0 - #define PIXEL_TYPE DWORD +#define TEXTURE_FORMAT 0 +#define GU_PSM_8888 0 +#define GU_PSM_5551 0 +#define GU_PSM_4444 0 +#define GU_PSM_5650 0 +#define PIXEL_TYPE DWORD #endif typedef enum Buttons - { +{ JGE_BTN_NONE = 0, // No button pressed JGE_BTN_QUIT, // Home on PSP JGE_BTN_MENU, // Start on PSP @@ -270,7 +270,7 @@ typedef enum Buttons JGE_BTN_FULLSCREEN, // Switch to fullscreen (obviously, PC only) JGE_BTN_MAX = JGE_BTN_FULLSCREEN + 1 - } JButton; +} JButton; @@ -357,7 +357,7 @@ public: int mFilter; -#if defined (PSP) +#if defined (PSP) int mTextureFormat; int mTexId; bool mInVideoRAM; diff --git a/JGE/src/iOS/EAGLView.h b/JGE/src/iOS/EAGLView.h index 285303c5d..1b4b34313 100755 --- a/JGE/src/iOS/EAGLView.h +++ b/JGE/src/iOS/EAGLView.h @@ -1,6 +1,5 @@ #import #import -#import "AdWhirlDelegateProtocol.h" #import "EAGLViewController.h" #import "EAGLView.h" #import "ESRenderer.h" @@ -8,9 +7,8 @@ // This class wraps the CAEAGLLayer from CoreAnimation into a convenient UIView subclass. // The view content is basically an EAGL surface you render your OpenGL scene into. // Note that setting the view non-opaque will only work if the EAGL surface has an alpha channel. -@interface EAGLView : UIView +@interface EAGLView : UIView { - AdWhirlView *adView; //This is a trick, AdMob uses a viewController to display its Ads, trust me, you'll need this EAGLViewController *viewController; @@ -27,7 +25,6 @@ id displayLink; CGPoint currentLocation; } -@property (nonatomic, retain) AdWhirlView *adView; @property (readonly, nonatomic, getter=isAnimating) BOOL animating; @property (nonatomic) NSInteger animationFrameInterval; @property (nonatomic, readwrite) CGPoint currentLocation; @@ -37,8 +34,6 @@ - (void)drawView:(id)sender; - (void)updateKeyboard: (NSString *) inputString; -- (void)removeAds; -- (void)displayAds; - (void)destroyGame; diff --git a/JGE/src/iOS/EAGLView.m b/JGE/src/iOS/EAGLView.m index 2875649bc..35e164f59 100755 --- a/JGE/src/iOS/EAGLView.m +++ b/JGE/src/iOS/EAGLView.m @@ -12,7 +12,6 @@ #include "GameApp.h" -#import "AdWhirlView.h" #import "wagicAppDelegate.h" @@ -67,15 +66,10 @@ void DestroyGame(void) } -#pragma mark Ad management constants -static NSString *_MY_AD_WHIRL_APPLICATION_KEY_IPHONE = @"b86aba511597401ca6b41c1626aa3013"; -static NSString *_MY_AD_WHIRL_APPLICATION_KEY_IPAD = @"2e70e3f3da40408588b9a3170c8d268f"; - #pragma mark - @implementation EAGLView -@synthesize adView; @synthesize animating; @dynamic animationFrameInterval; @synthesize currentLocation; @@ -91,7 +85,6 @@ static NSString *_MY_AD_WHIRL_APPLICATION_KEY_IPAD = @"2e70e3f3da40408588b9a3170 - (void)dealloc { [renderer release]; - [self removeAds]; [super dealloc]; } @@ -635,30 +628,6 @@ static NSString *_MY_AD_WHIRL_APPLICATION_KEY_IPAD = @"2e70e3f3da40408588b9a3170 } - -//These are the methods for the AdWhirl Delegate, you have to implement them -#pragma mark AdWhirlDelegate methods - -- (void)adWhirlWillPresentFullScreenModal { - //It's recommended to invoke whatever you're using as a "Pause Menu" so your - //game won't keep running while the user is "playing" with the Ad (for example, iAds) - [self pauseGame]; - -} - -- (void)adWhirlDidDismissFullScreenModal { - //Once the user closes the Ad he'll want to return to the game and continue where - //he left it - [self resumeGame]; -} - -- (NSString *)adWhirlApplicationKey { - if ((UI_USER_INTERFACE_IDIOM()) == UIUserInterfaceIdiomPad) - return _MY_AD_WHIRL_APPLICATION_KEY_IPAD; - - return _MY_AD_WHIRL_APPLICATION_KEY_IPHONE; -} - - (UIViewController *)viewControllerForPresentingModalView { //Remember that UIViewController we created in the Game.h file? AdMob will use it. //If you want to use "return self;" instead, AdMob will cancel the Ad requests. @@ -666,101 +635,5 @@ static NSString *_MY_AD_WHIRL_APPLICATION_KEY_IPAD = @"2e70e3f3da40408588b9a3170 } -- (void)adWhirlDidReceiveAd:(AdWhirlView *)adWhirlView { - [UIView beginAnimations:@"AdWhirlDelegate.adWhirlDidReceiveAd:" - context:nil]; - BOOL isLandscape = UIDeviceOrientationIsLandscape( [UIDevice currentDevice].orientation); - [UIView setAnimationDuration:0.7]; - - CGSize adSize = [adWhirlView actualAdSize]; - CGRect newFrame = [adWhirlView frame]; - CGSize screenSize = [self.window bounds].size; - - newFrame.size = adSize; - // ads are 320 x 50 - newFrame.origin.x = ( (isLandscape ? screenSize.height : screenSize.width) - adSize.width)/ 2; - newFrame.origin.y = ( (isLandscape ? screenSize.width : screenSize.height) - 50); - - [adWhirlView setFrame: newFrame]; - - [UIView commitAnimations]; -} - --(void)adWhirlDidFailToReceiveAd:(AdWhirlView *)adWhirlView usingBackup:(BOOL)yesOrNo { - //The code to show my own Ad banner again - NSLog(@"failed to get an Ad"); -} - --(void) removeAds { - //There's something weird about AdWhirl because setting the adView delegate - //to "nil" doesn't stops the Ad requests and also it doesn't remove the adView - //from superView; do the following to remove AdWhirl from your scene. - // - //If adView exists, remove everything - if (adView) { - //Remove adView from superView - [adView removeFromSuperview]; - //Replace adView's view with "nil" - [adView replaceBannerViewWith:nil]; - //Tell AdWhirl to stop requesting Ads - [adView ignoreNewAdRequests]; - //Set adView delegate to "nil" - [adView setDelegate:nil]; - //Release adView - [adView release]; - //set adView to "nil" - adView = nil; - } -} - - - --(void) displayAds -{ - BOOL isLandscape = UIDeviceOrientationIsLandscape( [UIDevice currentDevice].orientation); - - //Assign the AdWhirl Delegate to our adView - if ( adView != nil ) - [self removeAds]; - - //Let's allocate the viewController (it's the same RootViewController as declared - //in our AppDelegate; will be used for the Ads) - viewController = [(wagicAppDelegate *)[[UIApplication sharedApplication] delegate] glViewController]; - - self.adView = [AdWhirlView requestAdWhirlViewWithDelegate:self]; - //Set auto-resizing mask - self.adView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin; - //This isn't really needed but also it makes no harm. It just retrieves the configuration - //from adwhirl.com so it knows what Ad networks to use - [adView updateAdWhirlConfig]; - //Get the actual size for the requested Ad - CGSize adSize = [adView actualAdSize]; - // - //Set the position; remember that we are using 4 values (in this order): X, Y, Width, Height - //You can comment this line if your game is in portrait mode and you want your Ad on the top - //if you want the Ad in other position (portrait or landscape), use the following code, - //for this example, the Ad will be positioned in the bottom+center of the screen - //(in landscape mode): - //Same explanation as the one in the method "adjustAdSize" for the Ad's width - int screenWidth = [viewController.parentViewController.view bounds].size.width; - float yOffset = [viewController.parentViewController.view bounds].size.height - adSize.height; - if ( isLandscape ) - { - screenWidth = [viewController.parentViewController.view bounds].size.height; - yOffset = screenWidth - adSize.height; - } - - self.adView.frame = CGRectMake((screenWidth - adSize.width) / 2, yOffset, adSize.width, adSize.height); - - //Trying to keep everything inside the Ad bounds - self.adView.clipsToBounds = YES; - //Adding the adView (used for our Ads) to our viewController - [viewController.view addSubview:adView]; - //Bring our view to front - [viewController.view bringSubviewToFront:adView]; - -} - - @end diff --git a/JGE/src/iOS/EAGLViewController.h b/JGE/src/iOS/EAGLViewController.h index eb09270e3..3cc59827e 100755 --- a/JGE/src/iOS/EAGLViewController.h +++ b/JGE/src/iOS/EAGLViewController.h @@ -1,5 +1,4 @@ #import -#import "AdWhirlDelegateProtocol.h" @interface EAGLViewController : UIViewController { diff --git a/JGE/src/iOS/EAGLViewController.m b/JGE/src/iOS/EAGLViewController.m index 07a696489..4ad3950b1 100755 --- a/JGE/src/iOS/EAGLViewController.m +++ b/JGE/src/iOS/EAGLViewController.m @@ -25,10 +25,13 @@ [inputField setAutocapitalizationType:UITextAutocapitalizationTypeNone]; [inputField setAutocorrectionType:UITextAutocorrectionTypeNo]; [inputField setKeyboardType: UIKeyboardTypeNamePhonePad]; + CGRect frame = [[UIScreen mainScreen] applicationFrame]; eaglView = [[EAGLView alloc] initWithFrame:frame]; + [self setView: eaglView]; [self.view addSubview: inputField]; + [inputField release]; } return self; @@ -50,7 +53,7 @@ - (void)viewWillAppear:(BOOL)animated { NSLog(@"EAGL ViewController - view Will Appear"); - [self.view resumeGame]; + [self.view resumeGame]; } @@ -75,14 +78,14 @@ } - (void)viewDidAppear:(BOOL)animated { - + NSLog(@"EAGL ViewController - view Did Appear"); - + UIDeviceOrientation currentDeviceOrientation = [UIDevice currentDevice].orientation; UIInterfaceOrientation currentInterfaceOrientation = self.interfaceOrientation; - - NSLog(@"Current Interface: %@. Current Device: %@", - [self interfaceOrientationName:currentInterfaceOrientation], + + NSLog(@"Current Interface: %@. Current Device: %@", + [self interfaceOrientationName:currentInterfaceOrientation], [self deviceOrientationName:currentDeviceOrientation]); } @@ -91,7 +94,7 @@ - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; - + // Release any cached data, images, etc. that aren't in use. } @@ -103,6 +106,25 @@ } #pragma mark - device orientation handlers +- (NSUInteger)supportedInterfaceOrientations +{ + //I want to support portrait in ABCView at iPhone only. + //and support all orientation in other views and iPad. + + if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone) + { + return UIInterfaceOrientationMaskLandscape; + } + + //support all + return UIInterfaceOrientationMaskAll; +} + + +-(BOOL)shouldAutorotate { + + return YES; +} - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Overriden to allow any orientation. @@ -110,23 +132,23 @@ if ( isSmallScreen && UIInterfaceOrientationIsPortrait(interfaceOrientation)) return NO; - + return YES; } - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { - [[eaglView adView] rotateToOrientation: toInterfaceOrientation]; + // [[eaglView adView] rotateToOrientation: toInterfaceOrientation]; } #pragma mark - #pragma mark Orientation Information - (NSString*)interfaceOrientationName:(UIInterfaceOrientation) interfaceOrientation { - + NSString* result = nil; - + switch (interfaceOrientation) { - + case UIInterfaceOrientationPortrait: result = @"Portrait"; break; @@ -142,16 +164,16 @@ default: result = @"Unknown Interface Orientation"; } - + return result; }; - (NSString*)deviceOrientationName:(UIDeviceOrientation) deviceOrientation { - + NSString* result = nil; - + switch (deviceOrientation) { - + case UIDeviceOrientationUnknown: result = @"Unknown"; break; @@ -176,7 +198,7 @@ default: result = @"Unknown Device Orientation"; } - + return result; }; @@ -205,7 +227,7 @@ [eaglView updateKeyboard: @"CLEAR"]; else [eaglView updateKeyboard: string]; - + return YES; } @@ -215,7 +237,7 @@ } -- (BOOL) textFieldShouldReturn:(UITextField *)textField +- (BOOL) textFieldShouldReturn:(UITextField *)textField { [eaglView updateKeyboard: @"SAVE"]; [textField resignFirstResponder]; diff --git a/JGE/src/iOS/ES2Renderer.m b/JGE/src/iOS/ES2Renderer.m index 375ff7e04..d49e33735 100755 --- a/JGE/src/iOS/ES2Renderer.m +++ b/JGE/src/iOS/ES2Renderer.m @@ -33,7 +33,7 @@ bool checkFramebufferStatus(); context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; if ( context == nil) context = [[EAGLContext alloc] initWithAPI: kEAGLRenderingAPIOpenGLES1]; - + if (!context || ![EAGLContext setCurrentContext:context]) { [self release]; @@ -46,20 +46,29 @@ bool checkFramebufferStatus(); - (void)render { -// NSLog(@"Renderer - render"); - struct timeval tv; uint dt; - + // This application only creates a single context which is already set current at this point. // This call is redundant, but needed if dealing with multiple contexts. [EAGLContext setCurrentContext:context]; - + // This application only creates a single default framebuffer which is already bound at this point. // This call is redundant, but needed if dealing with multiple framebuffers. glBindFramebuffer(GL_FRAMEBUFFER, defaultFramebuffer); + GLfloat currentRatio = (GLfloat) backingWidth / (GLfloat) backingHeight; - if ((GLfloat)backingWidth / (GLfloat)backingHeight < ACTUAL_RATIO) + // for retina devices. because of the 568 px, the ratio between height-width skews the + // frame a bit + + if ( backingHeight == 568 || backingWidth == 568) { + viewPort.left = 0; + viewPort.top = -((backingWidth/ACTUAL_RATIO)-backingHeight)/2 + 22; // account for status bar + viewPort.right = backingWidth; + viewPort.bottom = -((backingWidth/ACTUAL_RATIO)-backingHeight)/2 + backingWidth / ACTUAL_RATIO - 22; + + } + else if (currentRatio < ACTUAL_RATIO) { viewPort.left = 0; viewPort.top = -((backingWidth/ACTUAL_RATIO)-backingHeight)/2; @@ -73,21 +82,21 @@ bool checkFramebufferStatus(); viewPort.right = backingHeight * ACTUAL_RATIO; viewPort.bottom = -((backingWidth/ACTUAL_RATIO)-backingHeight)/2 + backingWidth / ACTUAL_RATIO + backingHeight; } - + glViewport(viewPort.left, viewPort.top, viewPort.right-viewPort.left, viewPort.bottom-viewPort.top); JRenderer::GetInstance()->SetActualWidth(viewPort.right-viewPort.left); JRenderer::GetInstance()->SetActualHeight(viewPort.bottom-viewPort.top); - - + + gettimeofday(&tv, NULL); uint64_t tickCount = tv.tv_sec * 1000 + tv.tv_usec / 1000; dt = (tickCount - lastTickCount); lastTickCount = tickCount; - + g_engine->SetDelta((float)dt / 1000.0f); g_engine->Update((float)dt / 1000.0f); - + g_engine->Render(); // This application only creates a single color renderbuffer which is already bound at this point. @@ -103,18 +112,18 @@ bool checkFramebufferStatus(); glDeleteFramebuffers(1, &defaultFramebuffer); defaultFramebuffer = 0; } - + if(colorRenderbuffer) { glDeleteRenderbuffers(1, &colorRenderbuffer); colorRenderbuffer = 0; } - + glGenFramebuffers(1, &defaultFramebuffer); glBindFramebuffer(GL_FRAMEBUFFER, defaultFramebuffer); - + glGenRenderbuffers(1, &colorRenderbuffer); glBindRenderbuffer(GL_RENDERBUFFER, colorRenderbuffer); - + // Allocate color buffer backing based on the current layer size glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, colorRenderbuffer); [context renderbufferStorage:GL_RENDERBUFFER fromDrawable:layer]; @@ -127,41 +136,41 @@ bool checkFramebufferStatus(); glEnable(GL_TEXTURE_2D); glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); // do not calculate inside of poly's - glFrontFace(GL_CCW); + glFrontFace(GL_CCW); glEnable (GL_BLEND); - + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); -// glEnable(GL_SCISSOR_TEST); // Enable Clipping + // glEnable(GL_SCISSOR_TEST); // Enable Clipping glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // Black Background (yes that's the way fuckers) glClearDepthf(1.0f); // Depth Buffer Setup - + return YES; } bool checkFramebufferStatus() { - + GLenum status = (GLenum)glCheckFramebufferStatus(GL_FRAMEBUFFER); - + switch(status) { - + case GL_FRAMEBUFFER_COMPLETE: return true; - + case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: printf("Framebuffer incomplete,incomplete attachment\n"); return false; - + case GL_FRAMEBUFFER_UNSUPPORTED: printf("Unsupported framebuffer format\n"); return false; - + case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: printf("Framebuffer incomplete,missing attachment\n"); return false; - + } - + return false; } @@ -187,7 +196,7 @@ bool checkFramebufferStatus() { [context release]; context = nil; - + [super dealloc]; } diff --git a/JGE/src/iOS/wagicAppDelegate.m b/JGE/src/iOS/wagicAppDelegate.m index 2c3c813ea..909c639dc 100755 --- a/JGE/src/iOS/wagicAppDelegate.m +++ b/JGE/src/iOS/wagicAppDelegate.m @@ -17,7 +17,7 @@ - (void) updateComplete: (id) notificationMsg { NSNotificationCenter *dnc = [NSNotificationCenter defaultCenter]; - + [dnc removeObserver: self name: @"coreComplete" object: nil]; [dnc removeObserver: self name: @"iosConfigComplete" object: nil]; [dnc postNotificationName: @"initializeGame" object: self]; @@ -34,12 +34,12 @@ - (void) downloadResources { NSNotificationCenter *dnc = [NSNotificationCenter defaultCenter]; - + [dnc addObserver:self selector:@selector(initIosUpdate:) name:@"coreComplete" object: nil]; wagicDownloadController = [[WagicDownloadProgressViewController alloc] init]; [wagicDownloadController performSelectorInBackground: @selector(startDownload:) withObject:@"core"]; - + [self.window addSubview: wagicDownloadController.view]; [self.window makeKeyWindow]; @@ -51,16 +51,16 @@ NSString *pathPrefix = nil; if ( pathNamePrefix == nil ) // default to User pathPrefix = @"User"; - else + else pathPrefix = pathNamePrefix; - + NSError *error = nil; - + NSFileManager *fm = [NSFileManager defaultManager]; NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES); NSString *userDocumentsDirectory = [paths objectAtIndex:0]; NSString *downloadFilePath = [userDocumentsDirectory stringByAppendingString: [NSString stringWithFormat: @"/%@/%@.zip", pathPrefix, folderName]]; - + ZipArchive *za = [[ZipArchive alloc] init]; if ([za UnzipOpenFile: downloadFilePath]) { @@ -73,7 +73,7 @@ NSLog(@"An Error occurred while unpacking zip file."); } [za UnzipCloseFile]; - + if (ret == YES) { // delete the archive @@ -85,7 +85,7 @@ } } [za release], za = nil; - + } @@ -98,15 +98,15 @@ { NSString *pathname = [NSString stringWithFormat: @"%@/%@", path, filename]; [data appendFormat: @"%@\n", pathname]; - + BOOL isDirectory = [[fileManager attributesOfItemAtPath: pathname error: nil] objectForKey: NSFileType] == NSFileTypeDirectory; if (isDirectory) [data appendString: [self getDirContents: pathname]]; } - + NSString *manifestList = [data stringByAppendingFormat: @"\n"]; [data release]; - + return manifestList; } @@ -114,37 +114,37 @@ { NSString *manifestFile = [docsPath stringByAppendingPathComponent:@"Manifest"]; [[self getDirContents: docsPath] writeToFile:manifestFile atomically:YES encoding:NSUTF8StringEncoding error: nil]; - + } /** - check for any zip files dropped into the documents directory before loading the game. - If so, move the "core" files into the "Res" directory and move all other zip files into the "User" directory. + check for any zip files dropped into the documents directory before loading the game. + If so, move the "core" files into the "Res" directory and move all other zip files into the "User" directory. Check for a "core" zip file in the Res directory. If it exists, then return YES. Otherwise, return NO. */ - (void) initializeResources { NSFileManager *fileManager = [NSFileManager defaultManager]; - + NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES); NSString *docsPath = [paths objectAtIndex: 0]; NSArray *docsPathContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath: docsPath error:nil]; NSString *versionPredicate = [NSString stringWithFormat: @"(self BEGINSWITH '%@')", [NSString stringWithCString: WAGIC_CORE_VERSION_STRING encoding:NSUTF8StringEncoding]]; NSCompoundPredicate *compoundPredicate = [[NSCompoundPredicate alloc] initWithType:NSAndPredicateType subpredicates: [NSArray arrayWithObjects: [NSPredicate predicateWithFormat:@"self ENDSWITH '.zip'"], [NSPredicate predicateWithFormat: [NSString stringWithFormat: @" NOT ( %@ ) ", versionPredicate]], nil]]; - + NSArray *coreFiles = [docsPathContents filteredArrayUsingPredicate:[NSPredicate predicateWithFormat: versionPredicate]]; NSArray *resourceZipFiles = [docsPathContents filteredArrayUsingPredicate: compoundPredicate]; NSString *userPath = [NSString stringWithFormat: @"%@/User", docsPath]; NSString *resPath = [NSString stringWithFormat: @"%@/Res", docsPath]; NSError *error = nil; - + [compoundPredicate release], compoundPredicate = nil; - + if ( ([resourceZipFiles count] > 0 ) && ![fileManager fileExistsAtPath: userPath] ) [fileManager createDirectoryAtPath: userPath withIntermediateDirectories: YES attributes:nil error:nil ]; - + for (NSString *zipFile in resourceZipFiles) { NSString *oldPath = [NSString stringWithFormat: @"%@/%@", docsPath, zipFile]; @@ -155,7 +155,7 @@ [fileManager removeItemAtPath: newPath error: &error]; } error = nil; - + [fileManager moveItemAtPath: oldPath toPath:newPath error: &error]; NSLog(@"Moving %@ to %@", oldPath, newPath); if ( error != nil ) @@ -175,7 +175,7 @@ [fileManager removeItemAtPath: newPath error: &error]; } error = nil; - + [fileManager moveItemAtPath: oldPath toPath:newPath error: &error]; NSLog(@"Moving %@ to %@", oldPath, newPath); if ( error != nil ) @@ -187,21 +187,21 @@ } - (BOOL) hasResourceFiles -{ +{ NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES); NSString *docsPath = [paths objectAtIndex: 0]; NSString *resPath = [NSString stringWithFormat: @"%@/Res", docsPath]; - + NSArray *resDirContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath: resPath error:nil]; NSString *versionPredicate = [NSString stringWithFormat: @"(self BEGINSWITH '%@')", [NSString stringWithCString: WAGIC_CORE_VERSION_STRING encoding:NSUTF8StringEncoding]]; NSArray *coreFiles = [resDirContents filteredArrayUsingPredicate:[NSPredicate predicateWithFormat: versionPredicate]]; - + if ([coreFiles count] >= 2) { return YES; } - + return NO; } @@ -211,30 +211,30 @@ NSString *docsPath = [NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex: 0]; NSFileManager *fm = [NSFileManager defaultManager]; NSString *userPath = [docsPath stringByAppendingString: @"/User"]; - + NSArray *userDirectories = [fm contentsOfDirectoryAtPath: userPath error: nil]; for (NSString *userFilename in userDirectories) { NSString *userPathname = [userPath stringByAppendingFormat: @"/%@", userFilename]; NSString *zipFileName = [userPathname stringByAppendingString: @".zip"]; - + if ([[fm attributesOfItemAtPath: userPathname error: nil] objectForKey: NSFileType] == NSFileTypeDirectory && ([fm fileExistsAtPath:zipFileName])) { [self unpackageResources: userFilename pathPrefixName: @"User"]; [fm removeItemAtPath: zipFileName error: nil]; } - + else if ( [userFilename hasPrefix: @"ai_decks"] ) // special case to allow manual override of AI decks in User directory { [self unpackageResources: @"ai_decks" pathPrefixName: @"User/ai/baka"]; } } // scan for deck*.txt and collection.dat as well as options.txt in the Documents directory and copy them into the player directory - NSArray *playerDataFilePredicates = [NSArray arrayWithObjects: - [NSPredicate predicateWithFormat: @"SELF BEGINSWITH[cd] 'deck' AND SELF ENDSWITH '.txt'"], - [NSPredicate predicateWithFormat: @"SELF BEGINSWITH[cd] 'options' AND SELF ENDSWITH '.txt'"], - [NSPredicate predicateWithFormat: @"SELF BEGINSWITH[cd] 'tasks' AND SELF ENDSWITH '.dat'"], + NSArray *playerDataFilePredicates = [NSArray arrayWithObjects: + [NSPredicate predicateWithFormat: @"SELF BEGINSWITH[cd] 'deck' AND SELF ENDSWITH '.txt'"], + [NSPredicate predicateWithFormat: @"SELF BEGINSWITH[cd] 'options' AND SELF ENDSWITH '.txt'"], + [NSPredicate predicateWithFormat: @"SELF BEGINSWITH[cd] 'tasks' AND SELF ENDSWITH '.dat'"], [NSPredicate predicateWithFormat: @"SELF BEGINSWITH[cd] 'collection' AND SELF ENDSWITH '.dat'"], nil]; NSCompoundPredicate *playerDataPredicate = [[NSCompoundPredicate alloc] initWithType:NSOrPredicateType subpredicates: playerDataFilePredicates]; @@ -246,23 +246,23 @@ NSString *toPath = [docsPath stringByAppendingFormat: @"/User/player/%@", [file lowercaseString]]; [fm moveItemAtPath: fromPath toPath: toPath error: nil]; } - + [playerDataPredicate release], playerDataPredicate = nil; - + [self createManifest: docsPath]; - + [[NSNotificationCenter defaultCenter] postNotificationName: @"readyToStartGame" object: nil]; } - (void) startGame { - if (glViewController != nil) + if (glViewController != nil) [glViewController release]; glViewController = [[EAGLViewController alloc] init]; - + [[[self.window subviews] lastObject] removeFromSuperview]; - [self.window addSubview:self.glViewController.view]; + [self.window setRootViewController: glViewController]; NSNotificationCenter *dnc = [NSNotificationCenter defaultCenter]; [dnc removeObserver: self name: @"intializeGame" object: nil]; @@ -286,7 +286,7 @@ [internetReach release]; [glViewController release]; [wagicDownloadController release]; - + [super dealloc]; } @@ -298,23 +298,23 @@ hostReach = [[Reachability reachabilityForGoogleDNS] retain]; internetReach = [[Reachability reachabilityForInternetConnection] retain]; wifiReach = [[Reachability reachabilityForLocalWiFi] retain]; - + [hostReach startNotifier]; [internetReach startNotifier]; [wifiReach startNotifier]; } -- (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +- (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.glViewController = nil; - + [self setupNetworkListeners]; NSNotificationCenter *dnc = [NSNotificationCenter defaultCenter]; [dnc addObserver:self selector:@selector(preGameInitialization) name:@"initializeGame" object: nil]; [dnc addObserver:self selector:@selector(startGame) name:@"readyToStartGame" object: nil]; - + [self initializeResources]; // check to see if the Res folder exists. If it does continue // otherwise bring up the download dialog and download the core files @@ -328,7 +328,7 @@ { [self preGameInitialization]; } - + [self.window setBackgroundColor: [UIColor blackColor]]; [self.window makeKeyAndVisible]; @@ -337,7 +337,7 @@ - (void)applicationWillTerminate:(UIApplication *)application { - [self.glViewController.view destroyGame]; + [self.glViewController.view destroyGame]; } - (void)initializeKeyboard: (id) initialState @@ -345,31 +345,18 @@ [self.glViewController toggleKeyboardWithState: initialState]; } -- (void) handleWEngineCommand:(NSString *) command - withUIParameters: (CGFloat) x - yCoordinate: (CGFloat) y - width: (CGFloat) width +- (void) handleWEngineCommand:(NSString *) command + withUIParameters: (CGFloat) x + yCoordinate: (CGFloat) y + width: (CGFloat) width height: (CGFloat) height { } - (void)handleWEngineCommand:(NSString *) command withParameter: (NSString *) parameter { - BOOL isDevicePhone = (UI_USER_INTERFACE_IDIOM()) == UIUserInterfaceIdiomPhone; - if ([command isEqualToString: @"entergamestate:menu"] ) - [glViewController.eaglView displayAds]; - - else if ([command isEqualToString: @"enterduelphase:end"] && isDevicePhone) - [glViewController.eaglView displayAds]; - - else if ([command isEqualToString: @"leaveduelphase:end"] || - [command isEqualToString: @"leavegamestate:menu"]) - { - if (isDevicePhone) - [glViewController.eaglView removeAds]; - } - else if ([command isEqualToString: @"displayKeyboard"]) + if ([command isEqualToString: @"displayKeyboard"]) { [self initializeKeyboard: parameter]; } @@ -379,16 +366,17 @@ } + - (void) rotateBackgroundImage:(UIInterfaceOrientation)fromInterfaceOrientation toInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { bool isPhone = (UI_USER_INTERFACE_IDIOM()) == UIUserInterfaceIdiomPhone; - - if (isPhone) + + if (isPhone) { UIImage *bgImage = [UIImage imageNamed: @"Default-Portrait.png"]; [[[self.window subviews] objectAtIndex: 0] setBackgroundColor: [UIColor colorWithPatternImage: bgImage]]; } - else + else { [self.window setBackgroundColor: [UIColor clearColor]]; if (UIInterfaceOrientationIsLandscape( toInterfaceOrientation)) { @@ -410,12 +398,12 @@ { BOOL netAvailable = NO; //NSDate *startTime = [[[NSDate alloc ] init] autorelease]; - + hostReach = [[Reachability reachabilityForGoogleDNS] retain]; - + NetworkStatus netStatus = [hostReach currentReachabilityStatus]; - - + + if (netStatus == ReachableViaWiFi || netStatus == ReachableViaWWAN) { netAvailable = YES; } diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterBrightRoll.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterBrightRoll.h deleted file mode 100644 index ad8353501..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterBrightRoll.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - AdWhirlAdapterBrightRoll.h - - Copyright 2010 BrightRoll, 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 "AdWhirlAdNetworkAdapter.h" -#import "BRBannerAd.h" -#import "BRBannerAdDelegate.h" -#import "BRFullScreenAd.h" -#import "BRFullScreenAdDelegate.h" - -@interface AdWhirlAdapterBrightRoll : AdWhirlAdNetworkAdapter -{ - BRBannerAd *brBannerAd; -} - -@property (nonatomic, retain) BRBannerAd *brBannerAd; - -+ (AdWhirlAdNetworkType)networkType; -- (void)brBannerAdFetched:(BRBannerAd *)brBannerAd; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterBrightRoll.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterBrightRoll.m deleted file mode 100644 index 390c8e61e..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterBrightRoll.m +++ /dev/null @@ -1,137 +0,0 @@ -/* - - AdWhirlAdapterBrightRoll.m - - Copyright 2009 BrightRoll, 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 "AdWhirlAdapterBrightRoll.h" -#import "AdWhirlAdNetworkAdapter.h" -#import "AdWhirlAdNetworkRegistry.h" -#import "AdWhirlView.h" -#import "AdWhirlAdNetworkAdapter+Helpers.h" -#import "AdWhirlAdNetworkConfig.h" - -@implementation AdWhirlAdapterBrightRoll - -@synthesize brBannerAd; - -+ (AdWhirlAdNetworkType)networkType -{ - return AdWhirlAdNetworkTypeBrightRoll; -} - -+ (void)load -{ - [[AdWhirlAdNetworkRegistry sharedRegistry] registerClass:self]; -} - -- (void)stopObserving -{ - [[NSNotificationCenter defaultCenter] - removeObserver:self - name:@"AdWhirlViewWillAnimateToNewAd" - object:self.adWhirlView]; -} - -- (void)stopBeingDelegate -{ - [self stopObserving]; - self.brBannerAd.delegate = nil; - self.brBannerAd = nil; -} - -- (void)getAd -{ - self.brBannerAd = [BRBannerAd fetchWithDelegate:self]; -} - -#pragma mark BRBannerAdDelegate required methods - -- (NSString *)brBannerAdAppId:(BRBannerAd *)theBrBannerAd -{ - if ([adWhirlDelegate respondsToSelector:@selector(brightRollAppId)]) - { - return [adWhirlDelegate brightRollAppId]; - } - return networkConfig.pubId; -} - -- (void)brBannerAdFetched:(BRBannerAd *)theBrBannerAd -{ - [[NSNotificationCenter defaultCenter] - addObserver:self - selector:@selector(adWhirlWillAnimateToNewAdIn:) - name:@"AdWhirlViewWillAnimateToNewAd" - object:self.adWhirlView]; - - brBannerAd.fullScreenAd.delegate = self; - self.adNetworkView = brBannerAd.view; - [self.adWhirlView adapter:self didReceiveAdView:brBannerAd.view]; -} - -- (void)brBannerAdFetchFailed:(BRBannerAd *)bannerAd -{ - [adWhirlView - adapter:self - didFailAd:[NSError - errorWithDomain:@"com.brightroll.BrightRoll_iPhone_SDK" - code:404 - userInfo:[NSDictionary dictionary]]]; -} - -- (void)brBannerAdWillShowFullScreenAd:(BRBannerAd *)bannerAd -{ - [self helperNotifyDelegateOfFullScreenModal]; -} - -#pragma mark AdWhirlView notification methods - -- (void)adWhirlWillAnimateToNewAdIn:(NSNotification *)notification -{ - if ([self.adWhirlView performSelector:@selector(currAdapter)] == self) - { - [self stopObserving]; - [self helperNotifyDelegateOfFullScreenModal]; - [brBannerAd.fullScreenAd show]; - } -} - -#pragma mark BRFullScreenAdDelegate required methods - -- (UIViewController *)brFullScreenAdControllerParent -{ - return [self.adWhirlDelegate viewControllerForPresentingModalView]; -} - -- (void)brFullScreenAdDismissed:(BRFullScreenAd *)brFullScreenAd -{ - [self helperNotifyDelegateOfFullScreenModalDismissal]; -} - -- (NSString *)brightRollAppId -{ - NSString *appId = [self.networkConfig.credentials objectForKey:@"pubid"]; - - if (!appId) - { - appId = [self.adWhirlDelegate brightRollAppId]; - } - - return appId; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterGreystripe.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterGreystripe.h deleted file mode 100644 index 744c6fc0e..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterGreystripe.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - - AdWhirlAdapterGreystripe.m - - Copyright 2010 Greystripe, 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 "AdWhirlAdNetworkAdapter.h" -#import "GreystripeDelegate.h" - -/** - * Banner slot name used to identify the banner ad slot within the Greystripe - * SDK. - */ -extern NSString * const kGSBannerSlotName; - -/** - * Full-screen slot name used to identify the full-screen ad slot within the - * Greystripe SDK. Use this slot name to display full-screen ads as follows: - * - * [GSAdEngine displayFullScreenAdForSlotNamed:kGSFullScreenSlotName]; - * - * If you need to check whether an ad is available for this slot, simply use: - * - * [GSAdEngine isAdReadyForSlotNamed:kGSFullScreenSlotName]; - */ -extern NSString * const kGSFullScreenSlotName; - -@class GSAdView; - -@interface AdWhirlAdapterGreystripe : AdWhirlAdNetworkAdapter { - UIView *innerContainer; - UIView *outerContainer; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterGreystripe.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterGreystripe.m deleted file mode 100644 index 71a415217..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterGreystripe.m +++ /dev/null @@ -1,191 +0,0 @@ -/* - - AdWhirlAdapterGreystripe.m - - Copyright 2010 Greystripe, 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 "AdWhirlAdapterGreystripe.h" - -#import "AdWhirlAdNetworkAdapter+Helpers.h" -#import "AdWhirlAdNetworkConfig.h" -#import "AdWhirlAdNetworkRegistry.h" -#import "AdWhirlLog.h" -#import "AdWhirlView.h" -#import "GSAdView.h" -#import "GSAdEngine.h" - -// constants -NSString * const kGSBannerSlotName = @"gsBanner"; -NSString * const kGSFullScreenSlotName = @"gsFullScreen"; - -// static globals -static BOOL g_didStartUpGreystripe; -static NSTimeInterval g_lastAdReadyTime; - -@interface AdWhirlAdapterGreystripe () -- (void)bannerAdReady; -@end - -@implementation AdWhirlAdapterGreystripe - -+ (AdWhirlAdNetworkType)networkType { - return AdWhirlAdNetworkTypeGreyStripe; -} - -+ (void)load { - [[AdWhirlAdNetworkRegistry sharedRegistry] registerClass:self]; -} - -/** - * Initialize the Greystripe adapter. The GSAdEngine will be started up the - * first time this method is called, using the ID provided by the AdWhirl - * server. Two slots will be registered with the GSAdEngine: one banner and one - * full-screen. See the note in AdWhirlAdapterGreystripe.h on how to make use - * of the full-screen slot. - */ -- (id)initWithAdWhirlDelegate:(id)delegate - view:(AdWhirlView *)view - config:(AdWhirlConfig *)config - networkConfig:(AdWhirlAdNetworkConfig *)netConf { - if(self = [super initWithAdWhirlDelegate:delegate view:view config:config networkConfig:netConf]) { - if(!g_didStartUpGreystripe) { - @try { - GSAdSlotDescription * bannerSlot = [GSAdSlotDescription descriptionWithSize:kGSAdSizeBanner name:kGSBannerSlotName]; - GSAdSlotDescription * fullScreenSlot = [GSAdSlotDescription descriptionWithSize:kGSAdSizeIPhoneFullScreen name:kGSFullScreenSlotName]; - [GSAdEngine startupWithAppID:netConf.pubId adSlotDescriptions:[NSArray arrayWithObjects:bannerSlot,fullScreenSlot, nil]]; - g_didStartUpGreystripe = YES; - } - @catch (NSException *e) { - // This exception is thrown when Greystripe is initialized twice. We - // ignore it because if the host app is using Greystripe directly for - // full-screen ads, it may have already initialized Greystripe before - // AdWhirl tried to do the same. - if([e.name isEqualToString:NSInternalInconsistencyException]){ - g_didStartUpGreystripe = YES; - } - else { - @throw e; - } - } - } - } - return self; -} - - -/** - * Fetch a banner ad from Greystripe. This method only fetches banners as all - * full-screen ad fetching is performed implicitly by the GSAdEngine. - */ -- (void)getAd { - GSAdView *gsAdView = [GSAdView adViewForSlotNamed:kGSBannerSlotName delegate:self]; - - // Use default frame, slightly bigger, to be the parent view of gsAdView, so - // when the GSAdView finds its containing view it stops at the inner Container - // and will set the alpha of innerContainer, not the AdWhirlView - innerContainer = [[UIView alloc] initWithFrame:kAdWhirlViewDefaultFrame]; - innerContainer.backgroundColor = [UIColor clearColor]; - [innerContainer addSubview:gsAdView]; - - // Set the outer container to be the size of the gsAdView so there are no unsightly - // borders around the ad - outerContainer = [[UIView alloc] initWithFrame:gsAdView.frame]; - outerContainer.backgroundColor = [UIColor clearColor]; - [outerContainer addSubview:innerContainer]; - self.adNetworkView = outerContainer; - - NSTimeInterval now = [[NSDate date] timeIntervalSince1970]; - NSTimeInterval delta = now - g_lastAdReadyTime; - if(delta > kGSMinimumRefreshInterval) { - // For the initial ad display we will get an ad ready notification - // automatically because the ad is automatically rendered - // regardless of its refresh interval (0 here). For all other - // displays we must force it. - if(g_lastAdReadyTime > 0) { - if([GSAdEngine isNextAdDownloadedForSlotNamed:kGSBannerSlotName]) { - [gsAdView refresh]; - [self bannerAdReady]; - } - else { - AWLogDebug(@"Failing Greystripe banner ad request because the next "\ - "banner ad has not yet been downloaded."); - [adWhirlView adapter:self didFailAd:nil]; - } - } - } - else { - AWLogDebug(@"Failing Greystripe ad request because Greystripe's " - "minimum refresh interval of %f has not elapsed since the "\ - "previous banner display.", kGSMinimumRefreshInterval); - [adWhirlView adapter:self didFailAd:nil]; - } -} - -/** - * Stop being the delegate for banner ads. In order to change the delegate for - * full-screen Greystripe ads, see GSAdEngine's - * setFullScreenDelegate:forSlotNamed: method. - */ -- (void)stopBeingDelegate { - [GSAdView adViewForSlotNamed:kGSBannerSlotName delegate:nil]; -} - -- (void)dealloc { - [innerContainer release]; - [outerContainer release]; - [super dealloc]; -} - -#pragma mark - -#pragma mark GreystripeDelegate notification methods - -/** - * Delegate notification received when Greystripe has a banner ad ready. - */ -- (void)greystripeAdReadyForSlotNamed:(NSString *)a_name { - if ([a_name isEqualToString:kGSBannerSlotName] && g_lastAdReadyTime == 0) { - // Only forward on this notification for the initial notification as - // all other notifications will be sent explicitly after checking - // ad readiness (see getAd). - [self bannerAdReady]; - } -} - -- (void)greystripeFullScreenDisplayWillOpen { - [self helperNotifyDelegateOfFullScreenModal]; -} - -- (void)greystripeFullScreenDisplayWillClose { - [self helperNotifyDelegateOfFullScreenModalDismissal]; -} - -#pragma mark - -#pragma mark Internal methods - -/** - * Notify the host app that Greystripe has received an ad. This only applies - * banner ads that the Greystripe SDK has fetched, as readiness of full-screen - * ads can be always be checked directly via - * [GSAdEngine isAdReadyForSlotNamed:kGSFullScreenSlotName]. - */ -- (void)bannerAdReady { - AWLogDebug(@"Greystripe received banner ad."); - g_lastAdReadyTime = [[NSDate date] timeIntervalSince1970]; - [adWhirlView adapter:self didReceiveAdView:self.adNetworkView]; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterInMobi.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterInMobi.h deleted file mode 100644 index d1ab24388..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterInMobi.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - - AdWhirlAdapterInMobi.h - - Copyright 2010 AdMob, 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 "AdWhirlAdNetworkAdapter.h" -#import "IMAdDelegate.h" -#import "IMAdRequest.h" - -@class InMobiAdView; - -@interface AdWhirlAdapterInMobi : AdWhirlAdNetworkAdapter { - -} - -+ (AdWhirlAdNetworkType)networkType; -- (NSString *)siteId; -- (UIViewController *)rootViewControllerForAd; -- (BOOL)testMode; -- (Gender)gender; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterInMobi.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterInMobi.m deleted file mode 100644 index b3846fa60..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterInMobi.m +++ /dev/null @@ -1,173 +0,0 @@ -/* - - AdWhirlAdapterInMobi.m - - Copyright 2010 AdMob, 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 "AdWhirlAdapterInMobi.h" -#import "AdWhirlAdNetworkConfig.h" -#import "AdWhirlView.h" -#import "IMAdView.h" -#import "IMAdRequest.h" -#import "AdWhirlLog.h" -#import "AdWhirlAdNetworkAdapter+Helpers.h" -#import "AdWhirlAdNetworkRegistry.h" - -@implementation AdWhirlAdapterInMobi - -+ (AdWhirlAdNetworkType)networkType { - return AdWhirlAdNetworkTypeInMobi; -} - -+ (void)load { - [[AdWhirlAdNetworkRegistry sharedRegistry] registerClass:self]; -} - -- (void)getAd { - IMAdView *inMobiView = [[IMAdView alloc] - initWithFrame:kAdWhirlViewDefaultFrame - imAppId:[self siteId] - imAdUnit:IM_UNIT_320x50 - rootViewController:[self rootViewControllerForAd]]; - [inMobiView autorelease]; - inMobiView.refreshInterval = REFRESH_INTERVAL_OFF; - inMobiView.delegate = self; - self.adNetworkView = inMobiView; - - IMAdRequest *request = [IMAdRequest request]; - - if ([self testMode]) { - request.testMode = true; - } - if ([adWhirlDelegate respondsToSelector:@selector(postalCode)]) { - request.postalCode = [adWhirlDelegate postalCode]; - } - if ([adWhirlDelegate respondsToSelector:@selector(areaCode)]) { - request.areaCode = [adWhirlDelegate areaCode]; - } - if ([adWhirlDelegate respondsToSelector:@selector(dateOfBirth)]) { - NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease]; - [formatter setDateFormat:@"dd-MM-yyyy"]; - request.dateOfBirth = [formatter - stringFromDate:[adWhirlDelegate dateOfBirth]]; - } - if ([adWhirlDelegate respondsToSelector:@selector(gender)]) { - if ([adWhirlDelegate gender] == @"m") { - request.gender = G_M; - } else if ([adWhirlDelegate gender] == @"f") { - request.gender = G_F; - } else { - request.gender = G_None; - } - } - if ([adWhirlDelegate respondsToSelector:@selector(keywords)]) { - request.keywords = [adWhirlDelegate keywords]; - } - if ([adWhirlDelegate respondsToSelector:@selector(searchString)]) { - request.searchString = [adWhirlDelegate searchString]; - } - if ([adWhirlDelegate respondsToSelector:@selector(incomeLevel)]) { - request.income = [adWhirlDelegate incomeLevel]; - } - if ([adWhirlDelegate respondsToSelector:@selector(inMobiEducation)]) { - request.education = [adWhirlDelegate inMobiEducation]; - } - if ([adWhirlDelegate respondsToSelector:@selector(inMobiEthnicity)]) { - request.ethnicity = [adWhirlDelegate inMobiEthnicity]; - } - if ([adWhirlDelegate respondsToSelector:@selector(dateOfBirth)]) { - request.age = [self helperCalculateAge]; - } - if ([adWhirlDelegate respondsToSelector:@selector(inMobiInterests)]) { - request.interests = [adWhirlDelegate inMobiInterests]; - } - if ([adWhirlDelegate respondsToSelector:@selector(inMobiParamsDictionary)]) { - request.paramsDictionary = [adWhirlDelegate inMobiParamsDictionary]; - } - if (!adWhirlConfig.locationOn) { - request.isLocationEnquiryAllowed = false; - } - - [inMobiView loadIMAdRequest:request]; -} - -- (void)stopBeingDelegate { - InMobiAdView *inMobiView = (InMobiAdView *)self.adNetworkView; - if (inMobiView != nil) { - [inMobiView setDelegate:nil]; - } -} - -- (void)dealloc { - [super dealloc]; -} - -#pragma mark IMAdView helper methods - -- (NSString *)siteId { - if ([adWhirlDelegate respondsToSelector:@selector(inMobiAppId)]) { - return [adWhirlDelegate inMobiAppID]; - } - return networkConfig.pubId; -} - -- (UIViewController *)rootViewControllerForAd { - return [adWhirlDelegate viewControllerForPresentingModalView]; -} - -- (BOOL)testMode { - if ([adWhirlDelegate respondsToSelector:@selector(adWhirlTestMode)]) - return [adWhirlDelegate adWhirlTestMode]; - return NO; -} - -- (Gender)gender { - if ([adWhirlDelegate respondsToSelector:@selector(gender)]) { - NSString *genderStr = [adWhirlDelegate gender]; - if ([genderStr isEqualToString:@"f"]) { - return G_F; - } else if ([genderStr isEqualToString:@"m"]) { - return G_M; - } - } - return G_None; -} - -#pragma mark IMAdDelegate methods - -- (void)adViewDidFinishRequest:(IMAdView *)adView { - [adWhirlView adapter:self didReceiveAdView:adView]; -} - -- (void)adView:(IMAdView *)view didFailRequestWithError:(IMAdError *)error { - NSLog(@"Error %@", error); - [adWhirlView adapter:self didFailAd:nil]; -} - -- (void)adViewWillPresentScreen:(IMAdView *)adView { - [self helperNotifyDelegateOfFullScreenModal]; -} - -- (void)adViewWillDismissScreen:(IMAdView *)adView { - [self helperNotifyDelegateOfFullScreenModalDismissal]; -} - -- (void)adViewWillLeaveApplication:(IMAdView *)adView { - [self helperNotifyDelegateOfFullScreenModal]; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterJumpTap.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterJumpTap.h deleted file mode 100644 index a2d129301..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterJumpTap.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - - AdWhirlAdapterJumpTap.h - - Copyright 2009 AdMob, 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 "AdWhirlAdNetworkAdapter.h" -#import "JTAdWidget.h" - -@interface AdWhirlAdapterJumpTap : AdWhirlAdNetworkAdapter { - -} - -+ (AdWhirlAdNetworkType)networkType; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterJumpTap.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterJumpTap.m deleted file mode 100644 index 7622366e0..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterJumpTap.m +++ /dev/null @@ -1,238 +0,0 @@ -/* - - AdWhirlAdapterJumpTap.m - - Copyright 2009 AdMob, 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 "AdWhirlAdapterJumpTap.h" -#import "AdWhirlView.h" -#import "AdWhirlConfig.h" -#import "AdWhirlAdNetworkConfig.h" -#import "AdWhirlAdNetworkAdapter+Helpers.h" -#import "AdWhirlAdNetworkRegistry.h" - - -@implementation AdWhirlAdapterJumpTap - -+ (AdWhirlAdNetworkType)networkType { - return AdWhirlAdNetworkTypeJumpTap; -} - -+ (void)load { - [[AdWhirlAdNetworkRegistry sharedRegistry] registerClass:self]; -} - -- (void)getAd { - JTAdWidget *widget = [[JTAdWidget alloc] initWithDelegate:self - shouldStartLoading:YES]; - widget.frame = kAdWhirlViewDefaultFrame; - widget.refreshInterval = 0; // do not self-refresh - self.adNetworkView = widget; - - if ([adWhirlDelegate respondsToSelector:@selector(jumptapTransitionType)]) { - widget.transition = [adWhirlDelegate jumptapTransitionType]; - } - [widget release]; -} - -- (void)stopBeingDelegate { - // no way to set JTAdWidget's delegate to nil -} - -- (void)dealloc { - [super dealloc]; -} - -#pragma mark JTAdWidgetDelegate methods - -- (NSString *)publisherId:(id)theWidget { - NSString *pubId = networkConfig.pubId; - if (pubId == nil) { - NSDictionary *cred = networkConfig.credentials; - if (cred != nil) { - pubId = [cred objectForKey:@"publisherID"]; - } - } - return pubId; -} - -- (NSString *)site:(id)theWidget { - NSString *siteId = nil; - if ([adWhirlDelegate respondsToSelector:@selector(jumptapSiteId)]) { - siteId = [adWhirlDelegate jumptapSiteId]; - } - if (siteId == nil) { - NSDictionary *cred = networkConfig.credentials; - if (cred != nil) { - siteId = [cred objectForKey:@"siteID"]; - } - } - return siteId; -} - -- (NSString *)adSpot:(id)theWidget { - NSString *spotId = nil; - if ([adWhirlDelegate respondsToSelector:@selector(jumptapSpotId)]) { - spotId = [adWhirlDelegate jumptapSpotId]; - } - if (spotId == nil) { - NSDictionary *cred = networkConfig.credentials; - if (cred != nil) { - spotId = [cred objectForKey:@"spotID"]; - } - } - return spotId; -} - -- (BOOL)shouldRenderAd:(id)theWidget { - [adWhirlView adapter:self didReceiveAdView:theWidget]; - return YES; -} - -- (void)beginAdInteraction:(id)theWidget { - [self helperNotifyDelegateOfFullScreenModal]; -} - -- (void)endAdInteraction:(id)theWidget { - [self helperNotifyDelegateOfFullScreenModalDismissal]; -} - -- (void)adWidget:(id)theWidget didFailToShowAd:(NSError *)error { - [adWhirlView adapter:self didFailAd:error]; -} - -- (void)adWidget:(id)theWidget didFailToRequestAd:(NSError *)error { - [adWhirlView adapter:self didFailAd:error]; -} - -- (BOOL)respondsToSelector:(SEL)selector { - if (selector == @selector(location:) - && ![adWhirlDelegate respondsToSelector:@selector(locationInfo)]) { - return NO; - } - else if (selector == @selector(query:) - && ![adWhirlDelegate respondsToSelector:@selector(keywords)]) { - return NO; - } - else if (selector == @selector(category:) - && ![adWhirlDelegate respondsToSelector:@selector(jumptapCategory)]) { - return NO; - } - else if (selector == @selector(adultContent:) - && ![adWhirlDelegate respondsToSelector:@selector(jumptapAdultContent)]) { - return NO; - } - return [super respondsToSelector:selector]; -} - -#pragma mark JTAdWidgetDelegate methods -Targeting - -- (NSString *)query:(id)theWidget { - return [adWhirlDelegate keywords]; -} - -- (NSString *)category:(id)theWidget { - return [adWhirlDelegate jumptapCategory]; -} - -- (AdultContent)adultContent:(id)theWidget { - return [adWhirlDelegate jumptapAdultContent]; -} - -#pragma mark JTAdWidgetDelegate methods -General Configuration - -- (NSDictionary*)extraParameters:(id)theWidget { - NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithCapacity:10]; - if ([adWhirlDelegate respondsToSelector:@selector(dateOfBirth)]) { - NSInteger age = [self helperCalculateAge]; - if (age >= 0) - [dict setObject:[NSString stringWithFormat:@"%d",age] forKey:@"mt-age"]; - } - if ([adWhirlDelegate respondsToSelector:@selector(gender)]) { - NSString *gender = [adWhirlDelegate gender]; - if (gender != nil) - [dict setObject:gender forKey:@"mt-gender"]; - } - if ([adWhirlDelegate respondsToSelector:@selector(incomeLevel)]) { - NSUInteger income = [adWhirlDelegate incomeLevel]; - NSString *level = nil; - if (income < 15000) { - level = @"000_015"; - } - else if (income < 20000) { - level = @"015_020"; - } - else if (income < 30000) { - level = @"020_030"; - } - else if (income < 40000) { - level = @"030_040"; - } - else if (income < 50000) { - level = @"040_050"; - } - else if (income < 75000) { - level = @"050_075"; - } - else if (income < 100000) { - level = @"075_100"; - } - else if (income < 125000) { - level = @"100_125"; - } - else if (income < 150000) { - level = @"125_150"; - } - else { - level = @"150_OVER"; - } - [dict setObject:level forKey:@"mt-hhi"]; - } - return dict; -} - -- (UIColor *)adBackgroundColor:(id)theWidget { - return [self helperBackgroundColorToUse]; -} - -- (UIColor *)adForegroundColor:(id)theWidget { - return [self helperTextColorToUse]; -} - -#pragma mark JTAdWidgetDelegate methods -Location Configuration - -- (BOOL)allowLocationUse:(id)theWidget { - return adWhirlConfig.locationOn; -} - -- (CLLocation*)location:(id)theWidget { - if (![adWhirlDelegate respondsToSelector:@selector(locationInfo)]) { - return nil; - } - return [adWhirlDelegate locationInfo]; -} - -#pragma mark JTAdWidgetDelegate methods -Ad Display and User Interaction -// The ad orientation changed -//- (void)adWidget:(id)theWidget orientationHasChangedTo:(UIInterfaceOrientation)interfaceOrientation; - -// Language methods -//- (NSString*)getPlayVideoPrompt:(id)theWidget; -//- (NSString*)getBackButtonPrompt:(id)theWidget isInterstitial:(BOOL)isInterstitial; -//- (NSString*)getSafariButtonPrompt:(id)theWidget; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterMdotM.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterMdotM.h deleted file mode 100644 index 5c8080b3d..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterMdotM.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - - AdWhirlAdapterMdotM.h - - Copyright 2009 AdMob, 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 "AdWhirlAdNetworkAdapter.h" -#import "AdWhirlCustomAdView.h" -#import "AdWhirlWebBrowserController.h" - -@interface AdWhirlAdapterMdotM : AdWhirlAdNetworkAdapter { - BOOL requesting; - CLLocationManager *locationManager; - NSURLConnection *adConnection; - NSMutableData *adData; - NSURLConnection *imageConnection; - NSMutableData *imageData; - AdWhirlCustomAdView *adView; - AdWhirlWebBrowserController *webBrowserController; -} - -+ (AdWhirlAdNetworkType)networkType; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterMdotM.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterMdotM.m deleted file mode 100644 index 574a9c698..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterMdotM.m +++ /dev/null @@ -1,423 +0,0 @@ -/* - - AdWhirlAdapterMdotM.m - - Copyright 2009 AdMob, 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 "AdWhirlAdapterMdotM.h" -#import "AdWhirlView.h" -#import "AdWhirlConfig.h" -#import "AdWhirlAdNetworkConfig.h" -#import "AdWhirlDelegateProtocol.h" -#import "AdWhirlLog.h" -#import "AdWhirlAdNetworkAdapter+Helpers.h" -#import "AdWhirlAdNetworkRegistry.h" -#import "AdWhirlAdapterCustom.h" -#import "AdWhirlError.h" -#import "CJSONDeserializer.h" -#import "AdWhirlCustomAdView.h" - - -@interface AdWhirlAdapterMdotM () - -- (BOOL)parseAdData:(NSData *)data error:(NSError **)error; - -@property (nonatomic,readonly) CLLocationManager *locationManager; -@property (nonatomic,retain) NSURLConnection *adConnection; -@property (nonatomic,retain) NSURLConnection *imageConnection; -@property (nonatomic,retain) AdWhirlCustomAdView *adView; -@property (nonatomic,retain) AdWhirlWebBrowserController *webBrowserController; - -@end - - -@implementation AdWhirlAdapterMdotM - -@synthesize adConnection; -@synthesize imageConnection; -@synthesize adView; -@synthesize webBrowserController; - - -+ (AdWhirlAdNetworkType)networkType { - return AdWhirlAdNetworkTypeMdotM; -} - -+ (void)load { - [[AdWhirlAdNetworkRegistry sharedRegistry] registerClass:self]; -} - -- (BOOL)useTestAd { - if ([adWhirlDelegate respondsToSelector:@selector(adWhirlTestMode)]) - return [adWhirlDelegate adWhirlTestMode]; - return NO; -} - - -- (id)initWithAdWhirlDelegate:(id)delegate - view:(AdWhirlView *)view - config:(AdWhirlConfig *)config - networkConfig:(AdWhirlAdNetworkConfig *)netConf { - self = [super initWithAdWhirlDelegate:delegate - view:view - config:config - networkConfig:netConf]; - if (self != nil) { - adData = [[NSMutableData alloc] init]; - imageData = [[NSMutableData alloc] init]; - } - return self; -} - -- (NSMutableString *)appendUserContextDic:(NSDictionary *)dic withUrl:(NSString *)sUrl { - NSArray *keyArray = [dic allKeys]; - NSMutableString *str = [NSMutableString stringWithString:sUrl]; - - //Iterate over the context disctionary and for each kay-value pair create a string of the format &key=value - for (int i = 0; i < [keyArray count]; i++) { - [str appendFormat:@"&%@=%@",[keyArray objectAtIndex:i], [dic objectForKey:[keyArray objectAtIndex:i]]]; - } - return str; -} - - -- (void)getAd { - @synchronized(self) { - if (requesting) return; - requesting = YES; - } - - NSString *appKey = networkConfig.pubId; - - if ([adWhirlDelegate respondsToSelector:@selector(MdotMApplicationKey)] ) { - appKey = [adWhirlDelegate MdotMApplicationKey]; - } - - UIDevice *device = [UIDevice currentDevice]; - NSBundle *bundle = [NSBundle mainBundle]; - NSLocale *locale = [NSLocale currentLocale]; - NSString *userAgent = [NSString stringWithFormat:@"%@ %@ (%@; %@ %@; %@)", - [bundle objectForInfoDictionaryKey:@"CFBundleDisplayName"], - [bundle objectForInfoDictionaryKey:@"CFBundleVersion"], - [device model], - [device systemName], [device systemVersion], - [locale localeIdentifier]]; - int test; - if ( [self useTestAd] ) { - test = 1; - } else - test = 0; - - NSString *str = [NSString stringWithFormat: - @"http://ads.mdotm.com/ads/feed.php?appver=%d&v=%@&apikey=mdotm&appkey=%@&deviceid=%@&width=320&height=50&fmt=json&ua=%@&test=%d", - kAdWhirlAppVer, [[UIDevice currentDevice] systemVersion], - appKey, [[UIDevice currentDevice] uniqueIdentifier], userAgent, test]; - - NSMutableDictionary *userContextDic = [[NSMutableDictionary alloc] initWithCapacity:2]; - if ( [userContextDic count] > 0 ) { - str = [self appendUserContextDic:userContextDic withUrl:str]; - } - - NSString *urlString = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; - - NSURL *adRequestURL = [[NSURL alloc] initWithString:urlString]; - AWLogDebug(@"Requesting MdotM ad (%@) %@", str, adRequestURL); - NSURLRequest *adRequest = [NSURLRequest requestWithURL:adRequestURL]; - - - NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:adRequest - delegate:self]; - self.adConnection = conn; - [conn release]; - [adRequestURL release]; - [userContextDic release]; -} - - - - -#pragma mark MdotMDelegate optional methods - -- (BOOL)respondsToSelector:(SEL)selector { - if (selector == @selector(location) - && ![adWhirlDelegate respondsToSelector:@selector(location)]) { - return NO; - } - else if (selector == @selector(userContext) - && ![adWhirlDelegate respondsToSelector:@selector(userContext)]) { - return NO; - } return [super respondsToSelector:selector]; -} - - -- (CLLocationManager *)locationManager { - if (locationManager == nil) { - locationManager = [[CLLocationManager alloc] init]; - } - return locationManager; -} - -- (BOOL)parseEnums:(int *)val - adInfo:(NSDictionary*)info - minVal:(int)min - maxVal:(int)max - fieldName:(NSString *)name - error:(NSError **)error { - NSString *str = [info objectForKey:name]; - if (str == nil) { - if (error != nil) - *error = [AdWhirlError errorWithCode:AdWhirlCustomAdDataError - description:[NSString stringWithFormat: - @"MdotM ad data has no '%@' field", name]]; - return NO; - } - int intVal = [str intValue]; - if (intVal <= min || intVal >= max) { - if (error != nil) - *error = [AdWhirlError errorWithCode:AdWhirlCustomAdDataError - description:[NSString stringWithFormat: - @"MdotM ad data: Invalid value for %@ - %d", name, intVal]]; - return NO; - } - *val = intVal; - return YES; -} - -- (BOOL)parseAdData:(NSData *)data error:(NSError **)error { - NSError *jsonError = nil; - id parsed = [[CJSONDeserializer deserializer] deserialize:data error:&jsonError]; - if (parsed == nil) { - if (error != nil) - *error = [AdWhirlError errorWithCode:AdWhirlCustomAdParseError - description:@"Error parsing MdotM ad JSON from server" - underlyingError:jsonError]; - return NO; - } - if ([parsed isKindOfClass:[NSArray class]]) { - NSArray *ads = parsed; - NSDictionary *adInfo = nil; - if ( [ads count] == 0 ) { - return(NO); - } else { - id parsed0 =[ads objectAtIndex:0]; - if ( [parsed0 isKindOfClass:[NSDictionary class]] ) { - adInfo = parsed0; - - // gather up and validate ad info - NSString *text = [adInfo objectForKey:@"ad_text"]; - NSString *redirectURLStr = [adInfo objectForKey:@"landing_url"]; - - int adTypeInt; - if (![self parseEnums:&adTypeInt - adInfo:adInfo - minVal:AWCustomAdTypeMIN - maxVal:AWCustomAdTypeMAX - fieldName:@"ad_type" - error:error]) { - return NO; - } - AWCustomAdType adType = adTypeInt; - - int launchTypeInt; - if (![self parseEnums:&launchTypeInt - adInfo:adInfo - minVal:AWCustomAdLaunchTypeMIN - maxVal:AWCustomAdLaunchTypeMAX - fieldName:@"launch_type" - error:error]) { - return NO; - } - AWCustomAdLaunchType launchType = launchTypeInt; - AWCustomAdWebViewAnimType animType = AWCustomAdWebViewAnimTypeCurlDown; - - NSURL *redirectURL = nil; - if (redirectURLStr == nil) { - AWLogWarn(@"No redirect URL for MdotM ad"); - } else { - redirectURL = [[NSURL alloc] initWithString:redirectURLStr]; - if (!redirectURL) - AWLogWarn(@"MdotM ad: Malformed redirect URL string %@", redirectURLStr); - } - AWLogDebug(@"Got MdotM ad %@ %@ %d %d %d", text, redirectURL, - adType, launchType, animType); - - self.adView = [[AdWhirlCustomAdView alloc] initWithDelegate:self - text:text - redirectURL:redirectURL - clickMetricsURL:nil - adType:adType - launchType:launchType - animType:animType - backgroundColor:[self helperBackgroundColorToUse] - textColor:[self helperTextColorToUse]]; - [self.adView release]; - self.adNetworkView = adView; - [redirectURL release]; - if (adView == nil) { - if (error != nil) - *error = [AdWhirlError errorWithCode:AdWhirlCustomAdDataError - description:@"Error initializing MdotM ad view"]; - return NO; - } - - // fetch image - id imageURL = [adInfo objectForKey:@"img_url"]; - if ( [imageURL isKindOfClass:[NSString class]]) { - AWLogDebug(@"Request MdotM ad image at %@", imageURL); - NSURLRequest *imageRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:imageURL]]; - NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:imageRequest - delegate:self]; - self.imageConnection = conn; - [conn release]; - } else { - return(NO); - } - } else { - return(NO); - } - } - } else { - if (error != nil) - *error = [AdWhirlError errorWithCode:AdWhirlCustomAdDataError - description:@"Expected top-level dictionary in MdotM ad data"]; - return NO; - } - return YES; -} - -- (void)stopBeingDelegate { - AdWhirlCustomAdView *theAdView = (AdWhirlCustomAdView *)self.adNetworkView; - if (theAdView != nil) { - theAdView.delegate = nil; - } -} - -- (void)dealloc { - [locationManager release], locationManager = nil; - [adConnection release], adConnection = nil; - [adData release], adData = nil; - [imageConnection release], imageConnection = nil; - [imageData release], imageData = nil; - [adView release], adView = nil; - [webBrowserController release], webBrowserController = nil; - [super dealloc]; -} - -#pragma mark NSURLConnection delegate methods. - -- (void)connection:(NSURLConnection *)conn didReceiveResponse:(NSURLResponse *)response { - if (conn == adConnection) { - [adData setLength:0]; - } - else if (conn == imageConnection) { - [imageData setLength:0]; - } -} - -- (void)connection:(NSURLConnection *)conn didFailWithError:(NSError *)error { - if (conn == adConnection) { - [adWhirlView adapter:self didFailAd:[AdWhirlError errorWithCode:AdWhirlCustomAdConnectionError - description:@"Error connecting to MdotM ad server" - underlyingError:error]]; - requesting = NO; - } else if (conn == imageConnection) { - [adWhirlView adapter:self didFailAd:[AdWhirlError errorWithCode:AdWhirlCustomAdConnectionError - description:@"Error connecting to MdotM to fetch image" - underlyingError:error]]; - requesting = NO; - } -} - -- (void)connectionDidFinishLoading:(NSURLConnection *)conn { - if (conn == adConnection) { - NSError *error = nil; - if (![self parseAdData:adData error:&error]) { - [adWhirlView adapter:self didFailAd:error]; - requesting = NO; - return; - } - } - else if (conn == imageConnection) { - UIImage *image = [[UIImage alloc] initWithData:imageData]; - if (image == nil) { - [adWhirlView adapter:self - didFailAd:[AdWhirlError errorWithCode:AdWhirlCustomAdImageError - description:@"Cannot initialize MdotM ad image from data"]]; - requesting = NO; - return; - } - adView.image = image; - [adView setNeedsDisplay]; - [image release]; - requesting = NO; - [adWhirlView adapter:self didReceiveAdView:self.adView]; - } -} - -- (void)connection:(NSURLConnection *)conn didReceiveData:(NSData *)data { - if (conn == adConnection) { - [adData appendData:data]; - } - else if (conn == imageConnection) { - [imageData appendData:data]; - } -} - -#pragma mark AdWhirlCustomAdViewDelegate methods - -- (void)adTapped:(AdWhirlCustomAdView *)ad { - if (ad != adView) return; - if (ad.clickMetricsURL != nil) { - NSURLRequest *metRequest = [NSURLRequest requestWithURL:ad.clickMetricsURL]; - [NSURLConnection connectionWithRequest:metRequest - delegate:nil]; // fire and forget - } - if (ad.redirectURL == nil) { - AWLogError(@"MdotM ad redirect URL is nil"); - return; - } - switch (ad.launchType) { - case AWCustomAdLaunchTypeSafari: - [[UIApplication sharedApplication] openURL:ad.redirectURL]; - break; - case AWCustomAdLaunchTypeCanvas: - if (self.webBrowserController == nil) { - AdWhirlWebBrowserController *ctrlr = [[AdWhirlWebBrowserController alloc] init]; - self.webBrowserController = ctrlr; - [ctrlr release]; - } - webBrowserController.delegate = self; - [webBrowserController presentWithController:[adWhirlDelegate viewControllerForPresentingModalView] - transition:ad.animType]; - [self helperNotifyDelegateOfFullScreenModal]; - [webBrowserController loadURL:ad.redirectURL]; - break; - default: - AWLogError(@"MdotM ad: Unsupported launch type %d", ad.launchType); - break; - } -} - -#pragma mark AdWhirlWebBrowserControllerDelegate methods - -- (void)webBrowserClosed:(AdWhirlWebBrowserController *)controller { - if (controller != webBrowserController) return; - self.webBrowserController = nil; // don't keep around to save memory - [self helperNotifyDelegateOfFullScreenModalDismissal]; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterMillennial.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterMillennial.h deleted file mode 100644 index 21ab998df..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterMillennial.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - - AdWhirlAdapterMillennial.h - - Copyright 2009 AdMob, 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 "AdWhirlAdNetworkAdapter.h" -#import "MMAdView.h" - -@interface AdWhirlAdapterMillennial : AdWhirlAdNetworkAdapter { - NSMutableDictionary *requestData; -} - -+ (AdWhirlAdNetworkType)networkType; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterMillennial.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterMillennial.m deleted file mode 100644 index 1d16a2e38..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterMillennial.m +++ /dev/null @@ -1,227 +0,0 @@ -/* - - AdWhirlAdapterMillennial.m - - Copyright 2009 AdMob, 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 "AdWhirlAdapterMillennial.h" -#import "AdWhirlView.h" -#import "AdWhirlConfig.h" -#import "AdWhirlAdNetworkConfig.h" -#import "AdWhirlDelegateProtocol.h" -#import "AdWhirlLog.h" -#import "AdWhirlAdNetworkAdapter+Helpers.h" -#import "AdWhirlAdNetworkRegistry.h" - -#define kMillennialAdFrame (CGRectMake(0, 0, 320, 53)) - -@interface AdWhirlAdapterMillennial () - -- (CLLocationDegrees)latitude; - -- (CLLocationDegrees)longitude; - -- (NSInteger)age; - -- (NSString *)zipCode; - -- (NSString *)sex; - -@end - - -@implementation AdWhirlAdapterMillennial - -+ (AdWhirlAdNetworkType)networkType { - return AdWhirlAdNetworkTypeMillennial; -} - -+ (void)load { - [[AdWhirlAdNetworkRegistry sharedRegistry] registerClass:self]; -} - -- (void)getAd { - NSString *apID; - if ([adWhirlDelegate respondsToSelector:@selector(millennialMediaApIDString)]) { - apID = [adWhirlDelegate millennialMediaApIDString]; - } - else { - apID = networkConfig.pubId; - } - - requestData = [[NSMutableDictionary alloc] initWithObjectsAndKeys: - @"adwhirl", @"vendor", - nil]; - if ([self respondsToSelector:@selector(zipCode)]) { - [requestData setValue:[self zipCode] forKey:@"zip"]; - } - if ([self respondsToSelector:@selector(age)]) { - [requestData setValue:[NSString stringWithFormat:@"%d",[self age]] forKey:@"age"]; - } - if ([self respondsToSelector:@selector(sex)]) { - [requestData setValue:[self sex] forKey:@"sex"]; - } - if ([self respondsToSelector:@selector(latitude)]) { - [requestData setValue:[NSString stringWithFormat:@"%lf",[self latitude]] forKey:@"lat"]; - } - if ([self respondsToSelector:@selector(longitude)]) { - [requestData setValue:[NSString stringWithFormat:@"%lf",[self longitude]] forKey:@"long"]; - } - MMAdType adType = MMBannerAdTop; - if ([adWhirlDelegate respondsToSelector:@selector(millennialMediaAdType)]) { - adType = [adWhirlDelegate millennialMediaAdType]; - } - MMAdView *adView = [MMAdView adWithFrame:kMillennialAdFrame - type:adType - apid:apID - delegate:self - loadAd:YES - startTimer:NO]; - self.adNetworkView = adView; -} - -- (void)stopBeingDelegate { - MMAdView *adView = (MMAdView *)adNetworkView; - if (adView != nil) { - [adView setRefreshTimerEnabled:false]; - adView.delegate = nil; - } -} - -- (void)dealloc { - [requestData release]; - [super dealloc]; -} - -#pragma mark MMAdDelegate methods - -- (NSDictionary *)requestData { - AWLogDebug(@"Sending requestData to MM: %@", requestData); - return requestData; -} - -- (void)adRequestSucceeded:(MMAdView *)adView { - // millennial ads are slightly taller than default frame, at 53 pixels. - [adWhirlView adapter:self didReceiveAdView:adNetworkView]; -} - -- (void)adRequestFailed:(MMAdView *)adView { - [adWhirlView adapter:self didFailAd:nil]; -} - -- (void)adModalWillAppear { - [self helperNotifyDelegateOfFullScreenModal]; -} - -- (void)adModalWasDismissed { - [self helperNotifyDelegateOfFullScreenModalDismissal]; -} - -#pragma mark requestData optional methods - -// The follow is kept for gathering requestData - -- (BOOL)respondsToSelector:(SEL)selector { - if (selector == @selector(latitude) - && ![adWhirlDelegate respondsToSelector:@selector(locationInfo)]) { - return NO; - } - else if (selector == @selector(longitude) - && ![adWhirlDelegate respondsToSelector:@selector(locationInfo)]) { - return NO; - } - else if (selector == @selector(age) - && (!([adWhirlDelegate respondsToSelector:@selector(millennialMediaAge)] - || [adWhirlDelegate respondsToSelector:@selector(dateOfBirth)]) - || [self age] < 0)) { - return NO; - } - else if (selector == @selector(zipCode) - && ![adWhirlDelegate respondsToSelector:@selector(postalCode)]) { - return NO; - } - else if (selector == @selector(sex) - && ![adWhirlDelegate respondsToSelector:@selector(gender)]) { - return NO; - } - else if (selector == @selector(householdIncome) - && ![adWhirlDelegate respondsToSelector:@selector(incomeLevel)]) { - return NO; - } - else if (selector == @selector(educationLevel) - && ![adWhirlDelegate respondsToSelector:@selector(millennialMediaEducationLevel)]) { - return NO; - } - else if (selector == @selector(ethnicity) - && ![adWhirlDelegate respondsToSelector:@selector(millennialMediaEthnicity)]) { - return NO; - } - return [super respondsToSelector:selector]; -} - -- (CLLocationDegrees)latitude { - CLLocation *loc = [adWhirlDelegate locationInfo]; - if (loc == nil) return 0.0; - return loc.coordinate.latitude; -} - -- (CLLocationDegrees)longitude { - CLLocation *loc = [adWhirlDelegate locationInfo]; - if (loc == nil) return 0.0; - return loc.coordinate.longitude; -} - -- (NSInteger)age { - if ([adWhirlDelegate respondsToSelector:@selector(millennialMediaAge)]) { - return [adWhirlDelegate millennialMediaAge]; - } - return [self helperCalculateAge]; -} - -- (NSString *)zipCode { - return [adWhirlDelegate postalCode]; -} - -- (NSString *)sex { - NSString *gender = [adWhirlDelegate gender]; - NSString *sex = @""; - if (gender == nil) - return sex; - if ([gender compare:@"m"] == NSOrderedSame) { - sex = @"M"; - } - else if ([gender compare:@"f"] == NSOrderedSame) { - sex = @"F"; - } - return sex; -} - -/* -- (NSInteger)householdIncome { - return (NSInteger)[adWhirlDelegate incomeLevel]; -} - -- (MMEducation)educationLevel { - return [adWhirlDelegate millennialMediaEducationLevel]; -} - -- (MMEthnicity)ethnicity { - return [adWhirlDelegate millennialMediaEthnicity]; -} -*/ - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterNexage.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterNexage.h deleted file mode 100644 index a36f19e05..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterNexage.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - - AdWhirlAdapterNexage.h - Copyright 2011 Google, 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 -#import "AdWhirlAdNetworkAdapter.h" -#import "NexageDelegateProtocol.h" - -@class NexageAdViewController; - -@interface AdWhirlAdapterNexage : AdWhirlAdNetworkAdapter - { - NexageAdViewController* adViewController; - NSString* position; -} - -+ (AdWhirlAdNetworkType)networkType; -- (NSDate *)dateOfBirth; -- (NSString *)postCode; -- (NSString *)gender; -- (NSString *)keywords; -- (NSInteger)houseIncome; -- (NSString *)city; -- (NSString *)designatedMarketArea; -- (NSString *)country; -- (NSString *)ethnicity; -- (NSString *)maritalStatus; -- (NSString *)areaCode; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterNexage.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterNexage.m deleted file mode 100644 index 770ba83b6..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterNexage.m +++ /dev/null @@ -1,219 +0,0 @@ -/* - - AdWhirlAdapterNexage.m - Copyright 2011 Google, 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 "AdWhirlAdapterNexage.h" -#import "AdWhirlAdNetworkAdapter+Helpers.h" -#import "AdWhirlAdNetworkRegistry.h" -#import "AdWhirlView.h" -#import "AdWhirlConfig.h" -#import "NexageAdViewController.h" -#import "NexageAdParameters.h" -#import "AdWhirlAdNetworkConfig.h" -#import "AdWhirlError.h" - -@implementation AdWhirlAdapterNexage - -+ (AdWhirlAdNetworkType)networkType { - return AdWhirlAdNetworkTypeNexage; -} - -+ (void)load { - [[AdWhirlAdNetworkRegistry sharedRegistry] registerClass:self]; -} - -- (void)getAd{ - NSDictionary* atts = [NSDictionary dictionaryWithObjectsAndKeys: - [self dateOfBirth], @"u(dob)", - [self country], @"u(country)", - [self city], @"u(city)", - [self designatedMarketArea], @"u(dma)", - [self ethnicity], @"u(eth)", - [self gender], @"u(gender)", - [NSNumber numberWithDouble:[self houseIncome]], @"u(hhi)", - [self keywords], @"u(keywords)", - [self maritalStatus], @"u(marital)", - [self postCode], @"u(zip)", - nil]; - - NSDictionary* credDict; - if ([adWhirlDelegate respondsToSelector:@selector(nexageDictionary)]) { - credDict = [adWhirlDelegate nexageDictionary]; - } - else { - credDict = [networkConfig credentials]; - } - - BOOL testMode = NO; - if ([adWhirlDelegate respondsToSelector:@selector(adWhirlTestMode)] - && [adWhirlDelegate adWhirlTestMode]) { - testMode = YES; - } - - // Nexage does weird things with position which can result in an over-release, - // so we're basically forced to leak this... - position = [[credDict objectForKey:@"position"] copy]; - if(position == nil){ - [adWhirlView adapter:self didFailAd:nil]; - return; - } - - adViewController = - [[NexageAdViewController alloc] initWithDelegate:position delegate:self]; - [adViewController setEnable:YES]; - - - [adViewController setAttributes:atts]; - [adViewController setTestMode:testMode]; - [adViewController locationAware:adWhirlConfig.locationOn]; -#ifdef ADWHIRL_DEBUG - [adViewController enableLogging:YES]; -#endif - self.adNetworkView = adViewController.view; -} - -- (void)stopBeingDelegate { - if (adViewController != nil) { - adViewController.delegate = nil; - } -} - -- (void)dealloc { - [self stopBeingDelegate]; - [adViewController setAttributes:nil]; - [adViewController release]; - adViewController = nil; - [super dealloc]; -} - -#pragma mark NexageDelegateProtocol - -- (void)adReceived:(UIView *)ad { - [adWhirlView adapter:self didReceiveAdView:ad]; -} -/** - * This method will be called when user clicks the ad banner. - * The URL is an optional parameter, if Ad is from the Nexage mediation - * platform, you will get validate url, if it is nil, that means the action - * is from integrated sdk. Please check if (url == nil). The return YES, means - * the sdk will handle click event, otherwise sdk will ignore the user action. - * Basic Ad network principle should always return YES. Please refer our dev - * document for details - */ -- (BOOL)adActionShouldBegin:(NSURLRequest *)request - willLeaveApplication:(BOOL)willLeave { - [self helperNotifyDelegateOfFullScreenModal]; - return YES; -} - -/** - * The delegate will be called when full screen web browser is closed - */ -- (void)adFullScreenWebBrowserWillClose { - [self helperNotifyDelegateOfFullScreenModalDismissal]; -} -/** - * identify the ad did not receive at this momnent. - */ -- (void)didFailToReceiveAd { - [adWhirlView adapter:self didFailAd:nil]; -} - -- (NSString *)dcnForAd { - NSDictionary *credDict; - if ([adWhirlDelegate respondsToSelector:@selector(nexageDictionary)]) { - credDict = [adWhirlDelegate nexageDictionary]; - } - else { - credDict = [networkConfig credentials]; - } - return [credDict objectForKey:@"dcn"]; -} - -- (UIViewController*)currentViewController { - return [adWhirlDelegate viewControllerForPresentingModalView]; -} - -#pragma mark user profiles - -- (NSDate *)dateOfBirth { - if([adWhirlDelegate respondsToSelector:@selector(dateOfBirth)]) - return [adWhirlDelegate dateOfBirth]; - return nil; -} - -- (NSString *)postCode { - if([adWhirlDelegate respondsToSelector:@selector(postalCode)]) - return [adWhirlDelegate postalCode]; - else return nil; -} - -- (NSString *)gender { - if([adWhirlDelegate respondsToSelector:@selector(gender)]) - return [adWhirlDelegate gender]; - else return nil; -} - -- (NSString *)keywords { - if([adWhirlDelegate respondsToSelector:@selector(keywords)]) - return [adWhirlDelegate keywords]; - else return nil; -} - -- (NSInteger)houseIncome { - if([adWhirlDelegate respondsToSelector:@selector(incomeLevel)]) - return [adWhirlDelegate incomeLevel]; - return 0; -} - -- (NSString *)city { - if([adWhirlDelegate respondsToSelector:@selector(nexageCity)]) - return [adWhirlDelegate nexageCity]; - else return nil; -} - -- (NSString *)designatedMarketArea { - if([adWhirlDelegate respondsToSelector:@selector(nexageDesignatedMarketArea)]) - return [adWhirlDelegate nexageDesignatedMarketArea]; - else return nil; -} - -- (NSString *)country { - if([adWhirlDelegate respondsToSelector:@selector(nexageCountry)]) - return [adWhirlDelegate nexageCountry]; - else return nil; -} - -- (NSString *)ethnicity { - if([adWhirlDelegate respondsToSelector:@selector(nexageEthnicity)]) - return [adWhirlDelegate nexageEthnicity]; - else return nil; -} - -- (NSString *)maritalStatus { - if([adWhirlDelegate respondsToSelector:@selector(nexageMaritalStatus)]) - return [adWhirlDelegate nexageMaritalStatus]; - else return nil; -} - -- (NSString *)areaCode { - if([adWhirlDelegate respondsToSelector:@selector(areaCode)]) - return [adWhirlDelegate areaCode]; - else return nil; -} -@end \ No newline at end of file diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterOneRiot.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterOneRiot.h deleted file mode 100644 index d887c91c0..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterOneRiot.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - - AdWhirlAdapterOneRiot.h - - Copyright 2010 OneRiot, 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 "AdWhirlAdNetworkAdapter.h" -#import "OneRiotAd.h" - -@interface AdWhirlAdapterOneRiot : AdWhirlAdNetworkAdapter { - OneRiotAd *adControl; -} - -+ (AdWhirlAdNetworkType)networkType; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterOneRiot.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterOneRiot.m deleted file mode 100644 index c7a25e7c9..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterOneRiot.m +++ /dev/null @@ -1,75 +0,0 @@ -/* - - AdWhirlAdapterOneRiot.m - - Copyright 2010 OneRiot, 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 "AdWhirlAdapterOneRiot.h" -#import "AdWhirlAdNetworkRegistry.h" -#import "AdWhirlAdNetworkAdapter+Helpers.h" -#import "AdWhirlAdNetworkConfig.h" - -@interface AdWhirlAdapterOneRiot () - -@property (nonatomic,retain) OneRiotAd *adControl; - -@end - -@implementation AdWhirlAdapterOneRiot - -@synthesize adControl; - -+ (AdWhirlAdNetworkType)networkType { - return AdWhirlAdNetworkTypeOneRiot; -} - -+ (void)load { - [[AdWhirlAdNetworkRegistry sharedRegistry] registerClass:self]; -} - -- (void)getAd { - NSString *appId = networkConfig.pubId; - - if ([adWhirlDelegate respondsToSelector:@selector(oneRiotAppID)]) { - appId = [adWhirlDelegate oneRiotAppID]; - } - - adControl = [[OneRiotAd alloc] initWithAppId:appId andWidth:300 - andHeight:50]; - - adControl.RefreshInterval = adWhirlConfig.refreshInterval; - adControl.ReportGPS = adWhirlConfig.locationOn; - - if ([adWhirlDelegate - respondsToSelector:@selector(oneRiotContextParameters)]) { - NSArray* contextParams = [adWhirlDelegate oneRiotContextParameters]; - - for (NSString* param in contextParams){ - [adControl addContextParameters:param]; - } - } - [adControl loadAd]; - self.adNetworkView = adControl; -} - --(void) dealloc { - [adControl release]; - adControl = nil; - [super dealloc]; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterQuattro.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterQuattro.h deleted file mode 100644 index 477b3d0bb..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterQuattro.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - - AdWhirlAdapterQuattro.h - - Copyright 2009 AdMob, 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 "AdWhirlAdNetworkAdapter.h" -#import "QWAdView.h" - -@interface AdWhirlAdapterQuattro : AdWhirlAdNetworkAdapter { - -} - -+ (AdWhirlAdNetworkType)networkType; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterQuattro.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterQuattro.m deleted file mode 100644 index 4102da14f..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterQuattro.m +++ /dev/null @@ -1,222 +0,0 @@ -/* - - AdWhirlAdapterQuattro.m - - Copyright 2009 AdMob, 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 "AdWhirlAdapterQuattro.h" -#import "AdWhirlView.h" -#import "AdWhirlConfig.h" -#import "AdWhirlAdNetworkConfig.h" -#import "QWAdView.h" -#import "QWTestMode.h" -#import "AdWhirlLog.h" -#import "AdWhirlAdNetworkAdapter+Helpers.h" -#import "AdWhirlAdNetworkRegistry.h" - -@implementation AdWhirlAdapterQuattro - -+ (AdWhirlAdNetworkType)networkType { - return AdWhirlAdNetworkTypeQuattro; -} - -+ (void)load { - [[AdWhirlAdNetworkRegistry sharedRegistry] registerClass:self]; -} - -- (void)getAd { - QWEnableLocationServicesForAds(adWhirlConfig.locationOn); - - if ([adWhirlDelegate respondsToSelector:@selector(adWhirlTestMode)] - && [adWhirlDelegate adWhirlTestMode]) { - QWSetTestMode(YES); - QWSetLogging(YES); - } - else { - QWSetTestMode(NO); - QWSetLogging(NO); - } - NSDictionary *credDict; - if ([adWhirlDelegate respondsToSelector:@selector(quattroWirelessDictionary)]) { - credDict = [adWhirlDelegate quattroWirelessDictionary]; - } - else { - credDict = [networkConfig credentials]; - } - NSString *pubId = [credDict objectForKey:@"publisherID"]; - NSString *siteId = [credDict objectForKey:@"siteID"]; - QWAdType adType = QWAdTypeBanner; - if ([adWhirlDelegate respondsToSelector:@selector(quattroWirelessAdType)]) { - adType = (QWAdType)[adWhirlDelegate quattroWirelessAdType]; - } - UIDeviceOrientation orientation; - if ([self.adWhirlDelegate respondsToSelector:@selector(adWhirlCurrentOrientation)]) { - orientation = [self.adWhirlDelegate adWhirlCurrentOrientation]; - } - else { - orientation = [UIDevice currentDevice].orientation; - } - QWAdView *quattroAd = [QWAdView adViewWithType:adType - publisherID:pubId - siteID:siteId - orientation:orientation - delegate:self]; - quattroAd.textColor = [self helperTextColorToUse]; - quattroAd.backgroundColor = [self helperBackgroundColorToUse]; - [quattroAd displayNewAd]; - self.adNetworkView = quattroAd; -} - -- (void)stopBeingDelegate { - QWAdView *quattroAd = (QWAdView *)self.adNetworkView; - if (quattroAd != nil) { - quattroAd.delegate = nil; - } -} - -- (void)dealloc { - [super dealloc]; -} - -#pragma mark QWAdViewDelegate methods - -- (void)adView:(QWAdView *)adView didDisplayAd:(QWAd *)ad { - // somehow the test banner ad is showing 80 pixels as height sometimes. - // check for that and adjust - AWLogDebug(@"Quattro reported frame %@", NSStringFromCGRect(self.adNetworkView.frame)); - if (self.adNetworkView.frame.size.height > 50.0) { - CGRect f = adNetworkView.frame; - f.size.height = 50; - adNetworkView.frame = f; - } - [adWhirlView adapter:self didReceiveAdView:adView]; -} - -- (void)dispatchError:(NSError*)error -{ - [adWhirlView adapter:self didFailAd:error]; -} - -- (void)adView:(QWAdView *)adView failedWithError:(NSError *)error { - [self performSelectorOnMainThread:@selector(dispatchError:) withObject:error waitUntilDone:NO]; -} - -- (void)adView:(QWAdView *)adView displayLandingPage:(UIViewController *)controller { - [self helperNotifyDelegateOfFullScreenModal]; - [[adWhirlDelegate viewControllerForPresentingModalView] presentModalViewController:controller - animated:YES]; -} - -- (void)adView:(QWAdView *)adView dismiss:(UIViewController *)controller { - [[adWhirlDelegate viewControllerForPresentingModalView] dismissModalViewControllerAnimated:YES]; - [self helperNotifyDelegateOfFullScreenModalDismissal]; -} - -#pragma mark QWAdViewDelegate optional methods - -- (BOOL)respondsToSelector:(SEL)selector { - if (selector == @selector(latitude:) - && ![adWhirlDelegate respondsToSelector:@selector(locationInfo)]) { - return NO; - } - else if (selector == @selector(longitude:) - && ![adWhirlDelegate respondsToSelector:@selector(locationInfo)]) { - return NO; - } - else if (selector == @selector(age:) - && (![adWhirlDelegate respondsToSelector:@selector(dateOfBirth)] - || [self age:nil] < 0)) { - return NO; - } - else if (selector == @selector(zipcode:) - && ![adWhirlDelegate respondsToSelector:@selector(postalCode)]) { - return NO; - } - else if (selector == @selector(gender:) - && ![adWhirlDelegate respondsToSelector:@selector(gender)]) { - return NO; - } - else if (selector == @selector(income:) - && ![adWhirlDelegate respondsToSelector:@selector(incomeLevel)]) { - return NO; - } - else if (selector == @selector(education:) - && ![adWhirlDelegate respondsToSelector:@selector(quattroWirelessEducationLevel)]) { - return NO; - } - else if (selector == @selector(birthdate:) - && ![adWhirlDelegate respondsToSelector:@selector(dateOfBirth)]) { - return NO; - } - else if (selector == @selector(ethnicity:) - && ![adWhirlDelegate respondsToSelector:@selector(quattroWirelessEthnicity)]) { - return NO; - } - return [super respondsToSelector:selector]; -} - -- (double)latitude:(QWAdView *)adView { - CLLocation *loc = [adWhirlDelegate locationInfo]; - if (loc == nil) return 0.0; - return loc.coordinate.latitude; -} - -- (double)longitude:(QWAdView *)adView { - CLLocation *loc = [adWhirlDelegate locationInfo]; - if (loc == nil) return 0.0; - return loc.coordinate.longitude; -} - -- (NSString *)zipcode:(QWAdView *)adView { - return [adWhirlDelegate postalCode]; -} - -- (NSUInteger)age:(QWAdView *)adView { - return [self helperCalculateAge]; -} - -- (QWGender)gender:(QWAdView *)adView { - NSString *gender = [adWhirlDelegate gender]; - QWGender sex = QWGenderUnknown; - if (gender == nil) - return sex; - if ([gender compare:@"m"] == NSOrderedSame) { - sex = QWGenderMale; - } - else if ([gender compare:@"f"] == NSOrderedSame) { - sex = QWGenderFemale; - } - return sex; -} - -- (NSUInteger)income:(QWAdView *)adView { - return [adWhirlDelegate incomeLevel]; -} - -- (QWEducationLevel)education:(QWAdView *)adView { - return [adWhirlDelegate quattroWirelessEducationLevel]; -} - -- (NSDate *)birthdate:(QWAdView *)adView { - return [adWhirlDelegate dateOfBirth]; -} - -- (QWEthnicity)ethnicity:(QWAdView *)adView { - return [adWhirlDelegate quattroWirelessEthnicity]; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterVideoEgg.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterVideoEgg.h deleted file mode 100644 index 7c073d0db..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterVideoEgg.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - - AdWhirlAdapterVideoEgg.h - - Copyright 2009 AdMob, 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 "AdWhirlAdNetworkAdapter.h" - -@interface AdWhirlAdapterVideoEgg : AdWhirlAdNetworkAdapter { - -} - -+ (AdWhirlAdNetworkType)networkType; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterVideoEgg.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterVideoEgg.m deleted file mode 100644 index 3a8f1653c..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterVideoEgg.m +++ /dev/null @@ -1,117 +0,0 @@ -/* - - AdWhirlAdapterVideoEgg.m - - Copyright 2009 AdMob, 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 "AdWhirlAdapterVideoEgg.h" -#import "AdWhirlView.h" -#import "AdWhirlConfig.h" -#import "AdWhirlAdNetworkConfig.h" -#import "AdFrameView.h" -#import "AdWhirlLog.h" -#import "AdWhirlAdNetworkAdapter+Helpers.h" -#import "AdWhirlAdNetworkRegistry.h" - -@interface AdWhirlAdapterVideoEgg () - -- (void)loadSuccess:(NSNotification *)notification; -- (void)loadFailed:(NSNotification *)notification; -- (void)launchAd:(NSNotification *)notification; -- (void)closeAd:(NSNotification *)notification; - -@end - - -@implementation AdWhirlAdapterVideoEgg - -+ (AdWhirlAdNetworkType)networkType { - return AdWhirlAdNetworkTypeVideoEgg; -} - -+ (void)load { - [[AdWhirlAdNetworkRegistry sharedRegistry] registerClass:self]; -} - -- (void)getAd { - AdFrameView *aw = [[AdFrameView alloc] init]; - - NSDictionary *credentials = [networkConfig credentials]; - if ([adWhirlDelegate respondsToSelector:@selector(adWhirlTestMode)] - && [adWhirlDelegate adWhirlTestMode]) { - credentials = [NSDictionary dictionaryWithObjectsAndKeys: - @"testpublisher", @"publisher", - @"testarea", @"area", - nil]; - } - else if ([adWhirlDelegate respondsToSelector:@selector(videoEggConfigDictionary)]) { - credentials = [adWhirlDelegate videoEggConfigDictionary]; - } - - NSNotificationCenter *notifCenter = [NSNotificationCenter defaultCenter]; - [notifCenter addObserver:self - selector:@selector(loadSuccess:) - name:kVELoadSuccess - object:aw]; - [notifCenter addObserver:self - selector:@selector(loadFailed:) - name:kVELoadFailure - object:aw]; - [notifCenter addObserver:self - selector:@selector(launchAd:) - name:kVELaunchedAd - object:aw]; - [notifCenter addObserver:self - selector:@selector(closeAd:) - name:kVEClosedAd - object:aw]; - - VEConfig *config = [VEConfig dictionaryWithDictionary:credentials]; - [aw requestAd:config]; - self.adNetworkView = aw; - [aw release]; -} - -- (void)stopBeingDelegate { - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - -- (void)dealloc { - [super dealloc]; -} - -#pragma mark VideoEgg notification methods - -- (void)loadSuccess:(NSNotification *)notification { - CGRect frame = CGRectMake(0,0,ADFRAME_BANNER_WIDTH, ADFRAME_BANNER_HEIGHT); - adNetworkView.frame = frame; - [adWhirlView adapter:self didReceiveAdView:adNetworkView]; -} - -- (void)loadFailed:(NSNotification *)notification { - [adWhirlView adapter:self didFailAd:nil]; -} - -- (void)launchAd:(NSNotification *)notification { - [self helperNotifyDelegateOfFullScreenModal]; -} - -- (void)closeAd:(NSNotification *)notification { - [self helperNotifyDelegateOfFullScreenModalDismissal]; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterZestADZ.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterZestADZ.h deleted file mode 100644 index a1eda1a35..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterZestADZ.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - - AdWhirlAdapterZestADZ.h - - Copyright 2009 AdMob, 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 "AdWhirlAdNetworkAdapter.h" -#import "ZestadzDelegateProtocal.h" - -@class ZestadzView; - -@interface AdWhirlAdapterZestADZ : AdWhirlAdNetworkAdapter { - -} - -+ (AdWhirlAdNetworkType)networkType; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterZestADZ.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterZestADZ.m deleted file mode 100644 index 0442c9733..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirl/adapters/AdWhirlAdapterZestADZ.m +++ /dev/null @@ -1,101 +0,0 @@ -/* - - AdWhirlAdapterZestADZ.m - - Copyright 2009 AdMob, 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 "AdWhirlAdapterZestADZ.h" -#import "AdWhirlAdNetworkConfig.h" -#import "AdWhirlView.h" -#import "ZestadzView.h" -#import "AdWhirlLog.h" -#import "AdWhirlAdNetworkAdapter+Helpers.h" -#import "AdWhirlAdNetworkRegistry.h" - -@implementation AdWhirlAdapterZestADZ - -+ (AdWhirlAdNetworkType)networkType { - return AdWhirlAdNetworkTypeZestADZ; -} - -+ (void)load { - [[AdWhirlAdNetworkRegistry sharedRegistry] registerClass:self]; -} - -- (void)getAd { - ZestadzView *zestView = [ZestadzView requestAdWithDelegate:self]; - self.adNetworkView = zestView; -} - -- (void)stopBeingDelegate { - // no way to set zestView's delegate to nil -} - -- (void)dealloc { - [super dealloc]; -} - -#pragma mark ZestadzDelegate required methods. - -- (NSString *)clientId { - if ([adWhirlDelegate respondsToSelector:@selector(zestADZClientID)]) { - return [adWhirlDelegate zestADZClientID]; - } - return networkConfig.pubId; -} - -- (UIViewController *)currentViewController { - return [adWhirlDelegate viewControllerForPresentingModalView]; -} - -#pragma mark ZestadzDelegate notification methods - -- (void)didReceiveAd:(ZestadzView *)adView { - [adWhirlView adapter:self didReceiveAdView:adView]; -} - -- (void)didFailToReceiveAd:(ZestadzView *)adView { - [adWhirlView adapter:self didFailAd:nil]; -} - -- (void)willPresentFullScreenModal { - [self helperNotifyDelegateOfFullScreenModal]; -} - -- (void)didDismissFullScreenModal { - [self helperNotifyDelegateOfFullScreenModalDismissal]; -} - -#pragma mark ZestadzDelegate config methods -- (UIColor *)adBackgroundColor { - if ([adWhirlDelegate respondsToSelector:@selector(adWhirlAdBackgroundColor)]) { - return [adWhirlDelegate adWhirlAdBackgroundColor]; - } - - return nil; -} - -- (NSString *)keywords { - if ([adWhirlDelegate respondsToSelector:@selector(keywords)]) { - return [adWhirlDelegate keywords]; - } - - return @"iphone ipad ipod"; -} - -@end - diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/AdWhirlSDK2_Sample-2_1_1.xcodeproj/project.pbxproj b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/AdWhirlSDK2_Sample-2_1_1.xcodeproj/project.pbxproj deleted file mode 100755 index c5a47ec96..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/AdWhirlSDK2_Sample-2_1_1.xcodeproj/project.pbxproj +++ /dev/null @@ -1,845 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 45; - objects = { - -/* Begin PBXBuildFile section */ - 1D3623260D0F684500981E51 /* AdWhirlSDK2_SampleAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* AdWhirlSDK2_SampleAppDelegate.m */; }; - 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; - 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; - 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; - 2892E4100DC94CBA00A64D0F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */; }; - 28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD735F0D9D9599002E5188 /* MainWindow.xib */; }; - 28C286E10D94DF7D0034E888 /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28C286E00D94DF7D0034E888 /* RootViewController.m */; }; - 28F335F11007B36200424DE2 /* RootViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28F335F01007B36200424DE2 /* RootViewController.xib */; }; - A62A0D91118F830F0013A568 /* AdWhirlAdapterEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = A62A0D90118F830F0013A568 /* AdWhirlAdapterEvent.m */; }; - A630FDE8110FB5C800D6740A /* BottomBannerController.m in Sources */ = {isa = PBXBuildFile; fileRef = A630FDE7110FB5C800D6740A /* BottomBannerController.m */; }; - A630FDEC110FB6DB00D6740A /* BottomBannerController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A630FDEB110FB6DB00D6740A /* BottomBannerController.xib */; }; - A63C952410A8762800E81577 /* TableController.m in Sources */ = {isa = PBXBuildFile; fileRef = A63C952210A8762800E81577 /* TableController.m */; }; - A63C952710A8CCFF00E81577 /* TableController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A63C952610A8CCFF00E81577 /* TableController.xib */; }; - A66424BE110F68250045DB6E /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A66424BD110F68250045DB6E /* AudioToolbox.framework */; }; - A66424D2110F68C10045DB6E /* AdWhirlAdapterMdotM.m in Sources */ = {isa = PBXBuildFile; fileRef = A66424D1110F68C10045DB6E /* AdWhirlAdapterMdotM.m */; }; - A66A01AE11B6C7AC001DFCF0 /* AdWhirlAdapterGoogleAdSense.m in Sources */ = {isa = PBXBuildFile; fileRef = A66A01AD11B6C7AC001DFCF0 /* AdWhirlAdapterGoogleAdSense.m */; }; - A66A01B611B6C7E1001DFCF0 /* libGoogleAds.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A66A01B511B6C7E1001DFCF0 /* libGoogleAds.a */; }; - A66A01D411B6C7FC001DFCF0 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A66A01D311B6C7FC001DFCF0 /* AVFoundation.framework */; }; - A678692C1121D44F008E55E8 /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A678692B1121D44F008E55E8 /* MapKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; - A678692E1121D44F008E55E8 /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A678692D1121D44F008E55E8 /* MessageUI.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; - A67869FE1121EF30008E55E8 /* libJumptapApi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A67869F41121EF30008E55E8 /* libJumptapApi.a */; }; - A67869FF1121EF30008E55E8 /* libJumptapApi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A67869F61121EF30008E55E8 /* libJumptapApi.a */; }; - A6786A001121EF30008E55E8 /* libJumptapApi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A67869F91121EF30008E55E8 /* libJumptapApi.a */; }; - A6786A011121EF30008E55E8 /* libJumptapApi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A67869FB1121EF30008E55E8 /* libJumptapApi.a */; }; - A6786A8C112226A7008E55E8 /* LocationController.m in Sources */ = {isa = PBXBuildFile; fileRef = A6786A8B112226A7008E55E8 /* LocationController.m */; }; - A6786A8E112226B2008E55E8 /* LocationController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A6786A8D112226B2008E55E8 /* LocationController.xib */; }; - A6A324FB11593718008301A2 /* libMMSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A6A324F911593718008301A2 /* libMMSDK.a */; }; - A6B0CF5F10ACBFB900B29A14 /* adwhirlsample_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = A6B0CF5E10ACBFB900B29A14 /* adwhirlsample_icon.png */; }; - A6BF6FEA114AFE07005C95B8 /* ModalViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A6BF6FE9114AFE07005C95B8 /* ModalViewController.xib */; }; - A6BF6FED114AFE19005C95B8 /* ModalViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A6BF6FEC114AFE19005C95B8 /* ModalViewController.m */; }; - A6EC5B7410A4B0C60091B7F9 /* AdWhirlAdNetworkConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B5610A4B0C60091B7F9 /* AdWhirlAdNetworkConfig.m */; }; - A6EC5B7510A4B0C60091B7F9 /* AdWhirlAdNetworkRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B5810A4B0C60091B7F9 /* AdWhirlAdNetworkRegistry.m */; }; - A6EC5B7610A4B0C60091B7F9 /* AdWhirlConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B5A10A4B0C60091B7F9 /* AdWhirlConfig.m */; }; - A6EC5B7710A4B0C60091B7F9 /* AdWhirlCustomAdView.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B5C10A4B0C60091B7F9 /* AdWhirlCustomAdView.m */; }; - A6EC5B7810A4B0C60091B7F9 /* AdWhirlError.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B5E10A4B0C60091B7F9 /* AdWhirlError.m */; }; - A6EC5B7910A4B0C60091B7F9 /* AdWhirlLog.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B6010A4B0C60091B7F9 /* AdWhirlLog.m */; }; - A6EC5B7A10A4B0C60091B7F9 /* AdWhirlView.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B6210A4B0C60091B7F9 /* AdWhirlView.m */; }; - A6EC5B7B10A4B0C60091B7F9 /* AdWhirlWebBrowser.xib in Resources */ = {isa = PBXBuildFile; fileRef = A6EC5B6310A4B0C60091B7F9 /* AdWhirlWebBrowser.xib */; }; - A6EC5B7C10A4B0C60091B7F9 /* AdWhirlWebBrowserController.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B6510A4B0C60091B7F9 /* AdWhirlWebBrowserController.m */; }; - A6EC5B7D10A4B0C60091B7F9 /* ARRollerView.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B6610A4B0C60091B7F9 /* ARRollerView.m */; }; - A6EC5BA710A4B18F0091B7F9 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5BA610A4B18F0091B7F9 /* CoreLocation.framework */; }; - A6EC5BCD10A4C30D0091B7F9 /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5BCC10A4C30D0091B7F9 /* AddressBook.framework */; }; - A6EC5BE510A4C31C0091B7F9 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5BE410A4C31C0091B7F9 /* MediaPlayer.framework */; }; - A6EC5BF810A4C3460091B7F9 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5BF710A4C3460091B7F9 /* QuartzCore.framework */; }; - A6EC5C0B10A4C34F0091B7F9 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5C0A10A4C34F0091B7F9 /* SystemConfiguration.framework */; }; - A6EC5C4F10A4C43F0091B7F9 /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5C4E10A4C43F0091B7F9 /* libsqlite3.dylib */; }; - A6EC5C5310A4C4470091B7F9 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5C5210A4C4470091B7F9 /* libz.dylib */; }; - A6EC5C5E10A4C9900091B7F9 /* AdWhirlAdapterAdMob.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5C5510A4C9900091B7F9 /* AdWhirlAdapterAdMob.m */; }; - A6EC5C5F10A4C9900091B7F9 /* AdWhirlAdapterJumpTap.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5C5710A4C9900091B7F9 /* AdWhirlAdapterJumpTap.m */; }; - A6EC5C6010A4C9900091B7F9 /* AdWhirlAdapterMillennial.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5C5910A4C9900091B7F9 /* AdWhirlAdapterMillennial.m */; }; - A6EC5C6110A4C9900091B7F9 /* AdWhirlAdapterQuattro.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5C5B10A4C9900091B7F9 /* AdWhirlAdapterQuattro.m */; }; - A6EC5C6210A4C9900091B7F9 /* AdWhirlAdapterVideoEgg.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5C5D10A4C9900091B7F9 /* AdWhirlAdapterVideoEgg.m */; }; - A6EC5C9210A4D52E0091B7F9 /* libAdFrame-X86.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5C8E10A4D52E0091B7F9 /* libAdFrame-X86.a */; }; - A6EC5CB910A4DCA00091B7F9 /* AdWhirlAdapterCustom.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5CB310A4DCA00091B7F9 /* AdWhirlAdapterCustom.m */; }; - A6EC5CBA10A4DCA00091B7F9 /* AdWhirlAdapterGeneric.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5CB510A4DCA00091B7F9 /* AdWhirlAdapterGeneric.m */; }; - A6EC5CBB10A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5CB610A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter.m */; }; - A6EC5CBC10A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter+Helpers.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5CB810A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter+Helpers.m */; }; - A6EC5D1A10A4EB710091B7F9 /* SimpleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5D1810A4EB710091B7F9 /* SimpleViewController.m */; }; - A6EC5D2E10A4EBAB0091B7F9 /* SimpleViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A6EC5D2D10A4EBAB0091B7F9 /* SimpleViewController.xib */; }; - A6EC5DB710A507C00091B7F9 /* libAdFrame-ARM.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5C8810A4D52E0091B7F9 /* libAdFrame-ARM.a */; }; - A6ED4965114F0307002C57E6 /* CDataScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED4950114F0307002C57E6 /* CDataScanner.m */; }; - A6ED4966114F0307002C57E6 /* CDataScanner_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED4953114F0307002C57E6 /* CDataScanner_Extensions.m */; }; - A6ED4967114F0307002C57E6 /* NSCharacterSet_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED4955114F0307002C57E6 /* NSCharacterSet_Extensions.m */; }; - A6ED4968114F0307002C57E6 /* NSDictionary_JSONExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED4957114F0307002C57E6 /* NSDictionary_JSONExtensions.m */; }; - A6ED4969114F0307002C57E6 /* NSScanner_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED4959114F0307002C57E6 /* NSScanner_Extensions.m */; }; - A6ED496A114F0307002C57E6 /* CJSONDataSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED495C114F0307002C57E6 /* CJSONDataSerializer.m */; }; - A6ED496B114F0307002C57E6 /* CJSONDeserializer.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED495E114F0307002C57E6 /* CJSONDeserializer.m */; }; - A6ED496C114F0307002C57E6 /* CJSONScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED4960114F0307002C57E6 /* CJSONScanner.m */; }; - A6ED496D114F0307002C57E6 /* CJSONSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED4962114F0307002C57E6 /* CJSONSerializer.m */; }; - A6ED496E114F0307002C57E6 /* CSerializedJSONData.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED4964114F0307002C57E6 /* CSerializedJSONData.m */; }; - A6ED4974114F03B3002C57E6 /* libAdMob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A6ED4973114F03B3002C57E6 /* libAdMob.a */; }; - A6F55CC31121CDDE0062F368 /* libQuattroWireless-Simulator3.1.0-os3.0.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A6F55CC11121CDDE0062F368 /* libQuattroWireless-Simulator3.1.0-os3.0.a */; }; - A6F55CC41121CDDE0062F368 /* libQuattroWireless3.1.0-os3.0.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A6F55CC21121CDDE0062F368 /* libQuattroWireless3.1.0-os3.0.a */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 1D3623240D0F684500981E51 /* AdWhirlSDK2_SampleAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlSDK2_SampleAppDelegate.h; sourceTree = ""; }; - 1D3623250D0F684500981E51 /* AdWhirlSDK2_SampleAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlSDK2_SampleAppDelegate.m; sourceTree = ""; }; - 1D6058910D05DD3D006BFB54 /* AdWhirlSDK2.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AdWhirlSDK2.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 28A0AAE50D9B0CCF005BE974 /* AdWhirlSDK2_Sample_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlSDK2_Sample_Prefix.pch; sourceTree = ""; }; - 28AD735F0D9D9599002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; }; - 28C286DF0D94DF7D0034E888 /* RootViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RootViewController.h; sourceTree = ""; }; - 28C286E00D94DF7D0034E888 /* RootViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RootViewController.m; sourceTree = ""; }; - 28F335F01007B36200424DE2 /* RootViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RootViewController.xib; sourceTree = ""; }; - 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 8D1107310486CEB800E47090 /* AdWhirlSDK2_Sample-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "AdWhirlSDK2_Sample-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; - A62A0D8F118F830F0013A568 /* AdWhirlAdapterEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterEvent.h; sourceTree = ""; }; - A62A0D90118F830F0013A568 /* AdWhirlAdapterEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterEvent.m; sourceTree = ""; }; - A630FDE6110FB5C800D6740A /* BottomBannerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BottomBannerController.h; sourceTree = ""; }; - A630FDE7110FB5C800D6740A /* BottomBannerController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BottomBannerController.m; sourceTree = ""; }; - A630FDEB110FB6DB00D6740A /* BottomBannerController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = BottomBannerController.xib; sourceTree = ""; }; - A63C952110A8762800E81577 /* TableController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TableController.h; sourceTree = ""; }; - A63C952210A8762800E81577 /* TableController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TableController.m; sourceTree = ""; }; - A63C952610A8CCFF00E81577 /* TableController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TableController.xib; sourceTree = ""; }; - A63C959610A8D6C000E81577 /* SampleConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SampleConstants.h; sourceTree = ""; }; - A66424BD110F68250045DB6E /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; - A66424D0110F68C10045DB6E /* AdWhirlAdapterMdotM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterMdotM.h; sourceTree = ""; }; - A66424D1110F68C10045DB6E /* AdWhirlAdapterMdotM.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterMdotM.m; sourceTree = ""; }; - A66A01AC11B6C7AC001DFCF0 /* AdWhirlAdapterGoogleAdSense.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterGoogleAdSense.h; sourceTree = ""; }; - A66A01AD11B6C7AC001DFCF0 /* AdWhirlAdapterGoogleAdSense.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterGoogleAdSense.m; sourceTree = ""; }; - A66A01B011B6C7E1001DFCF0 /* GADAdSenseAudioParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADAdSenseAudioParameters.h; sourceTree = ""; }; - A66A01B111B6C7E1001DFCF0 /* GADAdSenseParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADAdSenseParameters.h; sourceTree = ""; }; - A66A01B211B6C7E1001DFCF0 /* GADAdViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADAdViewController.h; sourceTree = ""; }; - A66A01B311B6C7E1001DFCF0 /* GADDoubleClickParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADDoubleClickParameters.h; sourceTree = ""; }; - A66A01B411B6C7E1001DFCF0 /* GADRequestError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADRequestError.h; sourceTree = ""; }; - A66A01B511B6C7E1001DFCF0 /* libGoogleAds.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libGoogleAds.a; sourceTree = ""; }; - A66A01D311B6C7FC001DFCF0 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; - A678692B1121D44F008E55E8 /* MapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MapKit.framework; path = System/Library/Frameworks/MapKit.framework; sourceTree = SDKROOT; }; - A678692D1121D44F008E55E8 /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; }; - A67869F41121EF30008E55E8 /* libJumptapApi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libJumptapApi.a; sourceTree = ""; }; - A67869F61121EF30008E55E8 /* libJumptapApi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libJumptapApi.a; sourceTree = ""; }; - A67869F91121EF30008E55E8 /* libJumptapApi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libJumptapApi.a; sourceTree = ""; }; - A67869FB1121EF30008E55E8 /* libJumptapApi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libJumptapApi.a; sourceTree = ""; }; - A67869FC1121EF30008E55E8 /* JTAdWidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JTAdWidget.h; sourceTree = ""; }; - A67869FD1121EF30008E55E8 /* JumpTapAppReport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JumpTapAppReport.h; sourceTree = ""; }; - A6786A8A112226A7008E55E8 /* LocationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocationController.h; sourceTree = ""; }; - A6786A8B112226A7008E55E8 /* LocationController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LocationController.m; sourceTree = ""; }; - A6786A8D112226B2008E55E8 /* LocationController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = LocationController.xib; sourceTree = ""; }; - A6953FC3116657DF00F099E5 /* MMAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMAdView.h; sourceTree = ""; }; - A6A324F911593718008301A2 /* libMMSDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libMMSDK.a; sourceTree = ""; }; - A6B0CDC610AB38B700B29A14 /* QWAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QWAd.h; sourceTree = ""; }; - A6B0CDC710AB38B700B29A14 /* QWAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QWAdView.h; sourceTree = ""; }; - A6B0CDC810AB38B700B29A14 /* QWTestMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QWTestMode.h; sourceTree = ""; }; - A6B0CF5E10ACBFB900B29A14 /* adwhirlsample_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = adwhirlsample_icon.png; sourceTree = ""; }; - A6BF6FE9114AFE07005C95B8 /* ModalViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ModalViewController.xib; sourceTree = ""; }; - A6BF6FEB114AFE19005C95B8 /* ModalViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ModalViewController.h; sourceTree = ""; }; - A6BF6FEC114AFE19005C95B8 /* ModalViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ModalViewController.m; sourceTree = ""; }; - A6EC5B5010A4B0C60091B7F9 /* AdWhirlAdNetworkAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdNetworkAdapter.h; sourceTree = ""; }; - A6EC5B5210A4B0C60091B7F9 /* AdWhirlDelegateProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlDelegateProtocol.h; sourceTree = ""; }; - A6EC5B5310A4B0C60091B7F9 /* AdWhirlView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlView.h; sourceTree = ""; }; - A6EC5B5510A4B0C60091B7F9 /* AdWhirlAdNetworkConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdNetworkConfig.h; sourceTree = ""; }; - A6EC5B5610A4B0C60091B7F9 /* AdWhirlAdNetworkConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdNetworkConfig.m; sourceTree = ""; }; - A6EC5B5710A4B0C60091B7F9 /* AdWhirlAdNetworkRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdNetworkRegistry.h; sourceTree = ""; }; - A6EC5B5810A4B0C60091B7F9 /* AdWhirlAdNetworkRegistry.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdNetworkRegistry.m; sourceTree = ""; }; - A6EC5B5910A4B0C60091B7F9 /* AdWhirlConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlConfig.h; sourceTree = ""; }; - A6EC5B5A10A4B0C60091B7F9 /* AdWhirlConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlConfig.m; sourceTree = ""; }; - A6EC5B5B10A4B0C60091B7F9 /* AdWhirlCustomAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlCustomAdView.h; sourceTree = ""; }; - A6EC5B5C10A4B0C60091B7F9 /* AdWhirlCustomAdView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlCustomAdView.m; sourceTree = ""; }; - A6EC5B5D10A4B0C60091B7F9 /* AdWhirlError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlError.h; sourceTree = ""; }; - A6EC5B5E10A4B0C60091B7F9 /* AdWhirlError.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlError.m; sourceTree = ""; }; - A6EC5B5F10A4B0C60091B7F9 /* AdWhirlLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlLog.h; sourceTree = ""; }; - A6EC5B6010A4B0C60091B7F9 /* AdWhirlLog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlLog.m; sourceTree = ""; }; - A6EC5B6110A4B0C60091B7F9 /* AdWhirlView+.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "AdWhirlView+.h"; sourceTree = ""; }; - A6EC5B6210A4B0C60091B7F9 /* AdWhirlView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlView.m; sourceTree = ""; }; - A6EC5B6310A4B0C60091B7F9 /* AdWhirlWebBrowser.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AdWhirlWebBrowser.xib; sourceTree = ""; }; - A6EC5B6410A4B0C60091B7F9 /* AdWhirlWebBrowserController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlWebBrowserController.h; sourceTree = ""; }; - A6EC5B6510A4B0C60091B7F9 /* AdWhirlWebBrowserController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlWebBrowserController.m; sourceTree = ""; }; - A6EC5B6610A4B0C60091B7F9 /* ARRollerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARRollerView.m; sourceTree = ""; }; - A6EC5B6810A4B0C60091B7F9 /* ARRollerProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARRollerProtocol.h; sourceTree = ""; }; - A6EC5B6910A4B0C60091B7F9 /* ARRollerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARRollerView.h; sourceTree = ""; }; - A6EC5BA610A4B18F0091B7F9 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; }; - A6EC5BCC10A4C30D0091B7F9 /* AddressBook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBook.framework; path = System/Library/Frameworks/AddressBook.framework; sourceTree = SDKROOT; }; - A6EC5BE410A4C31C0091B7F9 /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = System/Library/Frameworks/MediaPlayer.framework; sourceTree = SDKROOT; }; - A6EC5BF710A4C3460091B7F9 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; - A6EC5C0A10A4C34F0091B7F9 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; - A6EC5C4E10A4C43F0091B7F9 /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = usr/lib/libsqlite3.dylib; sourceTree = SDKROOT; }; - A6EC5C5210A4C4470091B7F9 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; - A6EC5C5410A4C9900091B7F9 /* AdWhirlAdapterAdMob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterAdMob.h; sourceTree = ""; }; - A6EC5C5510A4C9900091B7F9 /* AdWhirlAdapterAdMob.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterAdMob.m; sourceTree = ""; }; - A6EC5C5610A4C9900091B7F9 /* AdWhirlAdapterJumpTap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterJumpTap.h; sourceTree = ""; }; - A6EC5C5710A4C9900091B7F9 /* AdWhirlAdapterJumpTap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterJumpTap.m; sourceTree = ""; }; - A6EC5C5810A4C9900091B7F9 /* AdWhirlAdapterMillennial.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterMillennial.h; sourceTree = ""; }; - A6EC5C5910A4C9900091B7F9 /* AdWhirlAdapterMillennial.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterMillennial.m; sourceTree = ""; }; - A6EC5C5A10A4C9900091B7F9 /* AdWhirlAdapterQuattro.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterQuattro.h; sourceTree = ""; }; - A6EC5C5B10A4C9900091B7F9 /* AdWhirlAdapterQuattro.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterQuattro.m; sourceTree = ""; }; - A6EC5C5C10A4C9900091B7F9 /* AdWhirlAdapterVideoEgg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterVideoEgg.h; sourceTree = ""; }; - A6EC5C5D10A4C9900091B7F9 /* AdWhirlAdapterVideoEgg.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterVideoEgg.m; sourceTree = ""; }; - A6EC5C6710A4C9F70091B7F9 /* AdMobDelegateProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdMobDelegateProtocol.h; sourceTree = ""; }; - A6EC5C6810A4C9F70091B7F9 /* AdMobView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdMobView.h; sourceTree = ""; }; - A6EC5C8810A4D52E0091B7F9 /* libAdFrame-ARM.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libAdFrame-ARM.a"; sourceTree = ""; }; - A6EC5C8A10A4D52E0091B7F9 /* AdFrameConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdFrameConstants.h; sourceTree = ""; }; - A6EC5C8B10A4D52E0091B7F9 /* AdFrameView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdFrameView.h; sourceTree = ""; }; - A6EC5C8E10A4D52E0091B7F9 /* libAdFrame-X86.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libAdFrame-X86.a"; sourceTree = ""; }; - A6EC5CB210A4DCA00091B7F9 /* AdWhirlAdapterCustom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterCustom.h; sourceTree = ""; }; - A6EC5CB310A4DCA00091B7F9 /* AdWhirlAdapterCustom.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterCustom.m; sourceTree = ""; }; - A6EC5CB410A4DCA00091B7F9 /* AdWhirlAdapterGeneric.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterGeneric.h; sourceTree = ""; }; - A6EC5CB510A4DCA00091B7F9 /* AdWhirlAdapterGeneric.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterGeneric.m; sourceTree = ""; }; - A6EC5CB610A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdNetworkAdapter.m; sourceTree = ""; }; - A6EC5CB710A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter+Helpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "AdWhirlAdNetworkAdapter+Helpers.h"; sourceTree = ""; }; - A6EC5CB810A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter+Helpers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "AdWhirlAdNetworkAdapter+Helpers.m"; sourceTree = ""; }; - A6EC5D1710A4EB710091B7F9 /* SimpleViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleViewController.h; sourceTree = ""; }; - A6EC5D1810A4EB710091B7F9 /* SimpleViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SimpleViewController.m; sourceTree = ""; }; - A6EC5D2D10A4EBAB0091B7F9 /* SimpleViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SimpleViewController.xib; sourceTree = ""; }; - A6ED494F114F0307002C57E6 /* CDataScanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDataScanner.h; sourceTree = ""; }; - A6ED4950114F0307002C57E6 /* CDataScanner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDataScanner.m; sourceTree = ""; }; - A6ED4952114F0307002C57E6 /* CDataScanner_Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDataScanner_Extensions.h; sourceTree = ""; }; - A6ED4953114F0307002C57E6 /* CDataScanner_Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDataScanner_Extensions.m; sourceTree = ""; }; - A6ED4954114F0307002C57E6 /* NSCharacterSet_Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSCharacterSet_Extensions.h; sourceTree = ""; }; - A6ED4955114F0307002C57E6 /* NSCharacterSet_Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSCharacterSet_Extensions.m; sourceTree = ""; }; - A6ED4956114F0307002C57E6 /* NSDictionary_JSONExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSDictionary_JSONExtensions.h; sourceTree = ""; }; - A6ED4957114F0307002C57E6 /* NSDictionary_JSONExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSDictionary_JSONExtensions.m; sourceTree = ""; }; - A6ED4958114F0307002C57E6 /* NSScanner_Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSScanner_Extensions.h; sourceTree = ""; }; - A6ED4959114F0307002C57E6 /* NSScanner_Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSScanner_Extensions.m; sourceTree = ""; }; - A6ED495B114F0307002C57E6 /* CJSONDataSerializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONDataSerializer.h; sourceTree = ""; }; - A6ED495C114F0307002C57E6 /* CJSONDataSerializer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONDataSerializer.m; sourceTree = ""; }; - A6ED495D114F0307002C57E6 /* CJSONDeserializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONDeserializer.h; sourceTree = ""; }; - A6ED495E114F0307002C57E6 /* CJSONDeserializer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONDeserializer.m; sourceTree = ""; }; - A6ED495F114F0307002C57E6 /* CJSONScanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONScanner.h; sourceTree = ""; }; - A6ED4960114F0307002C57E6 /* CJSONScanner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONScanner.m; sourceTree = ""; }; - A6ED4961114F0307002C57E6 /* CJSONSerializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONSerializer.h; sourceTree = ""; }; - A6ED4962114F0307002C57E6 /* CJSONSerializer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONSerializer.m; sourceTree = ""; }; - A6ED4963114F0307002C57E6 /* CSerializedJSONData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSerializedJSONData.h; sourceTree = ""; }; - A6ED4964114F0307002C57E6 /* CSerializedJSONData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CSerializedJSONData.m; sourceTree = ""; }; - A6ED4973114F03B3002C57E6 /* libAdMob.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libAdMob.a; sourceTree = ""; }; - A6F55CC11121CDDE0062F368 /* libQuattroWireless-Simulator3.1.0-os3.0.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libQuattroWireless-Simulator3.1.0-os3.0.a"; sourceTree = ""; }; - A6F55CC21121CDDE0062F368 /* libQuattroWireless3.1.0-os3.0.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libQuattroWireless3.1.0-os3.0.a"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 1D60588F0D05DD3D006BFB54 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, - 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, - 2892E4100DC94CBA00A64D0F /* CoreGraphics.framework in Frameworks */, - A6EC5BA710A4B18F0091B7F9 /* CoreLocation.framework in Frameworks */, - A6EC5BCD10A4C30D0091B7F9 /* AddressBook.framework in Frameworks */, - A6EC5BE510A4C31C0091B7F9 /* MediaPlayer.framework in Frameworks */, - A6EC5BF810A4C3460091B7F9 /* QuartzCore.framework in Frameworks */, - A6EC5C0B10A4C34F0091B7F9 /* SystemConfiguration.framework in Frameworks */, - A6EC5C4F10A4C43F0091B7F9 /* libsqlite3.dylib in Frameworks */, - A6EC5C5310A4C4470091B7F9 /* libz.dylib in Frameworks */, - A6EC5C9210A4D52E0091B7F9 /* libAdFrame-X86.a in Frameworks */, - A6EC5DB710A507C00091B7F9 /* libAdFrame-ARM.a in Frameworks */, - A66424BE110F68250045DB6E /* AudioToolbox.framework in Frameworks */, - A6F55CC31121CDDE0062F368 /* libQuattroWireless-Simulator3.1.0-os3.0.a in Frameworks */, - A6F55CC41121CDDE0062F368 /* libQuattroWireless3.1.0-os3.0.a in Frameworks */, - A678692C1121D44F008E55E8 /* MapKit.framework in Frameworks */, - A678692E1121D44F008E55E8 /* MessageUI.framework in Frameworks */, - A67869FE1121EF30008E55E8 /* libJumptapApi.a in Frameworks */, - A67869FF1121EF30008E55E8 /* libJumptapApi.a in Frameworks */, - A6786A001121EF30008E55E8 /* libJumptapApi.a in Frameworks */, - A6786A011121EF30008E55E8 /* libJumptapApi.a in Frameworks */, - A6A324FB11593718008301A2 /* libMMSDK.a in Frameworks */, - A6ED4974114F03B3002C57E6 /* libAdMob.a in Frameworks */, - A66A01B611B6C7E1001DFCF0 /* libGoogleAds.a in Frameworks */, - A66A01D411B6C7FC001DFCF0 /* AVFoundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 080E96DDFE201D6D7F000001 /* Classes */ = { - isa = PBXGroup; - children = ( - A6BF6FEB114AFE19005C95B8 /* ModalViewController.h */, - A6BF6FEC114AFE19005C95B8 /* ModalViewController.m */, - A6786A8A112226A7008E55E8 /* LocationController.h */, - A6786A8B112226A7008E55E8 /* LocationController.m */, - 28C286DF0D94DF7D0034E888 /* RootViewController.h */, - 28C286E00D94DF7D0034E888 /* RootViewController.m */, - 1D3623240D0F684500981E51 /* AdWhirlSDK2_SampleAppDelegate.h */, - 1D3623250D0F684500981E51 /* AdWhirlSDK2_SampleAppDelegate.m */, - A6EC5D1710A4EB710091B7F9 /* SimpleViewController.h */, - A6EC5D1810A4EB710091B7F9 /* SimpleViewController.m */, - A630FDE6110FB5C800D6740A /* BottomBannerController.h */, - A630FDE7110FB5C800D6740A /* BottomBannerController.m */, - A63C952110A8762800E81577 /* TableController.h */, - A63C952210A8762800E81577 /* TableController.m */, - A63C959610A8D6C000E81577 /* SampleConstants.h */, - ); - path = Classes; - sourceTree = ""; - }; - 19C28FACFE9D520D11CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 1D6058910D05DD3D006BFB54 /* AdWhirlSDK2.app */, - ); - name = Products; - sourceTree = ""; - }; - 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { - isa = PBXGroup; - children = ( - A6EC5B3C10A4B0C60091B7F9 /* AdWhirl */, - A6EC5C6310A4C9A50091B7F9 /* AdNetworkLibs */, - A6ED494E114F0307002C57E6 /* TouchJSON */, - 080E96DDFE201D6D7F000001 /* Classes */, - 29B97315FDCFA39411CA2CEA /* Other Sources */, - 29B97317FDCFA39411CA2CEA /* Resources */, - 29B97323FDCFA39411CA2CEA /* Frameworks */, - 19C28FACFE9D520D11CA2CBB /* Products */, - ); - name = CustomTemplate; - sourceTree = ""; - }; - 29B97315FDCFA39411CA2CEA /* Other Sources */ = { - isa = PBXGroup; - children = ( - 28A0AAE50D9B0CCF005BE974 /* AdWhirlSDK2_Sample_Prefix.pch */, - 29B97316FDCFA39411CA2CEA /* main.m */, - ); - name = "Other Sources"; - sourceTree = ""; - }; - 29B97317FDCFA39411CA2CEA /* Resources */ = { - isa = PBXGroup; - children = ( - A6BF6FE9114AFE07005C95B8 /* ModalViewController.xib */, - A6786A8D112226B2008E55E8 /* LocationController.xib */, - A6B0CF5E10ACBFB900B29A14 /* adwhirlsample_icon.png */, - A63C952610A8CCFF00E81577 /* TableController.xib */, - A6EC5D2D10A4EBAB0091B7F9 /* SimpleViewController.xib */, - A630FDEB110FB6DB00D6740A /* BottomBannerController.xib */, - 28F335F01007B36200424DE2 /* RootViewController.xib */, - 28AD735F0D9D9599002E5188 /* MainWindow.xib */, - 8D1107310486CEB800E47090 /* AdWhirlSDK2_Sample-Info.plist */, - ); - name = Resources; - sourceTree = ""; - }; - 29B97323FDCFA39411CA2CEA /* Frameworks */ = { - isa = PBXGroup; - children = ( - 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */, - 1D30AB110D05D00D00671497 /* Foundation.framework */, - 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */, - A66A01D311B6C7FC001DFCF0 /* AVFoundation.framework */, - A6EC5BA610A4B18F0091B7F9 /* CoreLocation.framework */, - A6EC5BCC10A4C30D0091B7F9 /* AddressBook.framework */, - A66424BD110F68250045DB6E /* AudioToolbox.framework */, - A678692B1121D44F008E55E8 /* MapKit.framework */, - A6EC5BE410A4C31C0091B7F9 /* MediaPlayer.framework */, - A678692D1121D44F008E55E8 /* MessageUI.framework */, - A6EC5BF710A4C3460091B7F9 /* QuartzCore.framework */, - A6EC5C0A10A4C34F0091B7F9 /* SystemConfiguration.framework */, - A6EC5C4E10A4C43F0091B7F9 /* libsqlite3.dylib */, - A6EC5C5210A4C4470091B7F9 /* libz.dylib */, - ); - name = Frameworks; - sourceTree = ""; - }; - A66A01AF11B6C7E1001DFCF0 /* GoogleAdSense */ = { - isa = PBXGroup; - children = ( - A66A01B011B6C7E1001DFCF0 /* GADAdSenseAudioParameters.h */, - A66A01B111B6C7E1001DFCF0 /* GADAdSenseParameters.h */, - A66A01B211B6C7E1001DFCF0 /* GADAdViewController.h */, - A66A01B311B6C7E1001DFCF0 /* GADDoubleClickParameters.h */, - A66A01B411B6C7E1001DFCF0 /* GADRequestError.h */, - A66A01B511B6C7E1001DFCF0 /* libGoogleAds.a */, - ); - name = GoogleAdSense; - path = ../AdNetworkLibs/GoogleAdSense; - sourceTree = SOURCE_ROOT; - }; - A67869F11121EF30008E55E8 /* JumptapApi */ = { - isa = PBXGroup; - children = ( - A67869F21121EF30008E55E8 /* 2.2.1 */, - A67869F71121EF30008E55E8 /* 3.0 */, - A67869FC1121EF30008E55E8 /* JTAdWidget.h */, - A67869FD1121EF30008E55E8 /* JumpTapAppReport.h */, - ); - name = JumptapApi; - path = ../AdNetworkLibs/JumptapApi; - sourceTree = SOURCE_ROOT; - }; - A67869F21121EF30008E55E8 /* 2.2.1 */ = { - isa = PBXGroup; - children = ( - A67869F31121EF30008E55E8 /* iphoneos */, - A67869F51121EF30008E55E8 /* iphonesimulator */, - ); - path = 2.2.1; - sourceTree = ""; - }; - A67869F31121EF30008E55E8 /* iphoneos */ = { - isa = PBXGroup; - children = ( - A67869F41121EF30008E55E8 /* libJumptapApi.a */, - ); - path = iphoneos; - sourceTree = ""; - }; - A67869F51121EF30008E55E8 /* iphonesimulator */ = { - isa = PBXGroup; - children = ( - A67869F61121EF30008E55E8 /* libJumptapApi.a */, - ); - path = iphonesimulator; - sourceTree = ""; - }; - A67869F71121EF30008E55E8 /* 3.0 */ = { - isa = PBXGroup; - children = ( - A67869F81121EF30008E55E8 /* iphoneos */, - A67869FA1121EF30008E55E8 /* iphonesimulator */, - ); - path = 3.0; - sourceTree = ""; - }; - A67869F81121EF30008E55E8 /* iphoneos */ = { - isa = PBXGroup; - children = ( - A67869F91121EF30008E55E8 /* libJumptapApi.a */, - ); - path = iphoneos; - sourceTree = ""; - }; - A67869FA1121EF30008E55E8 /* iphonesimulator */ = { - isa = PBXGroup; - children = ( - A67869FB1121EF30008E55E8 /* libJumptapApi.a */, - ); - path = iphonesimulator; - sourceTree = ""; - }; - A6B0CDC110AB38B700B29A14 /* QuattroWirelessLib */ = { - isa = PBXGroup; - children = ( - A6F55CC11121CDDE0062F368 /* libQuattroWireless-Simulator3.1.0-os3.0.a */, - A6F55CC21121CDDE0062F368 /* libQuattroWireless3.1.0-os3.0.a */, - A6B0CDC610AB38B700B29A14 /* QWAd.h */, - A6B0CDC710AB38B700B29A14 /* QWAdView.h */, - A6B0CDC810AB38B700B29A14 /* QWTestMode.h */, - ); - name = QuattroWirelessLib; - path = ../AdNetworkLibs/QuattroWirelessLib; - sourceTree = SOURCE_ROOT; - }; - A6EC5B3C10A4B0C60091B7F9 /* AdWhirl */ = { - isa = PBXGroup; - children = ( - A6EC5B3D10A4B0C60091B7F9 /* adapters */, - A6EC5B5210A4B0C60091B7F9 /* AdWhirlDelegateProtocol.h */, - A6EC5B5310A4B0C60091B7F9 /* AdWhirlView.h */, - A6EC5B5410A4B0C60091B7F9 /* internal */, - A6EC5B6710A4B0C60091B7F9 /* legacy */, - ); - name = AdWhirl; - path = ../AdWhirl; - sourceTree = SOURCE_ROOT; - }; - A6EC5B3D10A4B0C60091B7F9 /* adapters */ = { - isa = PBXGroup; - children = ( - A66A01AC11B6C7AC001DFCF0 /* AdWhirlAdapterGoogleAdSense.h */, - A66A01AD11B6C7AC001DFCF0 /* AdWhirlAdapterGoogleAdSense.m */, - A66424D0110F68C10045DB6E /* AdWhirlAdapterMdotM.h */, - A66424D1110F68C10045DB6E /* AdWhirlAdapterMdotM.m */, - A6EC5C5410A4C9900091B7F9 /* AdWhirlAdapterAdMob.h */, - A6EC5C5510A4C9900091B7F9 /* AdWhirlAdapterAdMob.m */, - A6EC5C5610A4C9900091B7F9 /* AdWhirlAdapterJumpTap.h */, - A6EC5C5710A4C9900091B7F9 /* AdWhirlAdapterJumpTap.m */, - A6EC5C5810A4C9900091B7F9 /* AdWhirlAdapterMillennial.h */, - A6EC5C5910A4C9900091B7F9 /* AdWhirlAdapterMillennial.m */, - A6EC5C5A10A4C9900091B7F9 /* AdWhirlAdapterQuattro.h */, - A6EC5C5B10A4C9900091B7F9 /* AdWhirlAdapterQuattro.m */, - A6EC5C5C10A4C9900091B7F9 /* AdWhirlAdapterVideoEgg.h */, - A6EC5C5D10A4C9900091B7F9 /* AdWhirlAdapterVideoEgg.m */, - A6EC5B5010A4B0C60091B7F9 /* AdWhirlAdNetworkAdapter.h */, - ); - path = adapters; - sourceTree = ""; - }; - A6EC5B5410A4B0C60091B7F9 /* internal */ = { - isa = PBXGroup; - children = ( - A62A0D8F118F830F0013A568 /* AdWhirlAdapterEvent.h */, - A62A0D90118F830F0013A568 /* AdWhirlAdapterEvent.m */, - A6EC5CB210A4DCA00091B7F9 /* AdWhirlAdapterCustom.h */, - A6EC5CB310A4DCA00091B7F9 /* AdWhirlAdapterCustom.m */, - A6EC5CB410A4DCA00091B7F9 /* AdWhirlAdapterGeneric.h */, - A6EC5CB510A4DCA00091B7F9 /* AdWhirlAdapterGeneric.m */, - A6EC5CB610A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter.m */, - A6EC5CB710A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter+Helpers.h */, - A6EC5CB810A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter+Helpers.m */, - A6EC5B5510A4B0C60091B7F9 /* AdWhirlAdNetworkConfig.h */, - A6EC5B5610A4B0C60091B7F9 /* AdWhirlAdNetworkConfig.m */, - A6EC5B5710A4B0C60091B7F9 /* AdWhirlAdNetworkRegistry.h */, - A6EC5B5810A4B0C60091B7F9 /* AdWhirlAdNetworkRegistry.m */, - A6EC5B5910A4B0C60091B7F9 /* AdWhirlConfig.h */, - A6EC5B5A10A4B0C60091B7F9 /* AdWhirlConfig.m */, - A6EC5B5B10A4B0C60091B7F9 /* AdWhirlCustomAdView.h */, - A6EC5B5C10A4B0C60091B7F9 /* AdWhirlCustomAdView.m */, - A6EC5B5D10A4B0C60091B7F9 /* AdWhirlError.h */, - A6EC5B5E10A4B0C60091B7F9 /* AdWhirlError.m */, - A6EC5B5F10A4B0C60091B7F9 /* AdWhirlLog.h */, - A6EC5B6010A4B0C60091B7F9 /* AdWhirlLog.m */, - A6EC5B6110A4B0C60091B7F9 /* AdWhirlView+.h */, - A6EC5B6210A4B0C60091B7F9 /* AdWhirlView.m */, - A6EC5B6310A4B0C60091B7F9 /* AdWhirlWebBrowser.xib */, - A6EC5B6410A4B0C60091B7F9 /* AdWhirlWebBrowserController.h */, - A6EC5B6510A4B0C60091B7F9 /* AdWhirlWebBrowserController.m */, - A6EC5B6610A4B0C60091B7F9 /* ARRollerView.m */, - ); - path = internal; - sourceTree = ""; - }; - A6EC5B6710A4B0C60091B7F9 /* legacy */ = { - isa = PBXGroup; - children = ( - A6EC5B6810A4B0C60091B7F9 /* ARRollerProtocol.h */, - A6EC5B6910A4B0C60091B7F9 /* ARRollerView.h */, - ); - path = legacy; - sourceTree = ""; - }; - A6EC5C6310A4C9A50091B7F9 /* AdNetworkLibs */ = { - isa = PBXGroup; - children = ( - A66A01AF11B6C7E1001DFCF0 /* GoogleAdSense */, - A67869F11121EF30008E55E8 /* JumptapApi */, - A6EC5C6610A4C9F70091B7F9 /* AdMob */, - A6EC5C7D10A4D4BF0091B7F9 /* MillennialMedia */, - A6B0CDC110AB38B700B29A14 /* QuattroWirelessLib */, - A6EC5C8510A4D52E0091B7F9 /* VEAdFrames.1.0.4_2.2 */, - ); - name = AdNetworkLibs; - sourceTree = ""; - }; - A6EC5C6610A4C9F70091B7F9 /* AdMob */ = { - isa = PBXGroup; - children = ( - A6ED4973114F03B3002C57E6 /* libAdMob.a */, - A6EC5C6710A4C9F70091B7F9 /* AdMobDelegateProtocol.h */, - A6EC5C6810A4C9F70091B7F9 /* AdMobView.h */, - ); - name = AdMob; - path = ../AdNetworkLibs/AdMob; - sourceTree = SOURCE_ROOT; - }; - A6EC5C7D10A4D4BF0091B7F9 /* MillennialMedia */ = { - isa = PBXGroup; - children = ( - A6953FC3116657DF00F099E5 /* MMAdView.h */, - A6A324F911593718008301A2 /* libMMSDK.a */, - ); - name = MillennialMedia; - path = ../AdNetworkLibs/MillennialMedia; - sourceTree = SOURCE_ROOT; - }; - A6EC5C8510A4D52E0091B7F9 /* VEAdFrames.1.0.4_2.2 */ = { - isa = PBXGroup; - children = ( - A6EC5C8610A4D52E0091B7F9 /* ARM */, - A6EC5C8910A4D52E0091B7F9 /* include */, - A6EC5C8C10A4D52E0091B7F9 /* X86 */, - ); - name = VEAdFrames.1.0.4_2.2; - path = ../AdNetworkLibs/VEAdFrames.1.0.4_2.2; - sourceTree = SOURCE_ROOT; - }; - A6EC5C8610A4D52E0091B7F9 /* ARM */ = { - isa = PBXGroup; - children = ( - A6EC5C8810A4D52E0091B7F9 /* libAdFrame-ARM.a */, - ); - path = ARM; - sourceTree = ""; - }; - A6EC5C8910A4D52E0091B7F9 /* include */ = { - isa = PBXGroup; - children = ( - A6EC5C8A10A4D52E0091B7F9 /* AdFrameConstants.h */, - A6EC5C8B10A4D52E0091B7F9 /* AdFrameView.h */, - ); - path = include; - sourceTree = ""; - }; - A6EC5C8C10A4D52E0091B7F9 /* X86 */ = { - isa = PBXGroup; - children = ( - A6EC5C8E10A4D52E0091B7F9 /* libAdFrame-X86.a */, - ); - path = X86; - sourceTree = ""; - }; - A6ED494E114F0307002C57E6 /* TouchJSON */ = { - isa = PBXGroup; - children = ( - A6ED494F114F0307002C57E6 /* CDataScanner.h */, - A6ED4950114F0307002C57E6 /* CDataScanner.m */, - A6ED4951114F0307002C57E6 /* Extensions */, - A6ED495A114F0307002C57E6 /* JSON */, - ); - name = TouchJSON; - path = ../TouchJSON; - sourceTree = SOURCE_ROOT; - }; - A6ED4951114F0307002C57E6 /* Extensions */ = { - isa = PBXGroup; - children = ( - A6ED4952114F0307002C57E6 /* CDataScanner_Extensions.h */, - A6ED4953114F0307002C57E6 /* CDataScanner_Extensions.m */, - A6ED4954114F0307002C57E6 /* NSCharacterSet_Extensions.h */, - A6ED4955114F0307002C57E6 /* NSCharacterSet_Extensions.m */, - A6ED4956114F0307002C57E6 /* NSDictionary_JSONExtensions.h */, - A6ED4957114F0307002C57E6 /* NSDictionary_JSONExtensions.m */, - A6ED4958114F0307002C57E6 /* NSScanner_Extensions.h */, - A6ED4959114F0307002C57E6 /* NSScanner_Extensions.m */, - ); - path = Extensions; - sourceTree = ""; - }; - A6ED495A114F0307002C57E6 /* JSON */ = { - isa = PBXGroup; - children = ( - A6ED495B114F0307002C57E6 /* CJSONDataSerializer.h */, - A6ED495C114F0307002C57E6 /* CJSONDataSerializer.m */, - A6ED495D114F0307002C57E6 /* CJSONDeserializer.h */, - A6ED495E114F0307002C57E6 /* CJSONDeserializer.m */, - A6ED495F114F0307002C57E6 /* CJSONScanner.h */, - A6ED4960114F0307002C57E6 /* CJSONScanner.m */, - A6ED4961114F0307002C57E6 /* CJSONSerializer.h */, - A6ED4962114F0307002C57E6 /* CJSONSerializer.m */, - A6ED4963114F0307002C57E6 /* CSerializedJSONData.h */, - A6ED4964114F0307002C57E6 /* CSerializedJSONData.m */, - ); - path = JSON; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 1D6058900D05DD3D006BFB54 /* AdWhirlSDK2_Sample */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "AdWhirlSDK2_Sample" */; - buildPhases = ( - 1D60588D0D05DD3D006BFB54 /* Resources */, - 1D60588E0D05DD3D006BFB54 /* Sources */, - 1D60588F0D05DD3D006BFB54 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = AdWhirlSDK2_Sample; - productName = AdWhirlSDK2_Sample; - productReference = 1D6058910D05DD3D006BFB54 /* AdWhirlSDK2.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 29B97313FDCFA39411CA2CEA /* Project object */ = { - isa = PBXProject; - buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "AdWhirlSDK2_Sample-2_1_1" */; - compatibilityVersion = "Xcode 3.1"; - hasScannedForEncodings = 1; - knownRegions = ( - English, - Japanese, - French, - German, - en, - ); - mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 1D6058900D05DD3D006BFB54 /* AdWhirlSDK2_Sample */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 1D60588D0D05DD3D006BFB54 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */, - 28F335F11007B36200424DE2 /* RootViewController.xib in Resources */, - A6EC5B7B10A4B0C60091B7F9 /* AdWhirlWebBrowser.xib in Resources */, - A6EC5D2E10A4EBAB0091B7F9 /* SimpleViewController.xib in Resources */, - A63C952710A8CCFF00E81577 /* TableController.xib in Resources */, - A6B0CF5F10ACBFB900B29A14 /* adwhirlsample_icon.png in Resources */, - A630FDEC110FB6DB00D6740A /* BottomBannerController.xib in Resources */, - A6786A8E112226B2008E55E8 /* LocationController.xib in Resources */, - A6BF6FEA114AFE07005C95B8 /* ModalViewController.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 1D60588E0D05DD3D006BFB54 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1D60589B0D05DD56006BFB54 /* main.m in Sources */, - 1D3623260D0F684500981E51 /* AdWhirlSDK2_SampleAppDelegate.m in Sources */, - 28C286E10D94DF7D0034E888 /* RootViewController.m in Sources */, - A6EC5B7410A4B0C60091B7F9 /* AdWhirlAdNetworkConfig.m in Sources */, - A6EC5B7510A4B0C60091B7F9 /* AdWhirlAdNetworkRegistry.m in Sources */, - A6EC5B7610A4B0C60091B7F9 /* AdWhirlConfig.m in Sources */, - A6EC5B7710A4B0C60091B7F9 /* AdWhirlCustomAdView.m in Sources */, - A6EC5B7810A4B0C60091B7F9 /* AdWhirlError.m in Sources */, - A6EC5B7910A4B0C60091B7F9 /* AdWhirlLog.m in Sources */, - A6EC5B7A10A4B0C60091B7F9 /* AdWhirlView.m in Sources */, - A6EC5B7C10A4B0C60091B7F9 /* AdWhirlWebBrowserController.m in Sources */, - A6EC5B7D10A4B0C60091B7F9 /* ARRollerView.m in Sources */, - A6EC5C5E10A4C9900091B7F9 /* AdWhirlAdapterAdMob.m in Sources */, - A6EC5C5F10A4C9900091B7F9 /* AdWhirlAdapterJumpTap.m in Sources */, - A6EC5C6010A4C9900091B7F9 /* AdWhirlAdapterMillennial.m in Sources */, - A6EC5C6110A4C9900091B7F9 /* AdWhirlAdapterQuattro.m in Sources */, - A6EC5C6210A4C9900091B7F9 /* AdWhirlAdapterVideoEgg.m in Sources */, - A6EC5CB910A4DCA00091B7F9 /* AdWhirlAdapterCustom.m in Sources */, - A6EC5CBA10A4DCA00091B7F9 /* AdWhirlAdapterGeneric.m in Sources */, - A6EC5CBB10A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter.m in Sources */, - A6EC5CBC10A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter+Helpers.m in Sources */, - A6EC5D1A10A4EB710091B7F9 /* SimpleViewController.m in Sources */, - A63C952410A8762800E81577 /* TableController.m in Sources */, - A66424D2110F68C10045DB6E /* AdWhirlAdapterMdotM.m in Sources */, - A630FDE8110FB5C800D6740A /* BottomBannerController.m in Sources */, - A6786A8C112226A7008E55E8 /* LocationController.m in Sources */, - A6BF6FED114AFE19005C95B8 /* ModalViewController.m in Sources */, - A6ED4965114F0307002C57E6 /* CDataScanner.m in Sources */, - A6ED4966114F0307002C57E6 /* CDataScanner_Extensions.m in Sources */, - A6ED4967114F0307002C57E6 /* NSCharacterSet_Extensions.m in Sources */, - A6ED4968114F0307002C57E6 /* NSDictionary_JSONExtensions.m in Sources */, - A6ED4969114F0307002C57E6 /* NSScanner_Extensions.m in Sources */, - A6ED496A114F0307002C57E6 /* CJSONDataSerializer.m in Sources */, - A6ED496B114F0307002C57E6 /* CJSONDeserializer.m in Sources */, - A6ED496C114F0307002C57E6 /* CJSONScanner.m in Sources */, - A6ED496D114F0307002C57E6 /* CJSONSerializer.m in Sources */, - A6ED496E114F0307002C57E6 /* CSerializedJSONData.m in Sources */, - A62A0D91118F830F0013A568 /* AdWhirlAdapterEvent.m in Sources */, - A66A01AE11B6C7AC001DFCF0 /* AdWhirlAdapterGoogleAdSense.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 1D6058940D05DD3E006BFB54 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = AdWhirlSDK2_Sample_Prefix.pch; - INFOPLIST_FILE = "AdWhirlSDK2_Sample-Info.plist"; - LIBRARY_SEARCH_PATHS = ( - "\"$(SRCROOT)/../AdNetworkLibs/AdMob\"", - "\"$(SRCROOT)/../AdNetworkLibs/QuattroWirelessLib\"", - "\"$(SRCROOT)/../AdNetworkLibs/VEAdFrames.1.0.4_2.2/ARM\"", - "\"$(SRCROOT)/../AdNetworkLibs/VEAdFrames.1.0.4_2.2/X86\"", - "\"$(SRCROOT)/../AdNetworkLibs/JumptapApi/$(IPHONEOS_DEPLOYMENT_TARGET)/$(PLATFORM_NAME)/\"", - "\"$(SRCROOT)/../AdNetworkLibs/MillennialMedia\"", - "\"$(SRCROOT)/../AdNetworkLibs/GoogleAdSense\"", - ); - ONLY_ACTIVE_ARCH = NO; - PRODUCT_NAME = AdWhirlSDK2; - }; - name = Debug; - }; - 1D6058950D05DD3E006BFB54 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COPY_PHASE_STRIP = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = AdWhirlSDK2_Sample_Prefix.pch; - INFOPLIST_FILE = "AdWhirlSDK2_Sample-Info.plist"; - LIBRARY_SEARCH_PATHS = ( - "\"$(SRCROOT)/../AdNetworkLibs/AdMob\"", - "\"$(SRCROOT)/../AdNetworkLibs/QuattroWirelessLib\"", - "\"$(SRCROOT)/../AdNetworkLibs/VEAdFrames.1.0.4_2.2/ARM\"", - "\"$(SRCROOT)/../AdNetworkLibs/VEAdFrames.1.0.4_2.2/X86\"", - "\"$(SRCROOT)/../AdNetworkLibs/JumptapApi/$(IPHONEOS_DEPLOYMENT_TARGET)/$(PLATFORM_NAME)/\"", - "\"$(SRCROOT)/../AdNetworkLibs/MillennialMedia\"", - "\"$(SRCROOT)/../AdNetworkLibs/GoogleAdSense\"", - ); - ONLY_ACTIVE_ARCH = NO; - PRODUCT_NAME = AdWhirlSDK2; - }; - name = Release; - }; - C01FCF4F08A954540054247B /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_PREPROCESSOR_DEFINITIONS = "ADWHIRL_DEBUG=1"; - GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 2.2.1; - OTHER_LDFLAGS = "-ObjC"; - PREBINDING = NO; - SDKROOT = iphoneos3.0; - }; - name = Debug; - }; - C01FCF5008A954540054247B /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 2.2.1; - OTHER_LDFLAGS = "-ObjC"; - PREBINDING = NO; - SDKROOT = iphoneos3.0; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "AdWhirlSDK2_Sample" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1D6058940D05DD3E006BFB54 /* Debug */, - 1D6058950D05DD3E006BFB54 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - C01FCF4E08A954540054247B /* Build configuration list for PBXProject "AdWhirlSDK2_Sample-2_1_1" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C01FCF4F08A954540054247B /* Debug */, - C01FCF5008A954540054247B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; -} diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/AdWhirlSDK2_Sample-3_x.xcodeproj/project.pbxproj b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/AdWhirlSDK2_Sample-3_x.xcodeproj/project.pbxproj deleted file mode 100755 index 79b6d7934..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/AdWhirlSDK2_Sample-3_x.xcodeproj/project.pbxproj +++ /dev/null @@ -1,841 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 45; - objects = { - -/* Begin PBXBuildFile section */ - 1D3623260D0F684500981E51 /* AdWhirlSDK2_SampleAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* AdWhirlSDK2_SampleAppDelegate.m */; }; - 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; - 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; - 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; - 2892E4100DC94CBA00A64D0F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */; }; - 28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD735F0D9D9599002E5188 /* MainWindow.xib */; }; - 28C286E10D94DF7D0034E888 /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28C286E00D94DF7D0034E888 /* RootViewController.m */; }; - 28F335F11007B36200424DE2 /* RootViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28F335F01007B36200424DE2 /* RootViewController.xib */; }; - A615C26A11B5DD3F00E0C50F /* AdWhirlAdapterGoogleAdSense.m in Sources */ = {isa = PBXBuildFile; fileRef = A615C26911B5DD3F00E0C50F /* AdWhirlAdapterGoogleAdSense.m */; }; - A615C27811B5DEDD00E0C50F /* libGoogleAds.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A615C27711B5DEDD00E0C50F /* libGoogleAds.a */; }; - A61E1BA711B6213700D0DD65 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A61E1BA611B6213700D0DD65 /* AVFoundation.framework */; }; - A61F580C110F698700444E50 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A61F580B110F698700444E50 /* AudioToolbox.framework */; }; - A62A0D36118F7D810013A568 /* AdWhirlAdapterEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = A62A0D35118F7D810013A568 /* AdWhirlAdapterEvent.m */; }; - A630FD61110FABAB00D6740A /* BottomBannerController.m in Sources */ = {isa = PBXBuildFile; fileRef = A630FD5F110FABAB00D6740A /* BottomBannerController.m */; }; - A630FDAA110FB3E700D6740A /* BottomBannerController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A630FDA9110FB3E700D6740A /* BottomBannerController.xib */; }; - A63C952410A8762800E81577 /* TableController.m in Sources */ = {isa = PBXBuildFile; fileRef = A63C952210A8762800E81577 /* TableController.m */; }; - A63C952710A8CCFF00E81577 /* TableController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A63C952610A8CCFF00E81577 /* TableController.xib */; }; - A67869C61121E5C1008E55E8 /* libJumptapApi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A67869BC1121E5C1008E55E8 /* libJumptapApi.a */; }; - A67869C71121E5C1008E55E8 /* libJumptapApi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A67869BE1121E5C1008E55E8 /* libJumptapApi.a */; }; - A67869C81121E5C1008E55E8 /* libJumptapApi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A67869C11121E5C1008E55E8 /* libJumptapApi.a */; }; - A67869C91121E5C1008E55E8 /* libJumptapApi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A67869C31121E5C1008E55E8 /* libJumptapApi.a */; }; - A690297D11458AE200F2E41D /* libAdMob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A690297C11458AE200F2E41D /* libAdMob.a */; }; - A6A7997D1120D36A00A00FD8 /* LocationController.m in Sources */ = {isa = PBXBuildFile; fileRef = A6A7997C1120D36A00A00FD8 /* LocationController.m */; }; - A6A7998D1120D69600A00FD8 /* LocationController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A6A7998C1120D69600A00FD8 /* LocationController.xib */; }; - A6B0CF2C10ACBD8900B29A14 /* adwhirlsample_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = A6B0CF2B10ACBD8900B29A14 /* adwhirlsample_icon.png */; }; - A6B9860E11484CF2001B2F2B /* AdWhirlAdapterAdMob.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5C5510A4C9900091B7F9 /* AdWhirlAdapterAdMob.m */; }; - A6B9860F11484CF3001B2F2B /* AdWhirlAdapterJumpTap.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5C5710A4C9900091B7F9 /* AdWhirlAdapterJumpTap.m */; }; - A6B9861011484CF4001B2F2B /* AdWhirlAdapterMdotM.m in Sources */ = {isa = PBXBuildFile; fileRef = A6CB6844110E3B6800B24288 /* AdWhirlAdapterMdotM.m */; }; - A6B9861111484CF4001B2F2B /* AdWhirlAdapterMillennial.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5C5910A4C9900091B7F9 /* AdWhirlAdapterMillennial.m */; }; - A6B9861211484CF5001B2F2B /* AdWhirlAdapterQuattro.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5C5B10A4C9900091B7F9 /* AdWhirlAdapterQuattro.m */; }; - A6B9861311484CF6001B2F2B /* AdWhirlAdapterVideoEgg.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5C5D10A4C9900091B7F9 /* AdWhirlAdapterVideoEgg.m */; }; - A6BF7002114B0F9A005C95B8 /* libMMSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A6BF7001114B0F9A005C95B8 /* libMMSDK.a */; }; - A6EC5B7410A4B0C60091B7F9 /* AdWhirlAdNetworkConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B5610A4B0C60091B7F9 /* AdWhirlAdNetworkConfig.m */; }; - A6EC5B7510A4B0C60091B7F9 /* AdWhirlAdNetworkRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B5810A4B0C60091B7F9 /* AdWhirlAdNetworkRegistry.m */; }; - A6EC5B7610A4B0C60091B7F9 /* AdWhirlConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B5A10A4B0C60091B7F9 /* AdWhirlConfig.m */; }; - A6EC5B7710A4B0C60091B7F9 /* AdWhirlCustomAdView.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B5C10A4B0C60091B7F9 /* AdWhirlCustomAdView.m */; }; - A6EC5B7810A4B0C60091B7F9 /* AdWhirlError.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B5E10A4B0C60091B7F9 /* AdWhirlError.m */; }; - A6EC5B7910A4B0C60091B7F9 /* AdWhirlLog.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B6010A4B0C60091B7F9 /* AdWhirlLog.m */; }; - A6EC5B7A10A4B0C60091B7F9 /* AdWhirlView.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B6210A4B0C60091B7F9 /* AdWhirlView.m */; }; - A6EC5B7B10A4B0C60091B7F9 /* AdWhirlWebBrowser.xib in Resources */ = {isa = PBXBuildFile; fileRef = A6EC5B6310A4B0C60091B7F9 /* AdWhirlWebBrowser.xib */; }; - A6EC5B7C10A4B0C60091B7F9 /* AdWhirlWebBrowserController.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B6510A4B0C60091B7F9 /* AdWhirlWebBrowserController.m */; }; - A6EC5B7D10A4B0C60091B7F9 /* ARRollerView.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B6610A4B0C60091B7F9 /* ARRollerView.m */; }; - A6EC5BA710A4B18F0091B7F9 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5BA610A4B18F0091B7F9 /* CoreLocation.framework */; }; - A6EC5BCD10A4C30D0091B7F9 /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5BCC10A4C30D0091B7F9 /* AddressBook.framework */; }; - A6EC5BDC10A4C3150091B7F9 /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5BDB10A4C3150091B7F9 /* MapKit.framework */; }; - A6EC5BE510A4C31C0091B7F9 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5BE410A4C31C0091B7F9 /* MediaPlayer.framework */; }; - A6EC5BF310A4C3400091B7F9 /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5BF210A4C3400091B7F9 /* MessageUI.framework */; }; - A6EC5BF810A4C3460091B7F9 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5BF710A4C3460091B7F9 /* QuartzCore.framework */; }; - A6EC5C0B10A4C34F0091B7F9 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5C0A10A4C34F0091B7F9 /* SystemConfiguration.framework */; }; - A6EC5C4F10A4C43F0091B7F9 /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5C4E10A4C43F0091B7F9 /* libsqlite3.dylib */; }; - A6EC5C5310A4C4470091B7F9 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5C5210A4C4470091B7F9 /* libz.dylib */; }; - A6EC5C9210A4D52E0091B7F9 /* libAdFrame-X86.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5C8E10A4D52E0091B7F9 /* libAdFrame-X86.a */; }; - A6EC5CB910A4DCA00091B7F9 /* AdWhirlAdapterCustom.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5CB310A4DCA00091B7F9 /* AdWhirlAdapterCustom.m */; }; - A6EC5CBA10A4DCA00091B7F9 /* AdWhirlAdapterGeneric.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5CB510A4DCA00091B7F9 /* AdWhirlAdapterGeneric.m */; }; - A6EC5CBB10A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5CB610A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter.m */; }; - A6EC5CBC10A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter+Helpers.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5CB810A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter+Helpers.m */; }; - A6EC5D1A10A4EB710091B7F9 /* SimpleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5D1810A4EB710091B7F9 /* SimpleViewController.m */; }; - A6EC5D2E10A4EBAB0091B7F9 /* SimpleViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A6EC5D2D10A4EBAB0091B7F9 /* SimpleViewController.xib */; }; - A6EC5DB710A507C00091B7F9 /* libAdFrame-ARM.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5C8810A4D52E0091B7F9 /* libAdFrame-ARM.a */; }; - A6ED4928114F0131002C57E6 /* CDataScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED4913114F0131002C57E6 /* CDataScanner.m */; }; - A6ED4929114F0131002C57E6 /* CDataScanner_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED4916114F0131002C57E6 /* CDataScanner_Extensions.m */; }; - A6ED492A114F0131002C57E6 /* NSCharacterSet_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED4918114F0131002C57E6 /* NSCharacterSet_Extensions.m */; }; - A6ED492B114F0131002C57E6 /* NSDictionary_JSONExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED491A114F0131002C57E6 /* NSDictionary_JSONExtensions.m */; }; - A6ED492C114F0131002C57E6 /* NSScanner_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED491C114F0131002C57E6 /* NSScanner_Extensions.m */; }; - A6ED492D114F0131002C57E6 /* CJSONDataSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED491F114F0131002C57E6 /* CJSONDataSerializer.m */; }; - A6ED492E114F0131002C57E6 /* CJSONDeserializer.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED4921114F0131002C57E6 /* CJSONDeserializer.m */; }; - A6ED492F114F0131002C57E6 /* CJSONScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED4923114F0131002C57E6 /* CJSONScanner.m */; }; - A6ED4930114F0131002C57E6 /* CJSONSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED4925114F0131002C57E6 /* CJSONSerializer.m */; }; - A6ED4931114F0131002C57E6 /* CSerializedJSONData.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED4927114F0131002C57E6 /* CSerializedJSONData.m */; }; - A6F55C6C1121CB260062F368 /* libQuattroWireless-Simulator3.1.0-os3.0.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A6F55C6A1121CB260062F368 /* libQuattroWireless-Simulator3.1.0-os3.0.a */; }; - A6F55C6D1121CB260062F368 /* libQuattroWireless3.1.0-os3.0.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A6F55C6B1121CB260062F368 /* libQuattroWireless3.1.0-os3.0.a */; }; - A6F6CC7A1149A8B500DFFFEA /* ModalViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A6F6CC781149A8B500DFFFEA /* ModalViewController.m */; }; - A6F6CC7B1149A8B500DFFFEA /* ModalViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A6F6CC791149A8B500DFFFEA /* ModalViewController.xib */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 1D3623240D0F684500981E51 /* AdWhirlSDK2_SampleAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlSDK2_SampleAppDelegate.h; sourceTree = ""; }; - 1D3623250D0F684500981E51 /* AdWhirlSDK2_SampleAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlSDK2_SampleAppDelegate.m; sourceTree = ""; }; - 1D6058910D05DD3D006BFB54 /* AdWhirlSDK2.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AdWhirlSDK2.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 28A0AAE50D9B0CCF005BE974 /* AdWhirlSDK2_Sample_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlSDK2_Sample_Prefix.pch; sourceTree = ""; }; - 28AD735F0D9D9599002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; }; - 28C286DF0D94DF7D0034E888 /* RootViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RootViewController.h; sourceTree = ""; }; - 28C286E00D94DF7D0034E888 /* RootViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RootViewController.m; sourceTree = ""; }; - 28F335F01007B36200424DE2 /* RootViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RootViewController.xib; sourceTree = ""; }; - 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 8D1107310486CEB800E47090 /* AdWhirlSDK2_Sample-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "AdWhirlSDK2_Sample-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; - A615C26811B5DD3F00E0C50F /* AdWhirlAdapterGoogleAdSense.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterGoogleAdSense.h; sourceTree = ""; }; - A615C26911B5DD3F00E0C50F /* AdWhirlAdapterGoogleAdSense.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterGoogleAdSense.m; sourceTree = ""; }; - A615C27211B5DEDD00E0C50F /* GADAdSenseAudioParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADAdSenseAudioParameters.h; sourceTree = ""; }; - A615C27311B5DEDD00E0C50F /* GADAdSenseParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADAdSenseParameters.h; sourceTree = ""; }; - A615C27411B5DEDD00E0C50F /* GADAdViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADAdViewController.h; sourceTree = ""; }; - A615C27511B5DEDD00E0C50F /* GADDoubleClickParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADDoubleClickParameters.h; sourceTree = ""; }; - A615C27611B5DEDD00E0C50F /* GADRequestError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADRequestError.h; sourceTree = ""; }; - A615C27711B5DEDD00E0C50F /* libGoogleAds.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libGoogleAds.a; sourceTree = ""; }; - A61E1BA611B6213700D0DD65 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; - A61F580B110F698700444E50 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; - A62A0D34118F7D810013A568 /* AdWhirlAdapterEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterEvent.h; sourceTree = ""; }; - A62A0D35118F7D810013A568 /* AdWhirlAdapterEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterEvent.m; sourceTree = ""; }; - A630FD5E110FABAB00D6740A /* BottomBannerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BottomBannerController.h; sourceTree = ""; }; - A630FD5F110FABAB00D6740A /* BottomBannerController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BottomBannerController.m; sourceTree = ""; }; - A630FDA9110FB3E700D6740A /* BottomBannerController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = BottomBannerController.xib; sourceTree = ""; }; - A63C952110A8762800E81577 /* TableController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TableController.h; sourceTree = ""; }; - A63C952210A8762800E81577 /* TableController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TableController.m; sourceTree = ""; }; - A63C952610A8CCFF00E81577 /* TableController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TableController.xib; sourceTree = ""; }; - A63C959610A8D6C000E81577 /* SampleConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SampleConstants.h; sourceTree = ""; }; - A67869BC1121E5C1008E55E8 /* libJumptapApi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libJumptapApi.a; sourceTree = ""; }; - A67869BE1121E5C1008E55E8 /* libJumptapApi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libJumptapApi.a; sourceTree = ""; }; - A67869C11121E5C1008E55E8 /* libJumptapApi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libJumptapApi.a; sourceTree = ""; }; - A67869C31121E5C1008E55E8 /* libJumptapApi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libJumptapApi.a; sourceTree = ""; }; - A67869C41121E5C1008E55E8 /* JTAdWidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JTAdWidget.h; sourceTree = ""; }; - A67869C51121E5C1008E55E8 /* JumpTapAppReport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JumpTapAppReport.h; sourceTree = ""; }; - A67F2A601162949700E0278D /* MMAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMAdView.h; sourceTree = ""; }; - A690297A11458AA000F2E41D /* AdMobDelegateProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdMobDelegateProtocol.h; sourceTree = ""; }; - A690297B11458ABF00F2E41D /* AdMobView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdMobView.h; sourceTree = ""; }; - A690297C11458AE200F2E41D /* libAdMob.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libAdMob.a; sourceTree = ""; }; - A6A7997B1120D36A00A00FD8 /* LocationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocationController.h; sourceTree = ""; }; - A6A7997C1120D36A00A00FD8 /* LocationController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LocationController.m; sourceTree = ""; }; - A6A7998C1120D69600A00FD8 /* LocationController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = LocationController.xib; sourceTree = ""; }; - A6B0CF2B10ACBD8900B29A14 /* adwhirlsample_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = adwhirlsample_icon.png; sourceTree = ""; }; - A6BF7001114B0F9A005C95B8 /* libMMSDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libMMSDK.a; path = ../../third_party_libs/iphone/MillennialMedia/libMMSDK.a; sourceTree = SOURCE_ROOT; }; - A6CB6843110E3B6800B24288 /* AdWhirlAdapterMdotM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterMdotM.h; sourceTree = ""; }; - A6CB6844110E3B6800B24288 /* AdWhirlAdapterMdotM.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterMdotM.m; sourceTree = ""; }; - A6EC5B5010A4B0C60091B7F9 /* AdWhirlAdNetworkAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdNetworkAdapter.h; sourceTree = ""; }; - A6EC5B5210A4B0C60091B7F9 /* AdWhirlDelegateProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlDelegateProtocol.h; sourceTree = ""; }; - A6EC5B5310A4B0C60091B7F9 /* AdWhirlView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlView.h; sourceTree = ""; }; - A6EC5B5510A4B0C60091B7F9 /* AdWhirlAdNetworkConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdNetworkConfig.h; sourceTree = ""; }; - A6EC5B5610A4B0C60091B7F9 /* AdWhirlAdNetworkConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdNetworkConfig.m; sourceTree = ""; }; - A6EC5B5710A4B0C60091B7F9 /* AdWhirlAdNetworkRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdNetworkRegistry.h; sourceTree = ""; }; - A6EC5B5810A4B0C60091B7F9 /* AdWhirlAdNetworkRegistry.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdNetworkRegistry.m; sourceTree = ""; }; - A6EC5B5910A4B0C60091B7F9 /* AdWhirlConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlConfig.h; sourceTree = ""; }; - A6EC5B5A10A4B0C60091B7F9 /* AdWhirlConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlConfig.m; sourceTree = ""; }; - A6EC5B5B10A4B0C60091B7F9 /* AdWhirlCustomAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlCustomAdView.h; sourceTree = ""; }; - A6EC5B5C10A4B0C60091B7F9 /* AdWhirlCustomAdView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlCustomAdView.m; sourceTree = ""; }; - A6EC5B5D10A4B0C60091B7F9 /* AdWhirlError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlError.h; sourceTree = ""; }; - A6EC5B5E10A4B0C60091B7F9 /* AdWhirlError.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlError.m; sourceTree = ""; }; - A6EC5B5F10A4B0C60091B7F9 /* AdWhirlLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlLog.h; sourceTree = ""; }; - A6EC5B6010A4B0C60091B7F9 /* AdWhirlLog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlLog.m; sourceTree = ""; }; - A6EC5B6110A4B0C60091B7F9 /* AdWhirlView+.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "AdWhirlView+.h"; sourceTree = ""; }; - A6EC5B6210A4B0C60091B7F9 /* AdWhirlView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlView.m; sourceTree = ""; }; - A6EC5B6310A4B0C60091B7F9 /* AdWhirlWebBrowser.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AdWhirlWebBrowser.xib; sourceTree = ""; }; - A6EC5B6410A4B0C60091B7F9 /* AdWhirlWebBrowserController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlWebBrowserController.h; sourceTree = ""; }; - A6EC5B6510A4B0C60091B7F9 /* AdWhirlWebBrowserController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlWebBrowserController.m; sourceTree = ""; }; - A6EC5B6610A4B0C60091B7F9 /* ARRollerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARRollerView.m; sourceTree = ""; }; - A6EC5B6810A4B0C60091B7F9 /* ARRollerProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARRollerProtocol.h; sourceTree = ""; }; - A6EC5B6910A4B0C60091B7F9 /* ARRollerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARRollerView.h; sourceTree = ""; }; - A6EC5BA610A4B18F0091B7F9 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; }; - A6EC5BCC10A4C30D0091B7F9 /* AddressBook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBook.framework; path = System/Library/Frameworks/AddressBook.framework; sourceTree = SDKROOT; }; - A6EC5BDB10A4C3150091B7F9 /* MapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MapKit.framework; path = System/Library/Frameworks/MapKit.framework; sourceTree = SDKROOT; }; - A6EC5BE410A4C31C0091B7F9 /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = System/Library/Frameworks/MediaPlayer.framework; sourceTree = SDKROOT; }; - A6EC5BF210A4C3400091B7F9 /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; }; - A6EC5BF710A4C3460091B7F9 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; - A6EC5C0A10A4C34F0091B7F9 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; - A6EC5C4E10A4C43F0091B7F9 /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = usr/lib/libsqlite3.dylib; sourceTree = SDKROOT; }; - A6EC5C5210A4C4470091B7F9 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; - A6EC5C5410A4C9900091B7F9 /* AdWhirlAdapterAdMob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterAdMob.h; sourceTree = ""; }; - A6EC5C5510A4C9900091B7F9 /* AdWhirlAdapterAdMob.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterAdMob.m; sourceTree = ""; }; - A6EC5C5610A4C9900091B7F9 /* AdWhirlAdapterJumpTap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterJumpTap.h; sourceTree = ""; }; - A6EC5C5710A4C9900091B7F9 /* AdWhirlAdapterJumpTap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterJumpTap.m; sourceTree = ""; }; - A6EC5C5810A4C9900091B7F9 /* AdWhirlAdapterMillennial.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterMillennial.h; sourceTree = ""; }; - A6EC5C5910A4C9900091B7F9 /* AdWhirlAdapterMillennial.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterMillennial.m; sourceTree = ""; }; - A6EC5C5A10A4C9900091B7F9 /* AdWhirlAdapterQuattro.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterQuattro.h; sourceTree = ""; }; - A6EC5C5B10A4C9900091B7F9 /* AdWhirlAdapterQuattro.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterQuattro.m; sourceTree = ""; }; - A6EC5C5C10A4C9900091B7F9 /* AdWhirlAdapterVideoEgg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterVideoEgg.h; sourceTree = ""; }; - A6EC5C5D10A4C9900091B7F9 /* AdWhirlAdapterVideoEgg.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterVideoEgg.m; sourceTree = ""; }; - A6EC5C7810A4D4500091B7F9 /* QWAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QWAd.h; sourceTree = ""; }; - A6EC5C7910A4D4500091B7F9 /* QWAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QWAdView.h; sourceTree = ""; }; - A6EC5C7A10A4D4500091B7F9 /* QWTestMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QWTestMode.h; sourceTree = ""; }; - A6EC5C8810A4D52E0091B7F9 /* libAdFrame-ARM.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libAdFrame-ARM.a"; sourceTree = ""; }; - A6EC5C8A10A4D52E0091B7F9 /* AdFrameConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdFrameConstants.h; sourceTree = ""; }; - A6EC5C8B10A4D52E0091B7F9 /* AdFrameView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdFrameView.h; sourceTree = ""; }; - A6EC5C8E10A4D52E0091B7F9 /* libAdFrame-X86.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libAdFrame-X86.a"; sourceTree = ""; }; - A6EC5CB210A4DCA00091B7F9 /* AdWhirlAdapterCustom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterCustom.h; sourceTree = ""; }; - A6EC5CB310A4DCA00091B7F9 /* AdWhirlAdapterCustom.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterCustom.m; sourceTree = ""; }; - A6EC5CB410A4DCA00091B7F9 /* AdWhirlAdapterGeneric.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterGeneric.h; sourceTree = ""; }; - A6EC5CB510A4DCA00091B7F9 /* AdWhirlAdapterGeneric.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterGeneric.m; sourceTree = ""; }; - A6EC5CB610A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdNetworkAdapter.m; sourceTree = ""; }; - A6EC5CB710A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter+Helpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "AdWhirlAdNetworkAdapter+Helpers.h"; sourceTree = ""; }; - A6EC5CB810A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter+Helpers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "AdWhirlAdNetworkAdapter+Helpers.m"; sourceTree = ""; }; - A6EC5D1710A4EB710091B7F9 /* SimpleViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleViewController.h; sourceTree = ""; }; - A6EC5D1810A4EB710091B7F9 /* SimpleViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SimpleViewController.m; sourceTree = ""; }; - A6EC5D2D10A4EBAB0091B7F9 /* SimpleViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SimpleViewController.xib; sourceTree = ""; }; - A6ED4912114F0131002C57E6 /* CDataScanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDataScanner.h; sourceTree = ""; }; - A6ED4913114F0131002C57E6 /* CDataScanner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDataScanner.m; sourceTree = ""; }; - A6ED4915114F0131002C57E6 /* CDataScanner_Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDataScanner_Extensions.h; sourceTree = ""; }; - A6ED4916114F0131002C57E6 /* CDataScanner_Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDataScanner_Extensions.m; sourceTree = ""; }; - A6ED4917114F0131002C57E6 /* NSCharacterSet_Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSCharacterSet_Extensions.h; sourceTree = ""; }; - A6ED4918114F0131002C57E6 /* NSCharacterSet_Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSCharacterSet_Extensions.m; sourceTree = ""; }; - A6ED4919114F0131002C57E6 /* NSDictionary_JSONExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSDictionary_JSONExtensions.h; sourceTree = ""; }; - A6ED491A114F0131002C57E6 /* NSDictionary_JSONExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSDictionary_JSONExtensions.m; sourceTree = ""; }; - A6ED491B114F0131002C57E6 /* NSScanner_Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSScanner_Extensions.h; sourceTree = ""; }; - A6ED491C114F0131002C57E6 /* NSScanner_Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSScanner_Extensions.m; sourceTree = ""; }; - A6ED491E114F0131002C57E6 /* CJSONDataSerializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONDataSerializer.h; sourceTree = ""; }; - A6ED491F114F0131002C57E6 /* CJSONDataSerializer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONDataSerializer.m; sourceTree = ""; }; - A6ED4920114F0131002C57E6 /* CJSONDeserializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONDeserializer.h; sourceTree = ""; }; - A6ED4921114F0131002C57E6 /* CJSONDeserializer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONDeserializer.m; sourceTree = ""; }; - A6ED4922114F0131002C57E6 /* CJSONScanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONScanner.h; sourceTree = ""; }; - A6ED4923114F0131002C57E6 /* CJSONScanner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONScanner.m; sourceTree = ""; }; - A6ED4924114F0131002C57E6 /* CJSONSerializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONSerializer.h; sourceTree = ""; }; - A6ED4925114F0131002C57E6 /* CJSONSerializer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONSerializer.m; sourceTree = ""; }; - A6ED4926114F0131002C57E6 /* CSerializedJSONData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSerializedJSONData.h; sourceTree = ""; }; - A6ED4927114F0131002C57E6 /* CSerializedJSONData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CSerializedJSONData.m; sourceTree = ""; }; - A6F55C6A1121CB260062F368 /* libQuattroWireless-Simulator3.1.0-os3.0.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libQuattroWireless-Simulator3.1.0-os3.0.a"; sourceTree = ""; }; - A6F55C6B1121CB260062F368 /* libQuattroWireless3.1.0-os3.0.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libQuattroWireless3.1.0-os3.0.a"; sourceTree = ""; }; - A6F6CC771149A8B500DFFFEA /* ModalViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ModalViewController.h; sourceTree = ""; }; - A6F6CC781149A8B500DFFFEA /* ModalViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ModalViewController.m; sourceTree = ""; }; - A6F6CC791149A8B500DFFFEA /* ModalViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ModalViewController.xib; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 1D60588F0D05DD3D006BFB54 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, - 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, - 2892E4100DC94CBA00A64D0F /* CoreGraphics.framework in Frameworks */, - A6EC5BA710A4B18F0091B7F9 /* CoreLocation.framework in Frameworks */, - A6EC5BCD10A4C30D0091B7F9 /* AddressBook.framework in Frameworks */, - A6EC5BDC10A4C3150091B7F9 /* MapKit.framework in Frameworks */, - A6EC5BE510A4C31C0091B7F9 /* MediaPlayer.framework in Frameworks */, - A6EC5BF310A4C3400091B7F9 /* MessageUI.framework in Frameworks */, - A6EC5BF810A4C3460091B7F9 /* QuartzCore.framework in Frameworks */, - A6EC5C0B10A4C34F0091B7F9 /* SystemConfiguration.framework in Frameworks */, - A6EC5C4F10A4C43F0091B7F9 /* libsqlite3.dylib in Frameworks */, - A6EC5C5310A4C4470091B7F9 /* libz.dylib in Frameworks */, - A6EC5C9210A4D52E0091B7F9 /* libAdFrame-X86.a in Frameworks */, - A6EC5DB710A507C00091B7F9 /* libAdFrame-ARM.a in Frameworks */, - A61F580C110F698700444E50 /* AudioToolbox.framework in Frameworks */, - A6F55C6C1121CB260062F368 /* libQuattroWireless-Simulator3.1.0-os3.0.a in Frameworks */, - A6F55C6D1121CB260062F368 /* libQuattroWireless3.1.0-os3.0.a in Frameworks */, - A67869C61121E5C1008E55E8 /* libJumptapApi.a in Frameworks */, - A67869C71121E5C1008E55E8 /* libJumptapApi.a in Frameworks */, - A67869C81121E5C1008E55E8 /* libJumptapApi.a in Frameworks */, - A67869C91121E5C1008E55E8 /* libJumptapApi.a in Frameworks */, - A6BF7002114B0F9A005C95B8 /* libMMSDK.a in Frameworks */, - A690297D11458AE200F2E41D /* libAdMob.a in Frameworks */, - A615C27811B5DEDD00E0C50F /* libGoogleAds.a in Frameworks */, - A61E1BA711B6213700D0DD65 /* AVFoundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 080E96DDFE201D6D7F000001 /* Classes */ = { - isa = PBXGroup; - children = ( - 28C286DF0D94DF7D0034E888 /* RootViewController.h */, - 28C286E00D94DF7D0034E888 /* RootViewController.m */, - 1D3623240D0F684500981E51 /* AdWhirlSDK2_SampleAppDelegate.h */, - 1D3623250D0F684500981E51 /* AdWhirlSDK2_SampleAppDelegate.m */, - A6EC5D1710A4EB710091B7F9 /* SimpleViewController.h */, - A6EC5D1810A4EB710091B7F9 /* SimpleViewController.m */, - A63C952110A8762800E81577 /* TableController.h */, - A63C952210A8762800E81577 /* TableController.m */, - A63C959610A8D6C000E81577 /* SampleConstants.h */, - A630FD5E110FABAB00D6740A /* BottomBannerController.h */, - A630FD5F110FABAB00D6740A /* BottomBannerController.m */, - A6A7997B1120D36A00A00FD8 /* LocationController.h */, - A6A7997C1120D36A00A00FD8 /* LocationController.m */, - A6F6CC771149A8B500DFFFEA /* ModalViewController.h */, - A6F6CC781149A8B500DFFFEA /* ModalViewController.m */, - ); - path = Classes; - sourceTree = ""; - }; - 19C28FACFE9D520D11CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 1D6058910D05DD3D006BFB54 /* AdWhirlSDK2.app */, - ); - name = Products; - sourceTree = ""; - }; - 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { - isa = PBXGroup; - children = ( - A6EC5B3C10A4B0C60091B7F9 /* AdWhirl */, - A6EC5C6310A4C9A50091B7F9 /* AdNetworkLibs */, - A6ED4911114F0131002C57E6 /* TouchJSON */, - 080E96DDFE201D6D7F000001 /* Classes */, - 29B97315FDCFA39411CA2CEA /* Other Sources */, - 29B97317FDCFA39411CA2CEA /* Resources */, - 29B97323FDCFA39411CA2CEA /* Frameworks */, - 19C28FACFE9D520D11CA2CBB /* Products */, - ); - name = CustomTemplate; - sourceTree = ""; - }; - 29B97315FDCFA39411CA2CEA /* Other Sources */ = { - isa = PBXGroup; - children = ( - 28A0AAE50D9B0CCF005BE974 /* AdWhirlSDK2_Sample_Prefix.pch */, - 29B97316FDCFA39411CA2CEA /* main.m */, - ); - name = "Other Sources"; - sourceTree = ""; - }; - 29B97317FDCFA39411CA2CEA /* Resources */ = { - isa = PBXGroup; - children = ( - A6A7998C1120D69600A00FD8 /* LocationController.xib */, - A6B0CF2B10ACBD8900B29A14 /* adwhirlsample_icon.png */, - A63C952610A8CCFF00E81577 /* TableController.xib */, - A6EC5D2D10A4EBAB0091B7F9 /* SimpleViewController.xib */, - A630FDA9110FB3E700D6740A /* BottomBannerController.xib */, - 28F335F01007B36200424DE2 /* RootViewController.xib */, - A6F6CC791149A8B500DFFFEA /* ModalViewController.xib */, - 28AD735F0D9D9599002E5188 /* MainWindow.xib */, - 8D1107310486CEB800E47090 /* AdWhirlSDK2_Sample-Info.plist */, - ); - name = Resources; - sourceTree = ""; - }; - 29B97323FDCFA39411CA2CEA /* Frameworks */ = { - isa = PBXGroup; - children = ( - 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */, - 1D30AB110D05D00D00671497 /* Foundation.framework */, - 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */, - A61E1BA611B6213700D0DD65 /* AVFoundation.framework */, - A6EC5BA610A4B18F0091B7F9 /* CoreLocation.framework */, - A6EC5BCC10A4C30D0091B7F9 /* AddressBook.framework */, - A61F580B110F698700444E50 /* AudioToolbox.framework */, - A6EC5BDB10A4C3150091B7F9 /* MapKit.framework */, - A6EC5BE410A4C31C0091B7F9 /* MediaPlayer.framework */, - A6EC5BF210A4C3400091B7F9 /* MessageUI.framework */, - A6EC5BF710A4C3460091B7F9 /* QuartzCore.framework */, - A6EC5C0A10A4C34F0091B7F9 /* SystemConfiguration.framework */, - A6EC5C4E10A4C43F0091B7F9 /* libsqlite3.dylib */, - A6EC5C5210A4C4470091B7F9 /* libz.dylib */, - ); - name = Frameworks; - sourceTree = ""; - }; - A615C27111B5DEDD00E0C50F /* GoogleAdSense */ = { - isa = PBXGroup; - children = ( - A615C27211B5DEDD00E0C50F /* GADAdSenseAudioParameters.h */, - A615C27311B5DEDD00E0C50F /* GADAdSenseParameters.h */, - A615C27411B5DEDD00E0C50F /* GADAdViewController.h */, - A615C27511B5DEDD00E0C50F /* GADDoubleClickParameters.h */, - A615C27611B5DEDD00E0C50F /* GADRequestError.h */, - A615C27711B5DEDD00E0C50F /* libGoogleAds.a */, - ); - name = GoogleAdSense; - path = ../AdNetworkLibs/GoogleAdSense; - sourceTree = SOURCE_ROOT; - }; - A67869B91121E5C1008E55E8 /* JumptapApi */ = { - isa = PBXGroup; - children = ( - A67869BA1121E5C1008E55E8 /* 2.2.1 */, - A67869BF1121E5C1008E55E8 /* 3.0 */, - A67869C41121E5C1008E55E8 /* JTAdWidget.h */, - A67869C51121E5C1008E55E8 /* JumpTapAppReport.h */, - ); - name = JumptapApi; - path = ../AdNetworkLibs/JumptapApi; - sourceTree = SOURCE_ROOT; - }; - A67869BA1121E5C1008E55E8 /* 2.2.1 */ = { - isa = PBXGroup; - children = ( - A67869BB1121E5C1008E55E8 /* iphoneos */, - A67869BD1121E5C1008E55E8 /* iphonesimulator */, - ); - path = 2.2.1; - sourceTree = ""; - }; - A67869BB1121E5C1008E55E8 /* iphoneos */ = { - isa = PBXGroup; - children = ( - A67869BC1121E5C1008E55E8 /* libJumptapApi.a */, - ); - path = iphoneos; - sourceTree = ""; - }; - A67869BD1121E5C1008E55E8 /* iphonesimulator */ = { - isa = PBXGroup; - children = ( - A67869BE1121E5C1008E55E8 /* libJumptapApi.a */, - ); - path = iphonesimulator; - sourceTree = ""; - }; - A67869BF1121E5C1008E55E8 /* 3.0 */ = { - isa = PBXGroup; - children = ( - A67869C01121E5C1008E55E8 /* iphoneos */, - A67869C21121E5C1008E55E8 /* iphonesimulator */, - ); - path = 3.0; - sourceTree = ""; - }; - A67869C01121E5C1008E55E8 /* iphoneos */ = { - isa = PBXGroup; - children = ( - A67869C11121E5C1008E55E8 /* libJumptapApi.a */, - ); - path = iphoneos; - sourceTree = ""; - }; - A67869C21121E5C1008E55E8 /* iphonesimulator */ = { - isa = PBXGroup; - children = ( - A67869C31121E5C1008E55E8 /* libJumptapApi.a */, - ); - path = iphonesimulator; - sourceTree = ""; - }; - A6EC5B3C10A4B0C60091B7F9 /* AdWhirl */ = { - isa = PBXGroup; - children = ( - A6EC5B3D10A4B0C60091B7F9 /* adapters */, - A6EC5B5210A4B0C60091B7F9 /* AdWhirlDelegateProtocol.h */, - A6EC5B5310A4B0C60091B7F9 /* AdWhirlView.h */, - A6EC5B5410A4B0C60091B7F9 /* internal */, - A6EC5B6710A4B0C60091B7F9 /* legacy */, - ); - name = AdWhirl; - path = ../AdWhirl; - sourceTree = SOURCE_ROOT; - }; - A6EC5B3D10A4B0C60091B7F9 /* adapters */ = { - isa = PBXGroup; - children = ( - A615C26811B5DD3F00E0C50F /* AdWhirlAdapterGoogleAdSense.h */, - A615C26911B5DD3F00E0C50F /* AdWhirlAdapterGoogleAdSense.m */, - A6CB6843110E3B6800B24288 /* AdWhirlAdapterMdotM.h */, - A6CB6844110E3B6800B24288 /* AdWhirlAdapterMdotM.m */, - A6EC5C5410A4C9900091B7F9 /* AdWhirlAdapterAdMob.h */, - A6EC5C5510A4C9900091B7F9 /* AdWhirlAdapterAdMob.m */, - A6EC5C5610A4C9900091B7F9 /* AdWhirlAdapterJumpTap.h */, - A6EC5C5710A4C9900091B7F9 /* AdWhirlAdapterJumpTap.m */, - A6EC5C5810A4C9900091B7F9 /* AdWhirlAdapterMillennial.h */, - A6EC5C5910A4C9900091B7F9 /* AdWhirlAdapterMillennial.m */, - A6EC5C5A10A4C9900091B7F9 /* AdWhirlAdapterQuattro.h */, - A6EC5C5B10A4C9900091B7F9 /* AdWhirlAdapterQuattro.m */, - A6EC5C5C10A4C9900091B7F9 /* AdWhirlAdapterVideoEgg.h */, - A6EC5C5D10A4C9900091B7F9 /* AdWhirlAdapterVideoEgg.m */, - A6EC5B5010A4B0C60091B7F9 /* AdWhirlAdNetworkAdapter.h */, - ); - path = adapters; - sourceTree = ""; - }; - A6EC5B5410A4B0C60091B7F9 /* internal */ = { - isa = PBXGroup; - children = ( - A62A0D34118F7D810013A568 /* AdWhirlAdapterEvent.h */, - A62A0D35118F7D810013A568 /* AdWhirlAdapterEvent.m */, - A6EC5CB210A4DCA00091B7F9 /* AdWhirlAdapterCustom.h */, - A6EC5CB310A4DCA00091B7F9 /* AdWhirlAdapterCustom.m */, - A6EC5CB410A4DCA00091B7F9 /* AdWhirlAdapterGeneric.h */, - A6EC5CB510A4DCA00091B7F9 /* AdWhirlAdapterGeneric.m */, - A6EC5CB610A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter.m */, - A6EC5CB710A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter+Helpers.h */, - A6EC5CB810A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter+Helpers.m */, - A6EC5B5510A4B0C60091B7F9 /* AdWhirlAdNetworkConfig.h */, - A6EC5B5610A4B0C60091B7F9 /* AdWhirlAdNetworkConfig.m */, - A6EC5B5710A4B0C60091B7F9 /* AdWhirlAdNetworkRegistry.h */, - A6EC5B5810A4B0C60091B7F9 /* AdWhirlAdNetworkRegistry.m */, - A6EC5B5910A4B0C60091B7F9 /* AdWhirlConfig.h */, - A6EC5B5A10A4B0C60091B7F9 /* AdWhirlConfig.m */, - A6EC5B5B10A4B0C60091B7F9 /* AdWhirlCustomAdView.h */, - A6EC5B5C10A4B0C60091B7F9 /* AdWhirlCustomAdView.m */, - A6EC5B5D10A4B0C60091B7F9 /* AdWhirlError.h */, - A6EC5B5E10A4B0C60091B7F9 /* AdWhirlError.m */, - A6EC5B5F10A4B0C60091B7F9 /* AdWhirlLog.h */, - A6EC5B6010A4B0C60091B7F9 /* AdWhirlLog.m */, - A6EC5B6110A4B0C60091B7F9 /* AdWhirlView+.h */, - A6EC5B6210A4B0C60091B7F9 /* AdWhirlView.m */, - A6EC5B6310A4B0C60091B7F9 /* AdWhirlWebBrowser.xib */, - A6EC5B6410A4B0C60091B7F9 /* AdWhirlWebBrowserController.h */, - A6EC5B6510A4B0C60091B7F9 /* AdWhirlWebBrowserController.m */, - A6EC5B6610A4B0C60091B7F9 /* ARRollerView.m */, - ); - path = internal; - sourceTree = ""; - }; - A6EC5B6710A4B0C60091B7F9 /* legacy */ = { - isa = PBXGroup; - children = ( - A6EC5B6810A4B0C60091B7F9 /* ARRollerProtocol.h */, - A6EC5B6910A4B0C60091B7F9 /* ARRollerView.h */, - ); - path = legacy; - sourceTree = ""; - }; - A6EC5C6310A4C9A50091B7F9 /* AdNetworkLibs */ = { - isa = PBXGroup; - children = ( - A6EC5C6610A4C9F70091B7F9 /* AdMob */, - A615C27111B5DEDD00E0C50F /* GoogleAdSense */, - A67869B91121E5C1008E55E8 /* JumptapApi */, - A6EC5C7D10A4D4BF0091B7F9 /* MillennialMedia */, - A6EC5C7510A4D4500091B7F9 /* QuattroWirelessLib */, - A6EC5C8510A4D52E0091B7F9 /* VEAdFrames.1.0.4_2.2 */, - ); - name = AdNetworkLibs; - sourceTree = ""; - }; - A6EC5C6610A4C9F70091B7F9 /* AdMob */ = { - isa = PBXGroup; - children = ( - A690297C11458AE200F2E41D /* libAdMob.a */, - A690297A11458AA000F2E41D /* AdMobDelegateProtocol.h */, - A690297B11458ABF00F2E41D /* AdMobView.h */, - ); - name = AdMob; - path = ../AdNetworkLibs/AdMob; - sourceTree = SOURCE_ROOT; - }; - A6EC5C7510A4D4500091B7F9 /* QuattroWirelessLib */ = { - isa = PBXGroup; - children = ( - A6F55C6A1121CB260062F368 /* libQuattroWireless-Simulator3.1.0-os3.0.a */, - A6F55C6B1121CB260062F368 /* libQuattroWireless3.1.0-os3.0.a */, - A6EC5C7810A4D4500091B7F9 /* QWAd.h */, - A6EC5C7910A4D4500091B7F9 /* QWAdView.h */, - A6EC5C7A10A4D4500091B7F9 /* QWTestMode.h */, - ); - name = QuattroWirelessLib; - path = ../AdNetworkLibs/QuattroWirelessLib; - sourceTree = SOURCE_ROOT; - }; - A6EC5C7D10A4D4BF0091B7F9 /* MillennialMedia */ = { - isa = PBXGroup; - children = ( - A67F2A601162949700E0278D /* MMAdView.h */, - A6BF7001114B0F9A005C95B8 /* libMMSDK.a */, - ); - name = MillennialMedia; - path = ../AdNetworkLibs/MillennialMedia; - sourceTree = SOURCE_ROOT; - }; - A6EC5C8510A4D52E0091B7F9 /* VEAdFrames.1.0.4_2.2 */ = { - isa = PBXGroup; - children = ( - A6EC5C8610A4D52E0091B7F9 /* ARM */, - A6EC5C8910A4D52E0091B7F9 /* include */, - A6EC5C8C10A4D52E0091B7F9 /* X86 */, - ); - name = VEAdFrames.1.0.4_2.2; - path = ../AdNetworkLibs/VEAdFrames.1.0.4_2.2; - sourceTree = SOURCE_ROOT; - }; - A6EC5C8610A4D52E0091B7F9 /* ARM */ = { - isa = PBXGroup; - children = ( - A6EC5C8810A4D52E0091B7F9 /* libAdFrame-ARM.a */, - ); - path = ARM; - sourceTree = ""; - }; - A6EC5C8910A4D52E0091B7F9 /* include */ = { - isa = PBXGroup; - children = ( - A6EC5C8A10A4D52E0091B7F9 /* AdFrameConstants.h */, - A6EC5C8B10A4D52E0091B7F9 /* AdFrameView.h */, - ); - path = include; - sourceTree = ""; - }; - A6EC5C8C10A4D52E0091B7F9 /* X86 */ = { - isa = PBXGroup; - children = ( - A6EC5C8E10A4D52E0091B7F9 /* libAdFrame-X86.a */, - ); - path = X86; - sourceTree = ""; - }; - A6ED4911114F0131002C57E6 /* TouchJSON */ = { - isa = PBXGroup; - children = ( - A6ED4912114F0131002C57E6 /* CDataScanner.h */, - A6ED4913114F0131002C57E6 /* CDataScanner.m */, - A6ED4914114F0131002C57E6 /* Extensions */, - A6ED491D114F0131002C57E6 /* JSON */, - ); - name = TouchJSON; - path = ../TouchJSON; - sourceTree = SOURCE_ROOT; - }; - A6ED4914114F0131002C57E6 /* Extensions */ = { - isa = PBXGroup; - children = ( - A6ED4915114F0131002C57E6 /* CDataScanner_Extensions.h */, - A6ED4916114F0131002C57E6 /* CDataScanner_Extensions.m */, - A6ED4917114F0131002C57E6 /* NSCharacterSet_Extensions.h */, - A6ED4918114F0131002C57E6 /* NSCharacterSet_Extensions.m */, - A6ED4919114F0131002C57E6 /* NSDictionary_JSONExtensions.h */, - A6ED491A114F0131002C57E6 /* NSDictionary_JSONExtensions.m */, - A6ED491B114F0131002C57E6 /* NSScanner_Extensions.h */, - A6ED491C114F0131002C57E6 /* NSScanner_Extensions.m */, - ); - path = Extensions; - sourceTree = ""; - }; - A6ED491D114F0131002C57E6 /* JSON */ = { - isa = PBXGroup; - children = ( - A6ED491E114F0131002C57E6 /* CJSONDataSerializer.h */, - A6ED491F114F0131002C57E6 /* CJSONDataSerializer.m */, - A6ED4920114F0131002C57E6 /* CJSONDeserializer.h */, - A6ED4921114F0131002C57E6 /* CJSONDeserializer.m */, - A6ED4922114F0131002C57E6 /* CJSONScanner.h */, - A6ED4923114F0131002C57E6 /* CJSONScanner.m */, - A6ED4924114F0131002C57E6 /* CJSONSerializer.h */, - A6ED4925114F0131002C57E6 /* CJSONSerializer.m */, - A6ED4926114F0131002C57E6 /* CSerializedJSONData.h */, - A6ED4927114F0131002C57E6 /* CSerializedJSONData.m */, - ); - path = JSON; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 1D6058900D05DD3D006BFB54 /* AdWhirlSDK2_Sample */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "AdWhirlSDK2_Sample" */; - buildPhases = ( - 1D60588D0D05DD3D006BFB54 /* Resources */, - 1D60588E0D05DD3D006BFB54 /* Sources */, - 1D60588F0D05DD3D006BFB54 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = AdWhirlSDK2_Sample; - productName = AdWhirlSDK2_Sample; - productReference = 1D6058910D05DD3D006BFB54 /* AdWhirlSDK2.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 29B97313FDCFA39411CA2CEA /* Project object */ = { - isa = PBXProject; - buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "AdWhirlSDK2_Sample-3_x" */; - compatibilityVersion = "Xcode 3.1"; - hasScannedForEncodings = 1; - knownRegions = ( - English, - Japanese, - French, - German, - en, - ); - mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 1D6058900D05DD3D006BFB54 /* AdWhirlSDK2_Sample */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 1D60588D0D05DD3D006BFB54 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */, - 28F335F11007B36200424DE2 /* RootViewController.xib in Resources */, - A6EC5B7B10A4B0C60091B7F9 /* AdWhirlWebBrowser.xib in Resources */, - A6EC5D2E10A4EBAB0091B7F9 /* SimpleViewController.xib in Resources */, - A63C952710A8CCFF00E81577 /* TableController.xib in Resources */, - A6B0CF2C10ACBD8900B29A14 /* adwhirlsample_icon.png in Resources */, - A630FDAA110FB3E700D6740A /* BottomBannerController.xib in Resources */, - A6A7998D1120D69600A00FD8 /* LocationController.xib in Resources */, - A6F6CC7B1149A8B500DFFFEA /* ModalViewController.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 1D60588E0D05DD3D006BFB54 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1D60589B0D05DD56006BFB54 /* main.m in Sources */, - 1D3623260D0F684500981E51 /* AdWhirlSDK2_SampleAppDelegate.m in Sources */, - 28C286E10D94DF7D0034E888 /* RootViewController.m in Sources */, - A6EC5B7410A4B0C60091B7F9 /* AdWhirlAdNetworkConfig.m in Sources */, - A6EC5B7510A4B0C60091B7F9 /* AdWhirlAdNetworkRegistry.m in Sources */, - A6EC5B7610A4B0C60091B7F9 /* AdWhirlConfig.m in Sources */, - A6EC5B7710A4B0C60091B7F9 /* AdWhirlCustomAdView.m in Sources */, - A6EC5B7810A4B0C60091B7F9 /* AdWhirlError.m in Sources */, - A6EC5B7910A4B0C60091B7F9 /* AdWhirlLog.m in Sources */, - A6EC5B7A10A4B0C60091B7F9 /* AdWhirlView.m in Sources */, - A6EC5B7C10A4B0C60091B7F9 /* AdWhirlWebBrowserController.m in Sources */, - A6EC5B7D10A4B0C60091B7F9 /* ARRollerView.m in Sources */, - A6EC5CB910A4DCA00091B7F9 /* AdWhirlAdapterCustom.m in Sources */, - A6EC5CBA10A4DCA00091B7F9 /* AdWhirlAdapterGeneric.m in Sources */, - A6EC5CBB10A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter.m in Sources */, - A6EC5CBC10A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter+Helpers.m in Sources */, - A6EC5D1A10A4EB710091B7F9 /* SimpleViewController.m in Sources */, - A63C952410A8762800E81577 /* TableController.m in Sources */, - A630FD61110FABAB00D6740A /* BottomBannerController.m in Sources */, - A6A7997D1120D36A00A00FD8 /* LocationController.m in Sources */, - A6B9860E11484CF2001B2F2B /* AdWhirlAdapterAdMob.m in Sources */, - A6B9860F11484CF3001B2F2B /* AdWhirlAdapterJumpTap.m in Sources */, - A6B9861011484CF4001B2F2B /* AdWhirlAdapterMdotM.m in Sources */, - A6B9861111484CF4001B2F2B /* AdWhirlAdapterMillennial.m in Sources */, - A6B9861211484CF5001B2F2B /* AdWhirlAdapterQuattro.m in Sources */, - A6B9861311484CF6001B2F2B /* AdWhirlAdapterVideoEgg.m in Sources */, - A6F6CC7A1149A8B500DFFFEA /* ModalViewController.m in Sources */, - A6ED4928114F0131002C57E6 /* CDataScanner.m in Sources */, - A6ED4929114F0131002C57E6 /* CDataScanner_Extensions.m in Sources */, - A6ED492A114F0131002C57E6 /* NSCharacterSet_Extensions.m in Sources */, - A6ED492B114F0131002C57E6 /* NSDictionary_JSONExtensions.m in Sources */, - A6ED492C114F0131002C57E6 /* NSScanner_Extensions.m in Sources */, - A6ED492D114F0131002C57E6 /* CJSONDataSerializer.m in Sources */, - A6ED492E114F0131002C57E6 /* CJSONDeserializer.m in Sources */, - A6ED492F114F0131002C57E6 /* CJSONScanner.m in Sources */, - A6ED4930114F0131002C57E6 /* CJSONSerializer.m in Sources */, - A6ED4931114F0131002C57E6 /* CSerializedJSONData.m in Sources */, - A62A0D36118F7D810013A568 /* AdWhirlAdapterEvent.m in Sources */, - A615C26A11B5DD3F00E0C50F /* AdWhirlAdapterGoogleAdSense.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 1D6058940D05DD3E006BFB54 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = AdWhirlSDK2_Sample_Prefix.pch; - INFOPLIST_FILE = "AdWhirlSDK2_Sample-Info.plist"; - LIBRARY_SEARCH_PATHS = ( - "\"$(SRCROOT)/../AdNetworkLibs/AdMob\"", - "\"$(SRCROOT)/../AdNetworkLibs/MillennialMedia\"", - "\"$(SRCROOT)/../AdNetworkLibs/QuattroWirelessLib\"", - "\"$(SRCROOT)/../AdNetworkLibs/VEAdFrames.1.0.4_2.2/ARM\"", - "\"$(SRCROOT)/../AdNetworkLibs/VEAdFrames.1.0.4_2.2/X86\"", - "\"$(SRCROOT)/../AdNetworkLibs/JumptapApi/$(IPHONEOS_DEPLOYMENT_TARGET)/$(PLATFORM_NAME)\"", - "\"$(SRCROOT)/../AdNetworkLibs/GoogleAdSense\"", - ); - PRODUCT_NAME = AdWhirlSDK2; - }; - name = Debug; - }; - 1D6058950D05DD3E006BFB54 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COPY_PHASE_STRIP = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = AdWhirlSDK2_Sample_Prefix.pch; - INFOPLIST_FILE = "AdWhirlSDK2_Sample-Info.plist"; - LIBRARY_SEARCH_PATHS = ( - "\"$(SRCROOT)/../AdNetworkLibs/AdMob\"", - "\"$(SRCROOT)/../AdNetworkLibs/MillennialMedia\"", - "\"$(SRCROOT)/../AdNetworkLibs/QuattroWirelessLib\"", - "\"$(SRCROOT)/../AdNetworkLibs/VEAdFrames.1.0.4_2.2/ARM\"", - "\"$(SRCROOT)/../AdNetworkLibs/VEAdFrames.1.0.4_2.2/X86\"", - "\"$(SRCROOT)/../AdNetworkLibs/JumptapApi/$(IPHONEOS_DEPLOYMENT_TARGET)/$(PLATFORM_NAME)\"", - "\"$(SRCROOT)/../AdNetworkLibs/GoogleAdSense\"", - ); - PRODUCT_NAME = AdWhirlSDK2; - }; - name = Release; - }; - C01FCF4F08A954540054247B /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_PREPROCESSOR_DEFINITIONS = "ADWHIRL_DEBUG=1"; - GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - OTHER_LDFLAGS = ""; - PREBINDING = NO; - SDKROOT = iphoneos3.0; - }; - name = Debug; - }; - C01FCF5008A954540054247B /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - OTHER_LDFLAGS = ""; - PREBINDING = NO; - SDKROOT = iphoneos3.0; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "AdWhirlSDK2_Sample" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1D6058940D05DD3E006BFB54 /* Debug */, - 1D6058950D05DD3E006BFB54 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - C01FCF4E08A954540054247B /* Build configuration list for PBXProject "AdWhirlSDK2_Sample-3_x" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C01FCF4F08A954540054247B /* Debug */, - C01FCF5008A954540054247B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; -} diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/AdWhirlSDK2_Sample-Info.plist b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/AdWhirlSDK2_Sample-Info.plist deleted file mode 100644 index cbc4dc828..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/AdWhirlSDK2_Sample-Info.plist +++ /dev/null @@ -1,43 +0,0 @@ - - - - - UIInterfaceOrientation - UIInterfaceOrientationPortrait - CFBundleDevelopmentRegion - English - CFBundleDisplayName - ${PRODUCT_NAME} - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIconFile - adwhirlsample_icon.png - CFBundleIconFiles - - adwhirlsample_icon.png - adwhirlsample_icon@2x.png - - CFBundleIdentifier - com.adwhirl.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - APPL - CFBundleSignature - ???? - CFBundleVersion - 1.0 - LSRequiresIPhoneOS - - NSMainNibFile - MainWindow - MMediaLocationAware - - MMediaDefaultEmbedWebView - - UIPrerenderedIcon - - - diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/AdWhirlSDK2_Sample.xcodeproj/project.pbxproj b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/AdWhirlSDK2_Sample.xcodeproj/project.pbxproj deleted file mode 100755 index a0129e9d6..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/AdWhirlSDK2_Sample.xcodeproj/project.pbxproj +++ /dev/null @@ -1,948 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 1B183AA81211C7C60026647E /* UIColor+AdWhirlConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B183AA71211C7C60026647E /* UIColor+AdWhirlConfig.m */; }; - 1B3FC6ED11EB954700C890D2 /* libGreystripeSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B3FC6EC11EB954700C890D2 /* libGreystripeSDK.a */; }; - 1B42692511FE258400910F21 /* jtUniversalLib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B42692411FE258400910F21 /* jtUniversalLib.a */; }; - 1B42692611FE25A500910F21 /* AdWhirlAdapterJumpTap.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5C5710A4C9900091B7F9 /* AdWhirlAdapterJumpTap.m */; }; - 1B6898DD120C916A0080EAC1 /* AdWhirlClassWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B6898DC120C916A0080EAC1 /* AdWhirlClassWrapper.m */; }; - 1B6CE7CA121498DA00E44A28 /* AdWhirlConfigStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B6CE7C9121498DA00E44A28 /* AdWhirlConfigStore.m */; }; - 1B6CE8921214AA6A00E44A28 /* AWNetworkReachabilityWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B6CE8911214AA6A00E44A28 /* AWNetworkReachabilityWrapper.m */; }; - 1B7CC26C11EFB400004F4937 /* AdWhirlAdapterMillennial.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5C5910A4C9900091B7F9 /* AdWhirlAdapterMillennial.m */; }; - 1B7CC26D11EFB403004F4937 /* AdWhirlAdapterVideoEgg.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5C5D10A4C9900091B7F9 /* AdWhirlAdapterVideoEgg.m */; }; - 1B7CC27411EFB42C004F4937 /* libAdFrame.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B7CC27311EFB42C004F4937 /* libAdFrame.a */; }; - 1B7CC27511EFB44C004F4937 /* libMMSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A6BF7001114B0F9A005C95B8 /* libMMSDK.a */; }; - 1B8B5F0F11E7EE8D002762E3 /* AdWhirlAdapterZestADZ.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B8B5F0E11E7EE8D002762E3 /* AdWhirlAdapterZestADZ.m */; }; - 1B8B5F1811E7EEDF002762E3 /* libZestADZ.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B8B5F1511E7EEDF002762E3 /* libZestADZ.a */; }; - 1B91B4B71255596900C665F7 /* AdWhirlAdapterInMobi.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B91B4B61255596900C665F7 /* AdWhirlAdapterInMobi.m */; }; - 1BF8DFD111EB855100C2284D /* AdWhirlAdapterGreystripe.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BF8DFD011EB855100C2284D /* AdWhirlAdapterGreystripe.m */; }; - 1D3623260D0F684500981E51 /* AdWhirlSDK2_SampleAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* AdWhirlSDK2_SampleAppDelegate.m */; }; - 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; - 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; - 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; - 204AE1CF141984A50043AA76 /* libNexageSDK-Lite.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 204AE1CE141984A50043AA76 /* libNexageSDK-Lite.a */; }; - 20840DAA13CE56780029064C /* libInMobi_iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 20840DA913CE56780029064C /* libInMobi_iOS.a */; }; - 20B2547313A03F8300F33931 /* AdWhirlAdapterNexage.m in Sources */ = {isa = PBXBuildFile; fileRef = 20B2547213A03F8300F33931 /* AdWhirlAdapterNexage.m */; }; - 20F28CE013B00F87006C724A /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20F28CDF13B00F87006C724A /* CFNetwork.framework */; }; - 20F28CE213B00FD5006C724A /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20F28CE113B00FD5006C724A /* MobileCoreServices.framework */; }; - 2892E4100DC94CBA00A64D0F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */; }; - 28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD735F0D9D9599002E5188 /* MainWindow.xib */; }; - 28C286E10D94DF7D0034E888 /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28C286E00D94DF7D0034E888 /* RootViewController.m */; }; - 28F335F11007B36200424DE2 /* RootViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28F335F01007B36200424DE2 /* RootViewController.xib */; }; - 6B42360512EA0D41001F5395 /* AdWhirlAdapterOneRiot.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B42360412EA0D41001F5395 /* AdWhirlAdapterOneRiot.m */; }; - 6B42369012EA29EB001F5395 /* libOneRiot.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B42368F12EA29EB001F5395 /* libOneRiot.a */; }; - 6B629D491332B9B7000D019C /* AdWhirlAdapterGoogleAdMobAds.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B629D481332B9B7000D019C /* AdWhirlAdapterGoogleAdMobAds.m */; }; - 6B629D5E1332BC21000D019C /* libGoogleAdMobAds.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B629D5D1332BC21000D019C /* libGoogleAdMobAds.a */; }; - A6051FF011C7DF6600451D6F /* AdWhirlAdapterIAd.m in Sources */ = {isa = PBXBuildFile; fileRef = A6051FEF11C7DF6600451D6F /* AdWhirlAdapterIAd.m */; }; - A605200A11C7DF8400451D6F /* iAd.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A605200911C7DF8400451D6F /* iAd.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; - A605201311C7E20400451D6F /* AdWhirlAdapterMdotM.m in Sources */ = {isa = PBXBuildFile; fileRef = A6CB6844110E3B6800B24288 /* AdWhirlAdapterMdotM.m */; }; - A61E1BA711B6213700D0DD65 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A61E1BA611B6213700D0DD65 /* AVFoundation.framework */; }; - A61F580C110F698700444E50 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A61F580B110F698700444E50 /* AudioToolbox.framework */; }; - A62A0D36118F7D810013A568 /* AdWhirlAdapterEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = A62A0D35118F7D810013A568 /* AdWhirlAdapterEvent.m */; }; - A630FD61110FABAB00D6740A /* BottomBannerController.m in Sources */ = {isa = PBXBuildFile; fileRef = A630FD5F110FABAB00D6740A /* BottomBannerController.m */; }; - A630FDAA110FB3E700D6740A /* BottomBannerController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A630FDA9110FB3E700D6740A /* BottomBannerController.xib */; }; - A6392A3211C9777500459FD4 /* adwhirlsample_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A6392A3111C9777500459FD4 /* adwhirlsample_icon@2x.png */; }; - A63C952410A8762800E81577 /* TableController.m in Sources */ = {isa = PBXBuildFile; fileRef = A63C952210A8762800E81577 /* TableController.m */; }; - A63C952710A8CCFF00E81577 /* TableController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A63C952610A8CCFF00E81577 /* TableController.xib */; }; - A6A7997D1120D36A00A00FD8 /* LocationController.m in Sources */ = {isa = PBXBuildFile; fileRef = A6A7997C1120D36A00A00FD8 /* LocationController.m */; }; - A6A7998D1120D69600A00FD8 /* LocationController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A6A7998C1120D69600A00FD8 /* LocationController.xib */; }; - A6B0CF2C10ACBD8900B29A14 /* adwhirlsample_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = A6B0CF2B10ACBD8900B29A14 /* adwhirlsample_icon.png */; }; - A6EC5B7410A4B0C60091B7F9 /* AdWhirlAdNetworkConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B5610A4B0C60091B7F9 /* AdWhirlAdNetworkConfig.m */; }; - A6EC5B7510A4B0C60091B7F9 /* AdWhirlAdNetworkRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B5810A4B0C60091B7F9 /* AdWhirlAdNetworkRegistry.m */; }; - A6EC5B7610A4B0C60091B7F9 /* AdWhirlConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B5A10A4B0C60091B7F9 /* AdWhirlConfig.m */; }; - A6EC5B7710A4B0C60091B7F9 /* AdWhirlCustomAdView.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B5C10A4B0C60091B7F9 /* AdWhirlCustomAdView.m */; }; - A6EC5B7810A4B0C60091B7F9 /* AdWhirlError.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B5E10A4B0C60091B7F9 /* AdWhirlError.m */; }; - A6EC5B7910A4B0C60091B7F9 /* AdWhirlLog.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B6010A4B0C60091B7F9 /* AdWhirlLog.m */; }; - A6EC5B7A10A4B0C60091B7F9 /* AdWhirlView.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B6210A4B0C60091B7F9 /* AdWhirlView.m */; }; - A6EC5B7B10A4B0C60091B7F9 /* AdWhirlWebBrowser.xib in Resources */ = {isa = PBXBuildFile; fileRef = A6EC5B6310A4B0C60091B7F9 /* AdWhirlWebBrowser.xib */; }; - A6EC5B7C10A4B0C60091B7F9 /* AdWhirlWebBrowserController.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B6510A4B0C60091B7F9 /* AdWhirlWebBrowserController.m */; }; - A6EC5B7D10A4B0C60091B7F9 /* ARRollerView.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5B6610A4B0C60091B7F9 /* ARRollerView.m */; }; - A6EC5BA710A4B18F0091B7F9 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5BA610A4B18F0091B7F9 /* CoreLocation.framework */; }; - A6EC5BCD10A4C30D0091B7F9 /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5BCC10A4C30D0091B7F9 /* AddressBook.framework */; }; - A6EC5BDC10A4C3150091B7F9 /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5BDB10A4C3150091B7F9 /* MapKit.framework */; }; - A6EC5BE510A4C31C0091B7F9 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5BE410A4C31C0091B7F9 /* MediaPlayer.framework */; }; - A6EC5BF310A4C3400091B7F9 /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5BF210A4C3400091B7F9 /* MessageUI.framework */; }; - A6EC5BF810A4C3460091B7F9 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5BF710A4C3460091B7F9 /* QuartzCore.framework */; }; - A6EC5C0B10A4C34F0091B7F9 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5C0A10A4C34F0091B7F9 /* SystemConfiguration.framework */; }; - A6EC5C4F10A4C43F0091B7F9 /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5C4E10A4C43F0091B7F9 /* libsqlite3.dylib */; }; - A6EC5C5310A4C4470091B7F9 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EC5C5210A4C4470091B7F9 /* libz.dylib */; }; - A6EC5CB910A4DCA00091B7F9 /* AdWhirlAdapterCustom.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5CB310A4DCA00091B7F9 /* AdWhirlAdapterCustom.m */; }; - A6EC5CBA10A4DCA00091B7F9 /* AdWhirlAdapterGeneric.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5CB510A4DCA00091B7F9 /* AdWhirlAdapterGeneric.m */; }; - A6EC5CBB10A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5CB610A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter.m */; }; - A6EC5CBC10A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter+Helpers.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5CB810A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter+Helpers.m */; }; - A6EC5D1A10A4EB710091B7F9 /* SimpleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EC5D1810A4EB710091B7F9 /* SimpleViewController.m */; }; - A6EC5D2E10A4EBAB0091B7F9 /* SimpleViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A6EC5D2D10A4EBAB0091B7F9 /* SimpleViewController.xib */; }; - A6ED4928114F0131002C57E6 /* CDataScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED4913114F0131002C57E6 /* CDataScanner.m */; }; - A6ED4929114F0131002C57E6 /* CDataScanner_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED4916114F0131002C57E6 /* CDataScanner_Extensions.m */; }; - A6ED492A114F0131002C57E6 /* NSCharacterSet_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED4918114F0131002C57E6 /* NSCharacterSet_Extensions.m */; }; - A6ED492B114F0131002C57E6 /* NSDictionary_JSONExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED491A114F0131002C57E6 /* NSDictionary_JSONExtensions.m */; }; - A6ED492C114F0131002C57E6 /* NSScanner_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED491C114F0131002C57E6 /* NSScanner_Extensions.m */; }; - A6ED492D114F0131002C57E6 /* CJSONDataSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED491F114F0131002C57E6 /* CJSONDataSerializer.m */; }; - A6ED492E114F0131002C57E6 /* CJSONDeserializer.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED4921114F0131002C57E6 /* CJSONDeserializer.m */; }; - A6ED492F114F0131002C57E6 /* CJSONScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED4923114F0131002C57E6 /* CJSONScanner.m */; }; - A6ED4930114F0131002C57E6 /* CJSONSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED4925114F0131002C57E6 /* CJSONSerializer.m */; }; - A6ED4931114F0131002C57E6 /* CSerializedJSONData.m in Sources */ = {isa = PBXBuildFile; fileRef = A6ED4927114F0131002C57E6 /* CSerializedJSONData.m */; }; - A6F6CC7A1149A8B500DFFFEA /* ModalViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A6F6CC781149A8B500DFFFEA /* ModalViewController.m */; }; - A6F6CC7B1149A8B500DFFFEA /* ModalViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A6F6CC791149A8B500DFFFEA /* ModalViewController.xib */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 1B183AA61211C7C60026647E /* UIColor+AdWhirlConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIColor+AdWhirlConfig.h"; sourceTree = ""; }; - 1B183AA71211C7C60026647E /* UIColor+AdWhirlConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIColor+AdWhirlConfig.m"; sourceTree = ""; }; - 1B1973FD12415A1B0083FB36 /* AWNetworkReachabilityDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWNetworkReachabilityDelegate.h; sourceTree = ""; }; - 1B3FC6E911EB954700C890D2 /* GreystripeDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GreystripeDelegate.h; sourceTree = ""; }; - 1B3FC6EA11EB954700C890D2 /* GSAdEngine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GSAdEngine.h; sourceTree = ""; }; - 1B3FC6EB11EB954700C890D2 /* GSAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GSAdView.h; sourceTree = ""; }; - 1B3FC6EC11EB954700C890D2 /* libGreystripeSDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libGreystripeSDK.a; sourceTree = ""; }; - 1B42692411FE258400910F21 /* jtUniversalLib.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = jtUniversalLib.a; sourceTree = ""; }; - 1B6898DB120C916A0080EAC1 /* AdWhirlClassWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlClassWrapper.h; sourceTree = ""; }; - 1B6898DC120C916A0080EAC1 /* AdWhirlClassWrapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlClassWrapper.m; sourceTree = ""; }; - 1B6CE7C8121498DA00E44A28 /* AdWhirlConfigStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlConfigStore.h; sourceTree = ""; }; - 1B6CE7C9121498DA00E44A28 /* AdWhirlConfigStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlConfigStore.m; sourceTree = ""; }; - 1B6CE8901214AA6A00E44A28 /* AWNetworkReachabilityWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWNetworkReachabilityWrapper.h; sourceTree = ""; }; - 1B6CE8911214AA6A00E44A28 /* AWNetworkReachabilityWrapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWNetworkReachabilityWrapper.m; sourceTree = ""; }; - 1B7CC27111EFB42C004F4937 /* AdFrameConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdFrameConstants.h; sourceTree = ""; }; - 1B7CC27211EFB42C004F4937 /* AdFrameView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdFrameView.h; sourceTree = ""; }; - 1B7CC27311EFB42C004F4937 /* libAdFrame.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libAdFrame.a; sourceTree = ""; }; - 1B8B5F0D11E7EE8D002762E3 /* AdWhirlAdapterZestADZ.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterZestADZ.h; sourceTree = ""; }; - 1B8B5F0E11E7EE8D002762E3 /* AdWhirlAdapterZestADZ.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterZestADZ.m; sourceTree = ""; }; - 1B8B5F1511E7EEDF002762E3 /* libZestADZ.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libZestADZ.a; sourceTree = ""; }; - 1B8B5F1611E7EEDF002762E3 /* ZestadzDelegateProtocal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZestadzDelegateProtocal.h; sourceTree = ""; }; - 1B8B5F1711E7EEDF002762E3 /* ZestadzView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZestadzView.h; sourceTree = ""; }; - 1B91B4B51255596900C665F7 /* AdWhirlAdapterInMobi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterInMobi.h; sourceTree = ""; }; - 1B91B4B61255596900C665F7 /* AdWhirlAdapterInMobi.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterInMobi.m; sourceTree = ""; }; - 1BF8DFCF11EB855100C2284D /* AdWhirlAdapterGreystripe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterGreystripe.h; sourceTree = ""; }; - 1BF8DFD011EB855100C2284D /* AdWhirlAdapterGreystripe.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterGreystripe.m; sourceTree = ""; }; - 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 1D3623240D0F684500981E51 /* AdWhirlSDK2_SampleAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlSDK2_SampleAppDelegate.h; sourceTree = ""; }; - 1D3623250D0F684500981E51 /* AdWhirlSDK2_SampleAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlSDK2_SampleAppDelegate.m; sourceTree = ""; }; - 1D6058910D05DD3D006BFB54 /* AdWhirlSDK2.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AdWhirlSDK2.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 204AE1CE141984A50043AA76 /* libNexageSDK-Lite.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libNexageSDK-Lite.a"; sourceTree = ""; }; - 20840DA913CE56780029064C /* libInMobi_iOS.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libInMobi_iOS.a; sourceTree = ""; }; - 20B2547113A03F8300F33931 /* AdWhirlAdapterNexage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterNexage.h; sourceTree = ""; }; - 20B2547213A03F8300F33931 /* AdWhirlAdapterNexage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterNexage.m; sourceTree = ""; }; - 20ED534C14687FD20080D52D /* IMAdError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IMAdError.h; sourceTree = ""; }; - 20ED534D14687FD20080D52D /* IMAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IMAdView.h; sourceTree = ""; }; - 20ED534E14687FD20080D52D /* IMAdDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IMAdDelegate.h; sourceTree = ""; }; - 20ED534F14687FD20080D52D /* IMSDKUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IMSDKUtil.h; sourceTree = ""; }; - 20ED535014687FD20080D52D /* IMAdRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IMAdRequest.h; sourceTree = ""; }; - 20F28C7113AC30BB006C724A /* NexageAdParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NexageAdParameters.h; sourceTree = ""; }; - 20F28C7213AC30BB006C724A /* NexageAdViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NexageAdViewController.h; sourceTree = ""; }; - 20F28C7313AC30BB006C724A /* NexageDelegateProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NexageDelegateProtocol.h; sourceTree = ""; }; - 20F28CDF13B00F87006C724A /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; }; - 20F28CE113B00FD5006C724A /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; }; - 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 28A0AAE50D9B0CCF005BE974 /* AdWhirlSDK2_Sample_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlSDK2_Sample_Prefix.pch; sourceTree = ""; }; - 28AD735F0D9D9599002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; }; - 28C286DF0D94DF7D0034E888 /* RootViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RootViewController.h; sourceTree = ""; }; - 28C286E00D94DF7D0034E888 /* RootViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RootViewController.m; sourceTree = ""; }; - 28F335F01007B36200424DE2 /* RootViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RootViewController.xib; sourceTree = ""; }; - 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 6B42360312EA0D41001F5395 /* AdWhirlAdapterOneRiot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterOneRiot.h; sourceTree = ""; }; - 6B42360412EA0D41001F5395 /* AdWhirlAdapterOneRiot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterOneRiot.m; sourceTree = ""; }; - 6B42365812EA16FE001F5395 /* OneRiotAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OneRiotAd.h; path = ../AdNetworkLibs/OneRiot/OneRiotAd.h; sourceTree = ""; }; - 6B42368F12EA29EB001F5395 /* libOneRiot.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libOneRiot.a; path = ../AdNetworkLibs/OneRiot/libOneRiot.a; sourceTree = ""; }; - 6B629D471332B9B7000D019C /* AdWhirlAdapterGoogleAdMobAds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterGoogleAdMobAds.h; sourceTree = ""; }; - 6B629D481332B9B7000D019C /* AdWhirlAdapterGoogleAdMobAds.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterGoogleAdMobAds.m; sourceTree = ""; }; - 6B629D511332BAB9000D019C /* GADBannerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADBannerView.h; sourceTree = ""; }; - 6B629D521332BAB9000D019C /* GADBannerViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADBannerViewDelegate.h; sourceTree = ""; }; - 6B629D531332BAB9000D019C /* GADInterstitial.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADInterstitial.h; sourceTree = ""; }; - 6B629D541332BAB9000D019C /* GADInterstitialDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADInterstitialDelegate.h; sourceTree = ""; }; - 6B629D551332BAB9000D019C /* GADRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADRequest.h; sourceTree = ""; }; - 6B629D561332BAB9000D019C /* GADRequestError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADRequestError.h; sourceTree = ""; }; - 6B629D5D1332BC21000D019C /* libGoogleAdMobAds.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libGoogleAdMobAds.a; sourceTree = ""; }; - 8D1107310486CEB800E47090 /* AdWhirlSDK2_Sample-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "AdWhirlSDK2_Sample-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; - A6051FEE11C7DF6600451D6F /* AdWhirlAdapterIAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterIAd.h; sourceTree = ""; }; - A6051FEF11C7DF6600451D6F /* AdWhirlAdapterIAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterIAd.m; sourceTree = ""; }; - A605200911C7DF8400451D6F /* iAd.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = iAd.framework; path = System/Library/Frameworks/iAd.framework; sourceTree = SDKROOT; }; - A61E1BA611B6213700D0DD65 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; - A61F580B110F698700444E50 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; - A62A0D34118F7D810013A568 /* AdWhirlAdapterEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterEvent.h; sourceTree = ""; }; - A62A0D35118F7D810013A568 /* AdWhirlAdapterEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterEvent.m; sourceTree = ""; }; - A630FD5E110FABAB00D6740A /* BottomBannerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BottomBannerController.h; sourceTree = ""; }; - A630FD5F110FABAB00D6740A /* BottomBannerController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BottomBannerController.m; sourceTree = ""; }; - A630FDA9110FB3E700D6740A /* BottomBannerController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = BottomBannerController.xib; sourceTree = ""; }; - A6392A3111C9777500459FD4 /* adwhirlsample_icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "adwhirlsample_icon@2x.png"; sourceTree = ""; }; - A63C952110A8762800E81577 /* TableController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TableController.h; sourceTree = ""; }; - A63C952210A8762800E81577 /* TableController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TableController.m; sourceTree = ""; }; - A63C952610A8CCFF00E81577 /* TableController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TableController.xib; sourceTree = ""; }; - A63C959610A8D6C000E81577 /* SampleConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SampleConstants.h; sourceTree = ""; }; - A67869C41121E5C1008E55E8 /* JTAdWidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JTAdWidget.h; sourceTree = ""; }; - A67869C51121E5C1008E55E8 /* JumpTapAppReport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JumpTapAppReport.h; sourceTree = ""; }; - A67F2A601162949700E0278D /* MMAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMAdView.h; sourceTree = ""; }; - A6A7997B1120D36A00A00FD8 /* LocationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocationController.h; sourceTree = ""; }; - A6A7997C1120D36A00A00FD8 /* LocationController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LocationController.m; sourceTree = ""; }; - A6A7998C1120D69600A00FD8 /* LocationController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = LocationController.xib; sourceTree = ""; }; - A6B0CF2B10ACBD8900B29A14 /* adwhirlsample_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = adwhirlsample_icon.png; sourceTree = ""; }; - A6BF7001114B0F9A005C95B8 /* libMMSDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libMMSDK.a; sourceTree = ""; }; - A6CB6843110E3B6800B24288 /* AdWhirlAdapterMdotM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterMdotM.h; sourceTree = ""; }; - A6CB6844110E3B6800B24288 /* AdWhirlAdapterMdotM.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterMdotM.m; sourceTree = ""; }; - A6EC5B5010A4B0C60091B7F9 /* AdWhirlAdNetworkAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdNetworkAdapter.h; sourceTree = ""; }; - A6EC5B5210A4B0C60091B7F9 /* AdWhirlDelegateProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlDelegateProtocol.h; sourceTree = ""; }; - A6EC5B5310A4B0C60091B7F9 /* AdWhirlView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlView.h; sourceTree = ""; }; - A6EC5B5510A4B0C60091B7F9 /* AdWhirlAdNetworkConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdNetworkConfig.h; sourceTree = ""; }; - A6EC5B5610A4B0C60091B7F9 /* AdWhirlAdNetworkConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdNetworkConfig.m; sourceTree = ""; }; - A6EC5B5710A4B0C60091B7F9 /* AdWhirlAdNetworkRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdNetworkRegistry.h; sourceTree = ""; }; - A6EC5B5810A4B0C60091B7F9 /* AdWhirlAdNetworkRegistry.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdNetworkRegistry.m; sourceTree = ""; }; - A6EC5B5910A4B0C60091B7F9 /* AdWhirlConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlConfig.h; sourceTree = ""; }; - A6EC5B5A10A4B0C60091B7F9 /* AdWhirlConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlConfig.m; sourceTree = ""; }; - A6EC5B5B10A4B0C60091B7F9 /* AdWhirlCustomAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlCustomAdView.h; sourceTree = ""; }; - A6EC5B5C10A4B0C60091B7F9 /* AdWhirlCustomAdView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlCustomAdView.m; sourceTree = ""; }; - A6EC5B5D10A4B0C60091B7F9 /* AdWhirlError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlError.h; sourceTree = ""; }; - A6EC5B5E10A4B0C60091B7F9 /* AdWhirlError.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlError.m; sourceTree = ""; }; - A6EC5B5F10A4B0C60091B7F9 /* AdWhirlLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlLog.h; sourceTree = ""; }; - A6EC5B6010A4B0C60091B7F9 /* AdWhirlLog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlLog.m; sourceTree = ""; }; - A6EC5B6110A4B0C60091B7F9 /* AdWhirlView+.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "AdWhirlView+.h"; sourceTree = ""; }; - A6EC5B6210A4B0C60091B7F9 /* AdWhirlView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlView.m; sourceTree = ""; }; - A6EC5B6310A4B0C60091B7F9 /* AdWhirlWebBrowser.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AdWhirlWebBrowser.xib; sourceTree = ""; }; - A6EC5B6410A4B0C60091B7F9 /* AdWhirlWebBrowserController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlWebBrowserController.h; sourceTree = ""; }; - A6EC5B6510A4B0C60091B7F9 /* AdWhirlWebBrowserController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlWebBrowserController.m; sourceTree = ""; }; - A6EC5B6610A4B0C60091B7F9 /* ARRollerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARRollerView.m; sourceTree = ""; }; - A6EC5B6810A4B0C60091B7F9 /* ARRollerProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARRollerProtocol.h; sourceTree = ""; }; - A6EC5B6910A4B0C60091B7F9 /* ARRollerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARRollerView.h; sourceTree = ""; }; - A6EC5BA610A4B18F0091B7F9 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; }; - A6EC5BCC10A4C30D0091B7F9 /* AddressBook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBook.framework; path = System/Library/Frameworks/AddressBook.framework; sourceTree = SDKROOT; }; - A6EC5BDB10A4C3150091B7F9 /* MapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MapKit.framework; path = System/Library/Frameworks/MapKit.framework; sourceTree = SDKROOT; }; - A6EC5BE410A4C31C0091B7F9 /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = System/Library/Frameworks/MediaPlayer.framework; sourceTree = SDKROOT; }; - A6EC5BF210A4C3400091B7F9 /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; }; - A6EC5BF710A4C3460091B7F9 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; - A6EC5C0A10A4C34F0091B7F9 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; - A6EC5C4E10A4C43F0091B7F9 /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = usr/lib/libsqlite3.dylib; sourceTree = SDKROOT; }; - A6EC5C5210A4C4470091B7F9 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; - A6EC5C5610A4C9900091B7F9 /* AdWhirlAdapterJumpTap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterJumpTap.h; sourceTree = ""; }; - A6EC5C5710A4C9900091B7F9 /* AdWhirlAdapterJumpTap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterJumpTap.m; sourceTree = ""; }; - A6EC5C5810A4C9900091B7F9 /* AdWhirlAdapterMillennial.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterMillennial.h; sourceTree = ""; }; - A6EC5C5910A4C9900091B7F9 /* AdWhirlAdapterMillennial.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterMillennial.m; sourceTree = ""; }; - A6EC5C5A10A4C9900091B7F9 /* AdWhirlAdapterQuattro.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterQuattro.h; sourceTree = ""; }; - A6EC5C5B10A4C9900091B7F9 /* AdWhirlAdapterQuattro.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterQuattro.m; sourceTree = ""; }; - A6EC5C5C10A4C9900091B7F9 /* AdWhirlAdapterVideoEgg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterVideoEgg.h; sourceTree = ""; }; - A6EC5C5D10A4C9900091B7F9 /* AdWhirlAdapterVideoEgg.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterVideoEgg.m; sourceTree = ""; }; - A6EC5C7810A4D4500091B7F9 /* QWAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QWAd.h; sourceTree = ""; }; - A6EC5C7910A4D4500091B7F9 /* QWAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QWAdView.h; sourceTree = ""; }; - A6EC5C7A10A4D4500091B7F9 /* QWTestMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QWTestMode.h; sourceTree = ""; }; - A6EC5CB210A4DCA00091B7F9 /* AdWhirlAdapterCustom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterCustom.h; sourceTree = ""; }; - A6EC5CB310A4DCA00091B7F9 /* AdWhirlAdapterCustom.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterCustom.m; sourceTree = ""; }; - A6EC5CB410A4DCA00091B7F9 /* AdWhirlAdapterGeneric.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterGeneric.h; sourceTree = ""; }; - A6EC5CB510A4DCA00091B7F9 /* AdWhirlAdapterGeneric.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterGeneric.m; sourceTree = ""; }; - A6EC5CB610A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdNetworkAdapter.m; sourceTree = ""; }; - A6EC5CB710A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter+Helpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "AdWhirlAdNetworkAdapter+Helpers.h"; sourceTree = ""; }; - A6EC5CB810A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter+Helpers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "AdWhirlAdNetworkAdapter+Helpers.m"; sourceTree = ""; }; - A6EC5D1710A4EB710091B7F9 /* SimpleViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleViewController.h; sourceTree = ""; }; - A6EC5D1810A4EB710091B7F9 /* SimpleViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SimpleViewController.m; sourceTree = ""; }; - A6EC5D2D10A4EBAB0091B7F9 /* SimpleViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SimpleViewController.xib; sourceTree = ""; }; - A6ED4912114F0131002C57E6 /* CDataScanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDataScanner.h; sourceTree = ""; }; - A6ED4913114F0131002C57E6 /* CDataScanner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDataScanner.m; sourceTree = ""; }; - A6ED4915114F0131002C57E6 /* CDataScanner_Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDataScanner_Extensions.h; sourceTree = ""; }; - A6ED4916114F0131002C57E6 /* CDataScanner_Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDataScanner_Extensions.m; sourceTree = ""; }; - A6ED4917114F0131002C57E6 /* NSCharacterSet_Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSCharacterSet_Extensions.h; sourceTree = ""; }; - A6ED4918114F0131002C57E6 /* NSCharacterSet_Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSCharacterSet_Extensions.m; sourceTree = ""; }; - A6ED4919114F0131002C57E6 /* NSDictionary_JSONExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSDictionary_JSONExtensions.h; sourceTree = ""; }; - A6ED491A114F0131002C57E6 /* NSDictionary_JSONExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSDictionary_JSONExtensions.m; sourceTree = ""; }; - A6ED491B114F0131002C57E6 /* NSScanner_Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSScanner_Extensions.h; sourceTree = ""; }; - A6ED491C114F0131002C57E6 /* NSScanner_Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSScanner_Extensions.m; sourceTree = ""; }; - A6ED491E114F0131002C57E6 /* CJSONDataSerializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONDataSerializer.h; sourceTree = ""; }; - A6ED491F114F0131002C57E6 /* CJSONDataSerializer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONDataSerializer.m; sourceTree = ""; }; - A6ED4920114F0131002C57E6 /* CJSONDeserializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONDeserializer.h; sourceTree = ""; }; - A6ED4921114F0131002C57E6 /* CJSONDeserializer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONDeserializer.m; sourceTree = ""; }; - A6ED4922114F0131002C57E6 /* CJSONScanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONScanner.h; sourceTree = ""; }; - A6ED4923114F0131002C57E6 /* CJSONScanner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONScanner.m; sourceTree = ""; }; - A6ED4924114F0131002C57E6 /* CJSONSerializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONSerializer.h; sourceTree = ""; }; - A6ED4925114F0131002C57E6 /* CJSONSerializer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONSerializer.m; sourceTree = ""; }; - A6ED4926114F0131002C57E6 /* CSerializedJSONData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSerializedJSONData.h; sourceTree = ""; }; - A6ED4927114F0131002C57E6 /* CSerializedJSONData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CSerializedJSONData.m; sourceTree = ""; }; - A6F55C6A1121CB260062F368 /* libQuattroWireless-Simulator3.1.0-os3.0.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libQuattroWireless-Simulator3.1.0-os3.0.a"; sourceTree = ""; }; - A6F55C6B1121CB260062F368 /* libQuattroWireless3.1.0-os3.0.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libQuattroWireless3.1.0-os3.0.a"; sourceTree = ""; }; - A6F6CC771149A8B500DFFFEA /* ModalViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ModalViewController.h; sourceTree = ""; }; - A6F6CC781149A8B500DFFFEA /* ModalViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ModalViewController.m; sourceTree = ""; }; - A6F6CC791149A8B500DFFFEA /* ModalViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ModalViewController.xib; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 1D60588F0D05DD3D006BFB54 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 20F28CE213B00FD5006C724A /* MobileCoreServices.framework in Frameworks */, - 20F28CE013B00F87006C724A /* CFNetwork.framework in Frameworks */, - 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, - 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, - 2892E4100DC94CBA00A64D0F /* CoreGraphics.framework in Frameworks */, - A6EC5BA710A4B18F0091B7F9 /* CoreLocation.framework in Frameworks */, - A6EC5BCD10A4C30D0091B7F9 /* AddressBook.framework in Frameworks */, - A6EC5BDC10A4C3150091B7F9 /* MapKit.framework in Frameworks */, - A6EC5BE510A4C31C0091B7F9 /* MediaPlayer.framework in Frameworks */, - A6EC5BF310A4C3400091B7F9 /* MessageUI.framework in Frameworks */, - A6EC5BF810A4C3460091B7F9 /* QuartzCore.framework in Frameworks */, - A6EC5C0B10A4C34F0091B7F9 /* SystemConfiguration.framework in Frameworks */, - A6EC5C4F10A4C43F0091B7F9 /* libsqlite3.dylib in Frameworks */, - A6EC5C5310A4C4470091B7F9 /* libz.dylib in Frameworks */, - A61F580C110F698700444E50 /* AudioToolbox.framework in Frameworks */, - A61E1BA711B6213700D0DD65 /* AVFoundation.framework in Frameworks */, - A605200A11C7DF8400451D6F /* iAd.framework in Frameworks */, - 1B8B5F1811E7EEDF002762E3 /* libZestADZ.a in Frameworks */, - 1B3FC6ED11EB954700C890D2 /* libGreystripeSDK.a in Frameworks */, - 1B7CC27411EFB42C004F4937 /* libAdFrame.a in Frameworks */, - 1B7CC27511EFB44C004F4937 /* libMMSDK.a in Frameworks */, - 1B42692511FE258400910F21 /* jtUniversalLib.a in Frameworks */, - 6B42369012EA29EB001F5395 /* libOneRiot.a in Frameworks */, - 6B629D5E1332BC21000D019C /* libGoogleAdMobAds.a in Frameworks */, - 20840DAA13CE56780029064C /* libInMobi_iOS.a in Frameworks */, - 204AE1CF141984A50043AA76 /* libNexageSDK-Lite.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 080E96DDFE201D6D7F000001 /* Classes */ = { - isa = PBXGroup; - children = ( - 28C286DF0D94DF7D0034E888 /* RootViewController.h */, - 28C286E00D94DF7D0034E888 /* RootViewController.m */, - 1D3623240D0F684500981E51 /* AdWhirlSDK2_SampleAppDelegate.h */, - 1D3623250D0F684500981E51 /* AdWhirlSDK2_SampleAppDelegate.m */, - A6EC5D1710A4EB710091B7F9 /* SimpleViewController.h */, - A6EC5D1810A4EB710091B7F9 /* SimpleViewController.m */, - A63C952110A8762800E81577 /* TableController.h */, - A63C952210A8762800E81577 /* TableController.m */, - A63C959610A8D6C000E81577 /* SampleConstants.h */, - A630FD5E110FABAB00D6740A /* BottomBannerController.h */, - A630FD5F110FABAB00D6740A /* BottomBannerController.m */, - A6A7997B1120D36A00A00FD8 /* LocationController.h */, - A6A7997C1120D36A00A00FD8 /* LocationController.m */, - A6F6CC771149A8B500DFFFEA /* ModalViewController.h */, - A6F6CC781149A8B500DFFFEA /* ModalViewController.m */, - ); - path = Classes; - sourceTree = ""; - }; - 19C28FACFE9D520D11CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 1D6058910D05DD3D006BFB54 /* AdWhirlSDK2.app */, - ); - name = Products; - sourceTree = ""; - }; - 1B3FC6E811EB954700C890D2 /* Greystripe */ = { - isa = PBXGroup; - children = ( - 1B3FC6E911EB954700C890D2 /* GreystripeDelegate.h */, - 1B3FC6EA11EB954700C890D2 /* GSAdEngine.h */, - 1B3FC6EB11EB954700C890D2 /* GSAdView.h */, - 1B3FC6EC11EB954700C890D2 /* libGreystripeSDK.a */, - ); - name = Greystripe; - path = ../AdNetworkLibs/Greystripe; - sourceTree = SOURCE_ROOT; - }; - 1B7CC26F11EFB42C004F4937 /* VEAdFrames */ = { - isa = PBXGroup; - children = ( - 1B7CC27011EFB42C004F4937 /* include */, - 1B7CC27311EFB42C004F4937 /* libAdFrame.a */, - ); - name = VEAdFrames; - path = ../AdNetworkLibs/VEAdFrames; - sourceTree = SOURCE_ROOT; - }; - 1B7CC27011EFB42C004F4937 /* include */ = { - isa = PBXGroup; - children = ( - 1B7CC27111EFB42C004F4937 /* AdFrameConstants.h */, - 1B7CC27211EFB42C004F4937 /* AdFrameView.h */, - ); - path = include; - sourceTree = ""; - }; - 1B8B5F1411E7EEDF002762E3 /* ZestADZ */ = { - isa = PBXGroup; - children = ( - 1B8B5F1511E7EEDF002762E3 /* libZestADZ.a */, - 1B8B5F1611E7EEDF002762E3 /* ZestadzDelegateProtocal.h */, - 1B8B5F1711E7EEDF002762E3 /* ZestadzView.h */, - ); - name = ZestADZ; - path = ../AdNetworkLibs/ZestADZ; - sourceTree = SOURCE_ROOT; - }; - 1B91B4AD125557F600C665F7 /* InMobi */ = { - isa = PBXGroup; - children = ( - 20ED534C14687FD20080D52D /* IMAdError.h */, - 20ED534D14687FD20080D52D /* IMAdView.h */, - 20ED534E14687FD20080D52D /* IMAdDelegate.h */, - 20ED534F14687FD20080D52D /* IMSDKUtil.h */, - 20ED535014687FD20080D52D /* IMAdRequest.h */, - 20840DA913CE56780029064C /* libInMobi_iOS.a */, - ); - name = InMobi; - path = ../AdNetworkLibs/InMobi; - sourceTree = SOURCE_ROOT; - }; - 20F28C4513AC2FFC006C724A /* Nexage */ = { - isa = PBXGroup; - children = ( - 204AE1CE141984A50043AA76 /* libNexageSDK-Lite.a */, - 20F28C7013AC30BB006C724A /* includes */, - ); - name = Nexage; - path = ../AdNetworkLibs/Nexage; - sourceTree = SOURCE_ROOT; - }; - 20F28C7013AC30BB006C724A /* includes */ = { - isa = PBXGroup; - children = ( - 20F28C7113AC30BB006C724A /* NexageAdParameters.h */, - 20F28C7213AC30BB006C724A /* NexageAdViewController.h */, - 20F28C7313AC30BB006C724A /* NexageDelegateProtocol.h */, - ); - path = includes; - sourceTree = ""; - }; - 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { - isa = PBXGroup; - children = ( - A6EC5B3C10A4B0C60091B7F9 /* AdWhirl */, - A6EC5C6310A4C9A50091B7F9 /* AdNetworkLibs */, - A6ED4911114F0131002C57E6 /* TouchJSON */, - 080E96DDFE201D6D7F000001 /* Classes */, - 29B97315FDCFA39411CA2CEA /* Other Sources */, - 29B97317FDCFA39411CA2CEA /* Resources */, - 29B97323FDCFA39411CA2CEA /* Frameworks */, - 19C28FACFE9D520D11CA2CBB /* Products */, - ); - name = CustomTemplate; - sourceTree = ""; - }; - 29B97315FDCFA39411CA2CEA /* Other Sources */ = { - isa = PBXGroup; - children = ( - 28A0AAE50D9B0CCF005BE974 /* AdWhirlSDK2_Sample_Prefix.pch */, - 29B97316FDCFA39411CA2CEA /* main.m */, - ); - name = "Other Sources"; - sourceTree = ""; - }; - 29B97317FDCFA39411CA2CEA /* Resources */ = { - isa = PBXGroup; - children = ( - A6A7998C1120D69600A00FD8 /* LocationController.xib */, - A6B0CF2B10ACBD8900B29A14 /* adwhirlsample_icon.png */, - A6392A3111C9777500459FD4 /* adwhirlsample_icon@2x.png */, - A63C952610A8CCFF00E81577 /* TableController.xib */, - A6EC5D2D10A4EBAB0091B7F9 /* SimpleViewController.xib */, - A630FDA9110FB3E700D6740A /* BottomBannerController.xib */, - 28F335F01007B36200424DE2 /* RootViewController.xib */, - A6F6CC791149A8B500DFFFEA /* ModalViewController.xib */, - 28AD735F0D9D9599002E5188 /* MainWindow.xib */, - 8D1107310486CEB800E47090 /* AdWhirlSDK2_Sample-Info.plist */, - ); - name = Resources; - sourceTree = ""; - }; - 29B97323FDCFA39411CA2CEA /* Frameworks */ = { - isa = PBXGroup; - children = ( - 20F28CE113B00FD5006C724A /* MobileCoreServices.framework */, - 20F28CDF13B00F87006C724A /* CFNetwork.framework */, - 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */, - 1D30AB110D05D00D00671497 /* Foundation.framework */, - 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */, - A61E1BA611B6213700D0DD65 /* AVFoundation.framework */, - A6EC5BA610A4B18F0091B7F9 /* CoreLocation.framework */, - A6EC5BCC10A4C30D0091B7F9 /* AddressBook.framework */, - A61F580B110F698700444E50 /* AudioToolbox.framework */, - A6EC5BDB10A4C3150091B7F9 /* MapKit.framework */, - A6EC5BE410A4C31C0091B7F9 /* MediaPlayer.framework */, - A6EC5BF210A4C3400091B7F9 /* MessageUI.framework */, - A6EC5BF710A4C3460091B7F9 /* QuartzCore.framework */, - A6EC5C0A10A4C34F0091B7F9 /* SystemConfiguration.framework */, - A605200911C7DF8400451D6F /* iAd.framework */, - A6EC5C4E10A4C43F0091B7F9 /* libsqlite3.dylib */, - A6EC5C5210A4C4470091B7F9 /* libz.dylib */, - ); - name = Frameworks; - sourceTree = ""; - }; - 6B42365712EA16EE001F5395 /* OneRiot */ = { - isa = PBXGroup; - children = ( - 6B42365812EA16FE001F5395 /* OneRiotAd.h */, - 6B42368F12EA29EB001F5395 /* libOneRiot.a */, - ); - name = OneRiot; - sourceTree = SOURCE_ROOT; - }; - 6B629D501332BAB9000D019C /* Google */ = { - isa = PBXGroup; - children = ( - 6B629D511332BAB9000D019C /* GADBannerView.h */, - 6B629D521332BAB9000D019C /* GADBannerViewDelegate.h */, - 6B629D531332BAB9000D019C /* GADInterstitial.h */, - 6B629D541332BAB9000D019C /* GADInterstitialDelegate.h */, - 6B629D551332BAB9000D019C /* GADRequest.h */, - 6B629D561332BAB9000D019C /* GADRequestError.h */, - 6B629D5D1332BC21000D019C /* libGoogleAdMobAds.a */, - ); - name = Google; - path = ../AdNetworkLibs/Google; - sourceTree = SOURCE_ROOT; - }; - A67869B91121E5C1008E55E8 /* JumptapApi */ = { - isa = PBXGroup; - children = ( - 1B42692411FE258400910F21 /* jtUniversalLib.a */, - A67869C41121E5C1008E55E8 /* JTAdWidget.h */, - A67869C51121E5C1008E55E8 /* JumpTapAppReport.h */, - ); - name = JumptapApi; - path = ../AdNetworkLibs/JumptapApi; - sourceTree = SOURCE_ROOT; - }; - A6EC5B3C10A4B0C60091B7F9 /* AdWhirl */ = { - isa = PBXGroup; - children = ( - A6EC5B3D10A4B0C60091B7F9 /* adapters */, - A6EC5B5210A4B0C60091B7F9 /* AdWhirlDelegateProtocol.h */, - A6EC5B5310A4B0C60091B7F9 /* AdWhirlView.h */, - A6EC5B5410A4B0C60091B7F9 /* internal */, - A6EC5B6710A4B0C60091B7F9 /* legacy */, - ); - name = AdWhirl; - path = ../AdWhirl; - sourceTree = SOURCE_ROOT; - }; - A6EC5B3D10A4B0C60091B7F9 /* adapters */ = { - isa = PBXGroup; - children = ( - 6B629D471332B9B7000D019C /* AdWhirlAdapterGoogleAdMobAds.h */, - 6B629D481332B9B7000D019C /* AdWhirlAdapterGoogleAdMobAds.m */, - 1BF8DFCF11EB855100C2284D /* AdWhirlAdapterGreystripe.h */, - 1BF8DFD011EB855100C2284D /* AdWhirlAdapterGreystripe.m */, - A6051FEE11C7DF6600451D6F /* AdWhirlAdapterIAd.h */, - A6051FEF11C7DF6600451D6F /* AdWhirlAdapterIAd.m */, - 1B91B4B51255596900C665F7 /* AdWhirlAdapterInMobi.h */, - 1B91B4B61255596900C665F7 /* AdWhirlAdapterInMobi.m */, - A6EC5C5610A4C9900091B7F9 /* AdWhirlAdapterJumpTap.h */, - A6EC5C5710A4C9900091B7F9 /* AdWhirlAdapterJumpTap.m */, - A6CB6843110E3B6800B24288 /* AdWhirlAdapterMdotM.h */, - A6CB6844110E3B6800B24288 /* AdWhirlAdapterMdotM.m */, - A6EC5C5810A4C9900091B7F9 /* AdWhirlAdapterMillennial.h */, - A6EC5C5910A4C9900091B7F9 /* AdWhirlAdapterMillennial.m */, - 20B2547113A03F8300F33931 /* AdWhirlAdapterNexage.h */, - 20B2547213A03F8300F33931 /* AdWhirlAdapterNexage.m */, - 6B42360312EA0D41001F5395 /* AdWhirlAdapterOneRiot.h */, - 6B42360412EA0D41001F5395 /* AdWhirlAdapterOneRiot.m */, - A6EC5C5A10A4C9900091B7F9 /* AdWhirlAdapterQuattro.h */, - A6EC5C5B10A4C9900091B7F9 /* AdWhirlAdapterQuattro.m */, - A6EC5C5C10A4C9900091B7F9 /* AdWhirlAdapterVideoEgg.h */, - A6EC5C5D10A4C9900091B7F9 /* AdWhirlAdapterVideoEgg.m */, - 1B8B5F0D11E7EE8D002762E3 /* AdWhirlAdapterZestADZ.h */, - 1B8B5F0E11E7EE8D002762E3 /* AdWhirlAdapterZestADZ.m */, - A6EC5B5010A4B0C60091B7F9 /* AdWhirlAdNetworkAdapter.h */, - ); - path = adapters; - sourceTree = ""; - }; - A6EC5B5410A4B0C60091B7F9 /* internal */ = { - isa = PBXGroup; - children = ( - 1B6898DB120C916A0080EAC1 /* AdWhirlClassWrapper.h */, - 1B6898DC120C916A0080EAC1 /* AdWhirlClassWrapper.m */, - A62A0D34118F7D810013A568 /* AdWhirlAdapterEvent.h */, - A62A0D35118F7D810013A568 /* AdWhirlAdapterEvent.m */, - A6EC5CB210A4DCA00091B7F9 /* AdWhirlAdapterCustom.h */, - A6EC5CB310A4DCA00091B7F9 /* AdWhirlAdapterCustom.m */, - A6EC5CB410A4DCA00091B7F9 /* AdWhirlAdapterGeneric.h */, - A6EC5CB510A4DCA00091B7F9 /* AdWhirlAdapterGeneric.m */, - A6EC5CB610A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter.m */, - A6EC5CB710A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter+Helpers.h */, - A6EC5CB810A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter+Helpers.m */, - A6EC5B5510A4B0C60091B7F9 /* AdWhirlAdNetworkConfig.h */, - A6EC5B5610A4B0C60091B7F9 /* AdWhirlAdNetworkConfig.m */, - A6EC5B5710A4B0C60091B7F9 /* AdWhirlAdNetworkRegistry.h */, - A6EC5B5810A4B0C60091B7F9 /* AdWhirlAdNetworkRegistry.m */, - A6EC5B5910A4B0C60091B7F9 /* AdWhirlConfig.h */, - A6EC5B5A10A4B0C60091B7F9 /* AdWhirlConfig.m */, - A6EC5B5B10A4B0C60091B7F9 /* AdWhirlCustomAdView.h */, - A6EC5B5C10A4B0C60091B7F9 /* AdWhirlCustomAdView.m */, - A6EC5B5D10A4B0C60091B7F9 /* AdWhirlError.h */, - A6EC5B5E10A4B0C60091B7F9 /* AdWhirlError.m */, - A6EC5B5F10A4B0C60091B7F9 /* AdWhirlLog.h */, - A6EC5B6010A4B0C60091B7F9 /* AdWhirlLog.m */, - A6EC5B6110A4B0C60091B7F9 /* AdWhirlView+.h */, - A6EC5B6210A4B0C60091B7F9 /* AdWhirlView.m */, - A6EC5B6310A4B0C60091B7F9 /* AdWhirlWebBrowser.xib */, - A6EC5B6410A4B0C60091B7F9 /* AdWhirlWebBrowserController.h */, - A6EC5B6510A4B0C60091B7F9 /* AdWhirlWebBrowserController.m */, - A6EC5B6610A4B0C60091B7F9 /* ARRollerView.m */, - 1B183AA61211C7C60026647E /* UIColor+AdWhirlConfig.h */, - 1B183AA71211C7C60026647E /* UIColor+AdWhirlConfig.m */, - 1B6CE7C8121498DA00E44A28 /* AdWhirlConfigStore.h */, - 1B6CE7C9121498DA00E44A28 /* AdWhirlConfigStore.m */, - 1B6CE8901214AA6A00E44A28 /* AWNetworkReachabilityWrapper.h */, - 1B6CE8911214AA6A00E44A28 /* AWNetworkReachabilityWrapper.m */, - 1B1973FD12415A1B0083FB36 /* AWNetworkReachabilityDelegate.h */, - ); - path = internal; - sourceTree = ""; - }; - A6EC5B6710A4B0C60091B7F9 /* legacy */ = { - isa = PBXGroup; - children = ( - A6EC5B6810A4B0C60091B7F9 /* ARRollerProtocol.h */, - A6EC5B6910A4B0C60091B7F9 /* ARRollerView.h */, - ); - path = legacy; - sourceTree = ""; - }; - A6EC5C6310A4C9A50091B7F9 /* AdNetworkLibs */ = { - isa = PBXGroup; - children = ( - 20F28C4513AC2FFC006C724A /* Nexage */, - 6B629D501332BAB9000D019C /* Google */, - 1B3FC6E811EB954700C890D2 /* Greystripe */, - 1B91B4AD125557F600C665F7 /* InMobi */, - A67869B91121E5C1008E55E8 /* JumptapApi */, - A6EC5C7D10A4D4BF0091B7F9 /* MillennialMedia */, - 6B42365712EA16EE001F5395 /* OneRiot */, - A6EC5C7510A4D4500091B7F9 /* QuattroWirelessLib */, - 1B7CC26F11EFB42C004F4937 /* VEAdFrames */, - 1B8B5F1411E7EEDF002762E3 /* ZestADZ */, - ); - name = AdNetworkLibs; - sourceTree = ""; - }; - A6EC5C7510A4D4500091B7F9 /* QuattroWirelessLib */ = { - isa = PBXGroup; - children = ( - A6F55C6A1121CB260062F368 /* libQuattroWireless-Simulator3.1.0-os3.0.a */, - A6F55C6B1121CB260062F368 /* libQuattroWireless3.1.0-os3.0.a */, - A6EC5C7810A4D4500091B7F9 /* QWAd.h */, - A6EC5C7910A4D4500091B7F9 /* QWAdView.h */, - A6EC5C7A10A4D4500091B7F9 /* QWTestMode.h */, - ); - name = QuattroWirelessLib; - path = ../AdNetworkLibs/QuattroWirelessLib; - sourceTree = SOURCE_ROOT; - }; - A6EC5C7D10A4D4BF0091B7F9 /* MillennialMedia */ = { - isa = PBXGroup; - children = ( - A67F2A601162949700E0278D /* MMAdView.h */, - A6BF7001114B0F9A005C95B8 /* libMMSDK.a */, - ); - name = MillennialMedia; - path = ../AdNetworkLibs/MillennialMedia; - sourceTree = SOURCE_ROOT; - }; - A6ED4911114F0131002C57E6 /* TouchJSON */ = { - isa = PBXGroup; - children = ( - A6ED4912114F0131002C57E6 /* CDataScanner.h */, - A6ED4913114F0131002C57E6 /* CDataScanner.m */, - A6ED4914114F0131002C57E6 /* Extensions */, - A6ED491D114F0131002C57E6 /* JSON */, - ); - name = TouchJSON; - path = ../TouchJSON; - sourceTree = SOURCE_ROOT; - }; - A6ED4914114F0131002C57E6 /* Extensions */ = { - isa = PBXGroup; - children = ( - A6ED4915114F0131002C57E6 /* CDataScanner_Extensions.h */, - A6ED4916114F0131002C57E6 /* CDataScanner_Extensions.m */, - A6ED4917114F0131002C57E6 /* NSCharacterSet_Extensions.h */, - A6ED4918114F0131002C57E6 /* NSCharacterSet_Extensions.m */, - A6ED4919114F0131002C57E6 /* NSDictionary_JSONExtensions.h */, - A6ED491A114F0131002C57E6 /* NSDictionary_JSONExtensions.m */, - A6ED491B114F0131002C57E6 /* NSScanner_Extensions.h */, - A6ED491C114F0131002C57E6 /* NSScanner_Extensions.m */, - ); - path = Extensions; - sourceTree = ""; - }; - A6ED491D114F0131002C57E6 /* JSON */ = { - isa = PBXGroup; - children = ( - A6ED491E114F0131002C57E6 /* CJSONDataSerializer.h */, - A6ED491F114F0131002C57E6 /* CJSONDataSerializer.m */, - A6ED4920114F0131002C57E6 /* CJSONDeserializer.h */, - A6ED4921114F0131002C57E6 /* CJSONDeserializer.m */, - A6ED4922114F0131002C57E6 /* CJSONScanner.h */, - A6ED4923114F0131002C57E6 /* CJSONScanner.m */, - A6ED4924114F0131002C57E6 /* CJSONSerializer.h */, - A6ED4925114F0131002C57E6 /* CJSONSerializer.m */, - A6ED4926114F0131002C57E6 /* CSerializedJSONData.h */, - A6ED4927114F0131002C57E6 /* CSerializedJSONData.m */, - ); - path = JSON; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 1D6058900D05DD3D006BFB54 /* AdWhirlSDK2_Sample */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "AdWhirlSDK2_Sample" */; - buildPhases = ( - 1B049FDE122ED494006AE0C9 /* ShellScript */, - 1D60588D0D05DD3D006BFB54 /* Resources */, - 1D60588E0D05DD3D006BFB54 /* Sources */, - 1D60588F0D05DD3D006BFB54 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = AdWhirlSDK2_Sample; - productName = AdWhirlSDK2_Sample; - productReference = 1D6058910D05DD3D006BFB54 /* AdWhirlSDK2.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 29B97313FDCFA39411CA2CEA /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0420; - }; - buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "AdWhirlSDK2_Sample" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 1; - knownRegions = ( - English, - Japanese, - French, - German, - en, - ); - mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; - projectDirPath = ""; - projectRoot = ../; - targets = ( - 1D6058900D05DD3D006BFB54 /* AdWhirlSDK2_Sample */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 1D60588D0D05DD3D006BFB54 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */, - 28F335F11007B36200424DE2 /* RootViewController.xib in Resources */, - A6EC5B7B10A4B0C60091B7F9 /* AdWhirlWebBrowser.xib in Resources */, - A6EC5D2E10A4EBAB0091B7F9 /* SimpleViewController.xib in Resources */, - A63C952710A8CCFF00E81577 /* TableController.xib in Resources */, - A6B0CF2C10ACBD8900B29A14 /* adwhirlsample_icon.png in Resources */, - A630FDAA110FB3E700D6740A /* BottomBannerController.xib in Resources */, - A6A7998D1120D69600A00FD8 /* LocationController.xib in Resources */, - A6F6CC7B1149A8B500DFFFEA /* ModalViewController.xib in Resources */, - A6392A3211C9777500459FD4 /* adwhirlsample_icon@2x.png in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 1B049FDE122ED494006AE0C9 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "cp -f adwhirlsample_iconAT2x.png adwhirlsample_icon@2x.png"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 1D60588E0D05DD3D006BFB54 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1D60589B0D05DD56006BFB54 /* main.m in Sources */, - 1D3623260D0F684500981E51 /* AdWhirlSDK2_SampleAppDelegate.m in Sources */, - 28C286E10D94DF7D0034E888 /* RootViewController.m in Sources */, - A6EC5B7410A4B0C60091B7F9 /* AdWhirlAdNetworkConfig.m in Sources */, - A6EC5B7510A4B0C60091B7F9 /* AdWhirlAdNetworkRegistry.m in Sources */, - A6EC5B7610A4B0C60091B7F9 /* AdWhirlConfig.m in Sources */, - A6EC5B7710A4B0C60091B7F9 /* AdWhirlCustomAdView.m in Sources */, - A6EC5B7810A4B0C60091B7F9 /* AdWhirlError.m in Sources */, - A6EC5B7910A4B0C60091B7F9 /* AdWhirlLog.m in Sources */, - A6EC5B7A10A4B0C60091B7F9 /* AdWhirlView.m in Sources */, - A6EC5B7C10A4B0C60091B7F9 /* AdWhirlWebBrowserController.m in Sources */, - A6EC5B7D10A4B0C60091B7F9 /* ARRollerView.m in Sources */, - A6EC5CB910A4DCA00091B7F9 /* AdWhirlAdapterCustom.m in Sources */, - A6EC5CBA10A4DCA00091B7F9 /* AdWhirlAdapterGeneric.m in Sources */, - A6EC5CBB10A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter.m in Sources */, - A6EC5CBC10A4DCA00091B7F9 /* AdWhirlAdNetworkAdapter+Helpers.m in Sources */, - A6EC5D1A10A4EB710091B7F9 /* SimpleViewController.m in Sources */, - A63C952410A8762800E81577 /* TableController.m in Sources */, - A630FD61110FABAB00D6740A /* BottomBannerController.m in Sources */, - A6A7997D1120D36A00A00FD8 /* LocationController.m in Sources */, - A6F6CC7A1149A8B500DFFFEA /* ModalViewController.m in Sources */, - A6ED4928114F0131002C57E6 /* CDataScanner.m in Sources */, - A6ED4929114F0131002C57E6 /* CDataScanner_Extensions.m in Sources */, - A6ED492A114F0131002C57E6 /* NSCharacterSet_Extensions.m in Sources */, - A6ED492B114F0131002C57E6 /* NSDictionary_JSONExtensions.m in Sources */, - A6ED492C114F0131002C57E6 /* NSScanner_Extensions.m in Sources */, - A6ED492D114F0131002C57E6 /* CJSONDataSerializer.m in Sources */, - A6ED492E114F0131002C57E6 /* CJSONDeserializer.m in Sources */, - A6ED492F114F0131002C57E6 /* CJSONScanner.m in Sources */, - A6ED4930114F0131002C57E6 /* CJSONSerializer.m in Sources */, - A6ED4931114F0131002C57E6 /* CSerializedJSONData.m in Sources */, - A62A0D36118F7D810013A568 /* AdWhirlAdapterEvent.m in Sources */, - A6051FF011C7DF6600451D6F /* AdWhirlAdapterIAd.m in Sources */, - A605201311C7E20400451D6F /* AdWhirlAdapterMdotM.m in Sources */, - 1B8B5F0F11E7EE8D002762E3 /* AdWhirlAdapterZestADZ.m in Sources */, - 1BF8DFD111EB855100C2284D /* AdWhirlAdapterGreystripe.m in Sources */, - 1B7CC26C11EFB400004F4937 /* AdWhirlAdapterMillennial.m in Sources */, - 1B7CC26D11EFB403004F4937 /* AdWhirlAdapterVideoEgg.m in Sources */, - 1B42692611FE25A500910F21 /* AdWhirlAdapterJumpTap.m in Sources */, - 1B6898DD120C916A0080EAC1 /* AdWhirlClassWrapper.m in Sources */, - 1B183AA81211C7C60026647E /* UIColor+AdWhirlConfig.m in Sources */, - 1B6CE7CA121498DA00E44A28 /* AdWhirlConfigStore.m in Sources */, - 1B6CE8921214AA6A00E44A28 /* AWNetworkReachabilityWrapper.m in Sources */, - 1B91B4B71255596900C665F7 /* AdWhirlAdapterInMobi.m in Sources */, - 6B42360512EA0D41001F5395 /* AdWhirlAdapterOneRiot.m in Sources */, - 6B629D491332B9B7000D019C /* AdWhirlAdapterGoogleAdMobAds.m in Sources */, - 20B2547313A03F8300F33931 /* AdWhirlAdapterNexage.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 1D6058940D05DD3E006BFB54 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = AdWhirlSDK2_Sample_Prefix.pch; - INFOPLIST_FILE = "AdWhirlSDK2_Sample-Info.plist"; - LIBRARY_SEARCH_PATHS = ( - "\"$(SRCROOT)/../AdNetworkLibs/MillennialMedia\"", - "\"$(SRCROOT)/../AdNetworkLibs/QuattroWirelessLib\"", - "\"$(SRCROOT)/../AdNetworkLibs/ZestADZ\"", - "\"$(SRCROOT)/../AdNetworkLibs/Greystripe\"", - "\"$(SRCROOT)/../AdNetworkLibs/VEAdFrames\"", - "\"$(SRCROOT)/../AdNetworkLibs/JumptapApi\"", - "\"$(SRCROOT)/../AdNetworkLibs/OneRiot\"", - "\"$(SRCROOT)/../AdNetworkLibs/Google\"", - "\"$(SRCROOT)/../AdNetworkLibs/InMobi\"", - "\"$(SRCROOT)/../AdNetworkLibs/Nexage\"", - ); - PRODUCT_NAME = AdWhirlSDK2; - }; - name = Debug; - }; - 1D6058950D05DD3E006BFB54 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COPY_PHASE_STRIP = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = AdWhirlSDK2_Sample_Prefix.pch; - INFOPLIST_FILE = "AdWhirlSDK2_Sample-Info.plist"; - LIBRARY_SEARCH_PATHS = ( - "\"$(SRCROOT)/../AdNetworkLibs/MillennialMedia\"", - "\"$(SRCROOT)/../AdNetworkLibs/QuattroWirelessLib\"", - "\"$(SRCROOT)/../AdNetworkLibs/ZestADZ\"", - "\"$(SRCROOT)/../AdNetworkLibs/Greystripe\"", - "\"$(SRCROOT)/../AdNetworkLibs/VEAdFrames\"", - "\"$(SRCROOT)/../AdNetworkLibs/JumptapApi\"", - "\"$(SRCROOT)/../AdNetworkLibs/OneRiot\"", - "\"$(SRCROOT)/../AdNetworkLibs/Google\"", - "\"$(SRCROOT)/../AdNetworkLibs/InMobi\"", - "\"$(SRCROOT)/../AdNetworkLibs/Nexage\"", - ); - PRODUCT_NAME = AdWhirlSDK2; - }; - name = Release; - }; - C01FCF4F08A954540054247B /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_PREPROCESSOR_DEFINITIONS = "ADWHIRL_DEBUG=1"; - GCC_TREAT_WARNINGS_AS_ERRORS = YES; - GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 3.0; - OTHER_LDFLAGS = ( - "-ObjC", - "-all_load", - ); - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Debug; - }; - C01FCF5008A954540054247B /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 3.0; - OTHER_LDFLAGS = ( - "-ObjC", - "-all_load", - ); - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "AdWhirlSDK2_Sample" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1D6058940D05DD3E006BFB54 /* Debug */, - 1D6058950D05DD3E006BFB54 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - C01FCF4E08A954540054247B /* Build configuration list for PBXProject "AdWhirlSDK2_Sample" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C01FCF4F08A954540054247B /* Debug */, - C01FCF5008A954540054247B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; -} diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/AdWhirlSDK2_Sample_Prefix.pch b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/AdWhirlSDK2_Sample_Prefix.pch deleted file mode 100644 index 411732755..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/AdWhirlSDK2_Sample_Prefix.pch +++ /dev/null @@ -1,10 +0,0 @@ -// -// Prefix header for all source files of the 'AdWhirlSDK2_Sample' target in the 'AdWhirlSDK2_Sample' project -// - -#import - -#ifdef __OBJC__ - #import - #import -#endif diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/BottomBannerController.xib b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/BottomBannerController.xib deleted file mode 100644 index 1623dc115..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/BottomBannerController.xib +++ /dev/null @@ -1,555 +0,0 @@ - - - - 768 - 10D573 - 762 - 1038.29 - 460.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 87 - - - YES - - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - YES - - - - YES - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 292 - - YES - - - 295 - {{20, 20}, {280, 37}} - - NO - NO - 607701 - IBCocoaTouchFramework - 0 - 0 - - Helvetica-Bold - 15 - 16 - - 1 - Request New Ad - - 3 - MQA - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - 3 - MC41AA - - - - - 295 - {{20, 85}, {280, 37}} - - NO - NO - 607702 - IBCocoaTouchFramework - 0 - 0 - - 1 - Roll Over - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - 295 - {{20, 158}, {280, 153}} - - NO - YES - 1337 - NO - IBCocoaTouchFramework - Requesting Ad... - - Helvetica-Bold - 17 - 16 - - - 1 - MC4xMjc3MzcyMjYzIDAgMAA - - - 1 - 10 - 9 - 1 - - - {320, 416} - - - 10 - - 549453824 - {84, 1} - - YES - - YES - - - - TU0AKgAAAVjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P8ADQEAAAMAAAABAFQAAAEB -AAMAAAABAAEAAAECAAMAAAAEAAAB+gEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES -AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABAAEAAAEXAAQAAAABAAABUAEcAAMAAAABAAEAAAFS -AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA - - - - - - 3 - MCAwAA - - - groupTableViewBackgroundColor - - - - NO - - IBCocoaTouchFramework - - - - - YES - - - view - - - - 12 - - - - requestNewAd: - - - 7 - - 13 - - - - rollOver: - - - 7 - - 14 - - - - - YES - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 8 - - - YES - - - - - - - - 9 - - - - - 10 - - - - - 11 - - - - - - - YES - - YES - -1.CustomClassName - -2.CustomClassName - 10.IBPluginDependency - 11.IBPluginDependency - 8.IBEditorWindowLastContentRect - 8.IBPluginDependency - 9.IBPluginDependency - - - YES - BottomBannerController - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - {{92, 165}, {320, 480}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - YES - - - - - YES - - - YES - - - - 14 - - - - YES - - BottomBannerController - SimpleViewController - - IBProjectSource - Classes/BottomBannerController.h - - - - SimpleViewController - UIViewController - - YES - - YES - requestNewAd: - rollOver: - showModalView: - toggleRefreshAd: - - - YES - id - id - id - id - - - - IBProjectSource - Classes/SimpleViewController.h - - - - - YES - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSNetServices.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSPort.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSStream.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSXMLParser.h - - - - NSObject - - IBFrameworkSource - QuartzCore.framework/Headers/CAAnimation.h - - - - NSObject - - IBFrameworkSource - QuartzCore.framework/Headers/CALayer.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIAccessibility.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UINibLoading.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIResponder.h - - - - UIButton - UIControl - - IBFrameworkSource - UIKit.framework/Headers/UIButton.h - - - - UIControl - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIControl.h - - - - UILabel - UIView - - IBFrameworkSource - UIKit.framework/Headers/UILabel.h - - - - UIResponder - NSObject - - - - UISearchBar - UIView - - IBFrameworkSource - UIKit.framework/Headers/UISearchBar.h - - - - UISearchDisplayController - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UISearchDisplayController.h - - - - UIView - - IBFrameworkSource - UIKit.framework/Headers/UITextField.h - - - - UIView - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIView.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UINavigationController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UITabBarController.h - - - - UIViewController - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - AdWhirlSDK2_Sample-3_x.xcodeproj - 3 - 87 - - diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/AdWhirlSDK2_SampleAppDelegate.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/AdWhirlSDK2_SampleAppDelegate.h deleted file mode 100644 index d72597d31..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/AdWhirlSDK2_SampleAppDelegate.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - - AdWhirlSDK2_SampleAppDelegate.h - - Copyright 2009 AdMob, 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. - -*/ - -@interface AdWhirlSDK2_SampleAppDelegate : NSObject { - UIWindow *window; - UINavigationController *navigationController; -} - -@property (nonatomic, retain) IBOutlet UIWindow *window; -@property (nonatomic, retain) IBOutlet UINavigationController *navigationController; - -@end - diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/AdWhirlSDK2_SampleAppDelegate.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/AdWhirlSDK2_SampleAppDelegate.m deleted file mode 100644 index eb3b22cb8..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/AdWhirlSDK2_SampleAppDelegate.m +++ /dev/null @@ -1,59 +0,0 @@ -/* - - AdWhirlSDK2_SampleAppDelegate.m - - Copyright 2009 AdMob, 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 "AdWhirlSDK2_SampleAppDelegate.h" -#import "RootViewController.h" -#import "AdWhirlLog.h" - -@implementation AdWhirlSDK2_SampleAppDelegate - -@synthesize window; -@synthesize navigationController; - - -#pragma mark - -#pragma mark Application lifecycle - -- (void)applicationDidFinishLaunching:(UIApplication *)application { -#ifdef ADWHIRL_DEBUG - AWLogSetLogLevel(AWLogLevelDebug); -#endif - [window addSubview:[navigationController view]]; - [window makeKeyAndVisible]; -} - - -- (void)applicationWillTerminate:(UIApplication *)application { - // Save data if appropriate -} - - -#pragma mark - -#pragma mark Memory management - -- (void)dealloc { - [navigationController release]; - [window release]; - [super dealloc]; -} - - -@end - diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/BottomBannerController.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/BottomBannerController.h deleted file mode 100644 index d5029a372..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/BottomBannerController.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// BottomBannerController.h -// AdWhirlSDK2_Sample -// -// Created by Nigel Choi on 1/26/10. -// Copyright 2010 Admob. Inc.. All rights reserved. -// - -#import -#import "SimpleViewController.h" - -@interface BottomBannerController : SimpleViewController { - -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/BottomBannerController.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/BottomBannerController.m deleted file mode 100644 index 70e3f8354..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/BottomBannerController.m +++ /dev/null @@ -1,116 +0,0 @@ -// -// BottomBannerController.m -// AdWhirlSDK2_Sample -// -// Created by Nigel Choi on 1/26/10. -// Copyright 2010 Admob. Inc.. All rights reserved. -// - -#import "BottomBannerController.h" -#import "AdWhirlView.h" - -#define BOTBVIEW_BUTTON_1_TAG 607701 -#define BOTBVIEW_BUTTON_2_TAG 607702 -#define BOTBVIEW_BUTTON_1_OFFSET 15 -#define BOTBVIEW_BUTTON_2_OFFSET 37 -#define BOTBVIEW_LABEL_OFFSET 67 -#define BOTBVIEW_LABEL_HDIFF 45 - -@implementation BottomBannerController - -- (id)init { - if (self = [super initWithNibName:@"BottomBannerController" bundle:nil]) { - currLayoutOrientation = UIInterfaceOrientationPortrait; // nib file defines a portrait view - self.title = @"Bottom Banner"; - } - return self; -} - -- (void)viewDidLoad { - [super viewDidLoad]; -} - -- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation - duration:(NSTimeInterval)duration { - [self adjustLayoutToOrientation:interfaceOrientation]; -} - -- (void)adjustLayoutToOrientation:(UIInterfaceOrientation)newOrientation { - if (UIInterfaceOrientationIsPortrait(currLayoutOrientation) - && UIInterfaceOrientationIsLandscape(newOrientation)) { - UIView *button1 = [self.view viewWithTag:BOTBVIEW_BUTTON_1_TAG]; - UIView *button2 = [self.view viewWithTag:BOTBVIEW_BUTTON_2_TAG]; - assert(button1 != nil); - assert(button2 != nil); - CGPoint newCenter = button1.center; - newCenter.y -= BOTBVIEW_BUTTON_1_OFFSET; - button1.center = newCenter; - newCenter = button2.center; - newCenter.y -= BOTBVIEW_BUTTON_2_OFFSET; - button2.center = newCenter; - CGRect newFrame = self.label.frame; - newFrame.size.height -= 45; - newFrame.origin.y -= BOTBVIEW_LABEL_OFFSET; - self.label.frame = newFrame; - } - else if (UIInterfaceOrientationIsLandscape(currLayoutOrientation) - && UIInterfaceOrientationIsPortrait(newOrientation)) { - UIView *button1 = [self.view viewWithTag:BOTBVIEW_BUTTON_1_TAG]; - UIView *button2 = [self.view viewWithTag:BOTBVIEW_BUTTON_2_TAG]; - assert(button1 != nil); - assert(button2 != nil); - CGPoint newCenter = button1.center; - newCenter.y += BOTBVIEW_BUTTON_1_OFFSET; - button1.center = newCenter; - newCenter = button2.center; - newCenter.y += BOTBVIEW_BUTTON_2_OFFSET; - button2.center = newCenter; - CGRect newFrame = self.label.frame; - newFrame.size.height += 45; - newFrame.origin.y += BOTBVIEW_LABEL_OFFSET; - self.label.frame = newFrame; - } - CGRect adFrame = [adView frame]; - CGRect screenBounds = [[UIScreen mainScreen] bounds]; - if (UIInterfaceOrientationIsPortrait(newOrientation)) { - adFrame.origin.y = screenBounds.size.height - - adFrame.size.height - - self.navigationController.navigationBar.frame.size.height - - [UIApplication sharedApplication].statusBarFrame.size.height; - [adView setFrame:adFrame]; - } - else if (UIInterfaceOrientationIsLandscape(newOrientation)) { - adFrame.origin.y = screenBounds.size.width - - adFrame.size.height - - self.navigationController.navigationBar.frame.size.height - - [UIApplication sharedApplication].statusBarFrame.size.width; - [adView setFrame:adFrame]; - } - currLayoutOrientation = newOrientation; -} - -- (void)adjustAdSize { - [UIView beginAnimations:@"AdResize" context:nil]; - [UIView setAnimationDuration:0.7]; - CGSize adSize = [adView actualAdSize]; - CGRect newFrame = adView.frame; - newFrame.size.height = adSize.height; - newFrame.size.width = adSize.width; - newFrame.origin.x = (self.view.bounds.size.width - adSize.width)/2; - newFrame.origin.y = self.view.bounds.size.height - adSize.height; - adView.frame = newFrame; - [UIView commitAnimations]; -} - -- (void)dealloc { - [super dealloc]; -} - -#pragma mark AdWhirlDelegate methods - -- (NSUInteger)millennialMediaAdType { - return 2; -} - -@end - diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/LocationController.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/LocationController.h deleted file mode 100644 index 021fc3447..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/LocationController.h +++ /dev/null @@ -1,21 +0,0 @@ -// -// LocationController.h -// AdWhirlSDK2_Sample -// -// Created by Nigel Choi on 2/8/10. -// Copyright 2010 Admob. Inc.. All rights reserved. -// - -#import -#import "TableController.h" - -@interface LocationController : TableController { - CLLocationManager *locationManager; - UIInterfaceOrientation currLayoutOrientation; -} - -@property (nonatomic,readonly) UILabel *locLabel; - -- (void)adjustLayoutToOrientation:(UIInterfaceOrientation)newOrientation; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/LocationController.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/LocationController.m deleted file mode 100644 index a10d4d9d0..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/LocationController.m +++ /dev/null @@ -1,104 +0,0 @@ -// -// LocationController.m -// AdWhirlSDK2_Sample -// -// Created by Nigel Choi on 2/8/10. -// Copyright 2010 Admob. Inc.. All rights reserved. -// - -#import "LocationController.h" -#import "AdWhirlLog.h" - -#define LOCVIEW_LOCLABEL_OFFSET 79 -#define LOCVIEW_LABEL_OFFSET 87 -#define LOCVIEW_LABEL_HDIFF 63 - -@implementation LocationController - -- (id)init { - if (self = [super initWithNibName:@"LocationController" bundle:nil]) { - locationManager = [[CLLocationManager alloc] init]; - locationManager.delegate = self; - [locationManager startUpdatingLocation]; - currLayoutOrientation = UIInterfaceOrientationPortrait; // nib file defines a portrait view - } - return self; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - [self adjustLayoutToOrientation:self.interfaceOrientation]; -} - -- (UILabel *)locLabel { - return (UILabel *)[self.view viewWithTag:103]; -} - -- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation - duration:(NSTimeInterval)duration { - [self adjustLayoutToOrientation:interfaceOrientation]; -} - -- (void)adjustLayoutToOrientation:(UIInterfaceOrientation)newOrientation { - UILabel *ll = self.locLabel; - UILabel *label = self.label; - assert(ll != nil); - assert(label != nil); - if (UIInterfaceOrientationIsPortrait(currLayoutOrientation) - && UIInterfaceOrientationIsLandscape(newOrientation)) { - CGPoint newCenter = ll.center; - newCenter.y -= LOCVIEW_LOCLABEL_OFFSET; - ll.center = newCenter; - CGRect newFrame = label.frame; - newFrame.origin.y -= LOCVIEW_LABEL_OFFSET; - newFrame.size.height -= LOCVIEW_LABEL_HDIFF; - label.frame = newFrame; - } - else if (UIInterfaceOrientationIsLandscape(currLayoutOrientation) - && UIInterfaceOrientationIsPortrait(newOrientation)) { - CGPoint newCenter = ll.center; - newCenter.y += LOCVIEW_LOCLABEL_OFFSET; - ll.center = newCenter; - CGRect newFrame = label.frame; - newFrame.origin.y += LOCVIEW_LABEL_OFFSET; - newFrame.size.height += LOCVIEW_LABEL_HDIFF; - label.frame = newFrame; - } - currLayoutOrientation = newOrientation; -} - -- (void)dealloc { - locationManager.delegate = nil; - [locationManager release], locationManager = nil; - [super dealloc]; -} - - -#pragma mark AdWhirlDelegate methods - -- (CLLocation *)locationInfo { - CLLocation *loc = [locationManager location]; - AWLogDebug(@"AdWhirl asking for location: %@", loc); - return loc; -} - - -#pragma mark CLLocationManagerDelegate methods - -- (void)locationManager:(CLLocationManager *)manager - didFailWithError:(NSError *)error { - [locationManager stopUpdatingLocation]; - self.locLabel.text = [NSString stringWithFormat:@"Error getting location: %@", - [error localizedDescription]]; - AWLogError(@"Failed getting location: %@", error); -} - -- (void)locationManager:(CLLocationManager *)manager - didUpdateToLocation:(CLLocation *)newLocation - fromLocation:(CLLocation *)oldLocation { - self.locLabel.text = [NSString stringWithFormat:@"%lf %lf", - newLocation.coordinate.longitude, - newLocation.coordinate.latitude]; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/ModalViewController.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/ModalViewController.h deleted file mode 100644 index cf231196e..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/ModalViewController.h +++ /dev/null @@ -1,18 +0,0 @@ -// -// ModalViewController.h -// AdWhirlSDK2_Sample -// -// Created by Nigel Choi on 3/11/10. -// Copyright 2010 Admob. Inc. All rights reserved. -// - -#import - - -@interface ModalViewController : UIViewController { - -} - -- (IBAction)dismiss:(id)sender; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/ModalViewController.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/ModalViewController.m deleted file mode 100644 index 041d0e72c..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/ModalViewController.m +++ /dev/null @@ -1,68 +0,0 @@ -// -// ModalViewController.m -// AdWhirlSDK2_Sample -// -// Created by Nigel Choi on 3/11/10. -// Copyright 2010 Admob. Inc. All rights reserved. -// - -#import "ModalViewController.h" - - -@implementation ModalViewController - -- (id)init { - if (self = [super initWithNibName:@"ModalViewController" bundle:nil]) { - self.title = @"Modal View"; - if ([self respondsToSelector:@selector(setModalTransitionStyle)]) { - [self setModalTransitionStyle:UIModalTransitionStyleCoverVertical]; - } - } - return self; -} - -/* - // The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { - if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { - // Custom initialization - } - return self; -} -*/ - -/* -// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. -- (void)viewDidLoad { - [super viewDidLoad]; -} -*/ - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return YES; -} - -- (IBAction)dismiss:(id)sender { - [self dismissModalViewControllerAnimated:YES]; -} - -- (void)didReceiveMemoryWarning { - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. -} - -- (void)viewDidUnload { - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - - -- (void)dealloc { - [super dealloc]; -} - - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/RootViewController.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/RootViewController.h deleted file mode 100644 index aaafd0854..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/RootViewController.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - - RootViewController.h - - Copyright 2009 AdMob, 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 "AdWhirlDelegateProtocol.h" - -@interface RootViewController : UITableViewController { - BOOL configFetched; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/RootViewController.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/RootViewController.m deleted file mode 100644 index 57aedd65e..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/RootViewController.m +++ /dev/null @@ -1,244 +0,0 @@ -/* - - RootViewController.m - - Copyright 2009 AdMob, 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 "AdWhirlSDK2_SampleAppDelegate.h" -#import "RootViewController.h" -#import "SimpleViewController.h" -#import "TableController.h" -#import "BottomBannerController.h" -#import "LocationController.h" -#import "AdWhirlView.h" -#import "SampleConstants.h" - -#define CONFIG_PREFETCH_ROW 4 - -@implementation RootViewController - -/* -- (void)viewDidLoad { - [super viewDidLoad]; - - // Uncomment the following line to display an Edit button in the navigation bar for this view controller. - // self.navigationItem.rightBarButtonItem = self.editButtonItem; -} -*/ - -/* -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; -} -*/ -/* -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; -} -*/ -/* -- (void)viewWillDisappear:(BOOL)animated { - [super viewWillDisappear:animated]; -} -*/ -/* -- (void)viewDidDisappear:(BOOL)animated { - [super viewDidDisappear:animated]; -} -*/ - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return YES; -} - -- (void)didReceiveMemoryWarning { - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. -} - -- (void)viewDidUnload { - // Release anything that can be recreated in viewDidLoad or on demand. - // e.g. self.myOutlet = nil; -} - - -#pragma mark Table view methods - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return 1; -} - - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return CONFIG_PREFETCH_ROW+1; -} - - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - - static NSString *CellIdentifier = @"Cell"; - - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; - if (cell == nil) { - if ([UITableViewCell instancesRespondToSelector:@selector(initWithStyle:reuseIdentifier:)]) { - // iPhone SDK 3.0 - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; - } - else { - // iPhone SDK 2.2.1 - cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; - } - } - - switch (indexPath.row) { - case 0: - if ([cell respondsToSelector:@selector(textLabel)]) { - // iPhone SDK 3.0 - cell.textLabel.text = @"Simple View"; - } - else { - // iPhone SDK 2.2.1 - cell.text = @"Simple View"; - } - break; - case 1: - if ([cell respondsToSelector:@selector(textLabel)]) { - // iPhone SDK 3.0 - cell.textLabel.text = @"Table Integration"; - } - else { - // iPhone SDK 2.2.1 - cell.text = @"Table Integration"; - } - break; - case 2: - if ([cell respondsToSelector:@selector(textLabel)]) { - // iPhone SDK 3.0 - cell.textLabel.text = @"Bottom Banner"; - } - else { - // iPhone SDK 2.2.1 - cell.text = @"Bottom Banner"; - } - break; - case 3: - if ([cell respondsToSelector:@selector(textLabel)]) { - // iPhone SDK 3.0 - cell.textLabel.text = @"Table w/ Location Info"; - } - else { - // iPhone SDK 2.2.1 - cell.text = @"Table w/ Location Info"; - } - break; - case CONFIG_PREFETCH_ROW: - { - NSString *configText; - if (configFetched) { - configText = @"Update Config"; - } - else { - configText = @"Prefetch Config"; - } - if ([cell respondsToSelector:@selector(textLabel)]) { - // iPhone SDK 3.0 - cell.textLabel.text = configText; - } - else { - // iPhone SDK 2.2.1 - cell.text = configText; - } - break; - } - } - - return cell; -} - - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - switch (indexPath.row) { - case 0: - { - SimpleViewController *simple = [[SimpleViewController alloc] init]; - [self.navigationController pushViewController:simple animated:YES]; - [simple release]; - break; - } - case 1: - { - TableController *table = [[TableController alloc] init]; - [self.navigationController pushViewController:table animated:YES]; - [table release]; - break; - } - case 2: - { - BottomBannerController *bbc = [[BottomBannerController alloc] init]; - [self.navigationController pushViewController:bbc animated:YES]; - [bbc release]; - break; - } - case 3: - { - LocationController *loc = [[LocationController alloc] init]; - [self.navigationController pushViewController:loc animated:YES]; - [loc release]; - break; - } - case CONFIG_PREFETCH_ROW: - if (configFetched) { - [AdWhirlView updateAdWhirlConfigWithDelegate:self]; - } - else { - [AdWhirlView startPreFetchingConfigurationDataWithDelegate:self]; - } - break; - } -} - - -- (void)dealloc { - [super dealloc]; -} - - -#pragma mark AdWhirlDelegate methods - -- (NSString *)adWhirlApplicationKey { - return kSampleAppKey; -} - -- (UIViewController *)viewControllerForPresentingModalView { - return [((AdWhirlSDK2_SampleAppDelegate *)[[UIApplication sharedApplication] delegate]) navigationController]; -} - -- (NSURL *)adWhirlConfigURL { - return [NSURL URLWithString:kSampleConfigURL]; -} - -- (void)adWhirlDidReceiveConfig:(AdWhirlView *)adWhirlView { - NSIndexPath *indexPath = [NSIndexPath indexPathForRow:CONFIG_PREFETCH_ROW inSection:0]; - [self.tableView deselectRowAtIndexPath:indexPath animated:YES]; - configFetched = YES; - [self.tableView reloadData]; -} - -@end - diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/SampleConstants.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/SampleConstants.h deleted file mode 100644 index 7eac74512..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/SampleConstants.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - - SampleConstants.h - - Copyright 2009 AdMob, 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. - -*/ - -#if !defined(kSampleAppKey) - #error "You must define kSampleAppKey as your AdWhirl SDK Key" -#endif - -#define kSampleConfigURL @"http://mob.adwhirl.com/getInfo.php" -#define kSampleImpMetricURL @"http://met.adwhirl.com/exmet.php" -#define kSampleClickMetricURL @"http://met.adwhirl.com/exclick.php" -#define kSampleCustomAdURL @"http://mob.adwhirl.com/custom.php" diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/SimpleViewController.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/SimpleViewController.h deleted file mode 100644 index 526349c22..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/SimpleViewController.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - - SimpleViewController.h - - Copyright 2009 AdMob, 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 -#import "AdWhirlDelegateProtocol.h" - -@class AdWhirlView; -@interface SimpleViewController : UIViewController { - AdWhirlView *adView; - UIInterfaceOrientation currLayoutOrientation; -} - -- (IBAction)requestNewAd:(id)sender; -- (IBAction)requestNewConfig:(id)sender; -- (IBAction)rollOver:(id)sender; -- (IBAction)showModalView:(id)sender; -- (IBAction)toggleRefreshAd:(id)sender; -- (void)adjustLayoutToOrientation:(UIInterfaceOrientation)newOrientation; -- (void)adjustAdSize; - -@property (nonatomic,retain) AdWhirlView *adView; -@property (nonatomic,readonly) UILabel *label; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/SimpleViewController.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/SimpleViewController.m deleted file mode 100644 index 1890cbe4e..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/SimpleViewController.m +++ /dev/null @@ -1,441 +0,0 @@ -/* - - SimpleViewController.m - - Copyright 2009 AdMob, 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 "AdWhirlSDK2_SampleAppDelegate.h" -#import "SimpleViewController.h" -#import "AdWhirlView.h" -#import "AdWhirlView+.h" -#import "SampleConstants.h" -#import "ModalViewController.h" -#import "AdWhirlLog.h" - -#define SIMPVIEW_BUTTON_1_TAG 607701 -#define SIMPVIEW_BUTTON_2_TAG 607702 -#define SIMPVIEW_BUTTON_3_TAG 607703 -#define SIMPVIEW_BUTTON_4_TAG 607704 -#define SIMPVIEW_SWITCH_1_TAG 706613 -#define SIMPVIEW_LABEL_1_TAG 7066130 -#define SIMPVIEW_BUTTON_1_OFFSET 46 -#define SIMPVIEW_BUTTON_2_OFFSET 46 -#define SIMPVIEW_BUTTON_3_OFFSET 66 -#define SIMPVIEW_BUTTON_4_OFFSET 86 -#define SIMPVIEW_SWITCH_1_OFFSET 69 -#define SIMPVIEW_LABEL_1_OFFSET 43 -#define SIMPVIEW_LABEL_1_OFFSETX 60 -#define SIMPVIEW_LABEL_OFFSET 94 -#define SIMPVIEW_LABEL_HDIFF 45 - -@implementation SimpleViewController - -@synthesize adView; - -- (id)init { - if (self = [super initWithNibName:@"SimpleViewController" bundle:nil]) { - currLayoutOrientation = UIInterfaceOrientationPortrait; // nib file defines a portrait view - self.title = @"Simple View"; - } - return self; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - self.adView = [AdWhirlView requestAdWhirlViewWithDelegate:self]; - self.adView.autoresizingMask = - UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin; - [self.view addSubview:self.adView]; - - if (getenv("ADWHIRL_FAKE_DARTS")) { - // To make ad network selection deterministic - const char *dartcstr = getenv("ADWHIRL_FAKE_DARTS"); - NSArray *rawdarts = [[NSString stringWithCString:dartcstr] - componentsSeparatedByString:@" "]; - NSMutableArray *darts - = [[NSMutableArray alloc] initWithCapacity:[rawdarts count]]; - for (NSString *dartstr in rawdarts) { - if ([dartstr length] == 0) { - continue; - } - [darts addObject:[NSNumber numberWithDouble:[dartstr doubleValue]]]; - } - self.adView.testDarts = darts; - } - - UIDevice *device = [UIDevice currentDevice]; - if ([device respondsToSelector:@selector(isMultitaskingSupported)] && - [device isMultitaskingSupported]) { - [[NSNotificationCenter defaultCenter] - addObserver:self - selector:@selector(enterForeground:) - name:UIApplicationWillEnterForegroundNotification - object:nil]; - } -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewDidAppear:animated]; - [self adjustLayoutToOrientation:self.interfaceOrientation]; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)io { - return YES; -} - -- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation - duration:(NSTimeInterval)duration { - [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; - [self.adView rotateToOrientation:toInterfaceOrientation]; - [self adjustAdSize]; -} - -- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)io - duration:(NSTimeInterval)duration { - [self adjustLayoutToOrientation:io]; -} - -- (void)adjustLayoutToOrientation:(UIInterfaceOrientation)newOrientation { - UIView *button1 = [self.view viewWithTag:SIMPVIEW_BUTTON_1_TAG]; - UIView *button2 = [self.view viewWithTag:SIMPVIEW_BUTTON_2_TAG]; - UIView *button3 = [self.view viewWithTag:SIMPVIEW_BUTTON_3_TAG]; - UIView *button4 = [self.view viewWithTag:SIMPVIEW_BUTTON_4_TAG]; - UIView *switch1 = [self.view viewWithTag:SIMPVIEW_SWITCH_1_TAG]; - UIView *label1 = [self.view viewWithTag:SIMPVIEW_LABEL_1_TAG]; - assert(button1 != nil); - assert(button2 != nil); - assert(button3 != nil); - assert(button4 != nil); - assert(switch1 != nil); - assert(label1 != nil); - if (UIInterfaceOrientationIsPortrait(currLayoutOrientation) - && UIInterfaceOrientationIsLandscape(newOrientation)) { - CGPoint newCenter = button1.center; - newCenter.y -= SIMPVIEW_BUTTON_1_OFFSET; - button1.center = newCenter; - newCenter = button2.center; - newCenter.y -= SIMPVIEW_BUTTON_2_OFFSET; - button2.center = newCenter; - newCenter = button3.center; - newCenter.y -= SIMPVIEW_BUTTON_3_OFFSET; - button3.center = newCenter; - newCenter = button4.center; - newCenter.y -= SIMPVIEW_BUTTON_4_OFFSET; - button4.center = newCenter; - newCenter = switch1.center; - newCenter.y -= SIMPVIEW_SWITCH_1_OFFSET; - switch1.center = newCenter; - newCenter = label1.center; - newCenter.y -= SIMPVIEW_LABEL_1_OFFSET; - newCenter.x += SIMPVIEW_LABEL_1_OFFSETX; - label1.center = newCenter; - CGRect newFrame = self.label.frame; - newFrame.size.height -= 45; - newFrame.origin.y -= SIMPVIEW_LABEL_OFFSET; - self.label.frame = newFrame; - } - else if (UIInterfaceOrientationIsLandscape(currLayoutOrientation) - && UIInterfaceOrientationIsPortrait(newOrientation)) { - CGPoint newCenter = button1.center; - newCenter.y += SIMPVIEW_BUTTON_1_OFFSET; - button1.center = newCenter; - newCenter = button2.center; - newCenter.y += SIMPVIEW_BUTTON_2_OFFSET; - button2.center = newCenter; - newCenter = button3.center; - newCenter.y += SIMPVIEW_BUTTON_3_OFFSET; - button3.center = newCenter; - newCenter = button4.center; - newCenter.y += SIMPVIEW_BUTTON_4_OFFSET; - button4.center = newCenter; - newCenter = switch1.center; - newCenter.y += SIMPVIEW_SWITCH_1_OFFSET; - switch1.center = newCenter; - newCenter = label1.center; - newCenter.y += SIMPVIEW_LABEL_1_OFFSET; - newCenter.x -= SIMPVIEW_LABEL_1_OFFSETX; - label1.center = newCenter; - CGRect newFrame = self.label.frame; - newFrame.size.height += 45; - newFrame.origin.y += SIMPVIEW_LABEL_OFFSET; - self.label.frame = newFrame; - } - currLayoutOrientation = newOrientation; -} - -- (void)adjustAdSize { - [UIView beginAnimations:@"AdResize" context:nil]; - [UIView setAnimationDuration:0.7]; - CGSize adSize = [adView actualAdSize]; - CGRect newFrame = adView.frame; - newFrame.size.height = adSize.height; - newFrame.size.width = adSize.width; - newFrame.origin.x = (self.view.bounds.size.width - adSize.width)/2; - adView.frame = newFrame; - [UIView commitAnimations]; -} - -- (void)didReceiveMemoryWarning { - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. -} - -- (void)viewDidUnload { - // remove all notification for self - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - -- (UILabel *)label { - return (UILabel *)[self.view viewWithTag:1337]; -} - -- (void)dealloc { - self.adView.delegate = nil; - self.adView = nil; - [super dealloc]; -} - -#pragma mark Button handlers - -- (IBAction)requestNewAd:(id)sender { - self.label.text = @"Request New Ad pressed! Requesting..."; - [adView requestFreshAd]; -} - -- (IBAction)requestNewConfig:(id)sender { - self.label.text = @"Request New Config pressed! Requesting..."; - [adView updateAdWhirlConfig]; -} - -- (IBAction)rollOver:(id)sender { - self.label.text = @"Roll Over pressed! Requesting..."; - [adView rollOver]; -} - -- (IBAction)showModalView:(id)sender { - ModalViewController *modalViewController = [[[ModalViewController alloc] init] autorelease]; - [self presentModalViewController:modalViewController animated:YES]; -} - -- (IBAction)toggleRefreshAd:(id)sender { - UISwitch *switch1 = (UISwitch *)[self.view viewWithTag:SIMPVIEW_SWITCH_1_TAG]; - if (switch1.on) { - [adView doNotIgnoreAutoRefreshTimer]; - } - else { - [adView ignoreAutoRefreshTimer]; - } -} - -#pragma mark AdWhirlDelegate methods - -- (NSString *)adWhirlApplicationKey { - return kSampleAppKey; -} - -- (UIViewController *)viewControllerForPresentingModalView { - return [((AdWhirlSDK2_SampleAppDelegate *)[[UIApplication sharedApplication] delegate]) navigationController]; -} - -- (NSURL *)adWhirlConfigURL { - return [NSURL URLWithString:kSampleConfigURL]; -} - -- (NSURL *)adWhirlImpMetricURL { - return [NSURL URLWithString:kSampleImpMetricURL]; -} - -- (NSURL *)adWhirlClickMetricURL { - return [NSURL URLWithString:kSampleClickMetricURL]; -} - -- (NSURL *)adWhirlCustomAdURL { - return [NSURL URLWithString:kSampleCustomAdURL]; -} - -- (void)adWhirlDidReceiveAd:(AdWhirlView *)adWhirlView { - self.label.text = [NSString stringWithFormat: - @"Got ad from %@, size %@", - [adWhirlView mostRecentNetworkName], - NSStringFromCGSize([adWhirlView actualAdSize])]; - [self adjustAdSize]; -} - -- (void)adWhirlDidFailToReceiveAd:(AdWhirlView *)adWhirlView usingBackup:(BOOL)yesOrNo { - self.label.text = [NSString stringWithFormat: - @"Failed to receive ad from %@, %@. Error: %@", - [adWhirlView mostRecentNetworkName], - yesOrNo? @"will use backup" : @"will NOT use backup", - adWhirlView.lastError == nil? @"no error" : [adWhirlView.lastError localizedDescription]]; -} - -- (void)adWhirlReceivedRequestForDeveloperToFufill:(AdWhirlView *)adWhirlView { - UILabel *replacement = [[UILabel alloc] initWithFrame:kAdWhirlViewDefaultFrame]; - replacement.backgroundColor = [UIColor redColor]; - replacement.textColor = [UIColor whiteColor]; - replacement.textAlignment = UITextAlignmentCenter; - replacement.text = @"Generic Notification"; - [adWhirlView replaceBannerViewWith:replacement]; - [replacement release]; - [self adjustAdSize]; - self.label.text = @"Generic Notification"; -} - -- (void)adWhirlReceivedNotificationAdsAreOff:(AdWhirlView *)adWhirlView { - self.label.text = @"Ads are off"; -} - -- (void)adWhirlWillPresentFullScreenModal { - NSLog(@"SimpleView: will present full screen modal"); -} - -- (void)adWhirlDidDismissFullScreenModal { - NSLog(@"SimpleView: did dismiss full screen modal"); -} - -- (void)adWhirlDidReceiveConfig:(AdWhirlView *)adWhirlView { - self.label.text = @"Received config. Requesting ad..."; -} - -- (BOOL)adWhirlTestMode { - return NO; -} - -- (UIColor *)adWhirlAdBackgroundColor { - return [UIColor purpleColor]; -} - -- (UIColor *)adWhirlTextColor { - return [UIColor cyanColor]; -} - -- (CLLocation *)locationInfo { - CLLocationManager *locationManager = [[CLLocationManager alloc] init]; - CLLocation *location = [locationManager location]; - [locationManager release]; - return location; -} - -- (NSDate *)dateOfBirth { - NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; - NSDateComponents *comps = [[NSDateComponents alloc] init]; - [comps setYear:1979]; - [comps setMonth:11]; - [comps setDay:6]; - NSDate *date = [gregorian dateFromComponents:comps]; - [gregorian release]; - [comps release]; - return date; -} - -- (NSString *)postalCode { - return @"31337"; -} - -- (NSUInteger)incomeLevel { - return 99999; -} - -- (NSString *)googleAdSenseCompanyName { - return @"Your Company"; -} - -- (NSString *)googleAdSenseAppName { - return @"AdWhirl Sample"; -} - -- (NSString *)googleAdSenseApplicationAppleID { - return @"0"; -} - -- (NSString *)googleAdSenseKeywords { - return @"iphone+development,ad+mediation"; -} - -- (NSURL *)googleAdSenseAppWebContentURL { - return [NSURL URLWithString:@"http://www.adwhirl.com"]; -} - -- (NSArray *)googleAdSenseChannelIDs { - return [NSArray arrayWithObjects:@"0282698142", nil]; -} - -//extern NSString* const kGADAdSenseTextImageAdType; -//- (NSString *)googleAdSenseAdType { -// return kGADAdSenseTextImageAdType; -//} - -- (NSString *)googleAdSenseHostID { - return @"HostID"; -} - -- (UIColor *)googleAdSenseAdTopBackgroundColor { - return [UIColor orangeColor]; -} - -- (UIColor *)googleAdSenseAdBorderColor { - return [UIColor redColor]; -} - -- (UIColor *)googleAdSenseAdLinkColor { - return [UIColor cyanColor]; -} - -- (UIColor *)googleAdSenseAdURLColor { - return [UIColor orangeColor]; -} - -- (UIColor *)googleAdSenseAlternateAdColor { - return [UIColor greenColor]; -} - -- (NSURL *)googleAdSenseAlternateAdURL { - return [NSURL URLWithString:@"http://www.adwhirl.com"]; -} - -- (NSNumber *)googleAdSenseAllowAdsafeMedium { - return [NSNumber numberWithBool:YES]; -} - -#pragma mark event methods - -- (void)performEvent { - self.label.text = @"Event performed"; -} - -- (void)performEvent2:(AdWhirlView *)adWhirlView { - UILabel *replacement = [[UILabel alloc] initWithFrame:kAdWhirlViewDefaultFrame]; - replacement.backgroundColor = [UIColor blackColor]; - replacement.textColor = [UIColor whiteColor]; - replacement.textAlignment = UITextAlignmentCenter; - replacement.text = [NSString stringWithFormat:@"Event performed, view %x", adWhirlView]; - [adWhirlView replaceBannerViewWith:replacement]; - [replacement release]; - [self adjustAdSize]; - self.label.text = [NSString stringWithFormat:@"Event performed, view %x", adWhirlView]; -} - -#pragma mark multitasking methods - -- (void)enterForeground:(NSNotification *)notification { - AWLogDebug(@"SimpleView entering foreground"); - [self.adView updateAdWhirlConfig]; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/TableController.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/TableController.h deleted file mode 100644 index 07b8b1ff0..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/TableController.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - - TableController.h - - Copyright 2009 AdMob, 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 -#import "AdWhirlDelegateProtocol.h" - -@interface TableController : UIViewController { - AdWhirlView *adView; -} - -@property (nonatomic,retain) AdWhirlView *adView; -@property (nonatomic,readonly) UILabel *label; -@property (nonatomic,readonly) UITableView *table; - -- (void)adjustAdSize; - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/TableController.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/TableController.m deleted file mode 100644 index 86a8dc8bc..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/Classes/TableController.m +++ /dev/null @@ -1,339 +0,0 @@ -/* - - TableController.m - - Copyright 2009 AdMob, 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 "AdWhirlSDK2_SampleAppDelegate.h" -#import "TableController.h" -#import "AdWhirlView.h" -#import "SampleConstants.h" - - -@implementation TableController - -@synthesize adView; - -- (id)init { - if (self = [super initWithNibName:@"TableController" bundle:nil]) { - self.title = @"Ad In Table"; - } - return self; -} - -- (void)viewDidLoad { - [super viewDidLoad]; - self.adView = [AdWhirlView requestAdWhirlViewWithDelegate:self]; - self.adView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin; -} - -/* -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; -} -*/ -/* -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; -} -*/ -/* -- (void)viewWillDisappear:(BOOL)animated { - [super viewWillDisappear:animated]; -} -*/ -/* -- (void)viewDidDisappear:(BOOL)animated { - [super viewDidDisappear:animated]; -} -*/ - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return YES; -} - -- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation - duration:(NSTimeInterval)duration { - [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; - [self.adView rotateToOrientation:toInterfaceOrientation]; - [self adjustAdSize]; -} - -- (void)didReceiveMemoryWarning { - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. -} - -- (void)viewDidUnload { - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -- (UILabel *)label { - return (UILabel *)[self.view viewWithTag:1337]; -} - -- (UITableView *)table { - return (UITableView *)[self.view viewWithTag:3337]; -} - -- (void)adjustAdSize { - [UIView beginAnimations:@"AdResize" context:nil]; - [UIView setAnimationDuration:0.7]; - CGSize adSize = [adView actualAdSize]; - CGRect newFrame = adView.frame; - newFrame.size.height = adSize.height; - newFrame.size.width = adSize.width; - newFrame.origin.x = (self.view.bounds.size.width - adSize.width)/2; - adView.frame = newFrame; - [UIView commitAnimations]; -} - -- (void)dealloc { - self.adView.delegate = nil; - self.adView = nil; - [super dealloc]; -} - - -#pragma mark Table view methods - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return 1; -} - - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return 10; -} - - -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - - static NSString *CellIdentifier = @"Cell"; - static NSString *AdCellIdentifier = @"AdCell"; - - NSString *cellId = CellIdentifier; - if (indexPath.row == 0) { - cellId = AdCellIdentifier; - } - - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId]; - if (cell == nil) { - if ([UITableViewCell instancesRespondToSelector:@selector(initWithStyle:reuseIdentifier:)]) { - // iPhone SDK 3.0 - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId] autorelease]; - } - else { - // iPhone SDK 2.2.1 - cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:cellId] autorelease]; - } - if (cellId == AdCellIdentifier) { - [cell.contentView addSubview:adView]; - } - } - - switch (indexPath.row) { - case 0: - break; - case 1: - if ([cell respondsToSelector:@selector(textLabel)]) { - // iPhone SDK 3.0 - cell.textLabel.text = @"Request New Ad"; - } - else { - // iPhone SDK 2.2.1 - cell.text = @"Request New Ad"; - } - break; - case 2: - if ([cell respondsToSelector:@selector(textLabel)]) { - // iPhone SDK 3.0 - cell.textLabel.text = @"Roll Over"; - } - else { - // iPhone SDK 2.2.1 - cell.text = @"Roll Over"; - } - break; - default: - if ([cell respondsToSelector:@selector(textLabel)]) { - // iPhone SDK 3.0 - cell.textLabel.text = [NSString stringWithFormat:@"Cell %d", indexPath.row]; - } - else { - // iPhone SDK 2.2.1 - cell.text = [NSString stringWithFormat:@"Cell %d", indexPath.row]; - } - } - - return cell; -} - - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - switch (indexPath.row) { - case 1: - self.label.text = @"Request New Ad pressed! Requesting..."; - [adView requestFreshAd]; - break; - case 2: - self.label.text = @"Roll Over pressed! Requesting..."; - [adView rollOver]; - break; - } - [tableView deselectRowAtIndexPath:indexPath animated:YES]; -} - - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if (indexPath.section == 0 && indexPath.row == 0) { - return CGRectGetHeight(adView.bounds); - } - return self.table.rowHeight; -} - - -#pragma mark AdWhirlDelegate methods - -- (NSString *)adWhirlApplicationKey { - return kSampleAppKey; -} - -- (UIViewController *)viewControllerForPresentingModalView { - return [((AdWhirlSDK2_SampleAppDelegate *)[[UIApplication sharedApplication] delegate]) navigationController]; -} - -- (NSURL *)adWhirlConfigURL { - return [NSURL URLWithString:kSampleConfigURL]; -} - -- (NSURL *)adWhirlImpMetricURL { - return [NSURL URLWithString:kSampleImpMetricURL]; -} - -- (NSURL *)adWhirlClickMetricURL { - return [NSURL URLWithString:kSampleClickMetricURL]; -} - -- (NSURL *)adWhirlCustomAdURL { - return [NSURL URLWithString:kSampleCustomAdURL]; -} - -- (void)adWhirlDidReceiveAd:(AdWhirlView *)adWhirlView { - self.label.text = [NSString stringWithFormat: - @"Got ad from %@, size %@", - [adWhirlView mostRecentNetworkName], - NSStringFromCGSize([adWhirlView actualAdSize])]; - [self adjustAdSize]; -} - -- (void)adWhirlDidFailToReceiveAd:(AdWhirlView *)adWhirlView usingBackup:(BOOL)yesOrNo { - self.label.text = [NSString stringWithFormat: - @"Failed to receive ad from %@, %@. Error: %@", - [adWhirlView mostRecentNetworkName], - yesOrNo? @"will use backup" : @"will NOT use backup", - adWhirlView.lastError == nil? @"no error" : [adWhirlView.lastError localizedDescription]]; -} - -- (void)adWhirlReceivedRequestForDeveloperToFufill:(AdWhirlView *)adWhirlView { - UILabel *replacement = [[UILabel alloc] initWithFrame:kAdWhirlViewDefaultFrame]; - replacement.backgroundColor = [UIColor redColor]; - replacement.textColor = [UIColor whiteColor]; - replacement.textAlignment = UITextAlignmentCenter; - replacement.text = @"Generic Notification"; - [adWhirlView replaceBannerViewWith:replacement]; - [replacement release]; - [self adjustAdSize]; - self.label.text = @"Generic Notification"; -} - -- (void)adWhirlDidAnimateToNewAdIn:(AdWhirlView *)adWhirlView { - [self.table reloadData]; -} - -- (void)adWhirlReceivedNotificationAdsAreOff:(AdWhirlView *)adWhirlView { - self.label.text = @"Ads are off"; -} - -- (void)adWhirlWillPresentFullScreenModal { - NSLog(@"TableView: will present full screen modal"); -} - -- (void)adWhirlDidDismissFullScreenModal { - NSLog(@"TableView: did dismiss full screen modal"); -} - -- (void)adWhirlDidReceiveConfig:(AdWhirlView *)adWhirlView { - self.label.text = @"Received config. Requesting ad..."; -} - -- (BOOL)adWhirlTestMode { - return NO; -} - -- (NSUInteger)jumptapTransitionType { - return 3; -} - -- (NSUInteger)quattroWirelessAdType { - return 2; -} - -- (NSString *)googleAdSenseCompanyName { - return @"Your Company"; -} - -- (NSString *)googleAdSenseAppName { - return @"AdWhirl Sample"; -} - -- (NSString *)googleAdSenseApplicationAppleID { - return @"0"; -} - -- (NSString *)googleAdSenseKeywords { - return @"apple,iphone,ipad,adwhirl"; -} - -//extern NSString* const kGADAdSenseImageAdType; -//- (NSString *)googleAdSenseAdType { -// return kGADAdSenseImageAdType; -//} - -#pragma mark event methods - -- (void)performEvent { - self.label.text = @"Event performed"; -} - -- (void)performEvent2:(AdWhirlView *)adWhirlView { - UILabel *replacement = [[UILabel alloc] initWithFrame:kAdWhirlViewDefaultFrame]; - replacement.backgroundColor = [UIColor blackColor]; - replacement.textColor = [UIColor whiteColor]; - replacement.textAlignment = UITextAlignmentCenter; - replacement.text = [NSString stringWithFormat:@"Event performed, view %x", adWhirlView]; - [adWhirlView replaceBannerViewWith:replacement]; - [replacement release]; - [self adjustAdSize]; - self.label.text = [NSString stringWithFormat:@"Event performed, view %x", adWhirlView]; -} - -@end - diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/LocationController.xib b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/LocationController.xib deleted file mode 100644 index df71bf8ce..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/LocationController.xib +++ /dev/null @@ -1,513 +0,0 @@ - - - - 768 - 10D573 - 762 - 1038.29 - 460.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 87 - - - YES - - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - YES - - - - YES - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 301 - - YES - - - 311 - {320, 182} - - - 3 - MQA - - NO - YES - NO - 3337 - - IBCocoaTouchFramework - NO - 1 - 0 - 44 - 22 - 22 - - - - 295 - {{6, 242}, {304, 164}} - - - 3 - MCAwAA - - NO - YES - 1337 - NO - IBCocoaTouchFramework - Requesting Ad... - - Helvetica-Bold - 17 - 16 - - - 1 - MCAwIDAAA - - - 1 - 10 - 9 - 1 - - - - 295 - {{6, 191}, {304, 43}} - - - 1 - MC45ODMwMjc3NTYyIDEgMC43OTU2NDI2NzQAA - - NO - YES - 103 - NO - IBCocoaTouchFramework - - - - 1 - 10 - 2 - 1 - 0 - - - {320, 416} - - - 3 - MQA - - 2 - - - NO - - - NO - - IBCocoaTouchFramework - - - - - YES - - - view - - - - 13 - - - - dataSource - - - - 14 - - - - delegate - - - - 15 - - - - - YES - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 8 - - - YES - - - - - - - - 4 - - - - - 9 - - - - - 16 - - - - - - - YES - - YES - -1.CustomClassName - -2.CustomClassName - 16.IBPluginDependency - 4.IBEditorWindowLastContentRect - 4.IBPluginDependency - 8.IBEditorWindowLastContentRect - 8.IBPluginDependency - 8.IBViewEditorWindowController.showingLayoutRectangles - 9.IBPluginDependency - - - YES - LocationController - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - {{-934, 473}, {320, 480}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - {{150, 163}, {320, 480}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - YES - - - - - YES - - - YES - - - - 16 - - - - YES - - LocationController - TableController - - IBProjectSource - Classes/LocationController.h - - - - TableController - UIViewController - - IBProjectSource - Classes/TableController.h - - - - - YES - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSNetServices.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSPort.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSStream.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSXMLParser.h - - - - NSObject - - IBFrameworkSource - QuartzCore.framework/Headers/CAAnimation.h - - - - NSObject - - IBFrameworkSource - QuartzCore.framework/Headers/CALayer.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIAccessibility.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UINibLoading.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIResponder.h - - - - UILabel - UIView - - IBFrameworkSource - UIKit.framework/Headers/UILabel.h - - - - UIResponder - NSObject - - - - UIScrollView - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIScrollView.h - - - - UISearchBar - UIView - - IBFrameworkSource - UIKit.framework/Headers/UISearchBar.h - - - - UISearchDisplayController - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UISearchDisplayController.h - - - - UITableView - UIScrollView - - IBFrameworkSource - UIKit.framework/Headers/UITableView.h - - - - UIView - - IBFrameworkSource - UIKit.framework/Headers/UITextField.h - - - - UIView - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIView.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UINavigationController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UITabBarController.h - - - - UIViewController - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - AdWhirlSDK2_Sample-3_x.xcodeproj - 3 - 87 - - diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/MainWindow.xib b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/MainWindow.xib deleted file mode 100644 index e7ad734bd..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/MainWindow.xib +++ /dev/null @@ -1,525 +0,0 @@ - - - - 768 - 10B504 - 740 - 1038.2 - 437.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 62 - - - YES - - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - YES - - - - YES - - IBFilesOwner - - - IBFirstResponder - - - - - 1316 - - {320, 480} - - 1 - MSAxIDEAA - - NO - NO - - - - - - - 256 - {0, 0} - NO - YES - YES - - - YES - - - - AdWhirl Samples - - - RootViewController - - - - - - - - YES - - - delegate - - - - 4 - - - - window - - - - 5 - - - - navigationController - - - - 15 - - - - - YES - - 0 - - - - - - 2 - - - YES - - - - - -1 - - - File's Owner - - - 3 - - - - - -2 - - - - - 9 - - - YES - - - - - - - 11 - - - - - 13 - - - YES - - - - - - 14 - - - - - - - YES - - YES - -1.CustomClassName - -2.CustomClassName - 11.IBPluginDependency - 13.CustomClassName - 13.IBPluginDependency - 2.IBAttributePlaceholdersKey - 2.IBEditorWindowLastContentRect - 2.IBPluginDependency - 3.CustomClassName - 3.IBPluginDependency - 9.IBEditorWindowLastContentRect - 9.IBPluginDependency - - - YES - UIApplication - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - RootViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - YES - - - YES - - - {{673, 376}, {320, 480}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - AdWhirlSDK2_SampleAppDelegate - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - {{27, 281}, {320, 480}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - YES - - - - - YES - - - YES - - - - 15 - - - - YES - - AdWhirlSDK2_SampleAppDelegate - NSObject - - YES - - YES - navigationController - window - - - YES - UINavigationController - UIWindow - - - - IBProjectSource - Classes/AdWhirlSDK2_SampleAppDelegate.h - - - - RootViewController - UITableViewController - - IBProjectSource - Classes/RootViewController.h - - - - - YES - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSNetServices.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSPort.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSStream.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSXMLParser.h - - - - NSObject - - IBFrameworkSource - QuartzCore.framework/Headers/CAAnimation.h - - - - NSObject - - IBFrameworkSource - QuartzCore.framework/Headers/CALayer.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIAccessibility.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UINibLoading.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIResponder.h - - - - UIApplication - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIApplication.h - - - - UIBarButtonItem - UIBarItem - - IBFrameworkSource - UIKit.framework/Headers/UIBarButtonItem.h - - - - UIBarItem - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIBarItem.h - - - - UINavigationBar - UIView - - IBFrameworkSource - UIKit.framework/Headers/UINavigationBar.h - - - - UINavigationController - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UINavigationController.h - - - - UINavigationItem - NSObject - - - - UIResponder - NSObject - - - - UISearchBar - UIView - - IBFrameworkSource - UIKit.framework/Headers/UISearchBar.h - - - - UISearchDisplayController - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UISearchDisplayController.h - - - - UITableViewController - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UITableViewController.h - - - - UIView - - IBFrameworkSource - UIKit.framework/Headers/UITextField.h - - - - UIView - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIView.h - - - - UIViewController - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UITabBarController.h - - - - UIViewController - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIViewController.h - - - - UIWindow - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIWindow.h - - - - - 0 - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - AdWhirlSDK2_Sample.xcodeproj - 3 - 3.1 - - diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/ModalViewController.xib b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/ModalViewController.xib deleted file mode 100644 index ff4ae1c51..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/ModalViewController.xib +++ /dev/null @@ -1,493 +0,0 @@ - - - - 768 - 10C540 - 762 - 1038.25 - 458.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 87 - - - YES - - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - YES - - - - YES - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - YES - - - 301 - {{121, 192}, {57, 57}} - - NO - IBCocoaTouchFramework - 0 - 0 - - Helvetica-Bold - 15 - 16 - - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - 3 - MC41AA - - - NSImage - adwhirlsample_icon.png - - - - - 301 - {{20, 114}, {260, 21}} - - NO - YES - 7 - NO - IBCocoaTouchFramework - Tap the logo to dismiss - - - 3 - MC45MDg3NTkxMjQxIDAuNzUAA - - {2, 2} - 1 - 10 - 1 - - - {300, 440} - - - 10 - - 549453824 - {84, 1} - - YES - - YES - - - - TU0AKgAAAVjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P8ADQEAAAMAAAABAFQAAAEB -AAMAAAABAAEAAAECAAMAAAAEAAAB+gEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES -AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABAAEAAAEXAAQAAAABAAABUAEcAAMAAAABAAEAAAFS -AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA - - - - - - 3 - MCAwAA - - - groupTableViewBackgroundColor - - NO - NO - IBCocoaTouchFramework - - - - - YES - - - view - - - - 3 - - - - dismiss: - - - 7 - - 6 - - - - - YES - - 0 - - - - - - 1 - - - YES - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 5 - - - - - 7 - - - - - - - YES - - YES - -1.CustomClassName - -2.CustomClassName - 1.IBEditorWindowLastContentRect - 1.IBPluginDependency - 5.IBPluginDependency - 7.IBPluginDependency - - - YES - ModalViewController - UIResponder - {{414, 346}, {300, 440}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - YES - - - - - YES - - - YES - - - - 7 - - - - YES - - ModalViewController - UIViewController - - dismiss: - id - - - IBProjectSource - Classes/ModalViewController.h - - - - - YES - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSNetServices.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSPort.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSStream.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSXMLParser.h - - - - NSObject - - IBFrameworkSource - QuartzCore.framework/Headers/CAAnimation.h - - - - NSObject - - IBFrameworkSource - QuartzCore.framework/Headers/CALayer.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIAccessibility.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UINibLoading.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIResponder.h - - - - UIButton - UIControl - - IBFrameworkSource - UIKit.framework/Headers/UIButton.h - - - - UIControl - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIControl.h - - - - UILabel - UIView - - IBFrameworkSource - UIKit.framework/Headers/UILabel.h - - - - UIResponder - NSObject - - - - UISearchBar - UIView - - IBFrameworkSource - UIKit.framework/Headers/UISearchBar.h - - - - UISearchDisplayController - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UISearchDisplayController.h - - - - UIView - - IBFrameworkSource - UIKit.framework/Headers/UITextField.h - - - - UIView - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIView.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UINavigationController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UITabBarController.h - - - - UIViewController - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - AdWhirlSDK2_Sample.xcodeproj - 3 - - adwhirlsample_icon.png - {57, 57} - - 87 - - diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/RootViewController.xib b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/RootViewController.xib deleted file mode 100644 index f5a5193c0..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/RootViewController.xib +++ /dev/null @@ -1,380 +0,0 @@ - - - - 784 - 10A405 - 732 - 1031 - 432.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 62 - - - YES - - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - YES - - - - YES - - IBFilesOwner - - - IBFirstResponder - - - - 274 - {320, 247} - - - 3 - MQA - - NO - YES - NO - NO - 1 - 0 - YES - 44 - 22 - 22 - - - - - YES - - - view - - - - 3 - - - - dataSource - - - - 4 - - - - delegate - - - - 5 - - - - - YES - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 2 - - - - - - - YES - - YES - -1.CustomClassName - -2.CustomClassName - 2.IBEditorWindowLastContentRect - 2.IBPluginDependency - - - YES - RootViewController - UIResponder - {{0, 598}, {320, 247}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - YES - - - - - YES - - - YES - - - - 5 - - - - YES - - RootViewController - UITableViewController - - IBProjectSource - Classes/RootViewController.h - - - - - YES - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSNetServices.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSPort.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSStream.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSXMLParser.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIAccessibility.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UINibLoading.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIResponder.h - - - - UIResponder - NSObject - - - - UIScrollView - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIScrollView.h - - - - UISearchBar - UIView - - IBFrameworkSource - UIKit.framework/Headers/UISearchBar.h - - - - UISearchDisplayController - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UISearchDisplayController.h - - - - UITableView - UIScrollView - - IBFrameworkSource - UIKit.framework/Headers/UITableView.h - - - - UITableViewController - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UITableViewController.h - - - - UIView - - IBFrameworkSource - UIKit.framework/Headers/UITextField.h - - - - UIView - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIView.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UINavigationController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UITabBarController.h - - - - UIViewController - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIViewController.h - - - - - 0 - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - AdWhirlSDK2_Sample.xcodeproj - 3 - 3.1 - - diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/SimpleViewController.xib b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/SimpleViewController.xib deleted file mode 100644 index 095cec22e..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/SimpleViewController.xib +++ /dev/null @@ -1,723 +0,0 @@ - - - - 1024 - 10F569 - 804 - 1038.29 - 461.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 123 - - - YES - - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - YES - - - - YES - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 293 - - YES - - - 295 - {{20, 106}, {136, 37}} - - NO - NO - 607701 - IBCocoaTouchFramework - 0 - 0 - - Helvetica-Bold - 15 - 16 - - 1 - Request New Ad - - 3 - MQA - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - 3 - MC41AA - - - - - 295 - {{164, 106}, {136, 37}} - - NO - NO - 607702 - IBCocoaTouchFramework - 0 - 0 - - 1 - Roll Over - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - 295 - {{20, 243}, {280, 153}} - - NO - YES - 1337 - NO - IBCocoaTouchFramework - Requesting Ad... - - Helvetica-Bold - 17 - 16 - - - 1 - MC4xMjc3MzcyMjYzIDAgMAA - - - 1 - 10 - 9 - 1 - - - - 295 - {{20, 153}, {136, 37}} - - NO - 607703 - IBCocoaTouchFramework - 0 - 0 - - 1 - Show Modal View - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - 293 - {{206, 177}, {94, 27}} - - NO - 706613 - IBCocoaTouchFramework - 0 - 0 - YES - - - - 292 - {{206, 154}, {66, 21}} - - NO - YES - 7 - 7066130 - NO - IBCocoaTouchFramework - Refresh: - - 1 - MCAwIDAAA - - - 1 - 10 - - - - 295 - {{20, 198}, {157, 37}} - - NO - 607704 - IBCocoaTouchFramework - 0 - 0 - - 1 - Request New Config - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - {320, 416} - - - 10 - - 549453824 - {84, 1} - - YES - - YES - - - - TU0AKgAAAVjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P8ADQEAAAMAAAABAFQAAAEB -AAMAAAABAAEAAAECAAMAAAAEAAAB+gEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES -AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABAAEAAAEXAAQAAAABAAABUAEcAAMAAAABAAEAAAFS -AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA - - - - - - 3 - MCAwAA - - - groupTableViewBackgroundColor - - - - NO - - IBCocoaTouchFramework - - - - - YES - - - view - - - - 3 - - - - requestNewAd: - - - 7 - - 7 - - - - rollOver: - - - 7 - - 8 - - - - showModalView: - - - 7 - - 10 - - - - toggleRefreshAd: - - - 13 - - 16 - - - - requestNewConfig: - - - 7 - - 18 - - - - - YES - - 0 - - - - - - 1 - - - YES - - - - - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - 5 - - - - - 6 - - - - - 9 - - - - - 14 - - - - - 15 - - - - - 17 - - - - - - - YES - - YES - -1.CustomClassName - -2.CustomClassName - 1.IBEditorWindowLastContentRect - 1.IBPluginDependency - 14.IBPluginDependency - 15.IBPluginDependency - 17.IBPluginDependency - 4.IBPluginDependency - 5.IBPluginDependency - 5.IBViewBoundsToFrameTransform - 6.IBPluginDependency - 9.IBPluginDependency - 9.IBViewBoundsToFrameTransform - - - YES - SimpleViewController - UIResponder - {{688, 498}, {320, 480}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - P4AAAL+AAABDJAAAww0AAA - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - P4AAAL+AAABBoAAAwzwAAA - - - - - YES - - - YES - - - - - YES - - - YES - - - - 18 - - - - YES - - SimpleViewController - UIViewController - - YES - - YES - requestNewAd: - requestNewConfig: - rollOver: - showModalView: - toggleRefreshAd: - - - YES - id - id - id - id - id - - - - YES - - YES - requestNewAd: - requestNewConfig: - rollOver: - showModalView: - toggleRefreshAd: - - - YES - - requestNewAd: - id - - - requestNewConfig: - id - - - rollOver: - id - - - showModalView: - id - - - toggleRefreshAd: - id - - - - - IBProjectSource - Classes/SimpleViewController.h - - - - - YES - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - QuartzCore.framework/Headers/CAAnimation.h - - - - NSObject - - IBFrameworkSource - QuartzCore.framework/Headers/CALayer.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIAccessibility.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UINibLoading.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIResponder.h - - - - UIButton - UIControl - - IBFrameworkSource - UIKit.framework/Headers/UIButton.h - - - - UIControl - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIControl.h - - - - UILabel - UIView - - IBFrameworkSource - UIKit.framework/Headers/UILabel.h - - - - UIResponder - NSObject - - - - UISearchBar - UIView - - IBFrameworkSource - UIKit.framework/Headers/UISearchBar.h - - - - UISearchDisplayController - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UISearchDisplayController.h - - - - UISwitch - UIControl - - IBFrameworkSource - UIKit.framework/Headers/UISwitch.h - - - - UIView - - IBFrameworkSource - UIKit.framework/Headers/UITextField.h - - - - UIView - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIView.h - - - - UIViewController - - IBFrameworkSource - MediaPlayer.framework/Headers/MPMoviePlayerViewController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UINavigationController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UIPopoverController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UISplitViewController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UITabBarController.h - - - - UIViewController - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - AdWhirlSDK2_Sample.xcodeproj - 3 - 123 - - diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/TableController.xib b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/TableController.xib deleted file mode 100644 index db5207404..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/TableController.xib +++ /dev/null @@ -1,468 +0,0 @@ - - - - 768 - 10D573 - 762 - 1038.29 - 460.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 87 - - - YES - - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - YES - - - - YES - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 292 - - YES - - - 306 - {320, 255} - - - 3 - MQA - - NO - YES - NO - 3337 - - IBCocoaTouchFramework - NO - 1 - 0 - 44 - 22 - 22 - - - - 282 - {{20, 263}, {280, 147}} - - NO - YES - 1337 - NO - IBCocoaTouchFramework - Requesting Ad... - - Helvetica-Bold - 17 - 16 - - - 1 - MCAwIDAAA - - - 1 - 10 - 9 - 1 - - - {320, 416} - - - 3 - MQA - - 2 - - - NO - - - NO - - IBCocoaTouchFramework - - - - - YES - - - view - - - - 13 - - - - dataSource - - - - 14 - - - - delegate - - - - 15 - - - - - YES - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 8 - - - YES - - - - - - - 4 - - - - - 9 - - - - - - - YES - - YES - -1.CustomClassName - -2.CustomClassName - 4.IBEditorWindowLastContentRect - 4.IBPluginDependency - 8.IBEditorWindowLastContentRect - 8.IBPluginDependency - 9.IBPluginDependency - - - YES - TableController - UIResponder - {{-934, 473}, {320, 480}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - {{159, 187}, {320, 480}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - YES - - - - - YES - - - YES - - - - 15 - - - - YES - - TableController - UIViewController - - IBProjectSource - Classes/TableController.h - - - - - YES - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSNetServices.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSPort.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSStream.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSXMLParser.h - - - - NSObject - - IBFrameworkSource - QuartzCore.framework/Headers/CAAnimation.h - - - - NSObject - - IBFrameworkSource - QuartzCore.framework/Headers/CALayer.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIAccessibility.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UINibLoading.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIResponder.h - - - - UILabel - UIView - - IBFrameworkSource - UIKit.framework/Headers/UILabel.h - - - - UIResponder - NSObject - - - - UIScrollView - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIScrollView.h - - - - UISearchBar - UIView - - IBFrameworkSource - UIKit.framework/Headers/UISearchBar.h - - - - UISearchDisplayController - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UISearchDisplayController.h - - - - UITableView - UIScrollView - - IBFrameworkSource - UIKit.framework/Headers/UITableView.h - - - - UIView - - IBFrameworkSource - UIKit.framework/Headers/UITextField.h - - - - UIView - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIView.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UINavigationController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UITabBarController.h - - - - UIViewController - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - AdWhirlSDK2_Sample-3_x.xcodeproj - 3 - 87 - - diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/adwhirlsample_icon.png b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/adwhirlsample_icon.png deleted file mode 100644 index 0deed98bfcbf62aa69b9c65b6106944aec27f205..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8343 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 diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/adwhirlsample_iconAT2x.png b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/adwhirlsample_iconAT2x.png deleted file mode 100644 index a2fa9eb41e062f6942e684e625a9f9475894b5a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10739 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 diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/main.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/main.m deleted file mode 100644 index 0254298f5..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlSDK2_Sample/main.m +++ /dev/null @@ -1,29 +0,0 @@ -/* - - main.m - - Copyright 2009 AdMob, 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 - -int main(int argc, char *argv[]) { - - NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; - int retVal = UIApplicationMain(argc, argv, nil, nil); - [pool release]; - return retVal; -} diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/AdWhirlTests-Info.plist b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/AdWhirlTests-Info.plist deleted file mode 100644 index da6b2f165..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/AdWhirlTests-Info.plist +++ /dev/null @@ -1,43 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleDisplayName - ${PRODUCT_NAME} - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIconFile - - CFBundleIdentifier - com.yourcompany.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - APPL - CFBundleSignature - ???? - CFBundleVersion - 1.0 - LSRequiresIPhoneOS - - NSMainNibFile - MainWindow_iPhone - NSMainNibFile~ipad - MainWindow_iPad - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - - diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/AdWhirlTests.xcodeproj/project.pbxproj b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/AdWhirlTests.xcodeproj/project.pbxproj deleted file mode 100755 index e90f817cb..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/AdWhirlTests.xcodeproj/project.pbxproj +++ /dev/null @@ -1,766 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 45; - objects = { - -/* Begin PBXBuildFile section */ - 1B183C6A1212147C0026647E /* MainWindow_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2860E327111B887F00E27156 /* MainWindow_iPhone.xib */; }; - 1B183C6B1212147C0026647E /* MainWindow_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2860E32D111B888700E27156 /* MainWindow_iPad.xib */; }; - 1B183C6C1212147C0026647E /* AdWhirlWebBrowser.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1B264C0A120B6E0000DB41AD /* AdWhirlWebBrowser.xib */; }; - 1B183C6D121214860026647E /* AppDelegate_iPhone.m in Sources */ = {isa = PBXBuildFile; fileRef = 2860E326111B887F00E27156 /* AppDelegate_iPhone.m */; }; - 1B183C6E121214860026647E /* AppDelegate_iPad.m in Sources */ = {isa = PBXBuildFile; fileRef = 2860E32C111B888700E27156 /* AppDelegate_iPad.m */; }; - 1B183C6F121214860026647E /* GTMObjC2Runtime.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B264BBC120B6D1600DB41AD /* GTMObjC2Runtime.m */; }; - 1B183C70121214860026647E /* GTMRegex.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B264BBE120B6D1600DB41AD /* GTMRegex.m */; }; - 1B183C71121214860026647E /* GTMIPhoneUnitTestDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B264BC2120B6D1600DB41AD /* GTMIPhoneUnitTestDelegate.m */; }; - 1B183C72121214860026647E /* GTMIPhoneUnitTestMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B264BC3120B6D1600DB41AD /* GTMIPhoneUnitTestMain.m */; }; - 1B183C73121214860026647E /* GTMSenTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B264BC5120B6D1600DB41AD /* GTMSenTestCase.m */; }; - 1B183C74121214860026647E /* GTMUnitTestDevLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B264BC7120B6D1600DB41AD /* GTMUnitTestDevLog.m */; }; - 1B183C75121214860026647E /* AdWhirlAdapterCustom.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B264BF4120B6E0000DB41AD /* AdWhirlAdapterCustom.m */; }; - 1B183C76121214860026647E /* AdWhirlAdapterEvent.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B264BF6120B6E0000DB41AD /* AdWhirlAdapterEvent.m */; }; - 1B183C77121214860026647E /* AdWhirlAdapterGeneric.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B264BF8120B6E0000DB41AD /* AdWhirlAdapterGeneric.m */; }; - 1B183C78121214860026647E /* AdWhirlAdNetworkAdapter+Helpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B264BFA120B6E0000DB41AD /* AdWhirlAdNetworkAdapter+Helpers.m */; }; - 1B183C79121214860026647E /* AdWhirlAdNetworkAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B264BFB120B6E0000DB41AD /* AdWhirlAdNetworkAdapter.m */; }; - 1B183C7A121214860026647E /* AdWhirlAdNetworkConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B264BFD120B6E0000DB41AD /* AdWhirlAdNetworkConfig.m */; }; - 1B183C7B121214860026647E /* AdWhirlAdNetworkRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B264BFF120B6E0000DB41AD /* AdWhirlAdNetworkRegistry.m */; }; - 1B183C7C121214860026647E /* AdWhirlConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B264C01120B6E0000DB41AD /* AdWhirlConfig.m */; }; - 1B183C7D121214860026647E /* AdWhirlCustomAdView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B264C03120B6E0000DB41AD /* AdWhirlCustomAdView.m */; }; - 1B183C7E121214860026647E /* AdWhirlError.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B264C05120B6E0000DB41AD /* AdWhirlError.m */; }; - 1B183C7F121214860026647E /* AdWhirlLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B264C07120B6E0000DB41AD /* AdWhirlLog.m */; }; - 1B183C80121214860026647E /* AdWhirlView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B264C09120B6E0000DB41AD /* AdWhirlView.m */; }; - 1B183C81121214860026647E /* AdWhirlWebBrowserController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B264C0C120B6E0000DB41AD /* AdWhirlWebBrowserController.m */; }; - 1B183C82121214860026647E /* ARRollerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B264C0D120B6E0000DB41AD /* ARRollerView.m */; }; - 1B183C83121214860026647E /* CDataScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BDA8128120B727200CCAD25 /* CDataScanner.m */; }; - 1B183C84121214860026647E /* CDataScanner_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BDA812B120B727200CCAD25 /* CDataScanner_Extensions.m */; }; - 1B183C85121214860026647E /* NSCharacterSet_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BDA812D120B727200CCAD25 /* NSCharacterSet_Extensions.m */; }; - 1B183C86121214860026647E /* NSDictionary_JSONExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BDA812F120B727200CCAD25 /* NSDictionary_JSONExtensions.m */; }; - 1B183C87121214860026647E /* NSScanner_Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BDA8131120B727200CCAD25 /* NSScanner_Extensions.m */; }; - 1B183C88121214860026647E /* CJSONDataSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BDA8134120B727200CCAD25 /* CJSONDataSerializer.m */; }; - 1B183C89121214860026647E /* CJSONDeserializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BDA8136120B727200CCAD25 /* CJSONDeserializer.m */; }; - 1B183C8A121214860026647E /* CJSONScanner.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BDA8138120B727200CCAD25 /* CJSONScanner.m */; }; - 1B183C8B121214860026647E /* CJSONSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BDA813A120B727200CCAD25 /* CJSONSerializer.m */; }; - 1B183C8C121214860026647E /* CSerializedJSONData.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BDA813C120B727200CCAD25 /* CSerializedJSONData.m */; }; - 1B183C8D121214860026647E /* AdWhirlAdNetworkConfigTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BDA8250120B786500CCAD25 /* AdWhirlAdNetworkConfigTest.m */; }; - 1B183C8E121214860026647E /* AdWhirlClassWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B6898AD120C8B7A0080EAC1 /* AdWhirlClassWrapper.m */; }; - 1B183C8F121214860026647E /* GTMDevLogUnitTestingBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BADCC45120CBF86005D60B5 /* GTMDevLogUnitTestingBridge.m */; }; - 1B183C90121214860026647E /* AdWhirlConfigTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B183A871211C22B0026647E /* AdWhirlConfigTest.m */; }; - 1B183C91121214860026647E /* UIColor+AdWhirlConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B183A901211C61B0026647E /* UIColor+AdWhirlConfig.m */; }; - 1B183C92121214860026647E /* UIColor+AdWhirlConfigTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B183AB71211C8E90026647E /* UIColor+AdWhirlConfigTest.m */; }; - 1B183D84121214910026647E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; - 1B183D85121214910026647E /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; - 1B183D86121214910026647E /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; - 1B183D87121214910026647E /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1BDA8195120B751500CCAD25 /* CoreLocation.framework */; }; - 1B183D88121214910026647E /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1BDA819F120B751500CCAD25 /* QuartzCore.framework */; }; - 1B183D89121214910026647E /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1BDA81A1120B751500CCAD25 /* SystemConfiguration.framework */; }; - 1B183D8A121214910026647E /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1BADCBA8120CACBE005D60B5 /* libOCMock.a */; }; - 1B4905A81230815300BAECDE /* AdWhirlViewTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B4905A71230815300BAECDE /* AdWhirlViewTest.m */; }; - 1B6CE7DE12149A8200E44A28 /* AdWhirlConfigStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B6CE7DD12149A8200E44A28 /* AdWhirlConfigStore.m */; }; - 1B6CE7E112149A9E00E44A28 /* AdWhirlConfigStoreTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B6CE7E012149A9E00E44A28 /* AdWhirlConfigStoreTest.m */; }; - 1B6CE8891214A65800E44A28 /* AWNetworkReachabilityWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B6CE8881214A65800E44A28 /* AWNetworkReachabilityWrapper.m */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 1B183A871211C22B0026647E /* AdWhirlConfigTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlConfigTest.m; sourceTree = ""; wrapsLines = 1; }; - 1B183A8F1211C61B0026647E /* UIColor+AdWhirlConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIColor+AdWhirlConfig.h"; sourceTree = ""; }; - 1B183A901211C61B0026647E /* UIColor+AdWhirlConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIColor+AdWhirlConfig.m"; sourceTree = ""; }; - 1B183AB71211C8E90026647E /* UIColor+AdWhirlConfigTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIColor+AdWhirlConfigTest.m"; sourceTree = ""; }; - 1B183C5C121212B70026647E /* AdWhirlTests.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AdWhirlTests.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 1B264BBB120B6D1600DB41AD /* GTMObjC2Runtime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMObjC2Runtime.h; sourceTree = ""; }; - 1B264BBC120B6D1600DB41AD /* GTMObjC2Runtime.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMObjC2Runtime.m; sourceTree = ""; }; - 1B264BBD120B6D1600DB41AD /* GTMRegex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMRegex.h; sourceTree = ""; }; - 1B264BBE120B6D1600DB41AD /* GTMRegex.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMRegex.m; sourceTree = ""; }; - 1B264BBF120B6D1600DB41AD /* GTMDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMDefines.h; sourceTree = ""; }; - 1B264BC1120B6D1600DB41AD /* GTMIPhoneUnitTestDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMIPhoneUnitTestDelegate.h; sourceTree = ""; }; - 1B264BC2120B6D1600DB41AD /* GTMIPhoneUnitTestDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMIPhoneUnitTestDelegate.m; sourceTree = ""; }; - 1B264BC3120B6D1600DB41AD /* GTMIPhoneUnitTestMain.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMIPhoneUnitTestMain.m; sourceTree = ""; }; - 1B264BC4120B6D1600DB41AD /* GTMSenTestCase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMSenTestCase.h; sourceTree = ""; }; - 1B264BC5120B6D1600DB41AD /* GTMSenTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMSenTestCase.m; sourceTree = ""; }; - 1B264BC6120B6D1600DB41AD /* GTMUnitTestDevLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMUnitTestDevLog.h; sourceTree = ""; }; - 1B264BC7120B6D1600DB41AD /* GTMUnitTestDevLog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMUnitTestDevLog.m; sourceTree = ""; }; - 1B264BC8120B6D1600DB41AD /* RunIPhoneUnitTest.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = RunIPhoneUnitTest.sh; sourceTree = ""; }; - 1B264BD9120B6E0000DB41AD /* AdWhirlAdapterAdMob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterAdMob.h; sourceTree = ""; }; - 1B264BDA120B6E0000DB41AD /* AdWhirlAdapterAdMob.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterAdMob.m; sourceTree = ""; }; - 1B264BDB120B6E0000DB41AD /* AdWhirlAdapterGoogleAdSense.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterGoogleAdSense.h; sourceTree = ""; }; - 1B264BDC120B6E0000DB41AD /* AdWhirlAdapterGoogleAdSense.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterGoogleAdSense.m; sourceTree = ""; }; - 1B264BDD120B6E0000DB41AD /* AdWhirlAdapterGreystripe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterGreystripe.h; sourceTree = ""; }; - 1B264BDE120B6E0000DB41AD /* AdWhirlAdapterGreystripe.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterGreystripe.m; sourceTree = ""; }; - 1B264BDF120B6E0000DB41AD /* AdWhirlAdapterIAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterIAd.h; sourceTree = ""; }; - 1B264BE0120B6E0000DB41AD /* AdWhirlAdapterIAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterIAd.m; sourceTree = ""; }; - 1B264BE1120B6E0000DB41AD /* AdWhirlAdapterInMobi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterInMobi.h; sourceTree = ""; }; - 1B264BE2120B6E0000DB41AD /* AdWhirlAdapterInMobi.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterInMobi.m; sourceTree = ""; }; - 1B264BE3120B6E0000DB41AD /* AdWhirlAdapterJumpTap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterJumpTap.h; sourceTree = ""; }; - 1B264BE4120B6E0000DB41AD /* AdWhirlAdapterJumpTap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterJumpTap.m; sourceTree = ""; }; - 1B264BE5120B6E0000DB41AD /* AdWhirlAdapterMdotM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterMdotM.h; sourceTree = ""; }; - 1B264BE6120B6E0000DB41AD /* AdWhirlAdapterMdotM.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterMdotM.m; sourceTree = ""; }; - 1B264BE7120B6E0000DB41AD /* AdWhirlAdapterMillennial.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterMillennial.h; sourceTree = ""; }; - 1B264BE8120B6E0000DB41AD /* AdWhirlAdapterMillennial.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterMillennial.m; sourceTree = ""; }; - 1B264BE9120B6E0000DB41AD /* AdWhirlAdapterQuattro.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterQuattro.h; sourceTree = ""; }; - 1B264BEA120B6E0000DB41AD /* AdWhirlAdapterQuattro.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterQuattro.m; sourceTree = ""; }; - 1B264BEB120B6E0000DB41AD /* AdWhirlAdapterVideoEgg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterVideoEgg.h; sourceTree = ""; }; - 1B264BEC120B6E0000DB41AD /* AdWhirlAdapterVideoEgg.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterVideoEgg.m; sourceTree = ""; }; - 1B264BED120B6E0000DB41AD /* AdWhirlAdapterZestADZ.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterZestADZ.h; sourceTree = ""; }; - 1B264BEE120B6E0000DB41AD /* AdWhirlAdapterZestADZ.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterZestADZ.m; sourceTree = ""; }; - 1B264BEF120B6E0000DB41AD /* AdWhirlAdNetworkAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdNetworkAdapter.h; sourceTree = ""; }; - 1B264BF0120B6E0000DB41AD /* AdWhirlDelegateProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlDelegateProtocol.h; sourceTree = ""; }; - 1B264BF1120B6E0000DB41AD /* AdWhirlView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlView.h; sourceTree = ""; }; - 1B264BF3120B6E0000DB41AD /* AdWhirlAdapterCustom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterCustom.h; sourceTree = ""; }; - 1B264BF4120B6E0000DB41AD /* AdWhirlAdapterCustom.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterCustom.m; sourceTree = ""; }; - 1B264BF5120B6E0000DB41AD /* AdWhirlAdapterEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterEvent.h; sourceTree = ""; }; - 1B264BF6120B6E0000DB41AD /* AdWhirlAdapterEvent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterEvent.m; sourceTree = ""; }; - 1B264BF7120B6E0000DB41AD /* AdWhirlAdapterGeneric.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdapterGeneric.h; sourceTree = ""; }; - 1B264BF8120B6E0000DB41AD /* AdWhirlAdapterGeneric.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdapterGeneric.m; sourceTree = ""; }; - 1B264BF9120B6E0000DB41AD /* AdWhirlAdNetworkAdapter+Helpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "AdWhirlAdNetworkAdapter+Helpers.h"; sourceTree = ""; }; - 1B264BFA120B6E0000DB41AD /* AdWhirlAdNetworkAdapter+Helpers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "AdWhirlAdNetworkAdapter+Helpers.m"; sourceTree = ""; }; - 1B264BFB120B6E0000DB41AD /* AdWhirlAdNetworkAdapter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdNetworkAdapter.m; sourceTree = ""; }; - 1B264BFC120B6E0000DB41AD /* AdWhirlAdNetworkConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdNetworkConfig.h; sourceTree = ""; }; - 1B264BFD120B6E0000DB41AD /* AdWhirlAdNetworkConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdNetworkConfig.m; sourceTree = ""; }; - 1B264BFE120B6E0000DB41AD /* AdWhirlAdNetworkRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlAdNetworkRegistry.h; sourceTree = ""; }; - 1B264BFF120B6E0000DB41AD /* AdWhirlAdNetworkRegistry.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdNetworkRegistry.m; sourceTree = ""; }; - 1B264C00120B6E0000DB41AD /* AdWhirlConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlConfig.h; sourceTree = ""; }; - 1B264C01120B6E0000DB41AD /* AdWhirlConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlConfig.m; sourceTree = ""; }; - 1B264C02120B6E0000DB41AD /* AdWhirlCustomAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlCustomAdView.h; sourceTree = ""; }; - 1B264C03120B6E0000DB41AD /* AdWhirlCustomAdView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlCustomAdView.m; sourceTree = ""; }; - 1B264C04120B6E0000DB41AD /* AdWhirlError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlError.h; sourceTree = ""; }; - 1B264C05120B6E0000DB41AD /* AdWhirlError.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlError.m; sourceTree = ""; }; - 1B264C06120B6E0000DB41AD /* AdWhirlLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlLog.h; sourceTree = ""; }; - 1B264C07120B6E0000DB41AD /* AdWhirlLog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlLog.m; sourceTree = ""; }; - 1B264C08120B6E0000DB41AD /* AdWhirlView+.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "AdWhirlView+.h"; sourceTree = ""; }; - 1B264C09120B6E0000DB41AD /* AdWhirlView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlView.m; sourceTree = ""; }; - 1B264C0A120B6E0000DB41AD /* AdWhirlWebBrowser.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AdWhirlWebBrowser.xib; sourceTree = ""; }; - 1B264C0B120B6E0000DB41AD /* AdWhirlWebBrowserController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlWebBrowserController.h; sourceTree = ""; }; - 1B264C0C120B6E0000DB41AD /* AdWhirlWebBrowserController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlWebBrowserController.m; sourceTree = ""; }; - 1B264C0D120B6E0000DB41AD /* ARRollerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ARRollerView.m; sourceTree = ""; }; - 1B264C0F120B6E0000DB41AD /* ARRollerProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARRollerProtocol.h; sourceTree = ""; }; - 1B264C10120B6E0000DB41AD /* ARRollerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARRollerView.h; sourceTree = ""; }; - 1B4905A71230815300BAECDE /* AdWhirlViewTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlViewTest.m; sourceTree = ""; }; - 1B6898AC120C8B7A0080EAC1 /* AdWhirlClassWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlClassWrapper.h; sourceTree = ""; }; - 1B6898AD120C8B7A0080EAC1 /* AdWhirlClassWrapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlClassWrapper.m; sourceTree = ""; }; - 1B6CE7DC12149A8200E44A28 /* AdWhirlConfigStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlConfigStore.h; sourceTree = ""; }; - 1B6CE7DD12149A8200E44A28 /* AdWhirlConfigStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlConfigStore.m; sourceTree = ""; }; - 1B6CE7E012149A9E00E44A28 /* AdWhirlConfigStoreTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlConfigStoreTest.m; sourceTree = ""; }; - 1B6CE8871214A65800E44A28 /* AWNetworkReachabilityWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWNetworkReachabilityWrapper.h; sourceTree = ""; }; - 1B6CE8881214A65800E44A28 /* AWNetworkReachabilityWrapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWNetworkReachabilityWrapper.m; sourceTree = ""; }; - 1B6CE8D81214CE3600E44A28 /* AWNetworkReachabilityDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWNetworkReachabilityDelegate.h; sourceTree = ""; }; - 1BADCBA2120CACBE005D60B5 /* NSNotificationCenter+OCMAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNotificationCenter+OCMAdditions.h"; sourceTree = ""; }; - 1BADCBA3120CACBE005D60B5 /* OCMArg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMArg.h; sourceTree = ""; }; - 1BADCBA4120CACBE005D60B5 /* OCMConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMConstraint.h; sourceTree = ""; }; - 1BADCBA5120CACBE005D60B5 /* OCMock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMock.h; sourceTree = ""; }; - 1BADCBA6120CACBE005D60B5 /* OCMockObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMockObject.h; sourceTree = ""; }; - 1BADCBA7120CACBE005D60B5 /* OCMockRecorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCMockRecorder.h; sourceTree = ""; }; - 1BADCBA8120CACBE005D60B5 /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libOCMock.a; sourceTree = ""; }; - 1BADCC45120CBF86005D60B5 /* GTMDevLogUnitTestingBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMDevLogUnitTestingBridge.m; sourceTree = ""; }; - 1BDA8127120B727200CCAD25 /* CDataScanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDataScanner.h; sourceTree = ""; }; - 1BDA8128120B727200CCAD25 /* CDataScanner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDataScanner.m; sourceTree = ""; }; - 1BDA812A120B727200CCAD25 /* CDataScanner_Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDataScanner_Extensions.h; sourceTree = ""; }; - 1BDA812B120B727200CCAD25 /* CDataScanner_Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDataScanner_Extensions.m; sourceTree = ""; }; - 1BDA812C120B727200CCAD25 /* NSCharacterSet_Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSCharacterSet_Extensions.h; sourceTree = ""; }; - 1BDA812D120B727200CCAD25 /* NSCharacterSet_Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSCharacterSet_Extensions.m; sourceTree = ""; }; - 1BDA812E120B727200CCAD25 /* NSDictionary_JSONExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSDictionary_JSONExtensions.h; sourceTree = ""; }; - 1BDA812F120B727200CCAD25 /* NSDictionary_JSONExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSDictionary_JSONExtensions.m; sourceTree = ""; }; - 1BDA8130120B727200CCAD25 /* NSScanner_Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSScanner_Extensions.h; sourceTree = ""; }; - 1BDA8131120B727200CCAD25 /* NSScanner_Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSScanner_Extensions.m; sourceTree = ""; }; - 1BDA8133120B727200CCAD25 /* CJSONDataSerializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONDataSerializer.h; sourceTree = ""; }; - 1BDA8134120B727200CCAD25 /* CJSONDataSerializer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONDataSerializer.m; sourceTree = ""; }; - 1BDA8135120B727200CCAD25 /* CJSONDeserializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONDeserializer.h; sourceTree = ""; }; - 1BDA8136120B727200CCAD25 /* CJSONDeserializer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONDeserializer.m; sourceTree = ""; }; - 1BDA8137120B727200CCAD25 /* CJSONScanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONScanner.h; sourceTree = ""; }; - 1BDA8138120B727200CCAD25 /* CJSONScanner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONScanner.m; sourceTree = ""; }; - 1BDA8139120B727200CCAD25 /* CJSONSerializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CJSONSerializer.h; sourceTree = ""; }; - 1BDA813A120B727200CCAD25 /* CJSONSerializer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CJSONSerializer.m; sourceTree = ""; }; - 1BDA813B120B727200CCAD25 /* CSerializedJSONData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSerializedJSONData.h; sourceTree = ""; }; - 1BDA813C120B727200CCAD25 /* CSerializedJSONData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CSerializedJSONData.m; sourceTree = ""; }; - 1BDA8195120B751500CCAD25 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; }; - 1BDA819F120B751500CCAD25 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; - 1BDA81A1120B751500CCAD25 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; - 1BDA8250120B786500CCAD25 /* AdWhirlAdNetworkConfigTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AdWhirlAdNetworkConfigTest.m; sourceTree = ""; }; - 1BED9B471210C7A100E06937 /* AdWhirlTests_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdWhirlTests_Prefix.pch; sourceTree = ""; }; - 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 2860E325111B887F00E27156 /* AppDelegate_iPhone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate_iPhone.h; sourceTree = ""; }; - 2860E326111B887F00E27156 /* AppDelegate_iPhone.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate_iPhone.m; sourceTree = ""; }; - 2860E327111B887F00E27156 /* MainWindow_iPhone.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow_iPhone.xib; sourceTree = ""; }; - 2860E32B111B888700E27156 /* AppDelegate_iPad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate_iPad.h; sourceTree = ""; }; - 2860E32C111B888700E27156 /* AppDelegate_iPad.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate_iPad.m; sourceTree = ""; }; - 2860E32D111B888700E27156 /* MainWindow_iPad.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow_iPad.xib; sourceTree = ""; }; - 288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Shared/main.m; sourceTree = ""; }; - 8D1107310486CEB800E47090 /* AdWhirlTests-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "AdWhirlTests-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 1B183C5A121212B70026647E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 1B183D84121214910026647E /* Foundation.framework in Frameworks */, - 1B183D85121214910026647E /* UIKit.framework in Frameworks */, - 1B183D86121214910026647E /* CoreGraphics.framework in Frameworks */, - 1B183D87121214910026647E /* CoreLocation.framework in Frameworks */, - 1B183D88121214910026647E /* QuartzCore.framework in Frameworks */, - 1B183D89121214910026647E /* SystemConfiguration.framework in Frameworks */, - 1B183D8A121214910026647E /* libOCMock.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 19C28FACFE9D520D11CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 1B183C5C121212B70026647E /* AdWhirlTests.app */, - ); - name = Products; - sourceTree = ""; - }; - 1B264BB8120B6D0900DB41AD /* UnitTests */ = { - isa = PBXGroup; - children = ( - 1BDA8250120B786500CCAD25 /* AdWhirlAdNetworkConfigTest.m */, - 1B183A871211C22B0026647E /* AdWhirlConfigTest.m */, - 1B183AB71211C8E90026647E /* UIColor+AdWhirlConfigTest.m */, - 1B6CE7E012149A9E00E44A28 /* AdWhirlConfigStoreTest.m */, - 1B4905A71230815300BAECDE /* AdWhirlViewTest.m */, - ); - path = UnitTests; - sourceTree = ""; - }; - 1B264BB9120B6D1600DB41AD /* GoogleToolboxForMac */ = { - isa = PBXGroup; - children = ( - 1B264BBA120B6D1600DB41AD /* Foundation */, - 1B264BBF120B6D1600DB41AD /* GTMDefines.h */, - 1B264BC0120B6D1600DB41AD /* UnitTesting */, - ); - name = GoogleToolboxForMac; - path = ../GoogleToolboxForMac; - sourceTree = SOURCE_ROOT; - }; - 1B264BBA120B6D1600DB41AD /* Foundation */ = { - isa = PBXGroup; - children = ( - 1B264BBB120B6D1600DB41AD /* GTMObjC2Runtime.h */, - 1B264BBC120B6D1600DB41AD /* GTMObjC2Runtime.m */, - 1B264BBD120B6D1600DB41AD /* GTMRegex.h */, - 1B264BBE120B6D1600DB41AD /* GTMRegex.m */, - ); - path = Foundation; - sourceTree = ""; - }; - 1B264BC0120B6D1600DB41AD /* UnitTesting */ = { - isa = PBXGroup; - children = ( - 1BADCC45120CBF86005D60B5 /* GTMDevLogUnitTestingBridge.m */, - 1B264BC1120B6D1600DB41AD /* GTMIPhoneUnitTestDelegate.h */, - 1B264BC2120B6D1600DB41AD /* GTMIPhoneUnitTestDelegate.m */, - 1B264BC3120B6D1600DB41AD /* GTMIPhoneUnitTestMain.m */, - 1B264BC4120B6D1600DB41AD /* GTMSenTestCase.h */, - 1B264BC5120B6D1600DB41AD /* GTMSenTestCase.m */, - 1B264BC6120B6D1600DB41AD /* GTMUnitTestDevLog.h */, - 1B264BC7120B6D1600DB41AD /* GTMUnitTestDevLog.m */, - 1B264BC8120B6D1600DB41AD /* RunIPhoneUnitTest.sh */, - ); - path = UnitTesting; - sourceTree = ""; - }; - 1B264BD7120B6E0000DB41AD /* AdWhirl */ = { - isa = PBXGroup; - children = ( - 1B264BD8120B6E0000DB41AD /* adapters */, - 1B264BF0120B6E0000DB41AD /* AdWhirlDelegateProtocol.h */, - 1B264BF1120B6E0000DB41AD /* AdWhirlView.h */, - 1B264BF2120B6E0000DB41AD /* internal */, - 1B264C0E120B6E0000DB41AD /* legacy */, - ); - name = AdWhirl; - path = ../AdWhirl; - sourceTree = SOURCE_ROOT; - }; - 1B264BD8120B6E0000DB41AD /* adapters */ = { - isa = PBXGroup; - children = ( - 1B264BD9120B6E0000DB41AD /* AdWhirlAdapterAdMob.h */, - 1B264BDA120B6E0000DB41AD /* AdWhirlAdapterAdMob.m */, - 1B264BDB120B6E0000DB41AD /* AdWhirlAdapterGoogleAdSense.h */, - 1B264BDC120B6E0000DB41AD /* AdWhirlAdapterGoogleAdSense.m */, - 1B264BDD120B6E0000DB41AD /* AdWhirlAdapterGreystripe.h */, - 1B264BDE120B6E0000DB41AD /* AdWhirlAdapterGreystripe.m */, - 1B264BDF120B6E0000DB41AD /* AdWhirlAdapterIAd.h */, - 1B264BE0120B6E0000DB41AD /* AdWhirlAdapterIAd.m */, - 1B264BE1120B6E0000DB41AD /* AdWhirlAdapterInMobi.h */, - 1B264BE2120B6E0000DB41AD /* AdWhirlAdapterInMobi.m */, - 1B264BE3120B6E0000DB41AD /* AdWhirlAdapterJumpTap.h */, - 1B264BE4120B6E0000DB41AD /* AdWhirlAdapterJumpTap.m */, - 1B264BE5120B6E0000DB41AD /* AdWhirlAdapterMdotM.h */, - 1B264BE6120B6E0000DB41AD /* AdWhirlAdapterMdotM.m */, - 1B264BE7120B6E0000DB41AD /* AdWhirlAdapterMillennial.h */, - 1B264BE8120B6E0000DB41AD /* AdWhirlAdapterMillennial.m */, - 1B264BE9120B6E0000DB41AD /* AdWhirlAdapterQuattro.h */, - 1B264BEA120B6E0000DB41AD /* AdWhirlAdapterQuattro.m */, - 1B264BEB120B6E0000DB41AD /* AdWhirlAdapterVideoEgg.h */, - 1B264BEC120B6E0000DB41AD /* AdWhirlAdapterVideoEgg.m */, - 1B264BED120B6E0000DB41AD /* AdWhirlAdapterZestADZ.h */, - 1B264BEE120B6E0000DB41AD /* AdWhirlAdapterZestADZ.m */, - 1B264BEF120B6E0000DB41AD /* AdWhirlAdNetworkAdapter.h */, - ); - path = adapters; - sourceTree = ""; - }; - 1B264BF2120B6E0000DB41AD /* internal */ = { - isa = PBXGroup; - children = ( - 1B264BF3120B6E0000DB41AD /* AdWhirlAdapterCustom.h */, - 1B264BF4120B6E0000DB41AD /* AdWhirlAdapterCustom.m */, - 1B264BF5120B6E0000DB41AD /* AdWhirlAdapterEvent.h */, - 1B264BF6120B6E0000DB41AD /* AdWhirlAdapterEvent.m */, - 1B264BF7120B6E0000DB41AD /* AdWhirlAdapterGeneric.h */, - 1B264BF8120B6E0000DB41AD /* AdWhirlAdapterGeneric.m */, - 1B264BF9120B6E0000DB41AD /* AdWhirlAdNetworkAdapter+Helpers.h */, - 1B264BFA120B6E0000DB41AD /* AdWhirlAdNetworkAdapter+Helpers.m */, - 1B264BFB120B6E0000DB41AD /* AdWhirlAdNetworkAdapter.m */, - 1B264BFC120B6E0000DB41AD /* AdWhirlAdNetworkConfig.h */, - 1B264BFD120B6E0000DB41AD /* AdWhirlAdNetworkConfig.m */, - 1B264BFE120B6E0000DB41AD /* AdWhirlAdNetworkRegistry.h */, - 1B264BFF120B6E0000DB41AD /* AdWhirlAdNetworkRegistry.m */, - 1B264C00120B6E0000DB41AD /* AdWhirlConfig.h */, - 1B264C01120B6E0000DB41AD /* AdWhirlConfig.m */, - 1B264C02120B6E0000DB41AD /* AdWhirlCustomAdView.h */, - 1B264C03120B6E0000DB41AD /* AdWhirlCustomAdView.m */, - 1B264C04120B6E0000DB41AD /* AdWhirlError.h */, - 1B264C05120B6E0000DB41AD /* AdWhirlError.m */, - 1B264C06120B6E0000DB41AD /* AdWhirlLog.h */, - 1B264C07120B6E0000DB41AD /* AdWhirlLog.m */, - 1B264C08120B6E0000DB41AD /* AdWhirlView+.h */, - 1B264C09120B6E0000DB41AD /* AdWhirlView.m */, - 1B264C0A120B6E0000DB41AD /* AdWhirlWebBrowser.xib */, - 1B264C0B120B6E0000DB41AD /* AdWhirlWebBrowserController.h */, - 1B264C0C120B6E0000DB41AD /* AdWhirlWebBrowserController.m */, - 1B264C0D120B6E0000DB41AD /* ARRollerView.m */, - 1B6898AC120C8B7A0080EAC1 /* AdWhirlClassWrapper.h */, - 1B6898AD120C8B7A0080EAC1 /* AdWhirlClassWrapper.m */, - 1B183A8F1211C61B0026647E /* UIColor+AdWhirlConfig.h */, - 1B183A901211C61B0026647E /* UIColor+AdWhirlConfig.m */, - 1B6CE7DC12149A8200E44A28 /* AdWhirlConfigStore.h */, - 1B6CE7DD12149A8200E44A28 /* AdWhirlConfigStore.m */, - 1B6CE8871214A65800E44A28 /* AWNetworkReachabilityWrapper.h */, - 1B6CE8881214A65800E44A28 /* AWNetworkReachabilityWrapper.m */, - 1B6CE8D81214CE3600E44A28 /* AWNetworkReachabilityDelegate.h */, - ); - path = internal; - sourceTree = ""; - }; - 1B264C0E120B6E0000DB41AD /* legacy */ = { - isa = PBXGroup; - children = ( - 1B264C0F120B6E0000DB41AD /* ARRollerProtocol.h */, - 1B264C10120B6E0000DB41AD /* ARRollerView.h */, - ); - path = legacy; - sourceTree = ""; - }; - 1BADCB9F120CACBE005D60B5 /* OCMock Library */ = { - isa = PBXGroup; - children = ( - 1BADCBA0120CACBE005D60B5 /* Headers */, - 1BADCBA8120CACBE005D60B5 /* libOCMock.a */, - ); - name = "OCMock Library"; - path = OCMock/build/Debug/Library; - sourceTree = ""; - }; - 1BADCBA0120CACBE005D60B5 /* Headers */ = { - isa = PBXGroup; - children = ( - 1BADCBA1120CACBE005D60B5 /* OCMock */, - ); - path = Headers; - sourceTree = ""; - }; - 1BADCBA1120CACBE005D60B5 /* OCMock */ = { - isa = PBXGroup; - children = ( - 1BADCBA2120CACBE005D60B5 /* NSNotificationCenter+OCMAdditions.h */, - 1BADCBA3120CACBE005D60B5 /* OCMArg.h */, - 1BADCBA4120CACBE005D60B5 /* OCMConstraint.h */, - 1BADCBA5120CACBE005D60B5 /* OCMock.h */, - 1BADCBA6120CACBE005D60B5 /* OCMockObject.h */, - 1BADCBA7120CACBE005D60B5 /* OCMockRecorder.h */, - ); - path = OCMock; - sourceTree = ""; - }; - 1BDA8126120B727200CCAD25 /* TouchJSON */ = { - isa = PBXGroup; - children = ( - 1BDA8127120B727200CCAD25 /* CDataScanner.h */, - 1BDA8128120B727200CCAD25 /* CDataScanner.m */, - 1BDA8129120B727200CCAD25 /* Extensions */, - 1BDA8132120B727200CCAD25 /* JSON */, - ); - name = TouchJSON; - path = ../TouchJSON; - sourceTree = SOURCE_ROOT; - }; - 1BDA8129120B727200CCAD25 /* Extensions */ = { - isa = PBXGroup; - children = ( - 1BDA812A120B727200CCAD25 /* CDataScanner_Extensions.h */, - 1BDA812B120B727200CCAD25 /* CDataScanner_Extensions.m */, - 1BDA812C120B727200CCAD25 /* NSCharacterSet_Extensions.h */, - 1BDA812D120B727200CCAD25 /* NSCharacterSet_Extensions.m */, - 1BDA812E120B727200CCAD25 /* NSDictionary_JSONExtensions.h */, - 1BDA812F120B727200CCAD25 /* NSDictionary_JSONExtensions.m */, - 1BDA8130120B727200CCAD25 /* NSScanner_Extensions.h */, - 1BDA8131120B727200CCAD25 /* NSScanner_Extensions.m */, - ); - path = Extensions; - sourceTree = ""; - }; - 1BDA8132120B727200CCAD25 /* JSON */ = { - isa = PBXGroup; - children = ( - 1BDA8133120B727200CCAD25 /* CJSONDataSerializer.h */, - 1BDA8134120B727200CCAD25 /* CJSONDataSerializer.m */, - 1BDA8135120B727200CCAD25 /* CJSONDeserializer.h */, - 1BDA8136120B727200CCAD25 /* CJSONDeserializer.m */, - 1BDA8137120B727200CCAD25 /* CJSONScanner.h */, - 1BDA8138120B727200CCAD25 /* CJSONScanner.m */, - 1BDA8139120B727200CCAD25 /* CJSONSerializer.h */, - 1BDA813A120B727200CCAD25 /* CJSONSerializer.m */, - 1BDA813B120B727200CCAD25 /* CSerializedJSONData.h */, - 1BDA813C120B727200CCAD25 /* CSerializedJSONData.m */, - ); - path = JSON; - sourceTree = ""; - }; - 2860E324111B887F00E27156 /* iPhone */ = { - isa = PBXGroup; - children = ( - 2860E325111B887F00E27156 /* AppDelegate_iPhone.h */, - 2860E326111B887F00E27156 /* AppDelegate_iPhone.m */, - 2860E327111B887F00E27156 /* MainWindow_iPhone.xib */, - ); - path = iPhone; - sourceTree = ""; - }; - 2860E32A111B888700E27156 /* iPad */ = { - isa = PBXGroup; - children = ( - 2860E32B111B888700E27156 /* AppDelegate_iPad.h */, - 2860E32C111B888700E27156 /* AppDelegate_iPad.m */, - 2860E32D111B888700E27156 /* MainWindow_iPad.xib */, - ); - path = iPad; - sourceTree = ""; - }; - 28EEBF621118D79A00187D67 /* Shared */ = { - isa = PBXGroup; - children = ( - 8D1107310486CEB800E47090 /* AdWhirlTests-Info.plist */, - ); - name = Shared; - sourceTree = ""; - }; - 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { - isa = PBXGroup; - children = ( - 1BADCB9F120CACBE005D60B5 /* OCMock Library */, - 1BDA8126120B727200CCAD25 /* TouchJSON */, - 1B264BD7120B6E0000DB41AD /* AdWhirl */, - 1B264BB9120B6D1600DB41AD /* GoogleToolboxForMac */, - 1B264BB8120B6D0900DB41AD /* UnitTests */, - 2860E32A111B888700E27156 /* iPad */, - 2860E324111B887F00E27156 /* iPhone */, - 28EEBF621118D79A00187D67 /* Shared */, - 29B97315FDCFA39411CA2CEA /* Other Sources */, - 29B97323FDCFA39411CA2CEA /* Frameworks */, - 19C28FACFE9D520D11CA2CBB /* Products */, - ); - name = CustomTemplate; - sourceTree = ""; - }; - 29B97315FDCFA39411CA2CEA /* Other Sources */ = { - isa = PBXGroup; - children = ( - 1BED9B471210C7A100E06937 /* AdWhirlTests_Prefix.pch */, - 29B97316FDCFA39411CA2CEA /* main.m */, - ); - name = "Other Sources"; - sourceTree = ""; - }; - 29B97323FDCFA39411CA2CEA /* Frameworks */ = { - isa = PBXGroup; - children = ( - 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */, - 1D30AB110D05D00D00671497 /* Foundation.framework */, - 288765FC0DF74451002DB57D /* CoreGraphics.framework */, - 1BDA8195120B751500CCAD25 /* CoreLocation.framework */, - 1BDA819F120B751500CCAD25 /* QuartzCore.framework */, - 1BDA81A1120B751500CCAD25 /* SystemConfiguration.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 1B183C5B121212B70026647E /* AdWhirlTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1B183C61121212B80026647E /* Build configuration list for PBXNativeTarget "AdWhirlTests" */; - buildPhases = ( - 1B183C58121212B70026647E /* Resources */, - 1B183C59121212B70026647E /* Sources */, - 1B183C5A121212B70026647E /* Frameworks */, - 1B183DF9121219E60026647E /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = AdWhirlTests; - productName = AdWhirlTestsApp; - productReference = 1B183C5C121212B70026647E /* AdWhirlTests.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 29B97313FDCFA39411CA2CEA /* Project object */ = { - isa = PBXProject; - buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "AdWhirlTests" */; - compatibilityVersion = "Xcode 3.1"; - developmentRegion = English; - hasScannedForEncodings = 1; - knownRegions = ( - English, - Japanese, - French, - German, - ); - mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 1B183C5B121212B70026647E /* AdWhirlTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 1B183C58121212B70026647E /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1B183C6A1212147C0026647E /* MainWindow_iPhone.xib in Resources */, - 1B183C6B1212147C0026647E /* MainWindow_iPad.xib in Resources */, - 1B183C6C1212147C0026647E /* AdWhirlWebBrowser.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 1B183DF9121219E60026647E /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "export GTM_DISABLE_ZOMBIES=1\nexport GTM_ENABLE_LEAKS=1\n$SRCROOT/../GoogleToolboxForMac/UnitTesting/RunIPhoneUnitTest.sh"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 1B183C59121212B70026647E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1B183C6D121214860026647E /* AppDelegate_iPhone.m in Sources */, - 1B183C6E121214860026647E /* AppDelegate_iPad.m in Sources */, - 1B183C6F121214860026647E /* GTMObjC2Runtime.m in Sources */, - 1B183C70121214860026647E /* GTMRegex.m in Sources */, - 1B183C71121214860026647E /* GTMIPhoneUnitTestDelegate.m in Sources */, - 1B183C72121214860026647E /* GTMIPhoneUnitTestMain.m in Sources */, - 1B183C73121214860026647E /* GTMSenTestCase.m in Sources */, - 1B183C74121214860026647E /* GTMUnitTestDevLog.m in Sources */, - 1B183C75121214860026647E /* AdWhirlAdapterCustom.m in Sources */, - 1B183C76121214860026647E /* AdWhirlAdapterEvent.m in Sources */, - 1B183C77121214860026647E /* AdWhirlAdapterGeneric.m in Sources */, - 1B183C78121214860026647E /* AdWhirlAdNetworkAdapter+Helpers.m in Sources */, - 1B183C79121214860026647E /* AdWhirlAdNetworkAdapter.m in Sources */, - 1B183C7A121214860026647E /* AdWhirlAdNetworkConfig.m in Sources */, - 1B183C7B121214860026647E /* AdWhirlAdNetworkRegistry.m in Sources */, - 1B183C7C121214860026647E /* AdWhirlConfig.m in Sources */, - 1B183C7D121214860026647E /* AdWhirlCustomAdView.m in Sources */, - 1B183C7E121214860026647E /* AdWhirlError.m in Sources */, - 1B183C7F121214860026647E /* AdWhirlLog.m in Sources */, - 1B183C80121214860026647E /* AdWhirlView.m in Sources */, - 1B183C81121214860026647E /* AdWhirlWebBrowserController.m in Sources */, - 1B183C82121214860026647E /* ARRollerView.m in Sources */, - 1B183C83121214860026647E /* CDataScanner.m in Sources */, - 1B183C84121214860026647E /* CDataScanner_Extensions.m in Sources */, - 1B183C85121214860026647E /* NSCharacterSet_Extensions.m in Sources */, - 1B183C86121214860026647E /* NSDictionary_JSONExtensions.m in Sources */, - 1B183C87121214860026647E /* NSScanner_Extensions.m in Sources */, - 1B183C88121214860026647E /* CJSONDataSerializer.m in Sources */, - 1B183C89121214860026647E /* CJSONDeserializer.m in Sources */, - 1B183C8A121214860026647E /* CJSONScanner.m in Sources */, - 1B183C8B121214860026647E /* CJSONSerializer.m in Sources */, - 1B183C8C121214860026647E /* CSerializedJSONData.m in Sources */, - 1B183C8D121214860026647E /* AdWhirlAdNetworkConfigTest.m in Sources */, - 1B183C8E121214860026647E /* AdWhirlClassWrapper.m in Sources */, - 1B183C8F121214860026647E /* GTMDevLogUnitTestingBridge.m in Sources */, - 1B183C90121214860026647E /* AdWhirlConfigTest.m in Sources */, - 1B183C91121214860026647E /* UIColor+AdWhirlConfig.m in Sources */, - 1B183C92121214860026647E /* UIColor+AdWhirlConfigTest.m in Sources */, - 1B6CE7DE12149A8200E44A28 /* AdWhirlConfigStore.m in Sources */, - 1B6CE7E112149A9E00E44A28 /* AdWhirlConfigStoreTest.m in Sources */, - 1B6CE8891214A65800E44A28 /* AWNetworkReachabilityWrapper.m in Sources */, - 1B4905A81230815300BAECDE /* AdWhirlViewTest.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 1B183C5F121212B80026647E /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)\"", - "\"$(DEVELOPER_FRAMEWORKS_DIR)\"", - ); - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - HEADER_SEARCH_PATHS = "\"$(SRCROOT)/OCMock/build/Debug/Library/Headers\""; - INFOPLIST_FILE = "AdWhirlTests-Info.plist"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/OCMock/build/Debug/Library\"", - ); - OTHER_LDFLAGS = ( - "-lgcov", - "-force_load", - "$(PROJECT_DIR)/OCMock/build/Debug/Library/libOCMock.a", - "-ObjC", - ); - PREBINDING = NO; - PRODUCT_NAME = AdWhirlTests; - }; - name = Debug; - }; - 1B183C60121212B80026647E /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COPY_PHASE_STRIP = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)\"", - "\"$(DEVELOPER_FRAMEWORKS_DIR)\"", - ); - GCC_ENABLE_FIX_AND_CONTINUE = NO; - HEADER_SEARCH_PATHS = "\"$(SRCROOT)/OCMock/build/Debug/Library/Headers\""; - INFOPLIST_FILE = "AdWhirlTests-Info.plist"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "\"$(SRCROOT)/OCMock/build/Debug/Library\"", - ); - OTHER_LDFLAGS = ( - "-lgcov", - "-force_load", - "$(PROJECT_DIR)/OCMock/build/Debug/Library/libOCMock.a", - "-ObjC", - ); - PREBINDING = NO; - PRODUCT_NAME = AdWhirlTests; - ZERO_LINK = NO; - }; - name = Release; - }; - C01FCF4F08A954540054247B /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_GENERATE_TEST_COVERAGE_FILES = YES; - GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = AdWhirlTests_Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = ( - "AWLogCrit=_GTMUnitTestDevLog", - "AWLogError=_GTMUnitTestDevLog", - "AWLogWarn=_GTMUnitTestDevLog", - "DEBUG=1", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 3.2; - PREBINDING = NO; - SDKROOT = iphoneos4.1; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - C01FCF5008A954540054247B /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_GENERATE_TEST_COVERAGE_FILES = YES; - GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = AdWhirlTests_Prefix.pch; - GCC_PREPROCESSOR_DEFINITIONS = ( - "AWLogCrit=_GTMUnitTestDevLog", - "AWLogError=_GTMUnitTestDevLog", - "AWLogWarn=_GTMUnitTestDevLog", - "DEBUG=1", - ); - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 3.2; - OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; - PREBINDING = NO; - SDKROOT = iphoneos4.1; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 1B183C61121212B80026647E /* Build configuration list for PBXNativeTarget "AdWhirlTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1B183C5F121212B80026647E /* Debug */, - 1B183C60121212B80026647E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - C01FCF4E08A954540054247B /* Build configuration list for PBXProject "AdWhirlTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C01FCF4F08A954540054247B /* Debug */, - C01FCF5008A954540054247B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; -} diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/AdWhirlTests_Prefix.pch b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/AdWhirlTests_Prefix.pch deleted file mode 100644 index 27cea000d..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/AdWhirlTests_Prefix.pch +++ /dev/null @@ -1,7 +0,0 @@ -// -// Prefix header for all source files of the 'AdWhirlTests' target in the 'AdWhirlTests' project -// - -// To silence build warnings when we swap AdWhirlLog* with this -@class NSString; -extern void _GTMUnitTestDevLog(NSString *format, ...); diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/Shared/main.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/Shared/main.m deleted file mode 100644 index 505928318..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/Shared/main.m +++ /dev/null @@ -1,17 +0,0 @@ -// -// main.m -// AdWhirlTests -// -// Created by Nigel Choi on 8/5/10. -// Copyright __MyCompanyName__ 2010. All rights reserved. -// - -#import - -int main(int argc, char *argv[]) { - - NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; - int retVal = UIApplicationMain(argc, argv, nil, nil); - [pool release]; - return retVal; -} diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/UnitTests/AdWhirlAdNetworkConfigTest.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/UnitTests/AdWhirlAdNetworkConfigTest.m deleted file mode 100644 index 0b2558705..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/UnitTests/AdWhirlAdNetworkConfigTest.m +++ /dev/null @@ -1,305 +0,0 @@ -/* - - AdWhirlAdNetworkConfigTest.m - - Copyright 2010 Google 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 -#import "GTMSenTestCase.h" -#import "GTMUnitTestDevLog.h" -#import "AdWhirlAdNetworkConfig.h" -#import "AdWhirlAdNetworkAdapter.h" -#import "AdWhirlError.h" -#import "AdWhirlAdNetworkRegistry.h" -#import "AdWhirlClassWrapper.h" - - -@interface AdWhirlAdNetworkConfigTest : GTMTestCase { - id mockRegistry_; -} -@end - - -@implementation AdWhirlAdNetworkConfigTest - --(void) setUp { - mockRegistry_ = [OCMockObject mockForClass:[AdWhirlAdNetworkRegistry class]]; -} - -- (void) tearDown { -} - -- (void) testGoodConfig { - NSDictionary *configDict = [NSDictionary dictionaryWithObjectsAndKeys: - @"custom", AWAdNetworkConfigKeyName, - @"14.5", AWAdNetworkConfigKeyWeight, - @"2798463808b1234567890abcdef5c1e9", AWAdNetworkConfigKeyNID, - @"__CUSTOM__", AWAdNetworkConfigKeyCred, - @"9", AWAdNetworkConfigKeyType, - @"10", AWAdNetworkConfigKeyPriority, - nil]; - AdWhirlClassWrapper *classWrapper - = [[AdWhirlClassWrapper alloc] initWithClass:[AdWhirlAdNetworkAdapter class]]; - [[[mockRegistry_ expect] andReturn:classWrapper] adapterClassFor:9]; - AdWhirlError *error = nil; - AdWhirlAdNetworkConfig *config - = [[AdWhirlAdNetworkConfig alloc] initWithDictionary:configDict - adNetworkRegistry:mockRegistry_ - error:&error]; - STAssertNoThrow([mockRegistry_ verify], - @"Must have called adapterClassFor of the ad network registry"); - STAssertNil(error, @"should have no error parsing ad network config"); - STAssertNotNil(config, @"config should be non-nil"); - STAssertEqualStrings(config.networkName, @"custom", @"network name"); - STAssertEquals(config.trafficPercentage, 14.5, @"percentage"); - STAssertEqualStrings(config.nid, @"2798463808b1234567890abcdef5c1e9", @"nid"); - STAssertNotNil(config.credentials, @"credentials exists"); - STAssertEqualStrings(config.pubId, @"__CUSTOM__", @"pubId"); - STAssertEquals(config.networkType, 9, @"network type"); - STAssertEquals(config.priority, 10, @"priority"); - STAssertNotNil([config description], @"has description"); - STAssertEquals(config.adapterClass, classWrapper.theClass, @"adapter class match"); - [config release]; - [classWrapper release]; -} - -- (void) testGoodConfigHashCred { - NSDictionary *cred = [NSDictionary dictionaryWithObjectsAndKeys: - @"site_id", @"siteID", - @"spot_id", @"spotID", - @"pub_id", @"publisherID", - nil]; - NSDictionary *configDict = [NSDictionary dictionaryWithObjectsAndKeys: - @"jumptap", AWAdNetworkConfigKeyName, - @"30", AWAdNetworkConfigKeyWeight, - @"1234567890a1234567890abcdef5c1e9", AWAdNetworkConfigKeyNID, - cred, AWAdNetworkConfigKeyCred, - @"2", AWAdNetworkConfigKeyType, - @"2", AWAdNetworkConfigKeyPriority, - nil]; - AdWhirlClassWrapper *classWrapper - = [[AdWhirlClassWrapper alloc] initWithClass:[AdWhirlAdNetworkAdapter class]]; - [[[mockRegistry_ expect] andReturn:classWrapper] adapterClassFor:2]; - AdWhirlError *error = nil; - AdWhirlAdNetworkConfig *config - = [[AdWhirlAdNetworkConfig alloc] initWithDictionary:configDict - adNetworkRegistry:mockRegistry_ - error:&error]; - STAssertNoThrow([mockRegistry_ verify], - @"Must have called adapterClassFor of the ad network registry"); - STAssertNil(error, @"should have no error parsing ad network config"); - STAssertNotNil(config, @"config should be non-nil"); - STAssertEqualStrings(config.networkName, @"jumptap", @"network name"); - STAssertEquals(config.trafficPercentage, 30.0, @"percentage"); - STAssertEqualStrings(config.nid, @"1234567890a1234567890abcdef5c1e9", @"nid"); - STAssertNotNil(config.credentials, @"credentials exists"); - STAssertTrue([config.credentials isKindOfClass:[NSDictionary class]], - @"credentials is a dictionary"); - STAssertNil(config.pubId, @"no single pubId"); - STAssertEqualStrings([config.credentials objectForKey:@"siteID"], - @"site_id", @"cred.siteId"); - STAssertEqualStrings([config.credentials objectForKey:@"spotID"], - @"spot_id", @"cred.spotId"); - STAssertEqualStrings([config.credentials objectForKey:@"publisherID"], - @"pub_id", @"cred.pubId"); - STAssertEquals(config.networkType, 2, @"network type"); - STAssertEquals(config.priority, 2, @"priority"); - STAssertNotNil([config description], @"has description"); - STAssertEquals(config.adapterClass, classWrapper.theClass, @"adapter class match"); - [config release]; - [classWrapper release]; -} - -- (void) testEmptyConfig { - NSDictionary *configDict = [NSDictionary dictionaryWithObjectsAndKeys:nil]; - AdWhirlError *error = nil; - AdWhirlAdNetworkConfig *config - = [[AdWhirlAdNetworkConfig alloc] initWithDictionary:configDict - adNetworkRegistry:mockRegistry_ - error:&error]; - STAssertNil(config, @"Bad config dict should yield nil network config"); - STAssertNotNil(error, @"Bad config dict should yield error"); - STAssertEquals([error localizedDescription], - @"Ad network config has no network type, network id, network name, or priority", - @"Bad config dict error message"); - STAssertEquals([error code], AdWhirlConfigDataError, - @"Bad config should give AdWhirlConfigDataError"); -} - -- (void) testEmptyConfigNilErrorObj { - NSDictionary *configDict = [NSDictionary dictionaryWithObjectsAndKeys:nil]; - [GTMUnitTestDevLog expectString:@"Ad network config has no network type, network id, network name, or priority"]; - AdWhirlAdNetworkConfig *config - = [[AdWhirlAdNetworkConfig alloc] initWithDictionary:configDict - adNetworkRegistry:mockRegistry_ - error:nil]; - STAssertNil(config, @"Bad config dict should yield nil network config"); -} - -- (void) testNonExistentNetworkType { - NSDictionary *configDict = [NSDictionary dictionaryWithObjectsAndKeys: - @"bogus", AWAdNetworkConfigKeyName, - @"50", AWAdNetworkConfigKeyWeight, - @"2798463808b1234567890abcdef5c1e9", AWAdNetworkConfigKeyNID, - @"x", AWAdNetworkConfigKeyCred, - @"1000000", AWAdNetworkConfigKeyType, - @"6", AWAdNetworkConfigKeyPriority, - nil]; - [[[mockRegistry_ expect] andReturn:nil] adapterClassFor:1000000]; - AdWhirlError *error = nil; - AdWhirlAdNetworkConfig *config - = [[AdWhirlAdNetworkConfig alloc] initWithDictionary:configDict - adNetworkRegistry:mockRegistry_ - error:&error]; - STAssertNoThrow([mockRegistry_ verify], - @"Must have called adapterClassFor of the ad network registry"); - STAssertNil(config, @"Config must be null for non-existent network type"); - STAssertNotNil(error, @"Must returned error for non-existent network type"); - STAssertEqualStrings([error localizedDescription], - @"Ad network type 1000000 not supported, no adapter found", - @"Non-existent network type error string"); - STAssertEquals([error code], AdWhirlConfigDataError, - @"Non-existent network type should give AdWhirlConfigDataError"); -} - -- (void) testNonExistentNetworkTypeNilErrorObj { - NSDictionary *configDict = [NSDictionary dictionaryWithObjectsAndKeys: - @"bogus", AWAdNetworkConfigKeyName, - @"50", AWAdNetworkConfigKeyWeight, - @"2798463808b1234567890abcdef5c1e9", AWAdNetworkConfigKeyNID, - @"x", AWAdNetworkConfigKeyCred, - @"1000000", AWAdNetworkConfigKeyType, - @"6", AWAdNetworkConfigKeyPriority, - nil]; - [[[mockRegistry_ expect] andReturn:nil] adapterClassFor:1000000]; - [GTMUnitTestDevLog expectString:@"Ad network type 1000000 not supported, no adapter found"]; - AdWhirlAdNetworkConfig *config - = [[AdWhirlAdNetworkConfig alloc] initWithDictionary:configDict - adNetworkRegistry:mockRegistry_ - error:nil]; - STAssertNoThrow([mockRegistry_ verify], - @"Must have called adapterClassFor of the ad network registry"); - STAssertNil(config, @"Config must be null for non-existent network type"); -} - -- (void) testNilWeight { - NSDictionary *configDict = [NSDictionary dictionaryWithObjectsAndKeys: - @"custom", AWAdNetworkConfigKeyName, - @"2798463808b1234567890abcdef5c1e9", AWAdNetworkConfigKeyNID, - @"__CUSTOM__", AWAdNetworkConfigKeyCred, - @"9", AWAdNetworkConfigKeyType, - @"10", AWAdNetworkConfigKeyPriority, - nil]; - AdWhirlClassWrapper *classWrapper - = [[AdWhirlClassWrapper alloc] initWithClass:[AdWhirlAdNetworkAdapter class]]; - [[[mockRegistry_ expect] andReturn:classWrapper] adapterClassFor:9]; - AdWhirlError *error = nil; - AdWhirlAdNetworkConfig *config - = [[AdWhirlAdNetworkConfig alloc] initWithDictionary:configDict - adNetworkRegistry:mockRegistry_ - error:&error]; - STAssertNoThrow([mockRegistry_ verify], - @"Must have called adapterClassFor of the ad network registry"); - STAssertNil(error, @"should have no error parsing ad network config"); - STAssertNotNil(config, @"config should be non-nil"); - STAssertEqualStrings(config.networkName, @"custom", @"network name"); - STAssertEquals(config.trafficPercentage, 0.0, @"percentage should be 0"); - STAssertEqualStrings(config.nid, @"2798463808b1234567890abcdef5c1e9", @"nid"); - STAssertNotNil(config.credentials, @"credentials exists"); - STAssertEqualStrings(config.pubId, @"__CUSTOM__", @"pubId"); - STAssertEquals(config.networkType, 9, @"network type"); - STAssertEquals(config.priority, 10, @"priority"); - STAssertNotNil([config description], @"has description"); - STAssertEquals(config.adapterClass, classWrapper.theClass, @"adapter class match"); - [config release]; - [classWrapper release]; -} - -- (void) testNilCred { - NSDictionary *configDict = [NSDictionary dictionaryWithObjectsAndKeys: - @"custom", AWAdNetworkConfigKeyName, - @"14.5", AWAdNetworkConfigKeyWeight, - @"2798463808b1234567890abcdef5c1e9", AWAdNetworkConfigKeyNID, - @"9", AWAdNetworkConfigKeyType, - @"10", AWAdNetworkConfigKeyPriority, - nil]; - AdWhirlClassWrapper *classWrapper - = [[AdWhirlClassWrapper alloc] initWithClass:[AdWhirlAdNetworkAdapter class]]; - [[[mockRegistry_ expect] andReturn:classWrapper] adapterClassFor:9]; - AdWhirlError *error = nil; - AdWhirlAdNetworkConfig *config - = [[AdWhirlAdNetworkConfig alloc] initWithDictionary:configDict - adNetworkRegistry:mockRegistry_ - error:&error]; - STAssertNoThrow([mockRegistry_ verify], - @"Must have called adapterClassFor of the ad network registry"); - STAssertNil(error, @"should have no error parsing ad network config"); - STAssertNotNil(config, @"config should be non-nil"); - STAssertEqualStrings(config.networkName, @"custom", @"network name"); - STAssertEquals(config.trafficPercentage, 14.5, @"percentage"); - STAssertEqualStrings(config.nid, @"2798463808b1234567890abcdef5c1e9", @"nid"); - STAssertNil(config.credentials, @"credentials exists"); - STAssertNil(config.pubId, @"credentials nil"); - STAssertEquals(config.networkType, 9, @"network type"); - STAssertEquals(config.priority, 10, @"priority"); - STAssertNotNil([config description], @"has description"); - STAssertEquals(config.adapterClass, classWrapper.theClass, @"adapter class match"); - [config release]; - [classWrapper release]; -} - -- (void) testNetworkTypeNotNumber { - NSDictionary *configDict = [NSDictionary dictionaryWithObjectsAndKeys: - @"custom", AWAdNetworkConfigKeyName, - @"14.5", AWAdNetworkConfigKeyWeight, - @"2798463808b1234567890abcdef5c1e9", AWAdNetworkConfigKeyNID, - @"__CUSTOM__", AWAdNetworkConfigKeyCred, - @"somestring", AWAdNetworkConfigKeyType, - @"10", AWAdNetworkConfigKeyPriority, - nil]; - AdWhirlError *error = nil; - AdWhirlAdNetworkConfig *config - = [[AdWhirlAdNetworkConfig alloc] initWithDictionary:configDict - adNetworkRegistry:mockRegistry_ - error:&error]; - STAssertNil(config, @"Non-int network type should yield nil network config"); - STAssertNotNil(error, @"Non-int network type should yield error"); - STAssertEquals([error localizedDescription], - @"Ad network config has invalid network type, network id, network name or priority", - @"Non-int network type error message"); - STAssertEquals([error code], AdWhirlConfigDataError, - @"Non-int network type should give AdWhirlConfigDataError"); -} - -- (void) testNetworkTypeNotNumberNilErrObj { - NSDictionary *configDict = [NSDictionary dictionaryWithObjectsAndKeys: - @"custom", AWAdNetworkConfigKeyName, - @"14.5", AWAdNetworkConfigKeyWeight, - @"2798463808b1234567890abcdef5c1e9", AWAdNetworkConfigKeyNID, - @"__CUSTOM__", AWAdNetworkConfigKeyCred, - @"somestring", AWAdNetworkConfigKeyType, - @"10", AWAdNetworkConfigKeyPriority, - nil]; - [GTMUnitTestDevLog expectString:@"Ad network config has invalid network type, network id, network name or priority"]; - AdWhirlAdNetworkConfig *config - = [[AdWhirlAdNetworkConfig alloc] initWithDictionary:configDict - adNetworkRegistry:mockRegistry_ - error:nil]; - STAssertNil(config, @"Non-int network type should yield nil network config"); -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/UnitTests/AdWhirlConfigStoreTest.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/UnitTests/AdWhirlConfigStoreTest.m deleted file mode 100644 index b5389bc1f..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/UnitTests/AdWhirlConfigStoreTest.m +++ /dev/null @@ -1,410 +0,0 @@ -/* - - AdWhirlConfigStoreTest.m - - Copyright 2010 Google 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 -#import -#import "GTMSenTestCase.h" -#import "GTMUnitTestDevLog.h" -#import "AdWhirlConfigStore.h" -#import "AdWhirlConfig.h" -#import "AWNetworkReachabilityWrapper.h" -#import "AdWhirlView.h" -#import "AdWhirlClassWrapper.h" -#import "AdWhirlAdNetworkRegistry.h" -#import "AdWhirlAdNetworkAdapter.h" -#import "AdWhirlError.h" - - -@interface AdWhirlConfigStoreTest : GTMTestCase { -} -@end - - -// Need to be a concrete class instead of a protocol mock because -// we don't want tests to invoke performSelectorOnMainThread -@interface AdWhirlConfigDelegateConcrete : NSObject { -} -@end - - -@implementation AdWhirlConfigDelegateConcrete -@end - - -@implementation AdWhirlConfigStoreTest - --(void)setUp { - [AdWhirlConfigStore resetStore]; -} - -- (void)tearDown { - // Reset to make sure no leaks - [AdWhirlConfigStore resetStore]; -} - -- (void)testSingleton { - STAssertEquals([AdWhirlConfigStore sharedStore], - [AdWhirlConfigStore sharedStore], - @"There should only be one shared AdWhirlConfigStore"); -} - -- (void)testFetchConfig { - AdWhirlConfigStore *store = [AdWhirlConfigStore sharedStore]; - - id mockReachability = - [OCMockObject mockForClass:[AWNetworkReachabilityWrapper class]]; - BOOL yesVal = YES; - [[[mockReachability expect] andReturnValue:OCMOCK_VALUE(yesVal)] - scheduleInCurrentRunLoop]; - store.reachability = mockReachability; - - id mockURLConn = [OCMockObject mockForClass:[NSURLConnection class]]; - store.connection = mockURLConn; - - // First get call should trigger fetchConfig - NSString *configURLString = @"http://test.adwhirl.com/getInfo.php"; - NSString *appKey = @"1234567890abcdef"; - id mockConfigDelegate1 = - [OCMockObject mockForProtocol:@protocol(AdWhirlConfigDelegate)]; - [[[mockConfigDelegate1 expect] - andReturn:[NSURL URLWithString:configURLString]] adWhirlConfigURL]; - AdWhirlConfig *config1 = [store getConfig:appKey - delegate:mockConfigDelegate1]; - STAssertEqualStrings(config1.appKey, appKey, - @"returned config should have same appKey"); - STAssertEqualStrings([config1.configURL host], @"test.adwhirl.com", - @"returned config should have same configURL host"); - STAssertEqualStrings([config1.configURL path], @"/getInfo.php", - @"returned config should have same configURL path"); - NSString *expectedQuery = - [NSString stringWithFormat:@"appid=%@&appver=%d&client=1", - appKey, kAdWhirlAppVer]; - STAssertEqualStrings([config1.configURL query], expectedQuery, - @"returned config should have the right query"); - STAssertFalse(config1.hasConfig, @"returned config should not have config"); - - // Second get call for the same appKey while fetch in progress should get the - // delegate added to the list - id mockConfigDelegate2 = - [OCMockObject mockForProtocol:@protocol(AdWhirlConfigDelegate)]; - AdWhirlConfig *config2 = [store getConfig:appKey - delegate:mockConfigDelegate2]; - STAssertEquals(config1, config2, @"same config"); - - // Get call for a different appKey while fetch in progress should be rejected - NSString *configURLString3 = @"http://test3.adwhirl.com/getInfo.php"; - id mockConfigDelegate3 = - [OCMockObject mockForProtocol:@protocol(AdWhirlConfigDelegate)]; - [[[mockConfigDelegate3 expect] - andReturn:[NSURL URLWithString:configURLString3]] adWhirlConfigURL]; - [GTMUnitTestDevLog expectString: - @"Another fetch is in progress, wait until finished."]; - id nilConfig = [store getConfig:@"9876543210abcdef" - delegate:mockConfigDelegate3]; - STAssertNil(nilConfig, @"should get nil config for call to different appKey" - @" while fetch in progress"); - - // Simulate bad callback - id badReach = - [OCMockObject mockForClass:[AWNetworkReachabilityWrapper class]]; - [GTMUnitTestDevLog expectPattern:@"Unrecognized reachability object" - @" called not reachable .*"]; - [store reachabilityNotReachable:badReach]; - [GTMUnitTestDevLog expectPattern:@"Unrecognized reachability object" - @" called reachable .*"]; - [store reachabilityBecameReachable:badReach]; - - // Simulate reachability not yet ready. There should be a checkReachability - // method call scheduled in the current run loop to be executed after 10 - // seconds. But the run loop is not running here, so we have to - // simulate. - [[[mockReachability expect] andReturn:@"example.com"] hostname]; - [store reachabilityNotReachable:mockReachability]; - STAssertNil(store.reachability, - @"reachability should be nil after not reachable"); - - // Put the reachability object back - store.reachability = mockReachability; - [[[mockReachability expect] andReturnValue:OCMOCK_VALUE(yesVal)] - scheduleInCurrentRunLoop]; - - // Simulate run loop call of checkReachability - [store performSelector:@selector(checkReachability)]; - - // Simulate reachability ready callback in run loop - [store reachabilityBecameReachable:mockReachability]; - STAssertNil(store.reachability, - @"reachability should be nil after reachable"); - - // Simulate bad NSURLConnection callback - id badConn = [OCMockObject mockForClass:[NSURLConnection class]]; - [GTMUnitTestDevLog expectPattern:@"Unrecognized connection object .*"]; - [store connection:badConn didReceiveResponse:nil]; - [GTMUnitTestDevLog expectPattern:@"Unrecognized connection object .*"]; - [store connection:badConn didFailWithError:nil]; - [GTMUnitTestDevLog expectPattern:@"Unrecognized connection object .*"]; - [store connectionDidFinishLoading:badConn]; - [GTMUnitTestDevLog expectPattern:@"Unrecognized connection object .*"]; - [store connection:badConn didReceiveData:nil]; - - // Simulate NSURLConnection callbacks - id mockResp = [OCMockObject mockForClass:[NSHTTPURLResponse class]]; - [[[mockResp expect] andReturnValue:OCMOCK_VALUE(yesVal)] - isKindOfClass:[NSHTTPURLResponse class]]; - int httpStatus = 200; - [[[mockResp expect] andReturnValue:OCMOCK_VALUE(httpStatus)] statusCode]; - [store connection:mockURLConn didReceiveResponse:mockResp]; - - // Config processing - id mockRegistry = [OCMockObject mockForClass:[AdWhirlAdNetworkRegistry class]]; - AdWhirlClassWrapper *classWrapper - = [[AdWhirlClassWrapper alloc] initWithClass:[AdWhirlAdNetworkAdapter class]]; - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:1]; // AdMob - config1.adNetworkRegistry = mockRegistry; - [[mockConfigDelegate1 expect] adWhirlConfigDidReceiveConfig:config1]; - [[mockConfigDelegate2 expect] adWhirlConfigDidReceiveConfig:config1]; - NSString *configRaw = - @"{\"extra\":{" - @"\"location_on\":0," - @"\"background_color_rgb\":{\"red\":7,\"green\":8,\"blue\":9,\"alpha\":0.5}," - @"\"text_color_rgb\":{\"red\":200,\"green\":150,\"blue\":100,\"alpha\":0.5}," - @"\"cycle_time\":45," - @"\"transition\":4}," - @"\"rations\":[{" - @"\"nid\":\"9976543210abcdefabcdef0000000001\"," - @"\"type\":1," - @"\"nname\":\"admob\"," - @"\"weight\":0," - @"\"priority\":1," - @"\"key\":\"ADMOB_KEY\"" - @"}]}"; - NSData *configData = [configRaw dataUsingEncoding:NSUTF8StringEncoding]; - [store connection:mockURLConn didReceiveData:configData]; - [store connectionDidFinishLoading:mockURLConn]; - STAssertNil(store.connection, @"connection nil after config loading"); - [classWrapper release], classWrapper = nil; - - // Test getting cached version - id mockConfigDelegate4 = - [OCMockObject mockForClass:[AdWhirlConfigDelegateConcrete class]]; - AdWhirlConfig *config4 = [store getConfig:appKey - delegate:mockConfigDelegate4]; - STAssertEquals(config4, config1, @"same cached config"); - - // Verify - STAssertNoThrow([mockReachability verify], @"Must call expected methods"); - STAssertNoThrow([mockConfigDelegate1 verify], @"Must call expected methods"); - STAssertNoThrow([mockConfigDelegate2 verify], @"Must call expected methods"); - - // During tearDown reachability's delegate will be set to nil - [[mockReachability expect] setDelegate:nil]; -} - -- (BOOL)checkReachabilityError:(id)arg1 { - if (![arg1 isKindOfClass:[AdWhirlError class]]) return NO; - AdWhirlError *err = arg1; - if ([err code] != AdWhirlConfigConnectionError) return NO; - NSString *errMsg = [err localizedDescription]; - if (errMsg == nil) return NO; - NSString *expectMsg = @"Error scheduling reachability"; - if ([errMsg rangeOfString:expectMsg].location != 0) return NO; - return YES; -} - -- (void)testFetchConfigReachabilityFail { - AdWhirlConfigStore *store = [AdWhirlConfigStore sharedStore]; - - id mockReachability = - [OCMockObject mockForClass:[AWNetworkReachabilityWrapper class]]; - BOOL noVal = NO; - [[[mockReachability expect] andReturnValue:OCMOCK_VALUE(noVal)] - scheduleInCurrentRunLoop]; - store.reachability = mockReachability; - - // First get call should trigger fetchConfig - NSString *configURLString = @"http://test.adwhirl.com/getInfo.php"; - NSString *appKey = @"abcdefabcdef"; - id mockConfigDelegate = - [OCMockObject mockForProtocol:@protocol(AdWhirlConfigDelegate)]; - [[[mockConfigDelegate expect] - andReturn:[NSURL URLWithString:configURLString]] adWhirlConfigURL]; - [[mockConfigDelegate expect] adWhirlConfigDidFail:[OCMArg any] - error: - [OCMArg checkWithSelector:@selector(checkReachabilityError:) onObject:self]]; - AdWhirlConfig *nilConfig = [store getConfig:appKey - delegate:mockConfigDelegate]; - STAssertNil(nilConfig, @"reachability failure result in nil config"); - - // Verify - STAssertNoThrow([mockReachability verify], @"Must call expected methods"); - STAssertNoThrow([mockConfigDelegate verify], @"Must call expected methods"); -} - -- (BOOL)checkFailedConnectionError:(id)arg1 { - STAssertTrue([arg1 isKindOfClass:[AdWhirlError class]], - @"arg1 should be AdWhirlError"); - AdWhirlError *err = arg1; - STAssertEquals([err code], AdWhirlConfigConnectionError, - @"Should be AdWhirlConfigConnectionError"); - NSString *errMsg = [err localizedDescription]; - STAssertNotNil(errMsg, @"Must have error message"); - NSString *expectMsg = @"Error connecting to config server"; - STAssertEqualStrings(errMsg, expectMsg, @"Error message content"); - return YES; -} - -- (void)testFetchConfigFailedConnection { - AdWhirlConfigStore *store = [AdWhirlConfigStore sharedStore]; - - id mockReachability = - [OCMockObject mockForClass:[AWNetworkReachabilityWrapper class]]; - BOOL yesVal = YES; - [[[mockReachability expect] andReturnValue:OCMOCK_VALUE(yesVal)] - scheduleInCurrentRunLoop]; - store.reachability = mockReachability; - - id mockURLConn = [OCMockObject mockForClass:[NSURLConnection class]]; - store.connection = mockURLConn; - - // First get call should trigger fetchConfig - NSString *configURLString = @"http://test.adwhirl.com/getInfo.php"; - NSString *appKey = @"fedcbafedcbafedcba"; - id mockConfigDelegate = - [OCMockObject mockForProtocol:@protocol(AdWhirlConfigDelegate)]; - [[[mockConfigDelegate expect] - andReturn:[NSURL URLWithString:configURLString]] adWhirlConfigURL]; - AdWhirlConfig *config = [store getConfig:appKey - delegate:mockConfigDelegate]; - STAssertFalse(config.hasConfig, @"returned config should not have config"); - - // Simulate reachability ready callback in run loop - [store reachabilityBecameReachable:mockReachability]; - STAssertNil(store.reachability, - @"reachability should be nil after reachable"); - - // Simulate NSURLConnection callbacks for failed connection - [[mockConfigDelegate expect] adWhirlConfigDidFail:config - error: - [OCMArg checkWithSelector:@selector(checkFailedConnectionError:) - onObject:self]]; - [store connection:mockURLConn - didFailWithError:[NSError errorWithDomain:@"test" - code:1 - userInfo:nil]]; - - // After the failure, the config should not longer be cached, so getConfig - // should return a new config object - [[[mockReachability expect] andReturnValue:OCMOCK_VALUE(yesVal)] - scheduleInCurrentRunLoop]; - store.reachability = mockReachability; - [[[mockConfigDelegate expect] - andReturn:[NSURL URLWithString:configURLString]] adWhirlConfigURL]; - AdWhirlConfig *config2 = [store getConfig:appKey - delegate:mockConfigDelegate]; - STAssertFalse(config2.hasConfig, @"returned config should not have config"); - STAssertNotEquals(config, config2, @"failed config should have been gone"); - - // Set reachability to nil - store.reachability = nil; - - // Verify - STAssertNoThrow([mockReachability verify], @"Must call expected methods"); - STAssertNoThrow([mockConfigDelegate verify], @"Must call expected methods"); -} - -- (BOOL)checkBadHTTPStatusError:(id)arg1 { - STAssertTrue([arg1 isKindOfClass:[AdWhirlError class]], - @"arg1 should be AdWhirlError"); - AdWhirlError *err = arg1; - STAssertEquals([err code], AdWhirlConfigStatusError, - @"Should be AdWhirlConfigStatusError"); - NSString *errMsg = [err localizedDescription]; - STAssertNotNil(errMsg, @"Must have error message"); - NSString *expectMsg = @"Config server did not return status 200"; - STAssertEqualStrings(errMsg, expectMsg, @"Error message content"); - return YES; -} - -- (void)testFetchConfigBadHTTPStatus { - AdWhirlConfigStore *store = [AdWhirlConfigStore sharedStore]; - - id mockReachability = - [OCMockObject mockForClass:[AWNetworkReachabilityWrapper class]]; - BOOL yesVal = YES; - [[[mockReachability expect] andReturnValue:OCMOCK_VALUE(yesVal)] - scheduleInCurrentRunLoop]; - store.reachability = mockReachability; - - id mockURLConn = [OCMockObject mockForClass:[NSURLConnection class]]; - store.connection = mockURLConn; - - // First get call should trigger fetchConfig - NSString *configURLString = @"http://test.adwhirl.com/getInfo.php"; - NSString *appKey = @"fedcbafedcbafedcba"; - id mockConfigDelegate = - [OCMockObject mockForProtocol:@protocol(AdWhirlConfigDelegate)]; - [[[mockConfigDelegate expect] - andReturn:[NSURL URLWithString:configURLString]] adWhirlConfigURL]; - AdWhirlConfig *config = [store getConfig:appKey - delegate:mockConfigDelegate]; - STAssertFalse(config.hasConfig, @"returned config should not have config"); - - // Simulate reachability ready callback in run loop - [store reachabilityBecameReachable:mockReachability]; - STAssertNil(store.reachability, - @"reachability should be nil after reachable"); - - // Simulate NSURLConnection callbacks for bad HTTP status - id mockResp = [OCMockObject mockForClass:[NSHTTPURLResponse class]]; - [[[mockResp expect] andReturnValue:OCMOCK_VALUE(yesVal)] - isKindOfClass:[NSHTTPURLResponse class]]; - [[[mockResp expect] andReturn:@"http://xyz"] URL]; - int httpStatus = 500; - [[[mockResp expect] andReturnValue:OCMOCK_VALUE(httpStatus)] statusCode]; - [GTMUnitTestDevLog expectPattern: - @"AdWhirlConfig: HTTP 500, cancelling http://xyz"]; - [[mockURLConn expect] cancel]; - [[mockConfigDelegate expect] adWhirlConfigDidFail:config - error: - [OCMArg checkWithSelector:@selector(checkBadHTTPStatusError:) - onObject:self]]; - [store connection:mockURLConn didReceiveResponse:mockResp]; - - // After the failure, the config should not longer be cached, so getConfig - // should return a new config object - [[[mockReachability expect] andReturnValue:OCMOCK_VALUE(yesVal)] - scheduleInCurrentRunLoop]; - store.reachability = mockReachability; - [[[mockConfigDelegate expect] - andReturn:[NSURL URLWithString:configURLString]] adWhirlConfigURL]; - AdWhirlConfig *config2 = [store getConfig:appKey - delegate:mockConfigDelegate]; - STAssertFalse(config2.hasConfig, @"returned config should not have config"); - STAssertNotEquals(config, config2, @"failed config should have been gone"); - - // Verify - STAssertNoThrow([mockReachability verify], @"Must call expected methods"); - STAssertNoThrow([mockConfigDelegate verify], @"Must call expected methods"); - - // During tearDown reachability's delegate will be set to nil - [[mockReachability expect] setDelegate:nil]; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/UnitTests/AdWhirlConfigTest.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/UnitTests/AdWhirlConfigTest.m deleted file mode 100644 index 418dd9616..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/UnitTests/AdWhirlConfigTest.m +++ /dev/null @@ -1,901 +0,0 @@ -/* - - AdWhirlConfigTest.m - - Copyright 2010 Google 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 -#import -#import "GTMSenTestCase.h" -#import "GTMUnitTestDevLog.h" -#import "AdWhirlConfig.h" -#import "AdWhirlAdNetworkConfig.h" -#import "AdWhirlAdNetworkRegistry.h" -#import "AdWhirlClassWrapper.h" -#import "AdWhirlAdNetworkAdapter.h" -#import "AdWhirlView.h" - -@interface AdWhirlConfigTest : GTMTestCase { -} -@end - - -@interface AdWhirlConfigDelegateCustomURL : NSObject { -} -@end - - -@implementation AdWhirlConfigDelegateCustomURL - -- (NSURL *)adWhirlConfigURL { - return [NSURL URLWithString:@"http://mob.example.com/getInfo.php"]; -} - -@end - - -@interface AdWhirlConfigDelegateNoOp : NSObject { -} -@end - - -@implementation AdWhirlConfigDelegateNoOp - -@end - - -@implementation AdWhirlConfigTest - --(void)setUp { -} - -- (void)tearDown { -} - -- (void)testDefaultConfig { - NSString *appKey = @"myappkey"; - AdWhirlConfigDelegateNoOp *delegate - = [[AdWhirlConfigDelegateNoOp alloc] init]; - AdWhirlConfig *config = [[AdWhirlConfig alloc] initWithAppKey:appKey - delegate:delegate]; - STAssertNotNil(config, @"Config should not be nil"); - - // Test passed in values - STAssertEqualStrings(config.appKey, appKey, - @"App key should have been set in config"); - - // Test default values - NSURL *actualURL = config.configURL; - NSURL *defaultURL = [NSURL URLWithString:kAdWhirlDefaultConfigURL]; - STAssertNotNil(actualURL, @"configURL should not be nil"); - STAssertEqualStrings([actualURL scheme], [defaultURL scheme], - @"Scheme of config URL should match"); - STAssertEqualStrings([actualURL host], [defaultURL host], - @"Host name of config URL should match"); - STAssertEqualStrings([actualURL path], [defaultURL path], - @"Path of config URL should match"); - - STAssertFalse(config.adsAreOff, @"Ads are on by default"); - STAssertNotNil(config.adNetworkConfigs, - @"Config must have ad network config array"); - STAssertEquals([config.adNetworkConfigs count], 0U, - @"Config should have no ad network by default"); - STAssertNotNil(config.backgroundColor, - @"Config must have background color"); - const CGFloat *bkColComps - = CGColorGetComponents(config.backgroundColor.CGColor); - STAssertEquals(bkColComps[0], 0.3F, @"Config default background color red"); - STAssertEquals(bkColComps[1], 0.3F, @"Config default background color green"); - STAssertEquals(bkColComps[2], 0.3F, @"Config default background color blue"); - STAssertEquals(bkColComps[3], 1.0F, @"Config default background color alpha"); - STAssertNotNil(config.textColor, @"Config must have text color"); - STAssertEquals((void *)config.textColor, (void *)[UIColor whiteColor], - @"default text color"); - STAssertEquals(config.refreshInterval, (NSTimeInterval)60.0, - @"Default refresh interval"); - STAssertTrue(config.locationOn, @"Location query should be on by default"); - STAssertEquals(config.bannerAnimationType, AWBannerAnimationTypeRandom, - @"Default banner animation"); - STAssertEquals(config.fullscreenWaitInterval, 60, - @"Config default full screen wait interval"); - STAssertEquals(config.fullscreenMaxAds, 2, - @"Config default full screen max ads"); - STAssertEquals(config.adNetworkRegistry, - [AdWhirlAdNetworkRegistry sharedRegistry], - @"Config default ad network registry should be the sharedRegistry"); - STAssertNotNil([config description], - @"Config description should not be nil"); - STAssertFalse(config.hasConfig, @"Config has no actual config"); - - [config release]; - [delegate release]; -} - -- (void)testLegacyConfig { - NSString *legacyConfigRaw = - @"[{" - @"\"admob_ration\":5," - @"\"adrollo_ration\":6," - @"\"jumptap_ration\":7," - @"\"videoegg_ration\":8," - @"\"millennial_ration\":9," - @"\"quattro_ration\":11," - @"\"generic_ration\":12," - @"\"greystripe_ration\":13," - @"\"google_adsense_ration\":14," - @"\"custom_ration\":15" - @"},{" - @"\"admob_key\":\"ADMOB_KEY\"," - @"\"adrollo_key\":\"ADROLLO_KEY\"," - @"\"jumptap_key\":\"JT\"," - @"\"videoegg_key\":{\"publisher\":\"VE_PUB\",\"area\":\"VE_AREA\"}," - @"\"millennial_key\":\"54321\"," - @"\"quattro_key\":{\"siteID\":\"Q_SITE\",\"publisherID\":\"Q_ID\"}," - @"\"generic_key\":\"__GENERIC__\"," - @"\"greystripe_key\":\"GREYSTRIPE_KEY\"," - @"\"google_adsense_key\":\"AFMA_KEY\"," - @"\"dontcare_key\":48" - @"},{" - @"\"admob_priority\":5," - @"\"adwhirl_12_priority\":6," - @"\"jumptap_priority\":4," - @"\"videoegg_priority\":10," - @"\"millennial_priority\":2," - @"\"quattro_priority\":1," - @"\"generic_priority\":14," - @"\"greystripe_priority\":8," - @"\"google_adsense_priority\":7," - @"\"custom_priority\":13" - @"},{" - @"\"background_color_rgb\":{\"red\":7,\"green\":8,\"blue\":9,\"alpha\":1}," - @"\"text_color_rgb\":{\"red\":200,\"green\":150,\"blue\":100,\"alpha\":1}," - @"\"refresh_interval\":45," - @"\"location_on\":0," - @"\"banner_animation_type\":4," - @"\"fullscreen_wait_interval\":55," - @"\"fullscreen_max_ads\":4," - @"\"metrics_url\":\"\"," - @"\"metrics_flag\":0" - @"}]"; - - NSString *appKey = @"myappkey"; - AdWhirlConfigDelegateCustomURL *delegate - = [[AdWhirlConfigDelegateCustomURL alloc] init]; - AdWhirlConfig *config = [[AdWhirlConfig alloc] initWithAppKey:appKey - delegate:delegate]; - STAssertNotNil(config, @"Config should not be nil"); - - // setup mock registry - id mockRegistry = [OCMockObject mockForClass:[AdWhirlAdNetworkRegistry class]]; - AdWhirlClassWrapper *classWrapper - = [[AdWhirlClassWrapper alloc] initWithClass:[AdWhirlAdNetworkAdapter class]]; - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:1]; // AdMob - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:2]; // JT - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:3]; // VE - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:6]; // MM - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:7]; // GreyS - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:8]; // Qua - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:9]; // Custom - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:12]; // MdotM - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:14]; // AFMA - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:16]; // G-ric - config.adNetworkRegistry = mockRegistry; - - // parse this thing - NSData *configData = [legacyConfigRaw dataUsingEncoding:NSUTF8StringEncoding]; - NSError *error = nil; - STAssertFalse(config.hasConfig, @"Config has no actual config"); - STAssertTrue([config parseConfig:configData error:&error], - @"Should parse legacy config properly, error: %@", error); - STAssertNoThrow([mockRegistry verify], - @"Must have called adapterClassFor of the ad network registry"); - STAssertTrue(config.hasConfig, @"Config parsed successfully"); - - // check passed-in values - STAssertEqualStrings(config.appKey, appKey, - @"App key should have been set in config"); - NSURL *actualURL = config.configURL; - NSURL *delegateURL = [delegate adWhirlConfigURL]; - STAssertNotNil(actualURL, @"configURL should not be nil"); - STAssertNotNil(delegateURL, @"delegate should return config URL"); - STAssertEqualStrings([actualURL scheme], [delegateURL scheme], - @"Scheme of config URL should match"); - STAssertEqualStrings([actualURL host], [delegateURL host], - @"Host name of config URL should match"); - STAssertEqualStrings([actualURL path], [delegateURL path], - @"Path of config URL should match"); - - // check parsed values - STAssertFalse(config.adsAreOff, @"Ads should not be off"); - STAssertNotNil(config.adNetworkConfigs, - @"Ad net config array should not be nil"); - STAssertEquals([config.adNetworkConfigs count], 10U, - @"Right number of ad networks"); - STAssertNotNil(config.backgroundColor, - @"Config must have background color"); - const CGFloat *bkColComps - = CGColorGetComponents(config.backgroundColor.CGColor); - STAssertEquals(bkColComps[0], (CGFloat)(7.0/255.0), - @"Config background color red"); - STAssertEquals(bkColComps[1], (CGFloat)(8.0/255.0), - @"Config background color green"); - STAssertEquals(bkColComps[2], (CGFloat)(9.0/255.0), - @"Config background color blue"); - STAssertEquals(bkColComps[3], 1.0F, @"Config background color alpha"); - STAssertNotNil(config.textColor, @"Config must have text color"); - const CGFloat *txtColComps - = CGColorGetComponents(config.textColor.CGColor); - STAssertEquals(txtColComps[0], (CGFloat)(200.0/255.0), @"Config text color red"); - STAssertEquals(txtColComps[1], (CGFloat)(150.0/255.0), @"Config text color green"); - STAssertEquals(txtColComps[2], (CGFloat)(100.0/255.0), @"Config text color blue"); - STAssertEquals(txtColComps[3], 1.0F, @"Config text color alpha"); - - STAssertEquals(config.refreshInterval, (NSTimeInterval)45.0, - @"Refresh interval"); - STAssertFalse(config.locationOn, @"Location query setting"); - STAssertEquals(config.bannerAnimationType, AWBannerAnimationTypeCurlDown, - @"Banner animation"); - STAssertEquals(config.fullscreenWaitInterval, 55, - @"Full screen wait interval"); - STAssertEquals(config.fullscreenMaxAds, 4, @"Full screen max ads"); - STAssertEquals(config.adNetworkRegistry, mockRegistry, - @"Ad network registry"); - - // check ad network configs - NSMutableDictionary *seenNetworks - = [NSMutableDictionary dictionaryWithCapacity:20]; - for (id netCfg in config.adNetworkConfigs) { - STAssertTrue([netCfg isKindOfClass:[AdWhirlAdNetworkConfig class]], - @"netCfg config must be of class AdWhirlAdNetworkConfig"); - AdWhirlAdNetworkConfig *cfg = netCfg; - STAssertNil([seenNetworks - objectForKey:[NSNumber numberWithInt:cfg.networkType]], - @"Must not have seen network type: %d", cfg.networkType); - NSString *netTypeString = [NSString stringWithFormat:@"%d",cfg.networkType]; - STAssertEqualStrings(cfg.nid, netTypeString, - @"Legacy netCfg nid should be string of network type"); - STAssertEquals(cfg.adapterClass, classWrapper.theClass, @"Adapter class"); - switch (cfg.networkType) { - case AdWhirlAdNetworkTypeAdMob: - STAssertEqualStrings(cfg.networkName, @"admob", @"Network name"); - STAssertEquals(cfg.trafficPercentage, (double)5.0, @"ration"); - STAssertEquals(cfg.priority, 5, @"priority"); - STAssertEqualStrings(cfg.pubId, @"ADMOB_KEY", @"pubId"); - break; - case AdWhirlAdNetworkTypeJumpTap: - STAssertEqualStrings(cfg.networkName, @"jumptap", @"Network name"); - STAssertEquals(cfg.trafficPercentage, (double)7.0, @"ration"); - STAssertEquals(cfg.priority, 4, @"priority"); - STAssertEqualStrings(cfg.pubId, @"JT", @"pubId"); - break; - case AdWhirlAdNetworkTypeVideoEgg: - STAssertEqualStrings(cfg.networkName, @"videoegg", @"Network name"); - STAssertEquals(cfg.trafficPercentage, (double)8.0, @"ration"); - STAssertEquals(cfg.priority, 10, @"priority"); - STAssertEqualStrings([cfg.credentials objectForKey:@"publisher"], - @"VE_PUB", @"VideoEgg publisher"); - STAssertEqualStrings([cfg.credentials objectForKey:@"area"], - @"VE_AREA", @"VideoEgg area"); - break; - case AdWhirlAdNetworkTypeMillennial: - STAssertEqualStrings(cfg.networkName, @"millennial", @"Network name"); - STAssertEquals(cfg.trafficPercentage, (double)9.0, @"ration"); - STAssertEquals(cfg.priority, 2, @"priority"); - STAssertEqualStrings(cfg.pubId, @"54321", @"pubId"); - break; - case AdWhirlAdNetworkTypeGreyStripe: - STAssertEqualStrings(cfg.networkName, @"greystripe", @"Network name"); - STAssertEquals(cfg.trafficPercentage, (double)13.0, @"ration"); - STAssertEquals(cfg.priority, 8, @"priority"); - STAssertEqualStrings(cfg.pubId, @"GREYSTRIPE_KEY", @"pubId"); - break; - case AdWhirlAdNetworkTypeQuattro: - STAssertEqualStrings(cfg.networkName, @"quattro", @"Network name"); - STAssertEquals(cfg.trafficPercentage, (double)11.0, @"ration"); - STAssertEquals(cfg.priority, 1, @"priority"); - STAssertEqualStrings([cfg.credentials objectForKey:@"siteID"], - @"Q_SITE", @"Quattro site id"); - STAssertEqualStrings([cfg.credentials objectForKey:@"publisherID"], - @"Q_ID", @"Quattro publisher id"); - break; - case AdWhirlAdNetworkTypeCustom: - STAssertEqualStrings(cfg.networkName, @"custom", @"Network name"); - STAssertEquals(cfg.trafficPercentage, (double)15.0, @"ration"); - STAssertEquals(cfg.priority, 13, @"priority"); - STAssertNil(cfg.pubId, @"Custom "); - break; - case AdWhirlAdNetworkTypeMdotM: - // exercises the adrollo strange logic - STAssertEqualStrings(cfg.networkName, @"adwhirl_12", @"Network name"); - STAssertEquals(cfg.trafficPercentage, (double)6.0, @"ration"); - STAssertEquals(cfg.priority, 6, @"priority"); - STAssertEqualStrings(cfg.pubId, @"ADROLLO_KEY", @"pubId"); - break; - case AdWhirlAdNetworkTypeGoogleAdSense: - STAssertEqualStrings(cfg.networkName, @"google_adsense", - @"Network name"); - STAssertEquals(cfg.trafficPercentage, (double)14.0, @"ration"); - STAssertEquals(cfg.priority, 7, @"priority"); - STAssertEqualStrings(cfg.pubId, @"AFMA_KEY", @"pubId"); - break; - case AdWhirlAdNetworkTypeGeneric: - STAssertEqualStrings(cfg.networkName, @"generic", @"Network name"); - STAssertEquals(cfg.trafficPercentage, (double)12.0, @"ration"); - STAssertEquals(cfg.priority, 14, @"priority"); - STAssertEqualStrings(cfg.pubId, @"__GENERIC__", @"pubId"); - break; - default: - STFail(@"Ad network not recognized: %d", cfg.networkType); - break; - } - } - - // clean up - [config release]; - [delegate release]; - [classWrapper release]; -} - - -- (void)testConfig { - NSString *configRaw = - @"{\"extra\":{" - @"\"location_on\":0," - @"\"background_color_rgb\":{\"red\":7,\"green\":8,\"blue\":9,\"alpha\":0.5}," - @"\"text_color_rgb\":{\"red\":200,\"green\":150,\"blue\":100,\"alpha\":0.5}," - @"\"cycle_time\":45," - @"\"transition\":4}," - @"\"rations\":[{" - @"\"nid\":\"9876543210abcdefabcdef0000000001\"," - @"\"type\":1," - @"\"nname\":\"admob\"," - @"\"weight\":1," - @"\"priority\":5," - @"\"key\":\"ADMOB_KEY\"" - @"},{" - @"\"nid\":\"9876543210abcdefabcdef0000000002\"," - @"\"type\":12," - @"\"nname\":\"mdotm\"," - @"\"weight\":2," - @"\"priority\":6," - @"\"key\":\"MDOTM_KEY\"" - @"},{" - @"\"nid\":\"9876543210abcdefabcdef0000000003\"," - @"\"type\":2," - @"\"nname\":\"jumptap\"," - @"\"weight\":3," - @"\"priority\":4," - @"\"key\":{\"publisherID\":\"JT\",\"siteID\":\"JT_SITE\",\"spotID\":\"JT_SPOT\"}" - @"},{" - @"\"nid\":\"9876543210abcdefabcdef0000000004\"," - @"\"type\":3," - @"\"nname\":\"videoegg\"," - @"\"weight\":4," - @"\"priority\":10," - @"\"key\":{\"publisher\":\"VE_PUB\",\"area\":\"VE_AREA\"}" - @"},{" - @"\"nid\":\"9876543210abcdefabcdef0000000005\"," - @"\"type\":6," - @"\"nname\":\"millennial\"," - @"\"weight\":5," - @"\"priority\":2," - @"\"key\":\"54321\"" - @"},{" - @"\"nid\":\"9876543210abcdefabcdef0000000006\"," - @"\"type\":8," - @"\"nname\":\"quattro\"," - @"\"weight\":6," - @"\"priority\":1," - @"\"key\":{\"siteID\":\"Q_SITE\",\"publisherID\":\"Q_ID\"}" - @"},{" - @"\"nid\":\"9876543210abcdefabcdef0000000007\"," - @"\"type\":16," - @"\"nname\":\"generic\"," - @"\"weight\":7," - @"\"priority\":14," - @"\"key\":\"__GENERIC__\"" - @"},{" - @"\"nid\":\"9876543210abcdefabcdef0000000008\"," - @"\"type\":18," - @"\"nname\":\"inmobi\"," - @"\"weight\":8," - @"\"priority\":9," - @"\"key\":\"INMOBI_KEY\"" - @"},{" - @"\"nid\":\"9876543210abcdefabcdef0000000009\"," - @"\"type\":19," - @"\"nname\":\"iad\"," - @"\"weight\":9," - @"\"priority\":3," - @"\"key\":\"IAD_ID\"" - @"},{" - @"\"nid\":\"9876543210abcdefabcdef0000000010\"," - @"\"type\":9," - @"\"nname\":\"custom\"," - @"\"weight\":0.5," - @"\"priority\":13," - @"\"key\":\"__CUSTOM__\"" - @"},{" - @"\"nid\":\"9876543210abcdefabcdef0000000011\"," - @"\"type\":9," - @"\"nname\":\"custom\"," - @"\"weight\":0.5," - @"\"priority\":13," - @"\"key\":\"__CUSTOM__\"" - @"},{" - @"\"nid\":\"9876543210abcdefabcdef0000000012\"," - @"\"type\":9," - @"\"nname\":\"custom\"," - @"\"weight\":0.5," - @"\"priority\":13," - @"\"key\":\"__CUSTOM__\"" - @"},{" - @"\"nid\":\"9876543210abcdefabcdef0000000013\"," - @"\"type\":9," - @"\"nname\":\"custom\"," - @"\"weight\":0.5," - @"\"priority\":13," - @"\"key\":\"__CUSTOM__\"" - @"},{" - @"\"nid\":\"9876543210abcdefabcdef0000000014\"," - @"\"type\":17," - @"\"nname\":\"event\"," - @"\"weight\":10," - @"\"priority\":11," - @"\"key\":\"Test Event|;|performEvent\"" - @"},{" - @"\"nid\":\"9876543210abcdefabcdef0000000015\"," - @"\"type\":17," - @"\"nname\":\"event\"," - @"\"weight\":11," - @"\"priority\":12," - @"\"key\":\"Test Event 2|;|performEvent2\"" - @"},{" - @"\"nid\":\"9876543210abcdefabcdef0000000016\"," - @"\"type\":7," - @"\"nname\":\"greystripe\"," - @"\"weight\":12," - @"\"priority\":8," - @"\"key\":\"GREYSTRIPE_KEY\"" - @"},{" - @"\"nid\":\"9876543210abcdefabcdef0000000017\"," - @"\"type\":14," - @"\"nname\":\"google_adsense\"," - @"\"weight\":13," - @"\"priority\":7," - @"\"key\":\"AFMA_KEY\"" - @"},{" - @"\"nid\":\"9876543210abcdefabcdef0000000018\"," - @"\"type\":20," - @"\"nname\":\"zestadz\"," - @"\"weight\":5," - @"\"priority\":15," - @"\"key\":\"ZESTADZ_KEY\"}]}"; - - NSString *appKey = @"someappkey"; - AdWhirlConfigDelegateCustomURL *delegate - = [[AdWhirlConfigDelegateCustomURL alloc] init]; - AdWhirlConfig *config = [[AdWhirlConfig alloc] initWithAppKey:appKey - delegate:delegate]; - STAssertNotNil(config, @"Config should not be nil"); - - // setup mock registry - id mockRegistry = [OCMockObject mockForClass:[AdWhirlAdNetworkRegistry class]]; - AdWhirlClassWrapper *classWrapper - = [[AdWhirlClassWrapper alloc] initWithClass:[AdWhirlAdNetworkAdapter class]]; - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:1]; // AdMob - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:2]; // JT - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:3]; // VE - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:6]; // MM - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:7]; // GreyS - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:8]; // Qua - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:9]; // Custom - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:9]; // Custom - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:9]; // Custom - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:9]; // Custom - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:12]; // MdotM - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:14]; // AFMA - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:16]; // G-ric - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:17]; // Events - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:17]; // Events - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:18]; // inMobi - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:19]; // iAd - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:20]; // Zest - config.adNetworkRegistry = mockRegistry; - - // parse this thing - NSData *configData = [configRaw dataUsingEncoding:NSUTF8StringEncoding]; - NSError *error = nil; - STAssertFalse(config.hasConfig, @"Config has no actual config"); - STAssertTrue([config parseConfig:configData error:&error], - @"Should parse config properly, error: %@", error); - STAssertNoThrow([mockRegistry verify], - @"Must have called adapterClassFor of the ad network registry"); - STAssertTrue(config.hasConfig, @"Config parsed successfully"); - - // check passed-in values - STAssertEqualStrings(config.appKey, appKey, - @"App key should have been set in config"); - NSURL *actualURL = config.configURL; - NSURL *delegateURL = [delegate adWhirlConfigURL]; - STAssertNotNil(actualURL, @"configURL should not be nil"); - STAssertNotNil(delegateURL, @"delegate should return config URL"); - STAssertEqualStrings([actualURL scheme], [delegateURL scheme], - @"Scheme of config URL should match"); - STAssertEqualStrings([actualURL host], [delegateURL host], - @"Host name of config URL should match"); - STAssertEqualStrings([actualURL path], [delegateURL path], - @"Path of config URL should match"); - - // check parsed values - STAssertFalse(config.adsAreOff, @"Ads should not be off"); - STAssertNotNil(config.adNetworkConfigs, - @"Ad net config array should not be nil"); - STAssertEquals([config.adNetworkConfigs count], 18U, - @"Right number of ad networks"); - STAssertNotNil(config.backgroundColor, - @"Config must have background color"); - const CGFloat *bkColComps - = CGColorGetComponents(config.backgroundColor.CGColor); - STAssertEquals(bkColComps[0], (CGFloat)(7.0/255.0), - @"Config background color red"); - STAssertEquals(bkColComps[1], (CGFloat)(8.0/255.0), - @"Config background color green"); - STAssertEquals(bkColComps[2], (CGFloat)(9.0/255.0), - @"Config background color blue"); - STAssertEquals(bkColComps[3], 0.5F, @"Config background color alpha"); - STAssertNotNil(config.textColor, @"Config must have text color"); - const CGFloat *txtColComps - = CGColorGetComponents(config.textColor.CGColor); - STAssertEquals(txtColComps[0], (CGFloat)(200.0/255.0), @"Config text color red"); - STAssertEquals(txtColComps[1], (CGFloat)(150.0/255.0), @"Config text color green"); - STAssertEquals(txtColComps[2], (CGFloat)(100.0/255.0), @"Config text color blue"); - STAssertEquals(txtColComps[3], 0.5F, @"Config text color alpha"); - - STAssertEquals(config.refreshInterval, (NSTimeInterval)45.0, - @"Refresh interval"); - STAssertFalse(config.locationOn, @"Location query setting"); - STAssertEquals(config.bannerAnimationType, AWBannerAnimationTypeCurlDown, - @"Banner animation"); - STAssertEquals(config.fullscreenWaitInterval, 60, - @"Full screen wait interval"); - STAssertEquals(config.fullscreenMaxAds, 2, @"Full screen max ads"); - STAssertEquals(config.adNetworkRegistry, mockRegistry, - @"Ad network registry"); - - // check ad network configs - NSMutableDictionary *seenNetworks - = [NSMutableDictionary dictionaryWithCapacity:20]; - for (id netCfg in config.adNetworkConfigs) { - STAssertTrue([netCfg isKindOfClass:[AdWhirlAdNetworkConfig class]], - @"netCfg config must be of class AdWhirlAdNetworkConfig"); - AdWhirlAdNetworkConfig *cfg = netCfg; - STAssertNil([seenNetworks - objectForKey:[NSNumber numberWithInt:cfg.networkType]], - @"Must not have seen network type: %d", cfg.networkType); - STAssertEquals(cfg.adapterClass, classWrapper.theClass, @"Adapter class"); - switch (cfg.networkType) { - case AdWhirlAdNetworkTypeAdMob: - STAssertEqualStrings(cfg.networkName, @"admob", @"Network name"); - STAssertEqualStrings(cfg.nid, @"9876543210abcdefabcdef0000000001", @"nid"); - STAssertEquals(cfg.trafficPercentage, (double)1.0, @"ration"); - STAssertEquals(cfg.priority, 5, @"priority"); - STAssertEqualStrings(cfg.pubId, @"ADMOB_KEY", @"pubId"); - break; - case AdWhirlAdNetworkTypeJumpTap: - STAssertEqualStrings(cfg.networkName, @"jumptap", @"Network name"); - STAssertEqualStrings(cfg.nid, @"9876543210abcdefabcdef0000000003", @"nid"); - STAssertEquals(cfg.trafficPercentage, (double)3.0, @"ration"); - STAssertEquals(cfg.priority, 4, @"priority"); - STAssertEqualStrings([cfg.credentials objectForKey:@"publisherID"], - @"JT", @"Jumptap publisher"); - STAssertEqualStrings([cfg.credentials objectForKey:@"siteID"], - @"JT_SITE", @"Jumptap area"); - STAssertEqualStrings([cfg.credentials objectForKey:@"spotID"], - @"JT_SPOT", @"Jumptap publisher"); - break; - case AdWhirlAdNetworkTypeVideoEgg: - STAssertEqualStrings(cfg.networkName, @"videoegg", @"Network name"); - STAssertEqualStrings(cfg.nid, @"9876543210abcdefabcdef0000000004", @"nid"); - STAssertEquals(cfg.trafficPercentage, (double)4.0, @"ration"); - STAssertEquals(cfg.priority, 10, @"priority"); - STAssertEqualStrings([cfg.credentials objectForKey:@"publisher"], - @"VE_PUB", @"VideoEgg publisher"); - STAssertEqualStrings([cfg.credentials objectForKey:@"area"], - @"VE_AREA", @"VideoEgg area"); - break; - case AdWhirlAdNetworkTypeMillennial: - STAssertEqualStrings(cfg.networkName, @"millennial", @"Network name"); - STAssertEqualStrings(cfg.nid, @"9876543210abcdefabcdef0000000005", @"nid"); - STAssertEquals(cfg.trafficPercentage, (double)5.0, @"ration"); - STAssertEquals(cfg.priority, 2, @"priority"); - STAssertEqualStrings(cfg.pubId, @"54321", @"pubId"); - break; - case AdWhirlAdNetworkTypeGreyStripe: - STAssertEqualStrings(cfg.networkName, @"greystripe", @"Network name"); - STAssertEqualStrings(cfg.nid, @"9876543210abcdefabcdef0000000016", @"nid"); - STAssertEquals(cfg.trafficPercentage, (double)12.0, @"ration"); - STAssertEquals(cfg.priority, 8, @"priority"); - STAssertEqualStrings(cfg.pubId, @"GREYSTRIPE_KEY", @"pubId"); - break; - case AdWhirlAdNetworkTypeQuattro: - STAssertEqualStrings(cfg.networkName, @"quattro", @"Network name"); - STAssertEqualStrings(cfg.nid, @"9876543210abcdefabcdef0000000006", @"nid"); - STAssertEquals(cfg.trafficPercentage, (double)6.0, @"ration"); - STAssertEquals(cfg.priority, 1, @"priority"); - STAssertEqualStrings([cfg.credentials objectForKey:@"siteID"], - @"Q_SITE", @"Quattro site id"); - STAssertEqualStrings([cfg.credentials objectForKey:@"publisherID"], - @"Q_ID", @"Quattro publisher id"); - break; - case AdWhirlAdNetworkTypeCustom: - STAssertEqualStrings(cfg.networkName, @"custom", @"Network name"); - STAssertEquals(cfg.trafficPercentage, (double)0.5, @"ration"); - STAssertEquals(cfg.priority, 13, @"priority"); - STAssertEqualStrings(cfg.pubId, @"__CUSTOM__", @"pubId"); - if (![cfg.nid isEqualToString:@"9876543210abcdefabcdef0000000010"] - && ![cfg.nid isEqualToString:@"9876543210abcdefabcdef0000000011"] - && ![cfg.nid isEqualToString:@"9876543210abcdefabcdef0000000012"] - && ![cfg.nid isEqualToString:@"9876543210abcdefabcdef0000000013"]) { - STFail(@"Unrecognized Event nid: %@", cfg.nid); - } - STAssertEqualStrings(cfg.pubId, @"__CUSTOM__", @"Custom pub id"); - break; - case AdWhirlAdNetworkTypeMdotM: - // exercises the adrollo strange logic - STAssertEqualStrings(cfg.networkName, @"mdotm", @"Network name"); - STAssertEqualStrings(cfg.nid, @"9876543210abcdefabcdef0000000002", @"nid"); - STAssertEquals(cfg.trafficPercentage, (double)2.0, @"ration"); - STAssertEquals(cfg.priority, 6, @"priority"); - STAssertEqualStrings(cfg.pubId, @"MDOTM_KEY", @"pubId"); - break; - case AdWhirlAdNetworkTypeGoogleAdSense: - STAssertEqualStrings(cfg.networkName, @"google_adsense", - @"Network name"); - STAssertEqualStrings(cfg.nid, @"9876543210abcdefabcdef0000000017", @"nid"); - STAssertEquals(cfg.trafficPercentage, (double)13.0, @"ration"); - STAssertEquals(cfg.priority, 7, @"priority"); - STAssertEqualStrings(cfg.pubId, @"AFMA_KEY", @"pubId"); - break; - case AdWhirlAdNetworkTypeGeneric: - STAssertEqualStrings(cfg.networkName, @"generic", @"Network name"); - STAssertEqualStrings(cfg.nid, @"9876543210abcdefabcdef0000000007", @"nid"); - STAssertEquals(cfg.trafficPercentage, (double)7.0, @"ration"); - STAssertEquals(cfg.priority, 14, @"priority"); - STAssertEqualStrings(cfg.pubId, @"__GENERIC__", @"pubId"); - break; - case AdWhirlAdNetworkTypeEvent: - STAssertEqualStrings(cfg.networkName, @"event", @"Network name"); - if ([cfg.nid isEqualToString:@"9876543210abcdefabcdef0000000014"]) { - STAssertEquals(cfg.trafficPercentage, (double)10.0, @"ration"); - STAssertEquals(cfg.priority, 11, @"priority"); - STAssertEqualStrings(cfg.pubId, @"Test Event|;|performEvent", @"pubId"); - } - else if ([cfg.nid isEqualToString:@"9876543210abcdefabcdef0000000015"]) { - STAssertEquals(cfg.trafficPercentage, (double)11.0, @"ration"); - STAssertEquals(cfg.priority, 12, @"priority"); - STAssertEqualStrings(cfg.pubId, @"Test Event 2|;|performEvent2", @"pubId"); - } - else { - STFail(@"Unrecognized Event nid: %@", cfg.nid); - } - break; - case AdWhirlAdNetworkTypeInMobi: - STAssertEqualStrings(cfg.networkName, @"inmobi", @"Network name"); - STAssertEqualStrings(cfg.nid, @"9876543210abcdefabcdef0000000008", @"nid"); - STAssertEquals(cfg.trafficPercentage, (double)8.0, @"ration"); - STAssertEquals(cfg.priority, 9, @"priority"); - STAssertEqualStrings(cfg.pubId, @"INMOBI_KEY", @"pubId"); - break; - case AdWhirlAdNetworkTypeIAd: - STAssertEqualStrings(cfg.networkName, @"iad", @"Network name"); - STAssertEqualStrings(cfg.nid, @"9876543210abcdefabcdef0000000009", @"nid"); - STAssertEquals(cfg.trafficPercentage, (double)9.0, @"ration"); - STAssertEquals(cfg.priority, 3, @"priority"); - STAssertEqualStrings(cfg.pubId, @"IAD_ID", @"pubId"); - break; - case AdWhirlAdNetworkTypeZestADZ: - STAssertEqualStrings(cfg.networkName, @"zestadz", @"Network name"); - STAssertEqualStrings(cfg.nid, @"9876543210abcdefabcdef0000000018", @"nid"); - STAssertEquals(cfg.trafficPercentage, (double)5.0, @"ration"); - STAssertEquals(cfg.priority, 15, @"priority"); - STAssertEqualStrings(cfg.pubId, @"ZESTADZ_KEY", @"pubId"); - break; - default: - STFail(@"Ad network not recognized: %d", cfg.networkType); - break; - } - } - - // clean up - [config release]; - [delegate release]; - [classWrapper release]; -} - -- (void)testAddRemoveDelegates { - NSString *appKey = @"myappkey"; - AdWhirlConfigDelegateNoOp *delegate - = [[AdWhirlConfigDelegateNoOp alloc] init]; - AdWhirlConfig *config = [[AdWhirlConfig alloc] initWithAppKey:appKey - delegate:delegate]; - STAssertNotNil(config, @"Config should not be nil"); - STAssertFalse([config addDelegate:delegate], - @"addDelegate should be false if delegate has been added before"); - - AdWhirlConfigDelegateCustomURL *anotherDelegate - = [[AdWhirlConfigDelegateCustomURL alloc] init]; - STAssertFalse([config removeDelegate:anotherDelegate], - @"removeDelegate should be false for non-existent delegate"); - STAssertTrue([config addDelegate:anotherDelegate], - @"addDelegate should be OK when adding another delegate"); - STAssertTrue([config removeDelegate:delegate], - @"removeDelegate should be OK for existing delegates"); - - [delegate release]; - [anotherDelegate release]; - [config release]; -} - -- (void)testAwIntVal { - NSInteger out; - STAssertTrue(awIntVal(&out, [NSNumber numberWithInt:123]), - @"awIntVal with NSNumber with int"); - STAssertEquals(out, 123, @"awIntVal should convert NSNumber with int"); - - STAssertTrue(awIntVal(&out, [NSNumber numberWithFloat:788.9]), - @"awIntVal with NSNumber with float"); - STAssertEquals(out, 788, @"awIntVal should convert NSNumber with float"); - - STAssertTrue(awIntVal(&out, @"567"), @"awIntVal with NSString"); - STAssertEquals(out, 567, @"awIntVal should convert NSString"); - - STAssertFalse(awIntVal(&out, [NSValue valueWithPointer:@"dummy"]), - @"awIntVal should not able to convert NSValue"); -} - -- (void)testAwFloatVal { - float out; - STAssertTrue(awFloatVal(&out, [NSNumber numberWithInt:123]), - @"awFloatVal with NSNumber with int"); - STAssertEquals(out, 123.0F, - @"awFloatVal should convert NSNumber with int"); - - STAssertTrue(awFloatVal(&out, [NSNumber numberWithFloat:788.9]), - @"awFloatVal with NSNumber with float"); - STAssertEquals(out, 788.9F, - @"awFloatVal should convert NSNumber with float"); - - STAssertTrue(awFloatVal(&out, @"567.34"), @"awFloatVal with NSString"); - STAssertEquals(out, 567.34F, @"awFloatVal should convert NSString"); - - STAssertFalse(awFloatVal(&out, [NSValue valueWithPointer:@"dummy"]), - @"awFloatVal should not able to convert NSValue"); -} - -- (void)testAwDoubleVal { - double out; - STAssertTrue(awDoubleVal(&out, [NSNumber numberWithInt:123]), - @"awDoubleVal with NSNumber with int"); - STAssertEquals(out, (double)123.0, - @"awDoubleVal should convert NSNumber with int"); - - STAssertTrue(awDoubleVal(&out, [NSNumber numberWithFloat:2233.231]), - @"awDoubleVal with NSNumber with float"); - - // A bit is lost in the translation from float to double - STAssertEqualsWithAccuracy(out, (double)2233.231L, 0.001, - @"awDoubleVal should convert NSNumber with float"); - - STAssertTrue(awDoubleVal(&out, [NSNumber numberWithDouble:788.9]), - @"awDoubleVal with NSNumber with double"); - STAssertEquals(out, (double)788.9, - @"awDoubleVal should convert NSNumber with double"); - - STAssertTrue(awDoubleVal(&out, @"567.34"), @"awDoubleVal with NSString"); - STAssertEquals(out, (double)567.34, @"awDoubleVal should convert NSString"); - - STAssertFalse(awDoubleVal(&out, [NSValue valueWithPointer:@"dummy"]), - @"awDoubleVal should not able to convert NSValue"); -} - -- (void)testNonExistentAdapterAdsOff { - NSString *configRaw = - @"{\"extra\":{" - @"\"location_on\":0," - @"\"background_color_rgb\":{\"red\":7,\"green\":8,\"blue\":9,\"alpha\":0.5}," - @"\"text_color_rgb\":{\"red\":200,\"green\":150,\"blue\":100,\"alpha\":0.5}," - @"\"cycle_time\":45," - @"\"transition\":4}," - @"\"rations\":[{" - @"\"nid\":\"9976543210abcdefabcdef0000000001\"," - @"\"type\":1," - @"\"nname\":\"admob\"," - @"\"weight\":0," - @"\"priority\":1," - @"\"key\":\"ADMOB_KEY\"" - @"},{" - @"\"nid\":\"9976543210abcdefabcdef0000000002\"," - @"\"type\":12," - @"\"nname\":\"mdotm\"," - @"\"weight\":0," - @"\"priority\":2," - @"\"key\":\"MDOTM_KEY\"" - @"},{" - @"\"nid\":\"9976543210abcdefabcdef0000000003\"," - @"\"type\":2," - @"\"nname\":\"jumptap\"," - @"\"weight\":0," - @"\"priority\":3," - @"\"key\":{\"publisherID\":\"JT\",\"siteID\":\"JT_SITE\",\"spotID\":\"JT_SPOT\"}" - @"},{" - @"\"nid\":\"9976543210abcdefabcdef0000000007\"," - @"\"type\":16," - @"\"nname\":\"generic\"," - @"\"weight\":0," - @"\"priority\":4," - @"\"key\":\"__GENERIC__\"" - @"},{" - @"\"nid\":\"9976543210abcdefabcdef0000000009\"," - @"\"type\":19," - @"\"nname\":\"iad\"," - @"\"weight\":100," - @"\"priority\":5," - @"\"key\":\"IAD_ID\"" - @"}]}"; - - NSString *appKey = @"someappkey"; - AdWhirlConfigDelegateCustomURL *delegate - = [[AdWhirlConfigDelegateCustomURL alloc] init]; - AdWhirlConfig *config = [[AdWhirlConfig alloc] initWithAppKey:appKey - delegate:delegate]; - STAssertNotNil(config, @"Config should not be nil"); - - // setup mock registry - id mockRegistry = [OCMockObject mockForClass:[AdWhirlAdNetworkRegistry class]]; - AdWhirlClassWrapper *classWrapper - = [[AdWhirlClassWrapper alloc] initWithClass:[AdWhirlAdNetworkAdapter class]]; - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:1]; // AdMob - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:2]; // JT - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:12]; // MdotM - [[[mockRegistry expect] andReturn:classWrapper] adapterClassFor:16]; // G-ric - [[[mockRegistry expect] andReturn:nil] adapterClassFor:19]; // iAd - config.adNetworkRegistry = mockRegistry; - - // parse this thing - NSData *configData = [configRaw dataUsingEncoding:NSUTF8StringEncoding]; - NSError *error = nil; - [GTMUnitTestDevLog expectPattern: - @"Cannot create ad network config.*Ad network type 19 not supported," - @" no adapter found"]; - STAssertFalse(config.hasConfig, @"Config has no actual config"); - STAssertTrue([config parseConfig:configData error:&error], - @"Should parse config properly, error: %@", error); - STAssertNoThrow([mockRegistry verify], - @"Must have called adapterClassFor of the ad network registry"); - STAssertTrue(config.hasConfig, @"Config parsed successfully"); - - // ads should be off - STAssertTrue(config.adsAreOff, @"Ads should be off when no adapter exists"); - - // clean up - [config release]; - [delegate release]; - [classWrapper release]; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/UnitTests/AdWhirlViewTest.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/UnitTests/AdWhirlViewTest.m deleted file mode 100644 index 09803b23e..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/UnitTests/AdWhirlViewTest.m +++ /dev/null @@ -1,56 +0,0 @@ -/* - - AdWhirlViewTest.m - - Copyright 2010 Google 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 -#import "GTMSenTestCase.h" -#import "GTMUnitTestDevLog.h" -#import "AdWhirlView.h" -#import "AdWhirlView+.h" -#import "AdWhirlLog.h" -#import "AdWhirlDelegateProtocol.h" - - -@interface AdWhirlViewTest : GTMTestCase { -} -@end - - -// Not specifying delegate here to avoid compiler warnings -@interface AdWhirlDelegateIncomplete : NSObject { -} -@end - - -@implementation AdWhirlDelegateIncomplete -@end - - -@implementation AdWhirlViewTest - --(void)setUp { -} - -- (void)tearDown { -} - -- (void)testGoodRequest { -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/UnitTests/UIColor+AdWhirlConfigTest.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/UnitTests/UIColor+AdWhirlConfigTest.m deleted file mode 100644 index 0fdf7c59d..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/UnitTests/UIColor+AdWhirlConfigTest.m +++ /dev/null @@ -1,214 +0,0 @@ -/* - - UIColor+AdWhirlConfigTest.m - - Copyright 2010 Google 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 "UIColor+AdWhirlConfig.h" -#import "GTMSenTestCase.h" - - -@interface UIColor_AdWhirlConfigTest : GTMTestCase { -} - -- (void)compareDict:(NSDictionary *)dict - withRed:(CGFloat)red - green:(CGFloat)green - blue:(CGFloat)blue - alpha:(CGFloat)alpha - message:(NSString *)message; - -@end - - -@implementation UIColor_AdWhirlConfigTest - --(void)setUp { -} - -- (void)tearDown { -} - -- (void)compareDict:(NSDictionary *)dict - withRed:(CGFloat)red - green:(CGFloat)green - blue:(CGFloat)blue - alpha:(CGFloat)alpha - message:(NSString *)message { - STAssertNotNil(dict, @"Input dict is nil, message passed: %@", message); - UIColor *color = [[UIColor alloc] initWithDict:dict]; - STAssertNotNil(color, @"Dict should yield a UIColor. dict: %@ message: %@", - dict, message); - UIColor *compColor = [[UIColor alloc] initWithRed:red - green:green - blue:blue - alpha:alpha]; - STAssertNotNil(compColor, - @"Comparison color should not be nil." - @" r:%lf g:%lf b:%lf a:%lf message:%@", - red, green, blue, alpha, message); - STAssertTrue(CGColorEqualToColor(color.CGColor, compColor.CGColor), message); - [color release]; - [compColor release]; -} - -- (void)testGoodColors { - NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: - @"127", @"red", - @"133", @"green", - @"122", @"blue", - @"0.37", @"alpha", - nil]; - [self compareDict:dict - withRed:127.0/255 - green:133.0/255.0 - blue:122.0/255.0 - alpha:0.37 - message:@"Dict color with strings should be equal to colors"]; - - dict = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithInt:127], @"red", - [NSNumber numberWithInt:133], @"green", - [NSNumber numberWithInt:122], @"blue", - [NSNumber numberWithDouble:0.37], @"alpha", - nil]; - [self compareDict:dict - withRed:127.0/255 - green:133.0/255.0 - blue:122.0/255.0 - alpha:0.37 - message:@"Dict color with NSNumber should be equal to colors"]; -} - -- (void)testMissingColors { - NSDictionary *dictMissingRed = [NSDictionary dictionaryWithObjectsAndKeys: - @"133", @"green", - @"122", @"blue", - nil]; - STAssertNil([[UIColor alloc] initWithDict:dictMissingRed], - @"Dict missing red should yield nil UIColor"); - - NSDictionary *dictMissingGreen = [NSDictionary dictionaryWithObjectsAndKeys: - @"127", @"red", - @"122", @"blue", - nil]; - STAssertNil([[UIColor alloc] initWithDict:dictMissingGreen], - @"Dict missing green should yield nil UIColor"); - - NSDictionary *dictMissingBlue = [NSDictionary dictionaryWithObjectsAndKeys: - @"127", @"red", - @"133", @"green", - nil]; - STAssertNil([[UIColor alloc] initWithDict:dictMissingBlue], - @"Dict missing blue should yield nil UIColor"); -} - -- (void)testBadAlpha { - NSDictionary *dictMissingAlpha = [NSDictionary dictionaryWithObjectsAndKeys: - @"127", @"red", - @"133", @"green", - @"122", @"blue", - nil]; - [self compareDict:dictMissingAlpha - withRed:127.0/255.0 - green:133.0/255.0 - blue:122.0/255.0 - alpha:1.0 - message:@"Missing alpha should default to 1.0"]; - - NSDictionary *dictBadAlpha = [NSDictionary dictionaryWithObjectsAndKeys: - @"127", @"red", - @"133", @"green", - @"122", @"blue", - @"blah", @"alpha", - nil]; - [self compareDict:dictBadAlpha - withRed:127.0/255.0 - green:133.0/255.0 - blue:122.0/255.0 - alpha:0.0 - message:@"Non-numeric alpha should make 0.0"]; - - NSDictionary *dictNegAlpha = [NSDictionary dictionaryWithObjectsAndKeys: - @"127", @"red", - @"133", @"green", - @"122", @"blue", - @"-0.4", @"alpha", - nil]; - [self compareDict:dictNegAlpha - withRed:127.0/255.0 - green:133.0/255.0 - blue:122.0/255.0 - alpha:0.0 - message:@"Negative alpha should make 0.0"]; - - NSDictionary *dictTooBigAlpha = [NSDictionary dictionaryWithObjectsAndKeys: - @"127", @"red", - @"133", @"green", - @"122", @"blue", - @"100", @"alpha", - nil]; - [self compareDict:dictTooBigAlpha - withRed:127.0/255.0 - green:133.0/255.0 - blue:122.0/255.0 - alpha:1.0 - message:@"Out of range alpha should default to 1.0"]; -} - -- (void)testBadDictValues { - NSValue *dummy = [NSValue valueWithPointer:"dummy"]; - - NSDictionary *dictBadRed = [NSDictionary dictionaryWithObjectsAndKeys: - dummy, @"red", - @"133", @"green", - @"122", @"blue", - nil]; - STAssertNil([[UIColor alloc] initWithDict:dictBadRed], - @"Dict with invalid red value should yield nil UIColor"); - - NSDictionary *dictBadGreen = [NSDictionary dictionaryWithObjectsAndKeys: - @"127", @"red", - dummy, @"green", - @"122", @"blue", - nil]; - STAssertNil([[UIColor alloc] initWithDict:dictBadGreen], - @"Dict with invalid green value should yield nil UIColor"); - - NSDictionary *dictBadBlue = [NSDictionary dictionaryWithObjectsAndKeys: - @"127", @"red", - @"133", @"green", - dummy, @"blue", - nil]; - STAssertNil([[UIColor alloc] initWithDict:dictBadBlue], - @"Dict with invalid blue value should yield nil UIColor"); - - NSDictionary *dictBadAlphaType = [NSDictionary dictionaryWithObjectsAndKeys: - @"127", @"red", - @"133", @"green", - @"122", @"blue", - @"100", dummy, - nil]; - [self compareDict:dictBadAlphaType - withRed:127.0/255.0 - green:133.0/255.0 - blue:122.0/255.0 - alpha:1.0 - message:@"Alpha with invalid type should default to 1.0"]; -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/iPad/AppDelegate_iPad.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/iPad/AppDelegate_iPad.h deleted file mode 100644 index a4b8c43b9..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/iPad/AppDelegate_iPad.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// AppDelegate_iPad.h -// AdWhirlTests -// -// Created by Nigel Choi on 8/5/10. -// Copyright __MyCompanyName__ 2010. All rights reserved. -// - -#import -#import - -@interface AppDelegate_iPad : NSObject { - UIWindow *window; -} - -@property (nonatomic, retain) IBOutlet UIWindow *window; - -@end - diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/iPad/AppDelegate_iPad.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/iPad/AppDelegate_iPad.m deleted file mode 100644 index 902820d99..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/iPad/AppDelegate_iPad.m +++ /dev/null @@ -1,67 +0,0 @@ -// -// AppDelegate_iPad.m -// AdWhirlTests -// -// Created by Nigel Choi on 8/5/10. -// Copyright __MyCompanyName__ 2010. All rights reserved. -// - -#import "AppDelegate_iPad.h" - -@implementation AppDelegate_iPad - -@synthesize window; - - -#pragma mark - -#pragma mark Application lifecycle - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - - // Override point for customization after application launch. - - [window makeKeyAndVisible]; - - return YES; -} - - -- (void)applicationWillResignActive:(UIApplication *)application { - /* - Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. - */ -} - - -- (void)applicationDidBecomeActive:(UIApplication *)application { - /* - Restart any tasks that were paused (or not yet started) while the application was inactive. - */ -} - - -- (void)applicationWillTerminate:(UIApplication *)application { - /* - Called when the application is about to terminate. - */ -} - - -#pragma mark - -#pragma mark Memory management - -- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { - /* - Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later. - */ -} - - -- (void)dealloc { - [window release]; - [super dealloc]; -} - - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/iPad/MainWindow_iPad.xib b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/iPad/MainWindow_iPad.xib deleted file mode 100644 index a9bea1325..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/iPad/MainWindow_iPad.xib +++ /dev/null @@ -1,315 +0,0 @@ - - - - 1024 - 10D573 - 782 - 1038.29 - 460.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 105 - - - YES - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - YES - - - - YES - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - - 292 - {768, 1024} - - 1 - MSAxIDEAA - - NO - NO - - 2 - - IBIPadFramework - YES - - - IBIPadFramework - - - - - YES - - - window - - - - 7 - - - - delegate - - - - 8 - - - - - YES - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 2 - - - YES - - - - - 6 - - - - - - - YES - - YES - -1.CustomClassName - -2.CustomClassName - 2.IBEditorWindowLastContentRect - 2.IBPluginDependency - 6.CustomClassName - 6.IBPluginDependency - - - YES - UIApplication - UIResponder - {{903, 55}, {768, 1024}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - AppDelegate_iPad - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - YES - - - - - YES - - - YES - - - - 9 - - - - YES - - AppDelegate_iPad - NSObject - - window - UIWindow - - - IBProjectSource - iPad/AppDelegate_iPad.h - - - - - YES - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIAccessibility.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UINibLoading.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIResponder.h - - - - UIApplication - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIApplication.h - - - - UIResponder - NSObject - - - - UIView - - IBFrameworkSource - UIKit.framework/Headers/UITextField.h - - - - UIView - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIView.h - - - - UIWindow - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIWindow.h - - - - - 0 - IBIPadFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - ../AdWhirlTests.xcodeproj - 3 - 105 - - diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/iPhone/AppDelegate_iPhone.h b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/iPhone/AppDelegate_iPhone.h deleted file mode 100644 index f00535981..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/iPhone/AppDelegate_iPhone.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// AppDelegate_iPhone.h -// AdWhirlTests -// -// Created by Nigel Choi on 8/5/10. -// Copyright __MyCompanyName__ 2010. All rights reserved. -// - -#import -#import - -@interface AppDelegate_iPhone : NSObject { - UIWindow *window; -} - -@property (nonatomic, retain) IBOutlet UIWindow *window; - -@end - diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/iPhone/AppDelegate_iPhone.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/iPhone/AppDelegate_iPhone.m deleted file mode 100644 index 8a4cb92e4..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/iPhone/AppDelegate_iPhone.m +++ /dev/null @@ -1,83 +0,0 @@ -// -// AppDelegate_iPhone.m -// AdWhirlTests -// -// Created by Nigel Choi on 8/5/10. -// Copyright __MyCompanyName__ 2010. All rights reserved. -// - -#import "AppDelegate_iPhone.h" - -@implementation AppDelegate_iPhone - -@synthesize window; - - -#pragma mark - -#pragma mark Application lifecycle - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - - // Override point for customization after application launch. - - [window makeKeyAndVisible]; - - return YES; -} - - -- (void)applicationWillResignActive:(UIApplication *)application { - /* - Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. - */ -} - - -- (void)applicationDidEnterBackground:(UIApplication *)application { - /* - Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - If your application supports background execution, called instead of applicationWillTerminate: when the user quits. - */ -} - - -- (void)applicationWillEnterForeground:(UIApplication *)application { - /* - Called as part of transition from the background to the inactive state: here you can undo many of the changes made on entering the background. - */ -} - - -- (void)applicationDidBecomeActive:(UIApplication *)application { - /* - Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. - */ -} - - -- (void)applicationWillTerminate:(UIApplication *)application { - /* - Called when the application is about to terminate. - See also applicationDidEnterBackground:. - */ -} - - -#pragma mark - -#pragma mark Memory management - -- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { - /* - Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later. - */ -} - - -- (void)dealloc { - [window release]; - [super dealloc]; -} - - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/iPhone/MainWindow_iPhone.xib b/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/iPhone/MainWindow_iPhone.xib deleted file mode 100644 index e8af02797..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/AdWhirlTests/iPhone/MainWindow_iPhone.xib +++ /dev/null @@ -1,327 +0,0 @@ - - - - 1024 - 10D573 - 782 - 1038.29 - 460.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 105 - - - YES - - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - YES - - - - YES - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - IBCocoaTouchFramework - - - - 1316 - - {320, 480} - - - 1 - MSAxIDEAA - - NO - NO - - IBCocoaTouchFramework - YES - - - - - YES - - - delegate - - - - 5 - - - - window - - - - 6 - - - - - YES - - 0 - - - - - - 2 - - - YES - - - - - -1 - - - File's Owner - - - 4 - - - App Delegate - - - -2 - - - - - - - YES - - YES - -1.CustomClassName - -2.CustomClassName - 2.IBAttributePlaceholdersKey - 2.IBEditorWindowLastContentRect - 2.IBPluginDependency - 2.UIWindow.visibleAtLaunch - 4.CustomClassName - 4.IBPluginDependency - - - YES - UIApplication - UIResponder - - YES - - - YES - - - {{520, 376}, {320, 480}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - AppDelegate_iPhone - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - YES - - - - - YES - - - YES - - - - 8 - - - - YES - - AppDelegate_iPhone - NSObject - - window - UIWindow - - - IBProjectSource - iPhone/AppDelegate_iPhone.h - - - - - YES - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIAccessibility.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UINibLoading.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIResponder.h - - - - UIApplication - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIApplication.h - - - - UIResponder - NSObject - - - - UIView - - IBFrameworkSource - UIKit.framework/Headers/UITextField.h - - - - UIView - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIView.h - - - - UIWindow - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIWindow.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - ../AdWhirlTests.xcodeproj - 3 - 105 - - diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/FileTemplates/AdWhirlClass.pbfiletemplate/TemplateIcon.icns b/adwhirl/AdWhirlSDK_iOS_3.1.1/FileTemplates/AdWhirlClass.pbfiletemplate/TemplateIcon.icns deleted file mode 100644 index 3796e8e183c9822b09154f65956a15ee4da5ce65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42490 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 -«OPTIONALHEADERIMPORTLINE» - -@interface «FILEBASENAMEASIDENTIFIER» : NSObject { - -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/FileTemplates/AdWhirlClass.pbfiletemplate/class.m b/adwhirl/AdWhirlSDK_iOS_3.1.1/FileTemplates/AdWhirlClass.pbfiletemplate/class.m deleted file mode 100644 index 238e74163..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/FileTemplates/AdWhirlClass.pbfiletemplate/class.m +++ /dev/null @@ -1,25 +0,0 @@ -/* - - «FILENAME» - - Copyright «YEAR» «ORGANIZATIONNAME» - - 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. - - */ - -«OPTIONALHEADERIMPORTLINE» - -@implementation «FILEBASENAMEASIDENTIFIER» - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/FileTemplates/AdWhirlTestCaseClass.pbfiletemplate/TemplateIcon.icns b/adwhirl/AdWhirlSDK_iOS_3.1.1/FileTemplates/AdWhirlTestCaseClass.pbfiletemplate/TemplateIcon.icns deleted file mode 100644 index 7cd6c389ffefecea643f4e168b6fcb30c50169ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41608 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 S!_NKZNB -#import "GTMSenTestCase.h" -«OPTIONALHEADERIMPORTLINE» - -@interface «FILEBASENAMEASIDENTIFIER» : GTMTestCase { -} -@end - - -@implementation «FILEBASENAMEASIDENTIFIER» - --(void)setUp { -} - -- (void)tearDown { -} - -- (void)testX { - STAssertTrue((1+1)==2, @"Compiler isn't feeling well today :-(" ); -} - -@end diff --git a/adwhirl/AdWhirlSDK_iOS_3.1.1/FileTemplates/README b/adwhirl/AdWhirlSDK_iOS_3.1.1/FileTemplates/README deleted file mode 100644 index c0a2e2f95..000000000 --- a/adwhirl/AdWhirlSDK_iOS_3.1.1/FileTemplates/README +++ /dev/null @@ -1,10 +0,0 @@ -These are templates for new AdWhirl files. To use the test case template, link it like so: - -sudo ln -s "/iphone/FileTemplates/AdWhirlTestCaseClass.pbfiletemplate" \ - "/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/File Templates/Cocoa Touch Class/" - -Once you link it, you will see "AdWhirlTestCaseClass" in the New File dialog in Coca Touch Class. Make sure the test class file name ends with "Test.m" - -Link Adwhirl class the same way for an empty class template with the standard Apache license. - -If you are seeing __MyCompanyName__ in the generated file, make sure to set the company field for your personal card in Address Book. diff --git a/projects/mtg/iOS/UI/WagicDownloadProgressViewController.m b/projects/mtg/iOS/UI/WagicDownloadProgressViewController.m index 3248ea69f..480145397 100644 --- a/projects/mtg/iOS/UI/WagicDownloadProgressViewController.m +++ b/projects/mtg/iOS/UI/WagicDownloadProgressViewController.m @@ -32,12 +32,12 @@ static NSString *kDownloadUrlPath = @"http://wagic.googlecode.com/files/"; NSLog(@"Download Core files failed. Retrying... "); [self.downloadMessageStatus setText: @"Download Core files failed. Retrying... "]; - UIAlertView *noNetworkConnectionAlert = [[UIAlertView alloc] initWithTitle: @"No Network Connection" message: @"Internet connection not found. Download can not continue until it is restored. Restore Wifi or Cellular connection and retry" delegate: self cancelButtonTitle: @"Retry Download" otherButtonTitles: nil]; - [self.view addSubview: noNetworkConnectionAlert]; - [noNetworkConnectionAlert show]; - [noNetworkConnectionAlert release]; + UIAlertView *noNetworkConnectionAlert = [[UIAlertView alloc] initWithTitle: @"No Network Connection" message: @"Internet connection not found. Download can not continue until it is restored. Restore Wifi or Cellular connection and retry" delegate: self cancelButtonTitle: @"Retry Download" otherButtonTitles: nil]; + [self.view addSubview: noNetworkConnectionAlert]; + [noNetworkConnectionAlert show]; + [noNetworkConnectionAlert release]; } - + } - (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { @@ -55,19 +55,19 @@ static NSString *kDownloadUrlPath = @"http://wagic.googlecode.com/files/"; - (void) startDownload: (NSString *) downloadType { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - + [self.downloadMessageStatus performSelectorOnMainThread:@selector(setText:) withObject:[NSString stringWithFormat: @"Please wait while the %@ files are being downloaded.", downloadType] waitUntilDone: NO ]; - + if ( downloadProgressView != nil ) { [downloadProgressView removeFromSuperview]; [downloadProgressView release], downloadProgressView = nil; } - + downloadProgressView = [[UIProgressView alloc] initWithProgressViewStyle: UIProgressViewStyleDefault]; [self.downloadProgressView setFrame: CGRectMake(0, 0, 250, 50)]; [self.downloadProgressView setAutoresizingMask: UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight ]; - + [self.view addSubview: downloadProgressView]; [self handleRotation: self.interfaceOrientation]; @@ -78,7 +78,7 @@ static NSString *kDownloadUrlPath = @"http://wagic.googlecode.com/files/"; NSError *error = nil; // make sure Res directory exists - if ( ![[NSFileManager defaultManager] fileExistsAtPath: systemResourceDirectory] ) + if ( ![[NSFileManager defaultManager] fileExistsAtPath: systemResourceDirectory] ) [[NSFileManager defaultManager] createDirectoryAtPath:systemResourceDirectory withIntermediateDirectories: YES attributes:nil error: &error]; if (error != nil) @@ -86,7 +86,7 @@ static NSString *kDownloadUrlPath = @"http://wagic.googlecode.com/files/"; NSLog(@"Error in creating System Directory! %@", [error localizedDescription]); error = nil; } - + // make sure the User directory exists as well if ( ![[NSFileManager defaultManager] fileExistsAtPath: userResourceDirectory] ) [[NSFileManager defaultManager] createDirectoryAtPath: userResourceDirectory withIntermediateDirectories: YES attributes:nil error: &error]; @@ -96,10 +96,10 @@ static NSString *kDownloadUrlPath = @"http://wagic.googlecode.com/files/"; NSLog(@"Error in creating User Directory! %@", [error localizedDescription]); error = nil; } - + // if an error occurred while creating the directory, game can't really run so do something // TODO: throw out a notification and deal with error - + NSURL *url = nil; NSString *downloadFilename = nil; // determine which file to download @@ -119,11 +119,11 @@ static NSString *kDownloadUrlPath = @"http://wagic.googlecode.com/files/"; NSLog( @"Not Implemented for type: %@", downloadType); } - url = [NSURL URLWithString: [NSString stringWithFormat: @"%@/%@", kDownloadUrlPath, downloadFilename]]; + url = [NSURL URLWithString: [NSString stringWithFormat: @"%@/%@", kDownloadUrlPath, downloadFilename]]; NSString *downloadFilePath = [systemResourceDirectory stringByAppendingString: [NSString stringWithFormat: @"/%@", downloadFilename]]; NSLog(@"Downloading %@", [url absoluteURL]); - + __block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; [request setTemporaryFileDownloadPath: [NSString stringWithFormat: @"%@/%@.tmp", systemResourceDirectory, downloadFilename]]; @@ -131,9 +131,9 @@ static NSString *kDownloadUrlPath = @"http://wagic.googlecode.com/files/"; [request setDownloadProgressDelegate: downloadProgressView]; [request setShouldContinueWhenAppEntersBackground: YES]; [request setAllowCompressedResponse: YES]; - + [request setCompletionBlock:^{ - wagicAppDelegate *appDelegate = (wagicAppDelegate *)[[UIApplication sharedApplication] delegate]; + wagicAppDelegate *appDelegate = (wagicAppDelegate *)[[UIApplication sharedApplication] delegate]; NSNotificationCenter *dnc = [NSNotificationCenter defaultCenter]; NSLog(@"Saving to %@", downloadFilePath); [dnc postNotificationName: [NSString stringWithFormat: @"%@Complete", downloadType] object: appDelegate]; @@ -150,11 +150,11 @@ static NSString *kDownloadUrlPath = @"http://wagic.googlecode.com/files/"; // post a notification that a download error has occurred. NSNotificationCenter *dnc = [NSNotificationCenter defaultCenter]; [dnc postNotificationName:@"fileDownloadFailed" object: downloadType]; - + }]; - + [request startAsynchronous]; - + [pool drain], pool = nil; } @@ -166,9 +166,9 @@ static NSString *kDownloadUrlPath = @"http://wagic.googlecode.com/files/"; [downloadProgressView release], downloadProgressView = nil; if (downloadMessageStatus) [downloadMessageStatus release], downloadMessageStatus = nil; - + [super dealloc]; - + } - (id) init @@ -185,7 +185,7 @@ static NSString *kDownloadUrlPath = @"http://wagic.googlecode.com/files/"; [[self view] setBackgroundColor: [UIColor clearColor]]; // Initialization code - downloadMessageStatus = [[UITextView alloc] initWithFrame: CGRectMake(0, 0, 320, 320)]; + downloadMessageStatus = [[UITextView alloc] initWithFrame: CGRectMake(0, 0, 320, 320)]; [self.downloadMessageStatus setBackgroundColor:[UIColor clearColor]]; [downloadMessageStatus setEditable: NO]; [self.view setBackgroundColor:[UIColor clearColor]]; @@ -194,12 +194,12 @@ static NSString *kDownloadUrlPath = @"http://wagic.googlecode.com/files/"; self.downloadMessageStatus.clipsToBounds = YES; self.downloadMessageStatus.layer.cornerRadius = 10.0f; [self.downloadMessageStatus setAutoresizingMask: UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight ]; - + if (isPhone) [self.downloadMessageStatus setFont: [UIFont systemFontOfSize: 20]]; else [self.downloadMessageStatus setFont: [UIFont systemFontOfSize: 35]]; - + [self.view addSubview: downloadMessageStatus]; } @@ -209,11 +209,11 @@ static NSString *kDownloadUrlPath = @"http://wagic.googlecode.com/files/"; #pragma mark - Application Lifecycle -- (void) didReceiveMemoryWarning +- (void) didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; - + // Relinquish ownership any cached data, images, etc that aren't in use. } @@ -287,30 +287,36 @@ static NSString *kDownloadUrlPath = @"http://wagic.googlecode.com/files/"; [appDelegate rotateBackgroundImage: self.interfaceOrientation toInterfaceOrientation: toInterfaceOrientation]; } - -- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation + +- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { bool isPhone = (UI_USER_INTERFACE_IDIOM()) == UIUserInterfaceIdiomPhone; - BOOL rotateDevice = !((interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) - || (interfaceOrientation == UIInterfaceOrientationPortrait)); + BOOL rotateDevice = UIInterfaceOrientationIsPortrait(interfaceOrientation); + if (isPhone) return rotateDevice; - return YES; + return YES; } +-(BOOL)shouldAutorotate { + return YES; +} +-(NSUInteger)supportedInterfaceOrientations { + return [self.navigationController.topViewController supportedInterfaceOrientations]; +} #pragma mark - /* -// Only override drawRect: if you perform custom drawing. -// An empty implementation adversely affects performance during animation. -- (void)drawRect:(CGRect)rect -{ - // Drawing code -} -*/ + // Only override drawRect: if you perform custom drawing. + // An empty implementation adversely affects performance during animation. + - (void)drawRect:(CGRect)rect + { + // Drawing code + } + */ @end diff --git a/projects/mtg/src/InteractiveButton.cpp b/projects/mtg/src/InteractiveButton.cpp index 43935b29e..91a41813b 100644 --- a/projects/mtg/src/InteractiveButton.cpp +++ b/projects/mtg/src/InteractiveButton.cpp @@ -86,7 +86,7 @@ void InteractiveButton::Render() { renderer->RenderQuad(buttonImage.get(), buttonXOffset - buttonImage.get()->mWidth/2, buttonYOffset + mainFontHeight/2, 0, pspIconsSize, pspIconsSize); } - mainFont->SetColor(ARGB(255, 200, 200, 200)); + mainFont->SetColor(ARGB(255, 0, 0, 0)); mainFont->DrawString(detailedInfoString, buttonXOffset, buttonYOffset); } diff --git a/projects/mtg/wagic.xcodeproj/project.pbxproj b/projects/mtg/wagic.xcodeproj/project.pbxproj index 8da43af99..6f4b9057d 100755 --- a/projects/mtg/wagic.xcodeproj/project.pbxproj +++ b/projects/mtg/wagic.xcodeproj/project.pbxproj @@ -285,6 +285,8 @@ 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; 28FD15000DC6FC520079059D /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 28FD14FF0DC6FC520079059D /* OpenGLES.framework */; }; 28FD15080DC6FC5B0079059D /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 28FD15070DC6FC5B0079059D /* QuartzCore.framework */; }; + 75D209D3181D54FD009916AC /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 75D209D1181D54FD009916AC /* Default-568h@2x.png */; }; + 75D209D4181D54FD009916AC /* wagic-80x80.png in Resources */ = {isa = PBXBuildFile; fileRef = 75D209D2181D54FD009916AC /* wagic-80x80.png */; }; CE97CD1E1295AB4300FDFD3B /* SimplePopup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CE97CD1D1295AB4300FDFD3B /* SimplePopup.cpp */; }; CE9A478512B514BA00C9F38A /* EAGLView.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9A477612B514BA00C9F38A /* EAGLView.m */; }; CE9A478612B514BA00C9F38A /* EAGLViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9A477812B514BA00C9F38A /* EAGLViewController.m */; }; @@ -576,6 +578,8 @@ 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 28FD14FF0DC6FC520079059D /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; 28FD15070DC6FC5B0079059D /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + 75D209D1181D54FD009916AC /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = SOURCE_ROOT; }; + 75D209D2181D54FD009916AC /* wagic-80x80.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "wagic-80x80.png"; sourceTree = SOURCE_ROOT; }; 8D1107310486CEB800E47090 /* wagic-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "wagic-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; CE8B8A231299C22900A3CDEF /* DebugRoutines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebugRoutines.h; sourceTree = ""; }; CE97CD1D1295AB4300FDFD3B /* SimplePopup.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; path = SimplePopup.cpp; sourceTree = ""; }; @@ -1076,6 +1080,8 @@ 128FB96A149537A600ED4EE6 /* Images */ = { isa = PBXGroup; children = ( + 75D209D1181D54FD009916AC /* Default-568h@2x.png */, + 75D209D2181D54FD009916AC /* wagic-80x80.png */, 12211ED21494916D00641703 /* Default-Landscape.png */, 12211ED31494916D00641703 /* Default-Portrait.png */, 12211ED01494823E00641703 /* Default@2x.png */, @@ -1761,7 +1767,9 @@ 12B8123C1404B9E20092E303 /* zfs.vcxproj.filters in Resources */, 129654D6148AA23A0031100B /* modrules.xml in Resources */, 128ED37C148BAE7B00C58E83 /* README.txt in Resources */, + 75D209D3181D54FD009916AC /* Default-568h@2x.png in Resources */, 12211ECB1494811D00641703 /* Default.png in Resources */, + 75D209D4181D54FD009916AC /* wagic-80x80.png in Resources */, 12211ECD149481B600641703 /* Default-Landscape~ipad.png in Resources */, 12211ECF149481C400641703 /* Default-Portrait~ipad.png in Resources */, 12211ED11494823F00641703 /* Default@2x.png in Resources */, diff --git a/projects/mtg/wagic.xcodeproj/project.xcworkspace/xcuserdata/mnguyen.xcuserdatad/UserInterfaceState.xcuserstate b/projects/mtg/wagic.xcodeproj/project.xcworkspace/xcuserdata/mnguyen.xcuserdatad/UserInterfaceState.xcuserstate index b760b735ff186dd8000a61f6454de822a0f2e1de..ce3fb6bb13ca57ccfead2a5db89c4194f547de84 100644 GIT binary patch literal 27932 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 literal 22967 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 From 89472eeccd5a071774302cb3a494d8dc74844dde Mon Sep 17 00:00:00 2001 From: Michael Nguyen Date: Mon, 28 Oct 2013 15:29:51 -0700 Subject: [PATCH 4/4] tidied up gitignore file for XCode --- .gitignore | 27 ++++++++++++++++++ projects/mtg/Android/.gitignore | 2 ++ .../UserInterfaceState.xcuserstate | Bin 27932 -> 0 bytes 3 files changed, 29 insertions(+) create mode 100644 projects/mtg/Android/.gitignore delete mode 100644 projects/mtg/wagic.xcodeproj/project.xcworkspace/xcuserdata/mnguyen.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.gitignore b/.gitignore index 47783ff0c..6d1b3822f 100644 --- a/.gitignore +++ b/.gitignore @@ -214,3 +214,30 @@ pip-log.txt #Mr Developer .mr.developer.cfg + + +#for XCode and MacOS +## Mac OS X +*.DS_Store + +# Xcode +*.pbxuser +*.mode1v3 +*.mode2v3 +*.perspectivev3 +*.xcuserstate +project.xcworkspace/ +xcuserdata/ + +# Generated files +*.o +*.pyc + + +#Python modules +MANIFEST +dist/ +build/ + +# Backup files +*~.nib diff --git a/projects/mtg/Android/.gitignore b/projects/mtg/Android/.gitignore new file mode 100644 index 000000000..b2b2f4c62 --- /dev/null +++ b/projects/mtg/Android/.gitignore @@ -0,0 +1,2 @@ +/gen + diff --git a/projects/mtg/wagic.xcodeproj/project.xcworkspace/xcuserdata/mnguyen.xcuserdatad/UserInterfaceState.xcuserstate b/projects/mtg/wagic.xcodeproj/project.xcworkspace/xcuserdata/mnguyen.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index ce3fb6bb13ca57ccfead2a5db89c4194f547de84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27932 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

lYr&&D^LBX3eKIuZ1~wsg4S_Vo7cRmKx6!nL zAmQMW)}$F)Q_;mCpGxt-Zdkq^xz1%VSsHkyI_Z2$!`nu}iZF2+RPEB$AgF=zZJ2o4 z{igB&lj6YRk!S8%H)vI{Wuj`3-i{z{X{2m~+dNW-V(8GNnFEKdg&mDf(tBwD_||N0 zr7r^wH8K*k48h?~h8FJ$9R|^`Q(Pp2W)Ey?>7&vgN~ycV>kn+<)Pu{Xciqp9V892yxy{K z+j9il1aXuVhJfXR1Sb!&YtBr_>rx`R!=ZqZdu28cZnc9iigoa zNB*8L03X;b>W<&55A&VcbPstwIBJ6d^a*496=TH9avioc)F8O@!cmkj>l?j)X5Ho| zcxCY=a(h4r*l@uC%Fp-mi?M|MD4URpkX@`9faZz3iuIXk;U_k|B!j|@8)}ioH@f2! zS*hAYxWPo3+fJyeUVTwSrlI8-d({Qjf+7|W`t)T4L)Z0mtou}F$1s33jciBGFm$fm zH01h4bq+n=bXp@x8b^W4lSHl4JmhKk#A9CJ>Y0}hBPA~#0OA*KF!8O@YFrRsUV2iF zhI1R<=pyC&`scrEoe)5BC(ogXA!UY&1 zf#WQ10V@~VqY?rkgI?j~sZ0#RuXe21Q+nuH)-M0>r7)QRq;Y>uI^|$l+xGgcVYFRT z;0va&e(5$LGX zz$dRb5rb6bGA?>UbcOHO1#~d6{X1Shq!L$1O-@G2Za?lL|1o1{YVHv*mbw*Zs$KlD5NDY44FG=xzxYJkLB zp<87vP-S%Dr_}J_9|`7;7h`t#j~F>+sI&*jq&c#-!vT+$SS7<#3|j_0S0amd{3~$@ zgI)oD?;(u0kM$fM_-vre`;r0WQwP=vppCTtGsa4%pL@y6w^Knxtm8}4kh!);e|Z{Lo(+3_kX^HG+8ca)FO!;UTSo3XUhobh%|V|~X+;OEbL_Kagq zoW7z}M)r1OXuP{ynIe38WLlJigkAV*uIjao#ra1U{28khJS)A>A~;Qa#2r|rQ0=boZ`G@Bo1T7 z%@EJ*hJA691NS9U*70rukw&>ZQ66s6dA^;_NNn<6*{Q6+Nm=&wX;WFAzcj+h+B=Na z8w@?ya58R-QO>Sl43*IZu+alM6|QDr>Wl$SIf_+;!QvFZevQ#aaC~CSjB#tcJgY~B zsmIm2oq)_3Ipf;B{Q!UatH4}o4rQS=+?9HtVn+{$<7 z$11yc_S{9!*CdLnh|$^if=#pYF*zOGnKp6S9LvoMNN}B|Uni_^c?xES#c3giThc>k zg`a>6DC>%_Aqu^fWe4Ke} z?*OApb6cMPHdA>wBPSf^pgVMjy-B(v zi}Pop+DhuTP*o7uU|7j^V^gvt(ICmY@J;;p1#?dOP3)0a$3XR~w;+70@t=lH3JY5T z*R3M)Jp96t_=M5`3PHtIk&Kw=9Q>%e@->QZN@%eUxe2pCt45O`14u<3AUm|-?MN3- zMiUN-H!KD_cy~JS3=eX)Y3r7Me^4|X-k~(*sAfR^K*YcGzd=o0XG@H%tV>*P=>#Xh zrXys;R}vml93#xU+d$ZK(CBH1)XXSn;h~Acc->yoR}MCy46@|6VbI9Q7;tpR+lHma zW%SQ8t!}wn3$p0D9!dQaPoqrGb~FWZCvuT>F2Tm%(GI#|`3|o;A)TgP#)^5GhG+Q1 zw>T!5SHW?A;tg7+dwY%iD{Jy-XZ?&p^~%>H+&q!o&>yFwdiy513-didxs=qoD|;n) zc8bDZZ+&NgHChMYx)+|)s2Lisoa zeoMK(VxYAC(zT%)Ul?(Y$lfqor4A^HOA2g80^!{a9>po6N&q8+wA}HdydbE)%;=}a zpSQ-LGS>}5!ik)J0&q{>URbx+xsH^#>mpx~&olCQdU3Q89l+>&V0Y{jqs^^h{NvvU zV-%2MY_1&Tb%d8uHqXI3ADx9A30cE>B8=fn{i=@h#Jzd#yVF3cOV;c7G$nbNZ^l}_ zQ>XPSxAHa_Qq8!h9cdjPcsim;`KJfcQkRFOWt9QQOUpG!$Y?NMF(L&P@TNKO-Lxq| zE}fV)!pNGoM}mD8(E6ILk+$}QG8LYkWix`2ice z_1<=#eDX7V#q{Eb(D<#4bW41Ai8epBXNog;P$m+6Rh+nG=rD4s-@RxhXe)z+!U_iJ}!Tk8yF=Alk*I( zDHefJGGVfw{|65d4*3(3w?t0ixE3R)B#ZThLSbl`yS}Kmf3Y7KTzIRfxb-H<6&|52 z3_Tzf?;Dr`CQgty*J8qgKEfk1IKVTMR+unnq>IJBgDmXDfQ~Nn;zB|x zHw_U+EEdw=f(#S>-38vD#ji_GkL6zA88R4D^1(m#!Uk^|2U8}Wh0DfL9B;CZ-%h~@ z8_%4kvsDmKd_08^ru93ZcM79iPQ)rR^Sq1_co<%QiZQsM<72|F+vcwkKMlW(K&Q+| zBNKLzQ5?Q>FBEanPrNM|>ju=^PP)@$mq7+99hV{q5>T_~hK?Gsl44zHJqW>cqXtcl zE}f;*z3yyugGQY#M&L{{!N2lJwjv*1V;G+Xpwp6j%I ze7rDv^~AY$PW@iqv0J(23KRrs+&rQI8XDR2@(zbZQ!39=6-g zOFBvA=5anPg2$K?w>y3{L4wz89g7P z)HfjEGOXmmmnjY8?vWFg9NAINH1POR$>0e&p*PDKvTzZ`KA&AtvLgykJ;&oDY1$Y~?x2 zACM#I%)8-}%<>+CuN~*rPi28V*HEAfY8LPs3$TmKH58}rw-FnfJEMa`Q+pq7}vPrK~dm(Q!wU9n~6r7c(?fd+ShM zCA9L3?8>%vMF+Qkf$<}pWDJR1$@C5EJoz;;03IRax%}f8k2Dma?L!GflM7kks`=$P zOMB2A;YpwYcG7Fx9&a+mwfPQHWENrh&>1buNLXm&=+Fb36w3pmE{&MAo|e5lPNI^N zxtcjV;~zW`CuC&gllYP?3F2O8dK#6Q2{(!78PXlHBHla#C>7i>S_v)q9yy1VxC*#b z6Jnd7Yw~DW*lwO*wwV6~*FxH3ltrXNdeE;ZJm;|b$Vd{hkm+n}VAf@!lqoy)eQl&0 zO&X?WBE*&G^YY_UL2bImmv+Gqz@#V0s6o9v#-G7&I`5xmLE3`i?20u)wtod5082#{ z{uAX5H*#6HcA(EejAIIXD1gmQM`A~O9s{`N8d&__F|{GYb8-(H0R{Rr?&NR8O#F^I zP=RbnHH3Ef?wpeUV#CMqx#$#Nm=ciy0gH+J(G*rdn*og}N7QH`z40BRe>Bv#bi;>f zxK{egeY<(;T=gSz!-hCDglcYh4lds|H4bXDBxyKzjXyjzB4xhS)kelfXDt)WLhpH- zC8>>;9e}VkU{cgYv@97_aQe*+7EQ74jutq%h`#*j=O&=(Ys*t{B6v=H;ru}4^uc3c z<~z2x9Pje^C#IVb!&km^(dXMpP{WI{5O$GE7sJn;nyx3So@rRvLv9&Z=Cl_laYDOH zfhDJfGmXhQI@gPl-Y>z(*V8>m!hCfU&5bQg=>xCfR%H<9qV1?iIVH}4kt=k; zDdUlgd{I{9$1+wPNl00GQL!{g+;QE}E^K^p^UD>+FxoJqeST(;scF9wgEd&*&;p+H z1>7W$C2`LvF=6ZuZgfsVkx|5}dyYY23i+BmU11cqQ&=4(A9avWuv1UIWXDnGj8u4^ z_G8LbLpg&(nyrOgI|QC#c($O!_eg5@EBF}i(LK0sAez}q%h9aPi`vc^dVa~*l>07V;FOiLy_A=@xsSBO=?*41U`;cjxJx;_1k0L6 zW*@xGFPRF)_G66enJw8bd(}}O#n=_?MZJ8=pE#r_jD8`tHPoe?G{Xc2&q(0zJCvuu zW(oLNN@D`i4W6Er6Y@i^EboCP-J&xD^Au#RbPU%+GiGtELb)irh&#wOs1Mn>Zam8my-^S^awXUMx#-ByRENoIaoMK?NmyMGO zEb=Ar;Bk*!7OwFGBef|Uo(T*X|AEaq>}EVN+q0j;xxc3nUD6+V zLBtyY{vR}pd6P0E!46l!3n9uXf=sLiA-;txWBg8@5gIV5zm8z#mvy+m&o`S z#4E+nkfF(;#+fe)j;PVeFp#aHR{?E=yX9w)tjCfkzKG4Eim@qH=;jgJE+`*@lMmvY zCeq-O|4F?KK*Pq&^Bk;pe`eqTXvgZ5YB!CxDUn4Zgf$qeVHRnT;^xxLkNKTE7mzP` zB0xjT+m6v?x!5r`I-txei;5xOiisbmR^6TJsF5S>8WtjwjTbtnj0_D_8xThyGQMW& zcN;rIat#+6U(!xLWD0-ygn))4flnH3$jNWRx`_Rj-L0=|f>5$fYdv^^v7MNmn>o`0 z*rR%`?^_+b4ceunWEw8%COjz1Zi$~==E=s~j?}WixHpfxv&v%t|Ni)>y;vPM2>~gR z=!w@qVbFqR#shrD3p8FhckdG8@ABmj3~e@kU;y4=0BV?djv=QrVgPYe5L210XLG96 z(NEgGJ>oWXgw7e+$)t}(~oJhsl%ufmWoZ_;?=5F&yf_0mzAc~&mH5MU^hw+vnC*R(Yp8qQgd ze&OWi=YQeA>;J|o1>|Di!L1rid1_MW8H)0EblSF$)D!!g3}NETUuz@{=cU7=lr9*p zymUy?GWT!LiPc==pSoX}kj}8BIpMR;yJW--Qhp{Q; z!PRoa8*$PyHvP{-fU-Jnbt5zfo|@I_(Uh|a9nZoI^T1lF(@v_V>O|}Q1R*Bgtdnb` zKZ8~oTRFl3pm_n)@Ty$wCk%sbJmZHMv*i1fXKU`Hkl<1d$enbn`6`{^liz6z((UqK zBI4AC`W*8vtjYSBba=fsEuWn!8c(NiTte{=9q`6`S>k6UUJ#}f5*V*q%kd}!%Yr}q z@Q#Ku4Q<#(7v?G&>Ji$)42F>(T>dH^2fTjN7s&5t+Wd&j7quTmKFN(BsNvoK}O4gMe& z&o=ZnD6Y9vx9!}dJBE&p9?4ebH(urI@fJ3McF;|MK*&*q>A1#l)Y!A3i&R{Jq0CSB zVrOOWG>U{#HkRQn2H5A1tO3I?xS>MVa-2joZj_~b5}I2(F-GZguDP;Wj#xIzivuB-E<0X(mdobkt(EUuZ>bZXNtJv6I9IeL7~<1^>|AxFPk+r||;4sm;l zw|mM|9q?|nLgSg+sXuKs54>*2vmJcK4tOxg)Q3lokGV&djuct0n|-T>Uy+c<=X<^p z{EaDCr=T@9xHS-z?Z|O()geO5Po0%(_}gr%xVs~({ZeM6@3#EZ5wdl|%f?3zBLB-z zA1?m#Ge-e^_$6cifinv4*|~Dh@UUg>xp?!rKwk#n8$w&hQneVctQCL*1v*_zDNnQs zA2{L$8L5Znb(e3tmMl#$mwb_mbSun!rN71-OJ0Hij&O2={E-3qa<{z4B)R#bX=1_} zp>pIO;~oKsd{QSYX!s-(+VOtd`4WT7QFzx+-XMcUXO*$#>@b|NQ&-hRp1yoO`BF-h zb=J|@Yu0Jr@EJO%wIAI9#H)qIdTqkaoB1nm@Qt1{HC-8z$0bxBmU&BG%DVvx8=UJY z4t$4S5tRo1&M(8)wK0g&+HOOsBnQ*TUKwZn`GTwg$n8u?ZJIHw&4YR9?R(LLz#E>T zdjuA_xh|{V^W`}f$&dPFc^F{(Ak1hiFttzMT2EAfvW8pW5Ef54r>>aT^6m~Z2!Y|= z{kTaA;xRg{SJ(v)4S@4c8kzDk4BW&GUHhbw*Su((yTK%+*XAI{d7%AEbPkB%(WvuO z?>sRT1c}cQF6UXu0{Zb|g!<#S;rIk$My+J@MDqk-GJlqyjMZNf6c4AL$#+89@ZdHd zX8sNQ+bkKk<(2!~6V_3kO;?ynU=bXi?~uw`l`9zeHKfoL;$w%Mhfl!{(A#)%NK=T^ znP@|1of+YcUad4eOcBuHd9ZHI#}`7dfI0c8Y&Nz$ZFQ=cQrv>^xoGsnTP(0vj;tao zJeAg?AH-=Tsgbea@DAQ|b2V*9IUPAage@&@8Z(+u@Sz*>W`ilM8U_uM>3r5I-H4G7^z|m^b2Z zSDrB-uf9p6GsJr)pywpoIp4AdjK28do6}M(x@Rm3Lqn!%a9yLQ;pdGZILwVq>R?5? zu14LhyIwHYG=(D;2*^&!X+3uZ+qgcl)0d6F7au?H4O{4$4|>0gdu3$CG6*$7+$4a2 z5!EGMfVkq!yhbz_5tJ7v-&8QF}HVrS^cF@MRBjz^xAdwNP9 zm7C>d9=+#h@Thmm%l*age|)?6^3~7bJzRWa zDZtlnlso0$RPdSXr7-lCoTO`8K>4|*v9kr$GlFdyt1Fb>tR+(~MW*mf=Y4Wlj?nb# zr4rb53OEhFcu~(9qEs0f2}G7Jl)DAux34|?*_S5M)o0=AsgCgHg*~qA$fh7fMw#6( zvUtN`^o|hEmqExo0N0*%h-xT56bTa3{@8S7{CR+VGa%>$Wm^Aaol!hi9c9xc*90nqEjRuC%a?6YawLAG@sX}9e`pNg5^J&% z8|BsuHh4Aq9QE6?B(-}Gu^co2HGVx`bVgWZaPV!6c?Y>J8|tOFkrDD~ zMu&2@gleOKbu`p|YSvhiULCiL!=$9GN8&`sl$%21nJn=MK2&)w9`x@p)7sZ1!?5i* z6B;||S|+gb8UlZmR~~_c91NBTe};ISBtCuvj9(Ee5OsJPFv*VCB0;$d@D%no)Q6%#}%7JQ=o>WVw0?nF%?=VFp ztb-Up6p&k7HZUsOsJl;b64Z~5jc;V1*R;}$2O9{h77uxm3xbCGNI^{cl)>FQ>3@5)zL>W58I2Ailf?u&# z@yjfD-WE2Oc}seJp%752T@C z$`FZ;{LF2mBx;Q*suJy&pMR6K4P8PUxOtife1#bv{}wR+UW10vGAAx|&Ijd# zVYi=7OZr*2OLntfao*k~pLuIEgYtFs?h*bys^;n9^Tku^C>hCgN_!dc_SPq3lJdkq zFLP_!7CfFa=QOd?=<@{xJ8}&2W%w;_Pjzvji|CC7=2Z<8)X@#N0!J_gNSE+3i8_q|2&ba7Nb{+ljBq#SyIGnSRoJQ z&ykU5SbDo-S-hAm8h@1SmB;y5UtlwI3upR=TsfEL%>$`RAno+!utc!gh?uoDW zygs4Rz*cq$si|q6v%$ywL6h6*V9UWJ9B!<-qy9J=c;(bPPmj>?coo~RmnZ79#|aVU z3sf(d8iA|LOxcqjd_xQNRhfRQ7y9!mehbbE9w9>bl3#)NRyu>lRRDp(nR)K5-x_=5 zh}-9wSf+1DjW4{lcbX}-MN{UH@n^|){6lv*Tl^h>+d=sJ696t`XVHtsr{_A_HalCc zit*niHYH$r1uv4)FMb+;Fp=S>Yp0Ls8*B@=?QaaNbkHAhA&(qq_(JB-*)8J-P5C={ zb$5}G1H^zg9u2?)(%3g11GvtZn1BP!w(@jE{^Wh*QhaZKPqAe}FYz!Z)W#b(2TP~) z=P-ka5a13_aqu@OCSu}FI80aAk?3%s5V*PHgCwPrHw^&N%`of=kMA?Lh}U&=g!l)$ zm`-#8d*dCC>D~t8TLC*Jm}Cdej1+i~S4MHF+$ISR6^A;vA|p9JE8{$e zuyN)cg;yvk(WK9LCIcI!A-L%8PLoP+rS{l^-aM(?wLLa;G6bS&EcB2|YnuF+$JJmg zD*z5xLs5Awe7?_$-<@DNcp)X@_Qw7iKmuOe1S!IYtukf&iew;gxpD z;)tOTfc=+&(+%VfZwD4Q>`$F?Y*fJpvBr9jV#$xP*UwFSjSdarj4)^fjvmUz;Fjp{ zSK}>@rE^07;Y__YrHT>tKxfgX(~@Di0M=ci@Qw^jI^{yfoYJae8>1irnRD}L!>^%= zzdY+I?8FO+<3l!0t6?EUKXFCYF8=tcamoS7j)2f<-f@7jot3%-UfB}XMw+sx}7q-@$^=rjcmzdylYK{X#Bv)yH|NB&iIwjj0XI! zO|k=TB*@V{GC_xZg;6!TS#h(W;p&?3aMB6a#9C$^`ND418_xZ6?H{s@GwAxFwT~F- zd_6~*5YROp_q95Jf%(jIayxh#Lh@zcl5)uaL@^!p!(=Wmo$JR)<0EImc~0Inu7kd}okTZjB&0(#XiM^~INlSNwjC z&2@emSC&7yN|gR2d#C;p6IuGVU)cck5q>d#|Jz@FW<-$l4;4E4;M(u|`>z;*e_Z^3 z|Ns9;b!%N@UuE@-#-*#qFONQsZDDWUIU_CNT1}Tpb;pm#8UL%ak&- z&N({9Taopg^Jb>~A*HDggM8}|&r8divS`;b-*aZ%9R4_<967(bGoJO7SB#{t3IxyK zsWQPc&t6s-&4zR@V-Jthme?MC{){YHANu9~Tjyt*VL5TM&f|LAz55KjU*vgk$pO4G zt4`ekZ!b{1Mqz+!_<1{G{MfAwC;z@gjRC4`W+bq-ID=IQb6Zc>Q~D6jA1{KS3#O^Q zC`ZEva6N*YK%EL*e6|(ngNo3XlPn)JaBg))%>fpKzObC?jfS7?4^L68%X&QgPT>BX zQ1c<6xK@IlxNzmJZsXAjj9^xe&^G%(YGo0;`T$QD`qtL^K^sc(4*>4LG5!)2HW4F3 zprJR!hArWcCq&OvY?=$>U?wA_iNQ%de)y?!+mD`M2`&yNeZRz?fe@rw{qJ1w68sQ) z_#tXJjx>j3l5OvM_>78$S)ng3E#x!#9;7GvMrQDVaKS8LeHR7XS+XUgv!KB<%C%7W zkSA~7a8ZJ}d~Qy+`#m3NO=g}=cHV}4-8f50k+fG${s4({|_@44mF6O;ytVS$k(mWW$ zg}Y~*8g4rN5Ju&!KGK0Ty_2AAe3ZvDet?2sMEjDSVg0PglUu49f6Cf7%%&KeZnaT# z1VQ6QnqBfiQ)n+nBW1(iS`!*T4_|K72tGhX`bBem1i+s}Ob8G)F^T?b*0m?`8)~Cv8Xl@{L@u^RsC99TQs<1#(dyp9BUoXI7lX@14x zimz#0b9SOK^;nNaYaAJ}<7SfkIg}bJFHA%GjqJbt<(G?}fBDPBN51f4xb^#i9lc-KprZW$_P4*{)=y&b z!H>AB#^%L(?`WGlsr`b=-Jf!!(c~S#RsLgGQ)Y&l*jwEN=iYeZ8cwHQ=bX-|E9p03 z8c!XNo{_JCPnma=kMbs+8+!a24RUex@5-|Y&A0ev(`v0O+g?llsq2n@yO-p?jTvl; zq8m?jR+tEGQN5H)R-SbxWl{)U@ODQC!JpB+h|0I4JZ!7d)dxifkkrROxUTa~f{w*nuSbu%nj;jVPNU7ynQGP70%Z3j;>A z*GTBDe9VKK*%@0I=Siy}3v+Fjc$x#@O>a-r(YSKv)O> zo^6cREl;?smR6eRSOHO88#1RcYP6_I=0_&DV$DkG-P_vmCsi3uHsX@Q(vijri2>BE zNq8|2ou8)h%9^;0%xKwA;s>{Q{7YxVL!Rqw79Vzm@eDpC<6?V~(qPlLBNOG}=!t8) zc*t5fP2@s{&?u14%A2yZ9O#tJFFQQHcH!m_ zP6w&cy&>HV<#o$9X*ubwDPpGy@0lhP)-_bGk6$=L57rp9xpFNW28A83JB#Jf&h2`A z^H@$Te;e(%w!AXZ)E(i$XW1k-}*sbbLW*FiYSYAt^&`C2ory+TVQTc(RJU*~COe1DC z={VZtLEIQ>7;M)c+4R6Uc;>w+dZ+%{^r61;?PPd;V%?;gcLhET)fS*-uv)JO$B4OL z%6bH=ag7^2+iis%Z?a>@@a5${!LL)f)IE$1<>$y?heQU3{jGRM0{`-7zFAB;-muZ=14h7ykAJ)P^!f9}CqHF(1ApXT^jf(s zBjxVT7grzuf=vB>GMeIM7L6EnmFuV@c#|;gp?ECY>a51LWe$_QkWo*s7||Q!MB{Ga zh0#D!ZoL@yVkR1<^!Xaee8~mbIP&L9Z9J%H+|gKua6uF9OP~ju`>kjBVVgK?xW1Mz z8uQI(X;UjGOL%kY)|UnA54v)#j;mW3`A@Wq_m#KR)tLoH11TB|YBz}7VmN;IfboaH z=#mQC7mQmLm|Jg217NpCe_-ly^#*@3p1fIS2#DVP zW;!hq`88bG5(n2Ae%2db?Co=0&Zl#*4PCR{uN}3^TZ2Ekl|N=b%n$H+V+S|ew2rJZJ!6O zd~bOcQ!K8{hq|NNenmOq4i~?q3*TmSP`>&7FEIcYesl5tRoMFo{01ewv$!+=TY)Y3 zbL>k(b-V}Rfjh%^O7T8WzcSy7p|c==w_;AQq(r+A>r4UJLgsn?7doT6>P{Bq63;mw zxP_06mEt^ljI&Wrp(aiR7TD*89zG3|bL-+#EtJc*E#YSfyNa9gSm^)+$1(+aYB<_4 zjADuxxH?Z8*J&hbK;>YO4}G~HOq`}lAys7V8d2gjbZmHh(?jc>ictqVNcV&cw+&Kn z+~#IF-f60AlzmfH;Z^))1lDMo<8|qf4H>jT>`IZaw>;%?F6AKGs-H6TZMqRS_;%FM z)A*f6V#`ADb}|_iG)&2YgsH9=!-4$FU+KX`n3(*rvyt~kisTR6P6cZSX9UtnOHaAG z__>C#wO%utV*@?;5sx}RrH?E>;C6(^HBk5f0|r5~hK?{t8J$A4#9Q2tUrM9zFlV}C zW(Uu`I|cYP)#)1Ahv96Tyok&8#|FE!gcD>VTEi6Yz*QblWv!E=6TKzQd@e03=#$j|hD)-tKE54E~4J8at^%6HLwkSi41`R-RSckT8Kv?6i z1GGKw&o6y=*t1ite7Rz-sT=a;6_2EMgOdy5Z!!MvF#bMpgv`ALAi}wS)aY0{h?ha> zfyh^UStXe}Vy}Vn#Hf@;9BcX>$(#CcgG~JXDunnaqZ%~Ub?VpaE1NoI4^VT}S-NPZ?|YpaUTgi4J7)fWiLo`ZlV4tX2$wh8AInKN_y!7ItPj*SzCz;Y9$QpELD>se9k#51FE51Q@Z)}t z?)D98cXY!;FQdIw2p{_Bz{2npF3`Z2`u@T}=WY(tpJ7K9Z*J8y_3j&n8&5`Fy?ejfT1Qqix4CFElT_@GvghXsVk^I%pbt=JOt1vMtaMtZg97O&ARdI8sVItiJX# zJ@rDve(JwZ;`3Vu=7w9@C}V|^4l5kn5M^wA(v8fx=LLSAV?-;#k*96OHvX(Lt>Z)o z>ucf%H<+idla@XMMiyA$(Ss0y6E^KjsRET(66B_&2Z!kmU-)+H0$cQywRM?Xn%8Lh z6y3BNk)6cB48ets$EK_z5+X0kZbFY)E*oI_7Gyfz51HhD6=mol6*um~1Cz#}(}ACOAH zTx00EjJoV;lM`r^FKtj?_r>Ie52hhmEH2m?TIQX-{?V-;OPLEi3qo7-6l}+Vq zS*}1LTDz4lz_p_FhfeG;G~p?JLSkbh1#!*Y=c$NO8|A&=K_n3o4o*7}^Hn(!6^^z|I(T(}Eo=1}q9iSvjI*agbm64}os^LOv^ukmUQq zy2dLEl1r`hJIW`WwtOj9jRXB6@z!7y-@3*v9;ZHmd#y=C1II9b; zg;sqZFqUu8Ve7QD$o%<2d`;vH`sVci3kH20I>HEzF}%?&r>>QWMwZCncV7$!mUk0s zlQO^>4XfW1yZ#-m?Ix}AiEnih*;SticiOs_CH2d4seF_Le;WCwQ{Sw=7CwIAIwr^T z@`X-k>}Bu~=aVaWsE_2@{$-|op<{c~t-Q_khLtLp8Q5|(9>csr2g8GyG=iEw-`k*x zD%yyB({_CaY&3y2N<0T(_%OdRR2q>jZ^1^a_!Vw^muTu&MYr0dU_~^#wjdAm^(PP# zYgc@%c2x${iN)IhEm@UdyM6K}-)EPt<&Uq8@O`ZGjxb#t;e_gY8-D;V*cH2z8GTA{ z4m@sqlno%&=waC(_77LTG8(w#j?>0aUTj?bE-Q9qv?}E~W=H&hNKT}q`EQ|rYjnl{++`s9GBBg4 zVx5p^!J8%1-{Nh76DFKDu@sJf;!q!OLeHP+VCp~%G~B$wlTTAy_Mma+sO3JoPaJt8 z^nj}v#A$(d<0f5YYMBcU9~!{g*RKp|SVkU}e0#%pmtE6DIZM{f1D?`v$L7e$1F(-6 z5SGWYPwr=qHpv))*YqP@QI^o<9)56kDW~B#qep%)9y+rR>?cw`uszG%q86 zbU04k>o2Pa!Vz0{S-U&;g=s<8ggsw|Fd) z$J2B2m~I))-H0kr&%yiccfR|}TFPJl_S40$zj+J|Qe!=!%K@J;x_cwQkW|N<^~7|` zzGzg6(Kd}=M?Y^qGNo=qBM;DX+BBNTS^jkUeOF6b`E&`MuHz`58p)=o&MAuGlpp1z zA*1e;a7IJj(e1G$zMNcYgs*Z4PMsd$C66$QlwjP}0}LKR1%thdZ>;BYB<~jGcG^}0 z(2YbM4fBE?KHpPL$gL?pUm_?|M_z3+Ybj~89?>b)YNmN-O8BPw10~?BOEW9O=(^u| zrrx(P47zhxq@#kCmwEQ($~wfd0be|;gS-AuSt6{FO>Ln$A>7QAf4S1|i#y0G!*a_* z4VgNh;g|7;EPHVq8q?k=A;FVcY0QWB=q+;8FW&yeKbNjatwYy>o9J+wXi|u8!z}nO}&-X@Dk^Yo7(pB*`)xqQMqz5Ao@rr-`4b!QP49()>L9nGe1?m=s9(A0D ziF=|?#S*mm?+i=LAj|RhAScuBp~wFZ(gbiGzufjj|L8hT z@&?X`opu8)Wh-g~z0?(03vCrdB>*gNql}Jhp(JL_IDRT(;!AJ1IK9s=(;Ih$={f_N z(p~sYa0~leSbe}Z5;0U!+#!mZ5KCp`F`cdop{fWk#mS2v|NM^+ncnqG7%O))N|}2s zmJ*nV%k<)>F$y0+)gK!mq+)s~+BmotWGWL41n}~gVjpEXc!!!Dxy;x=uGli5(Osu5a;M};M82GQ#SnR6bj}SD^KDt>hH>NcXX}UT z#BJh8BX7w?UZh8OqhZjuF4%ctaB-q81_PfhW0$Av{B9iWW8|^=v+B^1-}F)b-O-DY z#V7OJ?D5R=wM`!wXnt*j5nR_QdJIZ(O~;Um*S_CVpvWo|M#G7dK^k>(4#yC0ce|MKN4 z_a998V&GwbY3w~R{pr#bmqn13i%*|0fH9K3$y745{yPoKt?`usi1f&(oH)8#S*y#W zF-%^k+|&cY!Q)lAs~70aD>By9WQY@W(c}bQ#tZsVKGi3O(#*eg3!Q|%#x~3%f~800 zU*z0N=NfTdeT1OabtNds1N{1lz|Vdwo4Rhiqo|gPa(HnhnwbFeVtrA6+w7yC5o1Sq zeSz|=(j_+6t_6i9meD3pU!24#`B=rFv3IQz2yJz4&Rs<399fqp_2rT};*n74nKFat zWSLB-bS+!iEhnp-g=#4g37msWk{_fy2Re8E zCqU1W9q#w69Qb1N06P^fK?ls?SaA6LPr*-c>dekpN++}xgumVnYD=hmR9YJ$->%-$ zn*txg=QJ&v$-w-ExWXOS!L#G`a}|zE@V9WwAOJ^^;r6XoY6GK-+lpLAX6U}eY~|pW zhGcjmp8VLbw@BCq-W1YUu!GN_6DE-~Bb6Go_b z%t1-4&2h_QMpn!lYnq8K?0-@ArdxL8N_r(35gamasZ0I-PpBW#T3XVrOwPUc_nE={ z1j$=n9^nqaU^C!=9r&aj25I^|D}wN6mCpxMzOpRz;;IOK$vtOY3g%v^cP{@q@DoVo zUL7YiU_R_(`h!&rC&z5lPi&jC5tmgHWLt?&34Gx50^K_w!g%@2Y7}MU`lPh)Q|qV6 zoRnSPXb|ap^!%>xHy;8Z=<{-KzEXm&wqt@6?$I;Nsw=SXv@r>*XyY&R&D3ZcqaRZ; z{8{lM{Q}}QUmwFgf6rd_{ov=@m^e|}6*YaHpb|P|xM~e|YP);7*=~NG?i;UJ=_*(! z?YKl;;uBN*ii)wjNoxWtgV^Vf=)glKzA#!H^jlVd?Vkp-+^ZO0O7H5qZSCf&B)S^B zz3~OcRI}JeV6PvrfPmvG-zfeIK6>`=zj-!_qGdXb9}H>I#B^Q}D3K-(op$P{@G#t>3(M07M7v;THxevb1G> zgwYGBcaH}6g>lHJ%6{nRp)bb$JvXqKa_+s;A3BrWImzvU^ z>KCRIwfnx??w;fNmdz)YeS5(d+r!sC(Z{@}Ip4Uo9(-3A4PoV#bDGrKDe}T{Q&$B^ zv(leAz<#Pu?x9jt_3+2BdClU_fAi5v`|Kkmp8B4n>0hzQ@d*OO$ofbwp{~m15^2o7S@OK+pis?g9ps-_0l@cQ= z#P`E9a&mGyPAtz!WmAf%8R+83Gxb!h&jKoNsye@j7#qbcOMACBf$a910C1`mwnCP| zR4J>_9Uj=PD(*`qB`D(*ShA+0` zNozSb^}GBdCFOKhd;4K@G66~VdQ(PZ;_o)9G;T`v@8VH-kI`*W#h!dl)Il_Ok$YC( z;M0>@D{@MQGpA;-bCS|w+U(JY`mRj0mjdhm%}J}k;#Y8>0der;2kcm_tJIS*n~W!J zPYxLhcXy!3ucK%uB18ryS^Z=3nR{VcO}%p1O~kIhELgg2lmp>F%Uu=fATfits~GuQ z8yHUXwy&2RnKxjJFAOY5eScjp8)e1GL7r2|LD*G+tWYA$6*vburBe5U`^NH;SM2i_ zxSCd11Vk42;SmK4?Ej&Z*{LPFdWT+F)JF{MoIU{6=owP+RlqH*M$#nFJq~SkP_a*5 z)(u)Jn+F!B00Q~cR|2813sBwApMGG&<1xDD%!uG{})xEJl2k4%lCC@oU-P&ID zU_87-m7=);nqp@z?<7!hQs|~`*DqIK`bDi6K)V`fU?eUFX8`nb(Cocbivtb*)tZQ` zV;_AOoooj+AH8Z!%LE;Pqo=v*pr3720j;)XfQJ z12QTz=)hlcx6!T)q6%%~uY2k$yNID%WMxJdRR>?&)I6w_opaN&RRlyEP%76;RC$1a z!Oy22;lL!RFZ7oIQQO27CT|S)64W<%IMK=Q>cj9tsH(VIt2{+IF=q0j;Gomx1*?(S0OyMmT>gB^Dwj`f8vr&C zA$YayBupRv?4*L-Z+N*h&q_-eK0m(r00M249S_*&3`BB*k>ZyG3`zAABKX$dkI%g3 z<=!8(Tf^ZlzI>dR(>_3Lo19y)@W;%XPh8^ml54#NFZ3qJ$omPobnZJEBinNooV<@w zd$be0JRA_G`+6nrZv^(g{wEK-JblV%0lmHA8@rc<|H(aqfAa!Cz81&3B6%a?Cwz`C zJd4!nnR`CpeEL7UU=Ux}UP#OXGdy6TKD`pdS|Nd?yT1BPc7YxTWF+-cOC0{=T>I1UWX8Op&*4=7Sd&sW*@Z;-5S_f4 zMIhbmpj}BS?zQG`#HVU9x2lWD|DW8@AAXNC0pA;22Px|p8{HQuPUSCtq?D5(jp$%Q zkLG4^PwHoWk>|3Ab({$PddOx&0Sm9A6Pc5@(Ymi5%7`2pM7=6#GfGDFtL*|@omQHK zH{Cknc1rnl-k_Yo!C!siN=rQ^_^YnJ=4y|FL^?VsPNG2_ZK~JGEKp7&0FeBxy?MQ76le~hTe@9PvCY=Z<0U*&SJ{APgnS3Go%k?Noi#8nLLaCyo>tUAqz056^?a@ses{h49{hZ`P#J}cr1V&WlUdsCHr77TD9cjS!4qm;) zMLB9?dwk96hkea^xX{nOY?>z@G0D}IOpK9Vrlvbw}7peuOo3$-OHWeFY{baj;vd^YPc6z_%(|>tiZeQd~q`1=;%w1y-)M)r~i$5()2w1#=}8h33R{Cmq}dJ zQdU+Ij)@fCCp@@$js^W;ZQQ~R(haJf{=I9Yp5J-2NqRM2Ex-HYJ)BKsK@k$^ckN_&v{uL+m`4dmG;@|ph++(Eqwj`U>u8=XkPpV znm;bo*)~7=Lmf2?(&!)g(VMmpbLx5?C@c9$Q)16-PcuiJ=p>1>ZmMcx3UBlIaYx1n ztav3=dzd9cMBG3oCkF!T20O>P0;O{ruv4Bt@il5gP2miory z0p(ZlJM5mn2yZrAz+>$NYHsv})q|#|aFby+a57Fb58J6c(1!*Xs8k7vJW)NXI003y z_y5gFNrPl*Hab%|4VH#kF$;?tO0r^h>)6{tg;nk5wk)A|sRn&Atu9c010U?r_$y7q zxPS^z{D=hF6Wi`9Y-L#{XbacNE1DIMYhQQ?;hLL&(8g)5-qsj>+ zXzHLjaCT3Lnj<_&vBO+dkup>g7GaOjT{xoAp0gEIImJofW>Z7JP#Rw1G#Hi(xW}1H z?o?*tX7Wr>rH=V2>}Uyo1en$`#Xj0Ic4b1wenxElpCx@JrI8pud3w(YO=wtqV4@0b zxuPf{OQo!Cl`S;-s3UY<=F}INP=;sl;n#^v{^P5=4`qjp$T>Cwk{G;BywuJCl4g6g~2!YgARW7M0Ir!b7xpC@ArLY0#jp#c2^G+)JF;*pVU8{tX(O~ zYhf_J`xoV|pE6nVKuDh4MX!7vf;5x80iXz@i!$|^eZyC$P(5|ppzf~lsHgphVPAcw zo%V+P=ndShb>=R4zWT)A{j#pPn1t@J5Bl%u6*j3xFU$5_5Oc1eW7>i9|9|sh=>On- zc5KYk)O{G9z00n%T5llgDT zz7X460TOT<1##QR4_>0pg=a1(a2tu2d*!b3?F{M83GnRqX{)xEe%FQuf4&XCHff#b zd)uom5$|!Z{f-aqaLSR!&Aien=Uk#>?+c7$w#BiaGhLzd0kq*;9f}RvsNrd!q0K_X{K9f7p6Z@q)B~J zTHqiqTGfgcBX4SC<|b~dN8VDlE;w*23U!OyiqbDD>tGga@@5?m#7Dc1aZ z#X?@G5|m|r$G<9G@&5_wzXJFjuXSX3sp~5{*Q^mHpJFV>M|_}qHN9(VEH^LB%CO`5 z?ZuvmqUijkS?&^$U-%6ig#sTS$@&_CM_yZZr&q1DcEyHil-$EYNF|VhL71_5$l{2FHYD2|i(kIr zIpK|ta!5UgBNs>pDJPTGo^*Yk6JL#@R1UHl9{Q#{`ovbz3>ezp;wg1^bw(|UPyWK4 ziCUwbSazi@H0l{idr${=g9azkPQaOfU}{kL9cLIQ$*b}=Z}1>3JPoc9or1{-sZVYa z<2P{KLaL5%al$Jyw6(uD*v14{e+rS;MZfvu5318!w8M=uXABwl8{bxlVJ^q|XTq)M zVEef?g1zoeA}FGJ9p>5vrXS0J4&x=mVJOr3iHqwlmc~?6E;K9W4w!96J&`DW?LsyO8SI?Sm9qk%<=x zTD(k|-Tsj%4>}YyaEu+SN%A!bZ54T`-ooiC>NL@zw-hr+qIjW1bUGRTOI z_ABhAE-o5#M|NWUDkY}}dZ}Z=O^BvtM9^CQu zJ-lA#i#|aQV?S4V72>Osb^9}c?DP8%vEMu5zq1l)8{{=Ltjs2*tWUMcb4q&}90Iq_ zPK9nXv&x6Byt}$ahJV{rABwka3wAc`)wbAufFauwsX8ZN{6hzY!46GinLTO*!Wp0f zX)F9IWy(#U2rOf0S*mtm+IMa8zMcD_yK2ifY7DTtRG~YZYIUuUaLJG3qqjb@pOj78 zd+0SzILc~kwjfGusj1o3e8It$e(CfvNaDrk$*=$F6=@tRl3GvRVj(@I5Fv;2Lnb1_ zU=OuV36V?M`BTQ8PvuMP$Wh+NA{|ju@waezZ$;qHSf1*%y7}PPchggX5H#vMEAE>= zu?~Y)TxzsD$D;$8W92`TSycywum`Dl1;{m*pmGX?3(SK#nu39S-UOcscKqg`8lR~h z=m|{I3L`8chhHX($!FkqLWLcEE<1f*J>sY z!**AB`=R}j70vVy?icjyBj)qMYR3;Q+2&ix^2QgrL>W@c_T{!Qnbg~+-e!>?7`$gL zy@5?*BHuB3OYs`%ug38x5ZIfNcYcvX{8krsbQiZ>1`tlDeSv02&>l8_ZIx~qAJ ziYZR!J@}Oxfd7<>7vxo~s*YaEGo0)r2-^8ZSxPmq?v;hwmp+)R(t^R!TsOT_%7vJY z4kYHpcA-IMYxzYDEEviyrpHm&%540c+w7H!c;A9j9t8*R3&K0m9sdshZT>FxH8Ha8 z)xYII#UZ`)JEUaNR}SD`F``bfzraoRkdY@E16iA?4e-cub(p4EUQt5+TYpidD+rHZ zM-&Gj2uG3r$}3%(dwVpXPRi1-S$@o<6kdCB4@UJU_L3ACn~-}fQw{!latwcT-STD6 z@KT4Rd1bqNY8E+>R+p2if$+88f!AN&GsyH>DCJ9=@$g6ws zpaZW%9!GF{?_pOt24z$n#%T}f3XY%7M7Uw$3XB3iFr?4%o!O{eesaje1N!`R9 zn$R6u>Sj_5*3gPmpGa&QF1-i_IQm%m>jV5C-UJ5HhM!KH6<*f0uvcH$j?_b&7c>)L zd#OEhw*I6p_N9Htcdj-_!)~z96-ZMdPMq|me67Q8FV943CH$g)c)=ko#vX%h_O^)? z+M_&HzqnM{Pt64!Ux?Vg1&%9dR=J9p7ZCFU$3P6w3-4t!#^b8C7DqoGdjOYy!FvVY z_{tgd(GofjIzUV6WmE&mCtf7| zVrt~~niI&-7QUOXw&4OYc_;y$a;e*U7!8uWj1WuEL*xydvcji&-utS(KJDo}gl%K{ zRDzsMD4eH!=qohyp87rNU2ZEs&&lJ|~+=jY;{2!LO> zXHmV0!CL17A#eZA{ct{rlNHchF7`nY0>BCUHu%%x=m7upCv?u%j*9{9QR3JmJeRW~ zNM00W^KS+8!fs=Z75*O_5MFKC76T8Q_KB~f4dmJ{#PimbVf^e5;xwSVCCq_TX700v zH~AarUUj#va1akJ8JIhERFm<;L1|`n6*qWQXxPca?CN)A3n}L!-;P%5#{or#&X&)} z(WiIb#eK!k4j5i#R9#^$ukafINLsZ;&vpRAGi7wzH2S4S6g@oj(flxlzj7{_pbhhK zylFh9$tck1w#ah0?9wYrb;~#u8^!fJ)(-b$Mew=;nCu=N5rhhf@RM2GO{?&hP8wFj z@4=}D0o;{`Q*R&fvc+-QtGlfXf9#_ zH++AA1Dr|RY{(!^Csv=`7cFvDjO`2`ov1I= zFZazc+c0r@?yV~nBAY&u3LDAL36bZ7%_UnWO@ltJ- zei7t^Nq#r-_3Q8g-dgCAqZU7Ar@V5~zvI)z2R&tc7`^N_>Y^d+Y0K)Uja|94PPxk3 zAqQQhWDY(ARmO1(A^}<@hD94&hQGfbvnd z^fB!8e49x+4;}39 ze42$k-&5y9Do@_irM`KkiTA;MjNiro!8KCv5wtD)fQ|W`G}@j9OMWNUui+T5;xJOr z6@A?PFO7pmR$^IkG$8p-e@=i+P-ef@Q&^Jru}d`AGkEttNG?kgkMKV?002M$Nkl0 za{@qN%7#9HANu*91AI;W(>Dlf&hBQCq|DWnv=rA;yA28Zb$u<=K)pVLF- zY*L+VM5Qc2xHYxv!ks$%ljpDJzIpcO9G!0XpdZbwle`Br*EV>fT-8B7IBgk^dWJN5 zf__r{13FB49>L7~@IH(q50WLr|g@C(b=x05x#ED|WXznG6aH20Woiqk;ULLL!Gj zk5u@zUGi!tlM9oalIug#=+rd2a?*OK>X`{fmA<(Gp>GvWIg>SV!cW^|#UEthl`{l< zNun-r)3i7YoOEC%U^Z}>Jbg)VtmBOB;4qh;XCPNkd8=t;Bu8O%h;k}8eATa$Bf(6G zLU{(#l7_5A(oVljTTqsc$78eF8eJlLDiF{pj8*;MReUjcFFz zL_DF&zx%Fcd8`~!uC2A!x%If|%D%8wElOUX*cEsT)Y{4#Whym{fyWjKE9lP0d>I8= zyB4u67uM8P>)Nvx)K9=7Bg_!fTI(h^YQYykxofBS#VKu+7>qi3b-Bza&dTtdYTnd7 zAC9EqZCOFL%~G11OwN&8U91a2ftxi|;ngNGU{YH>vPYJE6*!1L7<*h1-;J|U6)z?& zZ}pZ|MBxz(&CeUK*WgFe8;MS^cqh12|G92S2mdjd$^k0VUNf>^JG;o@zEW<;qf!P! zF)zGF?3OwZj}@RUj{2uTWFc^Qo3&8{1UBgsicdv~)*E=(ax+1vc^z1Q4}508T)$zi0vY=v;mDfx9OMM@|e^qnt1d z9Gozm@ahj=K7H9Dec+PABf;ASDV8(#N$X@>-Q*?fkci_%qW_Y2@USztB$T=*kWE*{o9sg8`L_DwQbL)X7P_;20R0CuKi6lp9CuYL}q$AdMX1 zLgcFq`-~I3a&60jI}q6(nE1k_y!YOa&kU?jy<8}b-vW;R3u5P$-c2k(`@;=#M^f_$>BEAA%Y?oQ&N};~V_tJ%2pN@a(sTeJ}&R#U8^1FY&Q= zl}DfGSNoSqj0Q)4+jc(4pwHL;WcA{l58`K)mGU#Ih2OdF(I)XF!fX0d?$x7D=G^mM zI`m5rNUHwsYlQ7YxiSoC?9Z(HsW0tk>I$nXbFNgyR|L5sSMccO>s{n6Yc#BAgV6OK zxPBYiFOGcv`}>>!%WDAN5k!3^;{VM1|9tA#X8-n;i~Owk_48(w<0|`-cIY45ZDf(U zI_l|rhWuDYJ!!W%x%L4~je6Sl*q(O2xubp-VEfSC`O`b_0jyWGu@8)Bzx>tDAB$~M z^=~^_D=+tsL1fr0hmxax$5PK(c`v`kuy$I=?7!Tik%usXnf-k8g4uJXslr9fH*9|UB1g4pqdB^REh3h5l~!pMWr6~pDN z_v{p+x4wmpmauk2VPJ6}R$inGE~UtugSE~aN$vO!*iJSHXegtrC%d9T>B$hLXtAOnmy#Nj#Il@RCP1{UeVER`~2pkmlW#ADpJ6 z!I7uWqJ?jnH*kXkVM*;Tz=E&Ot*h@9({`jh0buNi0Bx#>&<>6A({8U)gE;$+ z>z-{#CwnJ0?O>9FnfJ8y8_Bc=LBTtMK{s{qa-{EpbG64O>;s3^?~>-*tg9=0(nFcR z-w{aqwF6hN>J@+Ka$lGcf$kYQT4!+L_g;~ihZ#1X@Li zO=iU$87YEiUE1to0*-Av0R2I*mKP;^X_ZT?US{>RFZ>iqll8ST1W;M2G-#D$n7{Hp zZK*fVt$`nW(~bsv_BB_R33TTcgWh90eNKBvUt6s|Ok6D^fHP3bPL1cOtC#v{`>Xxe z^C>_2%yWsB^S-_{u>OEZE;*-u?Y2MGZePTlOTPBSoZkjye&UX@woJgDYvHihr*w@3 zb${b3S4;9jZh|^j6}#G}&GsYlmC2q6sebc)c#a+ZQ1W3N`*~iYQ ziwV$3{p){uZa;`TXtNnr#!t%>D$z4;N2{u4H8hUx)kQ7z2OBVl({3jdjZ`3#0^T~( zkWN{igWYuTGe*&!bK#er~X zBV^&rOL-!!E`^JA(D5}$XH&nUuh7)p5Cl9FEi9nv@rU#kZ|=4YFoMXF`j_qCFHfP% zmmK;ASG@GyJ07s3Jn+;DTQy>xL+k>kGA#`o52^@B4G+Qw=F_k_9{ zptw15ct|NNZEA`-G6wgkM~0KJd>Q1?!zcHuk4OygW1cFOOqv3djGq@z2?MH48D$#q z-GjgWa#B|}HD12Uyr~1AT1E3r_D(L88JH71slSte;2hutEHAoMDd`iCa7hL}4I*YT zi>}%zv6GL%pDPLQq%U-kU&B{N^a|hd=9o<$>Zz2zVxu0BPj^csJdtgR% zLuS5~U|?$>%mAtV%C0?v5=dY{1F4ya$F}RFz0vC%`Nh7`f3y_}^N35Vo;!{5I@CiQ5@Oe3~GE~_h2@dD-BDhKs z^nq`-z3^$V^a&<-7i_=qVqo47#{{Z|;HB*iq6|=c*ke}y^6{xA18-b&fed-4j-3Zdo_P?Y`jJ4MmnP?& z>O(NDqWYSaynl|i%t^ozA)JCAuxPs-t!}==e)06@u3U@YkWmO-Y0JV ze)IhkU$^j!9)69(lguAbS&>5?!E47M@&X)p5T1WSd0xr>w4L+_1vFuASOZw6%Xqs6vI6(aA)m zq`mwpsVJtxO{bQe`Ubo4Gm9R_x1eWMurF1pC!5PX?fb%@PaXCHgu!e=#q(g=)2G94K!YOBKL6v&+X zMRSNBWwvz3-})7DWAQ7rMQ4N{`zws!!3Wpm=JdlNC&Q&g&~i}X9d4)I&UcgbKo4AR zhiqx5^C&y?qy4FV>|7Zolpj81Zv5JA3~Wwjq4&fUcMml7oZLd19YHHkc=F;pI5zO| zSARQ;Fgwo3ZZ3Khmg<<8l}VTxkc6qL4opNDP!ceq-^z6o@eg~VE^Jbn!PEdkx$>z_ zrBfpVr3Qal3Dh6quw2R$;A|_9VzSy{R$npEldAVoIT3nU zD-)ZO+e~yB6r+ceof8whlQMBTLFDxvz#JSYM_n4@(CLHh>ckdPltOe4Z zaA4~y5p9);NE-V?$=L1&;Qs z_7g8@`ANElWwswagOR&EtAV;JHiRhn#e2BEeSZ7q;~)5q0OExpE|-4Q5q(_=%%yWy zW(>sBPH7VYHz#$13%{G&?{*T<>nno@=(8$J>enRvoEi{zaC7N*R@8FI*C5bKleVpG z2M_vgHjU%Id5-bdrrKo<2k3T%3u<8Q@=&Jj=T0$Yd=;ON=EsGfg!?Blzu-GwXot`2 zm-S*lIhR0nR`28oLU|}VS)lOD10)84p1<)u{#T5zwvqn10bsu=Yyen3-+40kEf1c& z^))eZAFHDTJN<;3K~Bd5jmV`_eAUaj_|YJ6{P&d0=z9*}lh_T7mv)t9KlMpl_BWq- zRm*2SZ-)<_Sn;G+oc5y$Za%Z;P_|v@cU_fg-rzE;jTo6990Y!EeIa+9o&I6~^4*n0 z1FCdZ0xkkOgTNPp;CFoA*tUD(Y2dH^AelDyURr}gQy6B~AK#vNfP`1;_+=FX%@Y6) z-S&4KF94SEzbRm4lfujM~D6PiZ6!_n=8pJYlWdT2n3Aa!MoOf|V?^!RO$n(ozR8 ztv)D2*@`6#u4JmK!1|4>`BY4LlP}K0wq-li@|RkXsq--MhmhX=dIKR0fIs3sB8K4& z^sjJJ2f>|2SjuGf47joT*V#i1+CBe@>Mk!;zrhuJw%0_r%I!Fy*fDyk=rz8KDrZl$ za%iWmn0Bf|nbx+GbSpJ^5w<5#u)}u+0dRD2aGVK++MEdDs2?Y?+sZIq{^=a?IUMOI z54_;FUB3KgU#v1kk_8GFCR~E zCl>Zhw&>AWBK%@moHqF5Pb!f`#VE5AL%jm7R#2Vz@92j1j>7my8H6O66UB=iail~H z=u9jpxWeDD!O29i@+lk;$(fVHhoPjr~dhhx36KkJXu=ywVbmc|G@O;lpdiye3B;e1_ zpZRXA@3RZN#u<>HLmCc-$nlwv&wMh>Aka(8UKWfku0pFWlbjFTcqz0Ge|YInd&(!5 zma7`bWa@^tbDRm@)+fN%z9J>~%cVqNMQfu%lg4fPWks04A(ua~!7n>J`Ql<6 zrQz_DtvY^x;&m@vLVfFNUwCS_t84~Vb}o@f2@dSnK4I>cQQjHI`NPXLrj5MU@jI)X zPXvE&c>%QdI`+p4Iz?9w@H2>ea+T2Y%XW-3O?@8$N4&1op%J;yiL7ZP++wybsq*HUWD)Gyk< zdKC%^g0;o-z@0pYQc_h`Rc=%aWqISr0B<$;9`8hsuHG8)40cU9md93F(pH7hOs!_- zQT^Ab?`k>5oV^-dDwizl~DK7yQDV+*YlEfERS(3R#4E?Jt!Wvc+F6ce;gbYBQ8q2B~E6 zlw%7huiaJK+H}jobS2&;g+6udeBmgNJ)J?q49dxHfQx|^E$yJ%Uy`GnwGg%Quart{ zpeGMo7}}h8EhUh2)h)Z7#KF+Ppo2p4D#Ir4`JXaH^%MYB=8emT`P-XMP^nDB|iXC?)I z5xWYQ{RN%ik-^uXFM|*|Ir-Y?nYpT)`L|x8ihDARPQL)3!O;mhcEx6R!nbWw-%-g{ z#iMoPnzNoQho;jMfXYX@_?yYl_q%y1*h_{_K4q&d*j2^U9e%mr$+l2lq*XNSs9up} z%0yk;Nt^(!*uV+CwX#97PxO9#&m~<}e0-|fKJyoLe|6Okn=7imawVrLflqJ#gM}|| zY2b?On}7S`DWCcp1>m7NuH% z4nDbR5MLQEx-#Y^T=a`GP)=FliZ>!sS+qjl>*tE1!Ic$rj@#Ej?D<}M`-258@^we2 zKJ0?e3;^M8&}S#ej{te9=d_phm~X(xc^VnYfhKb0;06w~St;b!gy2zc0J!wusdq&% zI-MV3QSInQruM6YIaBqX-4h}(#0JBD7C))85XEVidFv*15?9~w3EG7h9P!o`d1yBv z>y#N1Y}U?mRYQN+hbv9o;7QZWEiJ$DB|j*kR8DjcQ6za#1zDL^H8b6m6k1ghNxi5p z#tqN&LfhRyP=5Acszh~;jPPiEdCIqvOwSg1tq~U5z&yY1m};mlrM(~PvE?a_klN(w z#h}B11QdUupF%R|I6T9?wPc}LJyP%avrjB6*kVZ+Ad&v1V|R%clcxX3Hlzu4Z5ifH|1Q)$bi*O=6PeNMyQnr zKLfA+z5C=<ovspr#3oEv!c>|;CL^Rmr|M0 zW0SggU)h^{%8T}(O-d=Xy4Y3(e~92?4P>>QFEg+LXq!7pM`zkIwEhTS|3*8w3Mjtc z^zB1E1T|cy`@lC}0f0C6^nsWsB(Wz?b=p>_=xaaF4%t1oT-}rJcLJxZ!jku|`qEDL zA@{4%pSr3e%)EV4R{EpX0!&K;@q*%6rb{N0rX|>g8Tm{0IQu4g7q4 zjrZ=Y2fxRsuKxK@3IW@@f6(;_0&^)6ziDh5qWq&F2k&|GjV|v90(G+wk9>Q>yZ)a2 za>$=2fK>kkwdtSgtb6gb=M~(mhx+ud@7^?^v)w^K_MYEO+m{p6MH%~#D-2P=~IL*51@n?Ht3&VnzDHV$h57IFf;}Vc|o@KMCQ_K z`Gn{2k8TE;w)^yhR^g8XfL#TQPTGSG_L(2Za7^>u@rO$``=PdJUTkb$e+m?oJQ@G; zAG}o0L0q%1XbQA~s4qJC zvQ}2{3;gtDDFoUFDeF(uAv0OMBQJ#;WV54R_^qxt9#JH`;k-2Rz6q+ktyF%~AlvrY zKpy-{&ak`llvX^F1uOc#Im`cItJuhh5jT_(d^9*!Bk7cHnWZ7!?5%cnyn}v|*W4Qi zjd`u#?jOJU2iXP`+LH$Y7?SdIB}y5Nl}RNXd6mG?4(0&fy$X1Q)`>970;U>x zqee0RP=S5^41DOIK3LJoz*OI`gD8jmT6PdJpdg6oB~%G=2tY*qrl za{2XJE;Sm!F%f#1(n=XJfh7pEKpSNc)EDYT+WX18!_NL>P(c7^eV)WsHoH*=2Iv-V zT2C*ce;Q-H`{4bQ=s+~`lAujnv_l$p128X3vwx@TRbm#y*!n7u5AXSM>w6~PbSBUx zA)m{AOuBjE6MdAOY523NL1-Xf6~O=ApXLPTC4GZDP1Uy8DvY{L{NQgneODK`8?c0A49rh{bXsIw(_R^T%t8}>z~p;HgHj5+?|;F5p7k?n~K&J*@MJ-b3Dp$dy^VqUqF zl|Qo8!Kc$(XCKxcb^~vPJMIS8z!up<*E1EywqH9!Wc5cnaO4SBT&m5duLP3%R0xas z!s`R+-L5pGmdP}4ZOa%tzC)Q%$!qIKY4?n^_8V&er5$X{0YvW70IW9PPA1ks=T^|# zM=Adv>XjZZ%%zC#BjeZ;ex*&@M20q+sSI^cBef@6IQ8b^gTPXVs9_OkRfY~^d4{G1 za0U90AHto23nD8e$SYxVVw`lV{>cu#JRs1gNhNlRfM#PLSk^8mE)AoUV;$JZ#7ibZ?Ev>9QiF)9uN_;F}p_BOW1(@+IgRS-keN*eQBEUq+6ns5cqpeIx28T{M`{y75 z??)b#$65FG3JzR~TMnll9#8QbI-=+^t7z)}Evp~)fll1&O>1gM+cbf9iZE7ph)B~O zw3C-|Uzq3&G>8C*VGMSdRK470fa?nG40Lk#s|yBv2?ohy>aorK6kG#&AHK+?Cj(Lf z9=OMs(Ej+0=UmN$ud8{!oI5K-@QS8Xees=dT$c1TF?r`5_9Y-RDB$w0sySJEf0^H) z?PX1Y3eq36gYByBIt&8wgJ4~-3 z|BF8H7f;@iPw>a(+U181xlhrTGW*TlT>ACF4FkdYNriq8*eF2$wrATa>cLB9`qMRL zLU#hdH|+Vs3AUy`8i?Xw1ET~qX+M8NYAoj^eB~K$z|IxQA6!~WlFA=YTK zo9A!yby0BL0>-xfT3dHfM>&ZHMOCtx`AvZ~&MhCG`cC(GwU3XY9I409ZRC3|P z%s^;%^zh7RXJ_DMLU#pDeBV9iih@C4FKLpuVmpph2>?16SlLda#O{>^Q3wG$u!5CU z$ndcakOyY)20X#YgsyJeiF0`pw!ZY2X(JLm)Q@EoeRDE-5^*x+rgSGig9Zm|E%DUx}uf#P#^JWSHGa* zt5^R13x>ogUPAtx*SUQDLSX3YObh~C#ZB;MN*P_WE}LWofxf`^ZypL!*Z1%IS_tAG8o^;xv(~(&Ic+398s+obGL9QDr*^i(HDf<;zb#)IUs@g}zwGZW- zG!4&~MHcxv|6!v)wU*`h`hmpDB50CC!F!LL=?)1h;P} zfWUtU!+FvaN?e*>9}w#&+d=PNd=(&Saf{#lVM;LwN$JW`56mtydJlSdm))p2 zx`(PrQlwH^d51?qo}b}pm3TR9T3zj7ts zv1IJEAF22Du~M#nl*Xnz$GB0z$*7wAoj;}@P!v+HA%mLTqRG^Yv1~RK?{vi_nlu66 zE7;G)V>y{f`x)gxRvQ7Aj;*%tHS7V8%Ae{>G|gW=4@c@>^9`Hr4iCszK^nKE-Ex2` zajT$cX(81`RTU(z`{Q=lg=i_kNkzNQWC5z{t>MU*zXl3DvFP|axWh4KM1|D^81>c33IrW|?W|s%zpAIU zIgn{$f;uLWeyt!}Wa1nosRqE&lh18rA|mY|f_AO12uM76b8|dC*7jb`bbydYS8DWk z*I(LS%@;0oN($Y4!P_LqP90eEpB{*Ep3 z(--=0R5Sp5$E8?723iJpu0UlK%GZhzENQepaex-b_qus+)~CO{ROrJSKA@o<;?S1t zS=BPAhbDWta9}e=={6<1HiAY{_#Yt!Cx-f<_8eG)geEA;ETcOiyqo(qi%W{ z0igc)>J!keoD%?M^^=uU6v0OX$vDY&u?MPl9&~c0H8O0;_S3H7xr*9Xru4G9dT1*m z5tK;|z0&^ptmBTdKv5BDHYFpO709s9)3^rj*=kdQ2oB|oob+`pi>siPr){OLZ3AWd z3Y%C{`ES3-tG2WcO! zl@tDfStp6Un*KlMbA48M$-_Li zF$C9f0ef;@T{snwe3}t#4twq>M_th`n?gr!vq$IHeeghrNd5bxRwDBJ1;sl4l&jtD z8NTebmcSqBZU9bX&Pw#^sJ`Ws+Grm)Sh1jRvoL;Bhuij>0I-f(B@eSl+Oj!5^kAQd~sj#iO+ELqDdJT>5Zfew}RCFX@#5= zHg=USsBjOWu&IQ2brwimmAc(s+HGrGL?sujP)I4t7rH{z$L$a2?f>Iq8}Y}6dQX0 z1IuI_1}iTpt&_$bdS!MHlZUno@6k!neEU==DpYh% zCC&gYbbJ791DFZkmH-U5xXa*=y*3o?%Gvw(JWN2~U_A5H_q1R|-mPcwDI>rDLKd``m1X+vcSHOr3UqrR{w<xjP`cK=? z2mZOFtDOcO?CDY9+6L)o1loDW9V>r*y$dgRerv!ttA6we@6(gHPn!FLu0h{7g5n=9 z{|!C6m#$fTHGnhtO5mdVqZjgG6YaHarVg~ZFOT*WChu_82inhX{btWfpr)%o zAye$oKJwzZPf)ZI7}Ai3{SG4Ihxj70^rOwz+1KYSwx0xMyM+m<{STYGiqT-kbDUamwB?z${_&o5Vf=5!#xAjK?G)F1{6wIO z?()x{!mS&9){g2#6&ZtI>Cu38us3vrvKugzgQY2;RM<`yx&?FygdIfkwLK8^kbw$> zp3>4ydik$_Bj(h@l6;D~3&!E8otH{zK*4{1QGyhGMLrDGQS!xUYX@(|53ZHz&j4BgO%d6-{*?aoQL6a z^pLOUwW+)Zl&bnaqGfyAI168IH$z@mopPj|($5*|Z(CUwunN3Fi2*l~-)3LaEk6lT zmnQfv`EM(huj!rVQB1d5QU0%`Q22+SFyW8@XSMpa~iUXEsr0jqQ{nk&8LJpsMIYG^i&4 z%!E%;bVh41Hpg$v%$Jp)C<6Q|71Y%pjw#U!;0t#tfCXBuI30K7$0E(?ESYh?^ zZHbaUA@~0hOt9+5i=CedKzuz*-g!q~^HzxOUJhqacct#z4+22H^6|{mzVH5RR!8wy zf)WCm+*{W`BwkYS>`1l~+kdqW9~c1ouEQ66Y+Lza?H69l^Gxar=uXN$tg)*}2?h-^ ztxurYw(Jk5whx@)uh{y_{%-rUt-$x>2gSBbyU`A5R{FhuvNHW}xTrr~L?8MG?VCQJ zhzuh1f%qMy^r@!R*K{rj| zf=&rI?T_Nv7uXL>cxt-nTK1j}`$k>&@NV?b%rytGSSfQ{_vF21^S3$;}mvEcZJLe*VVQW3<1 zYT6`oiS`7`RA#d;WmqkaK>2Jkd5RC>WD%qu%GW%(k=GurHTLPI`ZDr^DR28B>DYAV z8ObBQZLH9fg9Hf@gqC!+R{@~R{U1(?mGm{tG8`wlPzH}=ayKql-A~F#xf|-q{>trp0e_1Iw0$OK%wTME;o`VM6BSw|#fL*!% z!ZH_GgPoH=-Waii`xs4mgbD}_hoLK2YaF|gZT2s-)=|3l41*k}2F-$D| z<^&+F<$&t*pi1lHPRhMj=iW-{T(9$;e9Y(&neOE|`N)rdc{};-mTYy6(IQ3j;6Yl9V6j9B?I z_kLRhMT2y5w0c zH8|gZFE*Db`ov1?OuHyopY;56eCVk+V}t&fI&V4fM;(yBa$cm~2BlAs zzMLaZ9rcy{7N6(!P0&RTbWo4%@W|8T<0}LQC*#YQ7M^8%j@pTqltsd)99tG;;IZ3s zu@3%{wdzJU03qUJBa?p*`efyea+4HiYZmQST zsarN>1*&~OVx#?h>Ps=WCb2d;rnEc2|n9S5}Mz6xs;9-Js*3n zsCWC_vR-kfD`xAO0=44Eeyn{A0E7E0Hot<&XyC_lVGs!y#g%(ik>bN)tr7T&OapQ< z-EnHwuvmg3^tiAGDOcg%;V)=%nHQ6TN0`w(w+6GhQeo$bn9AyjVyBa?TD)StT!Ryg z@UU@z-daB@K;eLsAna<^$uPPT={HTQcQ2T3QDQ+XYWvP%EgBt~djtYIDL5 z#pH{>UDE)KnB>q%xq*vyWe?PeAQQdFoNV~PwoJRKx7&!-CtBSVKi}tO@W%ugxY{u( zal+>0&3Z%wj;@N7SN#qDOnSp#5%LJ1w&Z1Sh%55jbRPXOrmef_$}pR7vqi8fai32^&b7|%b0 zO??0g&UnU`zUs%o_lZmC?|IRpyMd1Zo~w7R^7)Cg1Vsia`dKFGy7pkDo9A*TQiFJ{ zW{;_!#g-*AwH;GDywoY@I{2xYb6YvqrGLpR?M(mooT^xBhfitq!^JVd4SN4DrZ|8S zfCG|ef;{_}ZDMPQitYBZWuc%14+L>Ufx}B2kS`^a78#x+`p$Rz?dx4)oH~pi$DiJB zNE^QWX1_*{TCb(AHX$mFHDsgP$kx7IaO6v%Zcm5SeipX{7#$^V~~+Ju8D9r@KPvnCm~b**Cz+E32?M?_kwLH`C)o zGMg73{}d)zJGWX_1-TirtqEJ{7CvbAeiockM@GlE2!xJw+r_qzg35MxR?5soo^~Sd z+2zsvZqkIs1tGZ^3;sBrcY#;5gFWLC3Rrrj&!;H$v50W~Zn(Ar! z8WBMr8NkKuj+BAtGM)p6l9hGaD``##PR0-`Zft42S_0xQlEh$Bk=9wtYE$ThSvRm` zIH=petqrf>i%?!ueGQ_)TB_1m(#CAsn17iAZ?U?LospV6_GRE|ALj*kbr$qW!`u+snK574Okol``<+ z+&tkKo55jXAi5#(btc@eWf>Xwz{I@1bf6!};TavNOMt*o_{9}P7TG@WMDa%ydJoGF zrs%>VAVVYc$ZsI6op|10l~C zPfA4l!u@*BKJg4);u_k?=G`_kKu^%i#QN^z2LeDYXJ^&WAkfuNSN>{8{5n0up5n^M zep^|)QpPrB<#gqsrhAFKGWCZxfRo0V7D}K>p60jxK>`i?=u`c{BhX#^#cL2)y~Lkt z@n)=2PX28NGCc=O7q=WOikC~sswh1VzWoo5NK8aM?AW;<&ZR)KXpmOn#fqD8K=XcBWL+?GMY~W`%$+$|; z?2qc4>HJXC$GttsAYA{;Z^a;xA91dj3-8nN^ezJRtR|Y~hZySQ$7pr>j&AmEhApi| zY^19|{xw8Ximikjw9_P2>@5@f&P?Hz+godhhGvEc*BM+1jF%{L_bLj z;L$S&rzTtc1+Nu#svb2tOitz?9>{~bLWgHKdElh6vnt=4WS_jxiH3B)Tz<%abxSqk z(imxc3((9+Al$}vJEoVEDdZ8@dg-OwOF0JaQGwVEn9qE4$X$ zSiB3+)j$UyyuqO1Q?oR+6$XUSuS}B{oPcG6K2k3UhDsR*eNg8~Om9@@G)wT)04R+n zU-q<_hANPOv>H;5zgJJ{^n387Qww%)f)6u}=_DK^9qlc&-jiP%H&Wzfb(b`KuBNqm zXjI97!Aq$=A)3pt4C?Q=pX?)-g1;~TKY3}E!B?JPu{xtn?tAnpR)U?kK729uC%{#b z0wC1~29F7{px<*K{Vizdh+jHUKm(n3A+nT~zDSby1}11CFwxiEBWNJ?jr#&WxFSgE zy8~Ul%)=ti4lW1tqHHIqyy)1KO0B3Pl@OP&&rO}WqV(G9N-?{4IeMwrr+aY`%}6_< zr}z0$N>KAnqN}tijy753{oO(R(i&Fef-cU*Ex~r}M&P z+N1aM^-{0CjbHUCd%B9qyP3BN4gm*&vIX{xXKQy5B;39+JVmvA`J?x+vtnx5wj<5N zk6vLZ|HU_}Uh)$dJq89`SSCa3UTryTg~20%ojSKZ%D^91p^GjI zFMVYpG8u(z1KKMqcYB`427OtHaS3(KD}jY)>(c(fvsxWG#p!ngMgX2)?0Kgp{G_*y z!V9@RwH=@aWv;54!-@hq^*Df&Ij}%fQdVi~>UJH)kjbyM8$bQE@<8n^6l8)@`eG|c z@AuDfx|?OUrafnX#DTJrzZlY6GD)wIC~g?kl=qMTFojT5#8y70Rqw#o84o03a!@vN zL9bjC6=CTQ`;$TGIa$RMJXPD4f*-e~U8dG9Y%#ZP(?PMf9c2dhkdncB#lX$e3BAY3 zFI_N;P)+^f-&qgL&ME&EDWrFAN^y8zIxI8mw!SwYycD}u-aT5kFE|{1aq$JCCGDfW#y}*oD-akWa7>s26e(x{(@M?*1nK{rhy-5&@E`1D;?rCg#@ zPko?_QumyZ)mM)Pb42jUJ$ldd<Wj$MGtjATQqNg^IBm1P z=9T|~-ma4BBUkC{F9`sB!q;|nCG@3F`9AYbLhq6C-G*MqHSqiR=f^i6{`lj~2hxv! zd<524xVWPCN(EtEI07*naRA22Qp@BwLKxIMD{OvOj|whW5$Eqk)_kB-X&%;?l}*B?KQRp8EenjkP` z2qT7rJmqg<8@W{lwU~k^%1mu!7Y1=O@K_~D3%veaD6Bb(8z1o%~7>_j+ zqtzXJ%a_#+5M8T!8Qp~GBl!$PZ|B~ispendkm3t=OpARvjR7+cGP{(sWOR-K?zpSxh zHtO^LE4@-k1qh|)~U;H_d zYF>arBF9G8Fr(~4n~EHI`UDM}PR2JO3aAy)s~iV#n56TeSO=i$sLsLWFjQe1__0yk zDrFKqN0p^o+QVyU!3$|B%0u6nTd&=D493wph=aQ_9&wImf+b<<2g&)sQ!VO5c_%d> z{5y6j+m)T5>sK%1g(6hgDw6f?)Jws^OBSwv8O|B}?Mtld<07TaGbs^3W#!N|MqhJ95GpIljzyb;`tqE<1rqPi;0C`Hx-kW%^g^yJAz$(xwqcRBV7E0TF>qf(rth z>VsYIeI@|>^A7?So~ZrGJJ-IZ?|Z+U_uus^93SkbNsMQ0X*dF-MNyt~u__AqvePvbtg&$?GpbRfosuGA1NWE~bK5=i}%Ljc~ zYh|qYJ*o?A=^Q>(tep4|Ke|fh#1pEDBG@3PBd~P^?;QcMsZUMk$!Ram=JISG*f8jO z$K_sk?K2?GV<$nc?PoxfA1L}3KjcSfPNp>a_)s6s zIgHi@XzJ?MVZM2vs+X_%GcZi>hJTckzNwMZcRD8E3tfcl?NccS4ZpbZ3h%5W0!tl- zTp_WbQ`zOcV`SQSeV)Aat0s&; zrc6Hf`pMNXW46K_Kb5Wkeb&mfllT_>am&lex@&-X&j}m-sui3~esJ5t?NQ7aId3~EpUib@e}eQ_G)%ekjR8hyzR%z7}U zL;U3TR=2+l-*%g+P(y`h7uIsbc%W)UUMJZ?tQ&d+%R)Ug!|m{BF?H3m;&M;m)K$EC zM1!QB0I?iK@)9T8WVSfa%G-kJQL}u9DS9wjpl4U>Vu4m<;OhA&p>QS>@hEjU-9dhN zwVoaUYzHT(qBFxJ16qSWe`C$$0H@fm5GEXEFD_F!X$eOsSO?RCmn7p*@~#pFw*jDo z)W>dv4{yM+h9`0MgnbTIhXU;NZpA2f)bI>9i24L#4MJ_b$N%Vgqr zq`hzJeDQ|WKvxA_>GJ_6R|ouRh^uie^GXzS-}Y)~WvHqr-1VUC&|vn94~=ZVgBkgn z2tkw@2{+Jx=E+?jBKh#~20CNRcUBg^#`pSEAGt|9JOc0_%oH1R!Wu$0 zvVt*q%IDA0(#21UD6RXHFKiT%P=Nz!D zITtd9Fj~>4{b2?J^6t>G)!Kk>1#4=tIV+_3-6oIU)z*)XMk%ENKX}J zhf8DGnZUCn@MpFS(7bHrcBw{Qy1}=W9wdXp!gGoem+}DQ6K-K>eK9)VQ&6`+TT!%| zJ*iuarlElDVp)AGFJ^K9*UG{#iXh&KtHR+hw5NRI9620xL&i!~zwx?Dly9m+v{D|B zkAJFTnI7@Tm0y|w^5QHXOV;0^4lF|Ym!Kj_!o!so1|k*D{eS+N%{^reFT$0Htdp7j z#lVu_FDrTmb%o^}fv#*xpMIf8ZE}WGzTp{V`{7QwPU=Eq*yw5w_?sI(ihXJ@Zw-Z>g`m-y0%5(x!<_keVF5?>f8BDmsXn+#@t_CL9AfS6k zAkiR^PrcCq3Fy+saN@r!jMzS7jBV6*>Z+Bijn90!-S05><|`D)R==u$CIMZj2bdH) zzLbwaj=Ma)MCNNx;!^3b(I<%u7_RoK!4DCH^3{Izt!@;P0p>>CZ8 zOfZkFnKZ%c1QiKk-axd1a^6$|_BQ~qXaHg$*3}?`OIHI4kUiH#Q2uP@7S?`ewZVh7 zH+YRL>c{ElQ>?b#Gi{n6kaGGZHrRI0?|JBldU-}agO=U&Nkm`rty<)jdeqUY7; z#iP>t_|tq&s>l+&b}e3D5XkMcK!E}ZvtOx~dsqzBX(Ql*!sKw7b}|5*`%ObkA0hyA z|BvGx_q~H%h`;tF; z!%N*>Z8gaw+a$y221soMq_X9lPg8Xgm0-&c>SoWevaA$zO4aoUAN24UW&_HkC*HKt z1D6|Y(VN!x&il%Y@JEzmlky&AGRobzUlHHyCqHOSenSJ;nn!WJ;Psz@hW(N9+m^P| zzD8c=3qM?@V#{c0Hp<>K26iw!38`u)@6F^oJ@+{H>&gK&jkM_wYLZ<%MG4&wQroaM zyV95okET^5TrO6xY)}q6eAM}&^9mT^wdYv&n%}*Q4qN0L3y-L|z^Tm%NcC>5p7xL+ z0LrUJl;DsQD(W@YlZsP1lS(Fr@qzv*Ek3=G)!(I!Y>+azhNVnbqox(B9`3E&w(ysc zpse5_MERYLq)J6~py<~eoG%?yy^qY-uBe#0cjc=ApylY8zCjSj&s!fB>FSfIKOzk7 zu-k!*U?d*bZq-vX8S$O;qqB~%FFH#l6-k)5&BtwFArp5t>8O{Rx$R@A)gKts06}RI zb2-=h$oR`8QLc#^RAF)UtioxtL7>0<2_6l=V!xk>%OzyrdDsALf9Xg1s1$vzr`$k- zRGXrsyvSyYSI`N~IM?Ey9K;6!nr$sr*Jl5|g5yG?uaU{?RpLW}AMt62OOh}GMelQD zQh&!2!akXs)w_Y^Aq@gOx7<@k>Pp``0zZSl5A05owxPp8Xk7&a*40B_(c_^L1aHV+33-h6rK;8{^#7W%c_HzIVjtF z6cES4|Hs_BC`pndSC;v#YO;qMa#m(V=Knu&htpM+kJ@wYg~DJS9+BB(i|iu841m6& zc$hlO&3vU@wg)AjT)ebE*Bo%3NK<~KtH48`3B=H6p2YwW6b3i)GRMQjoG^z3pX4cD z#;e|@xUq^(5leE#8thyIYA5_!=9Pka1XcEL{b>tps@i&q2DQo}> zhoJupaHAecQ8V;*@g$2cIXbR}=0*YWjb7aurx*3Q1uWo3O8wA$(Qmp(>Kn;Xk?u7~ z7uiUAMme~P`bEh>sr@%nDyO(La4y~ZFGxRGj*PTktMG4AKuAcfH6-uaP6e z0dA6iI}R+R6rc%45y>{+s)i$G13Kn`TaHv25Wy1TA@f<68~W_QBuTZ2PhZZUwJ?)8|S0fBD?zJ05~U45c=OG1dVY4_Oz`jK@R`-ZSn0t|T^`Y!iI@mMM8V%U5XcKMNm z`hmNOl(xMWPscupwV+>^qol`Q4D44c?b zKjhagycpw{N|rJj%F9X#Rl2_3(4L~=M;8}^A{}c#I3~SK%fAyn7iV*H^}-Ay0>s0Y z1z3PSMz7;GHW%+gJwb$=wIPL7uCC34-@dyWmHENN-3x_&*zKzn5D3w4lWLdE5ISSO zys$5u(!P8bQClh_3z|M4ASttL(C~YX7vKSo&%V187@F?J%J>Vme)`LQd-s=r{kM1j z_CNpccmMr={9gotf8|1NFu>sj3&>la0}lHsfd)1hm?${SQ;IKj5iMrJeWt%3voHpPt zAuM`+kIX<~!tJ#2H)tvmE#3<)gGS$Fu%!e^M0W67)RtbnTmV(gMC9=HiFV|>gh8wY zJH{(B#9~OL-9uC(O0cx5M7o@kztM#9IQbU&rj5=GRv;CLY)_AYU5i+-p^G?9in-F% z%AX5`6xctQno?uZticr&-D=rs*(B(KUX_utajUTPMYFYaQJNgaK(Yd{__#`OvCuvj zsk|BnUfb{?HY&qI0+kH?1U;-|-eQ8*@16N@0&zr!j<=5y$wr2Yn`AuZS0~~e-=(?3<5!?uk=kEicn|_8X)9$qq~`2{F{{N0^Zxs^13iN3?fLm zrCSFe$CbG>U9ja*qKA#pWn3`bwL(TN@ERWD#ik`C_X3pQ8*tjX##cmD)@~25=!>H& zrQ=b1V9$5H^fNZE_I6iw>Rcp%=eD1|unqD>p1PLpzEJwte}4DtU;q2NfB7H(^WDGy zumAP#umAEd-5JbnQ*@x~%kRIv`x_nkJNdNNV8axjqC>xHmqDjEFH~NDtvkwSZ7#v# z$?ZsY75N!EA7b&lXYL#(Cs@O$369{*?rLtsxrS6v9f~h#hAxm+Si5G;JNh6#OTW-1 zdH}n;E&eCAO;Dpxv@yaojx>DA*L%hR_OJaKALg|>UCY`9jxC9p5q=oZ7W#ON(%1zg z@DQQX?=^bsHUX6HWn>J+w~kA7NuzMaXd7vtAti0#Lx(|)ZO202%i5rC#^4J0>~G}F zhY~+b^pFmF`0toNv8m~F0RFMs9$O-1pW0^SX7(l53z4Tl zQ|z#JY7YP~>QiB;OD2AoE*kA0O!4)B?XcbbkhFXm*=jfv73=i}>wxQ*7O+g5O_gG3f_)$^8``=W`xh;ul%6 zbH03(dG5M~AN)J*T~^<+R8Xx4JvW(K|CzMto{$T&+e{<5ttjlL&xh>SEIa*ukZ%RIuD@S%D%dSM<3mdrY7oA^xAn=mn>cO14U!htu zPf7>0)R}T~5uP63`lRRpb~I!$m5)U&pU99f8k0vLC;zuB7leldV53FFzGbA9&Z?)4 zj>ZUFQq4BM!T_wcl}wIBD;mX;m&bxh7&Ji?5(Ay|Nl`$F`htnE4UsNP64r^z0J?dB zJx!5N`c-TtLd&5{5Ah}yF4(k6RF=@laG`S1WcBgF6B|I#zwLzzbAd62ckTE4Z??S) zqIA*>tGo(!7et=L&qXR1OX}H!LZ`b#xhS)XR$oF3zH8^Q7Ey|5K*LVMx*#PmNFyQe zsbb%Aw-;Z3bvy~-=}GlqcP^0ADJs^o<&(XrN3UFpVPW@znYQT1 z`mh(2WxRS!;Jlv8zTHeUi+8T(BAdMY%&u!cM9_vXq1TJQw*{SNo6j=*)N7e@(7(jG-$Il%x`xr6w?R$Qe z!Z~P++qNwo+C!(QBRfkl#CAKqZ z-{<UP71K%8_;nrBGcgX|CAjc za5#4+#W1CyM={#A1mt^o+G)TDB6b=4`XK^4X56IzwNtt9w!dtO%Ib@>BXvcUX69sQ zG(7h6Fb6@kI19x>BR7o$hX6PH{nYuG3^}pjT zTvDX$35#2HJf!Fe{eeaiRcdoxv0Z{g0QVvZxnw~&*BtkOVvl}lIeyS4{Z1-eyoY_Y z%0c!N-vU2X#jD!vhgAbD7eU**k^YsUG z#fZy4ez5q){KzlC=(i9onellT6tex%inbiM6EDj2grtaP=SBR$Ga5$Z3(g1n7x)t} zLPqF`qpV-gG_{Ld3VSZZFPh(d_C-C+?X-$rtcN0~HsPsyG@LL5Z(0nYy!!nldRi{q zW`;&1&-%qy^H(DTXYvf*f%BX%#%$Csl<{?ShZ(kM@!7B~;$rT2TsUZRQDp(|0_<#% zmb7>y4p1*}f{WO2NW&p`EzGhPCGj8eYm-iYK=B(4_@%H6aT+Qu20H-<|5>auL=K94UP-G z7p;%J1JGN;T#P<>xV@_k`Z%|jeOfoSN7Z1PmYwtuUo_0cOLH9u_E&Z?^GYD(VyAL* z>zUs<{>D2F^W?4{9M;ZhZjE7W12q^JN5cH|gZy@CZbd3v{a!?|FGJeg0MPO1fv@$8 z8$43lXB?QN)!4;I zKmDqH4egi?2dB2p4?2Ezrb-kPHIUnG>_X?*f#S$TtW@dW>@2#wm}8A=ZIMLVSKAXH zdV8M-L449%+r-C4=s&ni`L%wsok_OWz>z$!r@^6`YWpY6m^XJW#9QiJB0?8?Ij!-T z#){`~Y??yyP*Nsdij7iOOS`4BjVeLcaG$nh&WextoaCY|jAQX-ENM6LI`1e4C++Bz zMH#iSW&K}}t+sE(r@tBJGv-2@eydOHkEYR6`~O@YzVd-bdt9^3k7F_JO!X$M9NPkz zlcI+xFe>STAuu0;w(Z1JtgAn`S5%x5MpWJRLitT}DogcgQu}z3j%ikx39CpZWh@hP zOAP=8Z2`Lw!kdyC>l>9VVi!t0?KC$%)j=IlVV5;)00nSBDfT;hqqtnLeL#v+67^uiQ@Wt`>Bg|3XCVttoCWkU zBW-9S96un$t#-~Nn?+BjJ0U#M0U_>%C%R(BvIUY>Lmjz_RwmcQ27qBwo);L54ab*YA7z zMRpH%KMc-*r+;9`m@wa}Y^^pykqcr2oA{uZ;DYCZV_qLFq~luo@`@v6e5pf+MbpjT z(u5Rvf?ES3gIlALxsdBq@x6E`=L(W3M7JJ(f zA$bBT{h_So6Q9OS@W(FQCyvh?&S`@_ZFD0ofxPYJ@GAsvRDR=PU2*ngOQ@GQ`Sgu;X$?e+-gb3|4N!(a z1b{AozHcSVk?LbCL)Ox|uzE;2jIHb*cZ}ydoj(2RE+loml`Lrsh+`!I0yNjN@?SqzK(IewHo(`(fcMO#5Yux`9|m1e zT3R@09M|&ce|;_=N6g9EAV;~hGQ|{@pk(4NprvvwniIXtH;P4gX5d4z8BXLO_ynUl zQQRlG`@kHQrIp3pbT82vCHZ{&~09LP9Yc41>rDnoR2 zcnKEWpm*+oY9;KagEq}sfGP}+#@&>k3`_l@Pxi>W$e-#~?pg>!CU13(#4YgBfqYLi#yEI_ZfEtCb>23#V`w~y0ys* z0*3(s`L++-lyh-{@=DmEtt`-9DCzK}&P z^aw|F95yW|a1Cg>iWlsXam|lhyd~zyu7qWL>i5%B+l!6?5@8;XnrwS-`I76ub(>aPE_l|LocLL@Ex^vr zV=J0o812Z1f%Iwnuk#yWX-k8dEn678jt|F5F0|2wP!bRhX8|cX1X|;eSAF6PhG~c6 zDq{?E0&fkIAKC<}QfHl7VrWAz>hgw^Iy<6{N812-9tN;)62Ji_RV+%-pD~Ls8zcaW zvm8^^jf zGsVxoQJn0V*@e76MbMCc& z?XSpLcu7Nx?J2{MHAB1*@_iuR2hnVI`9#_FMWd|Ild++CaM%#NBU8!p*uQo&JXxP8 zR#bI|chPFIyNG#`fxys@-u7?hz^EP-{X`0tr?3p)%BT8FPHYCT)RdHSJNg;N9rjb^ zDfLQK`2)sbxseGRMCHw@bxGeP32)pRlSN+CG=5RuMQ`$oIgqlwkUaS0t8&Ocq&>Dl zLzV?Ms#Zp>wJAsWVL{sRg!gAahnRb-Zix7*kfn^aIZ(5{b=1Os@$5l7Hm@eGY+JVL z$`cx&DLWPX%#=awmJEDRE_X0#wvZ7UF8CG~`Q~3FWdROiG(uItJ!e@H9H>1vZau_L;UcAuxf7 zeMZ>GYidKqwIWVftD&)ylD|b zs7?J95Wjz00zYV^jU|5lTtyeYjje4Ll#+5aw%HAJR;vEaKd{gp0=BLj!6}XM5K%l> zFQTWw3;mO&Hv+)JfCphQ`_X|9G_O@}Ql||S_!`TC4`+xk_t4=lQ)zTuORN5jG?Etn zg&-MDoaIBvQM|#IoQs-C5}1?8g2UB6q#xpE;GSZoKS-(u*hv%7fk3$!vZxB9-V1Aa zl-0P%iL2~O*yyQcm3p9`Osq(=6=}%u%jv`&-P5kXhouy0fAr~y-KhGjzNx2_mqlSY zY;=j0ZD?D$+B7zd@bc+@4;GmiwFG1_U5lgwCC-I&40FYrL4ou~+4PHl6{O8rCCollmGUk7&ynlD9PTuv!P*Lq3pjuMo)>_0tncFM z`}k(zSKK7adY}uoLIMyHeP%x8n2Vu{dW_HxFQQ$TwJF3|-YPTfYTxIaymv@ zFR=3Q*G^n*lN5S!5H#2cVf-z89-jAK{y>N3 zx}%%kpeBGrpBpfNi~oY~lvx+w+s@E!90g&vB|@z8A2YE_oXI+eDk?3|4X^Nn#_{KT z*AKC?q;erO@a(FhXlV#WylaKG&a>Xwp7?V4eyFialeS*q2@?I}n%z#3ZP&%3Ux0FQ zB&Th=?b4Id#?DRK+A;BHVM$Nj3sM1B9p4XJwkLdVOIpmY61|ET ztx@?SDqaI~C|ZUl8!xr8?N3z?zeod{d`o^*aOZ^F$#SJBPcG&`mQ~T)(F2h7;=4-1 zO^YtPQ(yTh;*cTsX_9`YTV+FcVe133Y>o>LKh_7exMwGZ7IT7bPv}tva*A2}rOgEt zZg3GTP3VTwx)*b45$hzbG9etRCkA%0Rh|@w%~XZ-EZhTqkrmxcTfu`#vMfeJ1@WzDWsIF->&lDFg_bf$R%(DQy18YB9xte?9a+4j9nmg8;hhVs zQWuiU7KBzPI}80{zqIZV#XNo{iyzffWrv`_% zp*VEX(E1vn9&^q^XKa=_FqeuvP(lB+{k@=DwwvUiU}W%eE4ytYuwf1vyk<=Jt%owI zJ#^-_$K5x56}%!GZv;)TR}(|;POCvNw@umMb9XKLjH|ib+p)%YTMyUxp({ySEjl)p zg?s}M6y%|t?;qBKQa5_rZ2;JZJ#26E#9tL#JMkSZMIv|_$!CHDaE@!0;+%Y~0=@n~ zi)M7KTaIMz8^q?#kNV1BP%C5b(xVKDcot?P1Q*AYVCjkMKrET!q0n!6&`Lhbtdi}& z2C(FdE9{)2W%OxBj*eY-nX?W?U^$!z`G8`;mey*EV~(>QdiXj-zWU%qQF_)3`;fkI ztw2^V4G-!7vVYNC(okQEkBdG19%9S4tUNC;X#{n6ur$=StsKq{bx8Y>ZA07 z24)hTU9r7|jLrMprbA1M@#br7e?k2OP~J6NSEsS0Flzhc+SoDqWo(yaMT%3xN={Vm z%7h)hK|;Akz|gnug`zSV{9ThV7a7H5CS7vIS(ioPAoL&LSTy=VKT5Zl2o9embu7~< z(vHy?nV~4>4L35zqL@&+oW*0!YWGGQb$!``h0VoiEjnG{y_LhKS1-8Q<8kn2ak0I& zjn%cct(NV%y31nS+}lpt!otT(ezR^VPW`!>Ecu~VR)k_3a4n?nMK(Jkf=IQMGdO?R zOqS>iz3VKyCfY@?m#2#J{lB(n2~c!WY_t+}wK+Cqk)B3E%8tf&o=^>&i!DcfeSwRZ zjmm<&fCp!o?7}x`N>)14J6=c412+91Q4Yu31 z>ep`xNEjFHcsXWZ(_dcHyp{Wv?|Oatz%RXca1nHr`EZA~hO={sT)Y$6@)|(C=N56s zg0}|I)r%J{UVjO0)PoM~G9W@E311p;=c4O~0c(ef(a-4{sZ4_xd3Tq1MvFvEilG`A zj4#&~#ikyz>BBW%u}hqqvyOSecl-$t?zmV}hnRnI8MsKhTV|^KMO$GZ0mFY~(HYR; z!6jForjFf~p@F|Ui}Z~_Ad>211)Ip7bMd9OZ8^LxZ_bgOt2IC6i_d}A*O<*OuzdVP zkV@{a%>2oR1Z}j}>Pls+t9r~d)p?rR&~)JY1mhqQKtU>=Q+ED`4{+>Ub)?#`$Ppf) zAwgd31+BZ3ghJ(IjH!>d&aN?>N#co&(Gd?RDRR2oEDTxrJjPj*PQCihJQNE}W-7d< zZQck{&dVg~mh|TWq>0w%S_S;Ms6dCSRso9a6LnMcN+nDSXQ%y4I(el30ox1oY2%|T z<(+uzrUMq1XMBq+^qgMk9RxX7h^uxK3p_QP$P5BW5Z&H7=v!RfFqK#GQ|K!sf~N(q zk`JQ!491(cM$V9)>Yl+)y!u1)V2CTG$(3gt8OZ%~pff@7nIP?)BYxamiy@h(dm1a` z+5C_Mehl6$u0jJ7>m*}=u-MZj7&W!3d8Z@i3Wasqv9l~Al{q?Bo*_ZG)iShCqD1AZ zx#Y93)xn~YRuejq?_Xhx)vt+b#uHI(1|tw|ZTq)r-Ic zT80t8_$M@jFPedAkB9bixaivsF97D@m%a;mxYWy$r1%7I1R?|w(QOdKH99o02c_oH zc|k|pi{sV~C13JaNuWZTpXcx{oaima_ zynug1?pO4E^*d_zcX;)+51japIl3o75%}4)hTlHc8}72X+h)bOV>aW=-EPN$jk~p9 zs!d7B{-vIazvL1Fv)^;983Ty{%UtLs^SfBy4EHydJ4PDdMSgq?Q^ctcpSascThEl8 z#aLZaAuEdoWq9ZgG7;K0HtJUc81HXeV2qSkLQb}W+Mh4Whg3kXv;dR zH)%h|8Y_XN?ij=ux+A1%1?VMnahr*`q*+&Clr|5Ny7{2&f0Cfc2QF$-BnB~(#l*9V zq|_&m(ndvycIA{&IZH?l*cCL~1Xe(}ISuMjS|pbAkn~U-rV#?#V!(rYU`h4BS-jhK zG2}(iTj0RolzvFA8MWpxaKyZpJN}0CPBXG62YXr`zLQzHQGD>+gg(HPcd~`{qH*k0 z<;XpRovIITuMQ{Ru{`n>u!NvUT@JmB*J0VDYf$2>l!T9dR+J%|T=pTce7Y?P1jz3R z!nNE8AT4=I*eoI;m)^qQWMAd5&I$RE337BxXSs`7WsK#Dj9@RO{GBp~CM2AqPFdO+ zTgp9n5IbdY+<-Au0=O~8%T!h;7pdr$rWb}RvKo>$U{%_r{=(WG%UsqMFP!kNrArvq z>>R{Ub+{mM!SnD!5prc{k|$GuWUX(1&4O=G=Y=&3YZurCVdd6-0~3S4Uhusrj2CHp zf&y){?F|H?Df+=%@%ENK!!^5mxj5?sdFl%){3~zqL9;T zvF`ed!Xtt8Q-BOZbHQIiUI<=xXp=iN-M#Z+4R=x8#p{KXpq&7o*gAD#UT_m6#Mf%V z$NI?N&|};HN|%f+XUE6BUpC1*^f7FVD}uJvpwbw|nj*0>v}GL{L@hj<-dny)rm%8z#=og?GEgi6 z!T@XUMNl1e4wS=~LV4~}NPhf<;>2W(cP&m@@-YCPx+~^EIfr~4@wa(dEZ7HW2-%E- zu9O<5Oz7+r z{#=6$0@FU}l%*}6wABv<7UdPbbBflXiRAFgPEFlAU$$UVL6@R}{?Vz% zT~hx+I&us6CM%T_vb?lZ+cD|7v~*hjI(_~5CM#_!h zNyU*l`W#s%@{yBIZKv*yDCvDvK{&LLyJ#-4nFtC$(Jn04yQ@kZ-@2k%Er@It6sxTW z8IuJaEdfZ;W?37T3ZG}3v0n&Ap9E1ix(8vsJ|D=n9uC$D#wRw{N5fvRz;Bb$p<*t8S=Y-*$Ja>z7j~k z|AJQV20htH(x>#9wzym6!y3Lo+PWVQ>|=+3^VIK?`Owfuf|W1$3RK3IBQ^o!a)KkE z<3c_p5u|!c+1)_Bkab2{_!}HpvaQzP@W&NrxK!X|&EI`R6ldVJ&@}GdnAd6k!$O*xsA&ae&RxsF+O}=1l zkG*daPgy;b3XCGi^!sW>@b(3Dj&R4mfh~4@jeQ2IP2w$uI4bIU^mgIGXYeSKBOe-Y zjCT#fCHx4IV+PT~tV0US8Y$iA2&a^xUTwJKXN;tqikB`WPL|TYaL1Z|cM%Mv4LF2|2-_|UU=dw1 zZ1*LnXq~)<8GuLZ5^;9<^lngxZ0m;!@!j%s2DaseAAS4#c%$akyo_B?h6vqhck9<+ z0UY??7m*@%0>)wxdBCNJXNE=r+Pm8-EkvA}xdkY5|S*o~Q5tK#XW6K>hd zl6bfq{JEHs3<8w)CNMct);V)Uvn(#K`aC@qxb0uK@I#uq`AT(ZY>Hig>(_%|Xa@9Zt}SPp z`X!){fuFSMHHo|E1EP9^Sc!;T2$`poZfl7zz%9QU1m?Yd1c1N(#Q>1tj>B8`>8lJ8 zZ{OlS`VRwuz!&qduh3Wj`Zr_NYH3-#Vu^^J!1pl;8(6( z@ELPrAo#%jB6pSyR--+lIu>nn+D-5q*#>qBT}ck-$?QxSpz=bT$m%bRXze6zt$(z^ z_wdbk+M-uNb*p2Nx^kd}c^CiILl9QBHf$ZS&He~Fc|x`u7KiM_zBGE-OZC0lLm%NHyjHyTyu8mr%lZEqSw;b{lcyj#X%BoSzR(XmZ^@r&} z5B#KkEJJgWrOQUn1MZQvtII&siL0W-5facN;D#*I22nUIS|VRG{iL7rQ@#0iR|L+0TB4=8q*xN-1b-_H2eiuD1AXA+{jZRiA})n3xRAnTaNCKSN&?dY z3}q)>QJ#k^1&OqYqj1|IkRx`ka_Xh+9K-^YJ5h6ld&y9o^(9x*y)94f4?N^ zW}&`x=hI&nXk}`Z`kJRey^D;CjSJDz3$1#kk#A0-V~^jjS^W?lEN=d+m)}kDSeH#m zl*^~%xg9h*6chfj2SAi)oQmxsbJ8-PL1f$J#q2A$>GI?w3s+xWYg>#VSo|pDg5a0n z(_nq0T@d8ELAHys?Q;?KB0P9?x^U-qtve4`k_*+cCwA42*ch;<6Hjd|>H)7dC^{+i zsZ1V=s5~OoC5`qD?U{>wia3bIwjWa-Ojl78UQ<7IT`I!2`_G!@fw$ib(7*ig$Gfk- z_*Xw?4QW3#z=6~6=MlWPYejDom~dOzaRj-d<^q|y<9Mg^hHNe}t z(At;oj^$_N3>^7@;Gr4*yqm8e$?QV6-wE`!Gg=WD@b@R$*4$k?KXVH(c5(3zEkRm_ zpEkQeq){g7J<&4wop*juZ{B~`@9eRQtuE~qhb!=RF=GL=g3LhXN|*V`wYje@gu!*I49_GU8wxb>FBY8 z4C2yBs7MEeYgwS;D~V5YDmiwf50>3(0~IOptv3_hch;jU~re#&M;WG4iV<<9Yc@lK5C(nPSW6Sg>MF zY0$~I5Mb<4tEiV|c&m9y4hqND?yjX?TU^ET|@4s!1W^#8dxm~Oe z0<%pllJD~p+>wPf@Wm$WOPYLD&7jHA(@`E;b(j+dJX8PxKmbWZK~$#Rnrw@>fS)># z4D(93vk4oTJLakl-w)_OKh-kqhpLy7inLF@`s$ZIekTz0B81HJKR(IW@*-;RM}HUq z;%6?+bc?t0?I+}LOrK|**w^mvL9dnsVU!H=d=Mz(z+f|fog>b-Pm$^G3-gXT4g;aD zyhrW}x0G$DeC{ZUa|aSFrQ!85x%CWLY>ItW&`Ch&Ln(e3$~Od%V{cdYjN`-e$agpK z9luUeU!cW+3zF>EAt%A1@@CBGCl4>sz_oJ+iPk}7EEC)&a5nf;4)6T?M%%vot~_78 zqqm%kI|y=)d$cc9(ZEw1m=Btb@XShV(ccX!eFEQk?>xhD31`h))u>XS$;PdsZE7GX zKM7m{PTCYY2>VyGVxwQA|ML5{e538|_#50LpmR-Hx*F7QJ6Rqg^L{UsoO<|Jqa; z;oGg3Ntb@!LHKZtY(#~|Tp0A~$l)Sn=;b0RvQlFur_283qx2;RZ8I2*jS_NkK)+N8 z_`CoooibhEs@Lzt)rRWtj-4`C&~j0kTwO~>OuPI92Gl7ZKt2^$cP-YB(yYZ*d$VvR z^aif&_A_{GUox$ysnnZGr(A3lzyjX799F$J_$27qLvB%YNm`e9(!i&F%O8=}6=+(x zlVngO;5^DV;Nsh$Q|1Q#Lkp)_m$_p<*puK82z};lE{`Vq3^AYFiJ>q2*)}&} z4RE|5_Tuhtpx?PNH+XRjEOrVBX6)xRR@<`;2Hg?#oqP>uU}9XcIT)RmeWCQ{UkC)b zhs^YP+Jb)?toQt z@nJNVRJ+*)oEhpZ4k6r<_tHz2a2@Cwli>aKPV@YjXY7XSB=qM=34+t06l6;f#xc|PQm}w2WUR}L>|?M z8{EhqzEu}Jpvi~SoIw?Z$KVY*VwddguO|WoIr>qusL5NJ#gFxy)P?KTmT-xy+>tJK zq@lOVl_m~W`r&A~_HzM~k@jS_DhnA>fW;bRMZ~)BRml=iK51i07zQO1GD{L*+81Km zWFY44s|G)zjS6{ca~CjKTep;j7Cl+4vT%cQVU)&C#e5QU;p7r|Eud+M7hiYD)alhu z{pN8pxiY+HUX7VWDhhgZX*U}g+N;?JNWhn?ta7DQ zXl1uARy~V1<=n4R|7eg;8k2akcHE-4>QW5ta1_Q_p6K3?heGvTLLbmmU1U>z%m=+j zNW{(fukip&K(xOvEPD_!5&%!}Ef#2sp3$W^fcUfQ$2_F{V~f-i_;p95eeQ+HoxM-q z!Xy3hhr1?l8E81hfd4|!=f(Z{t{N85_p!rbJC+<-@FjRcpF4TqknQc=ygmb3gFn*; z-#^H>{fO*efBj2fzFNp5JABHd4-FDf%tI&coS+N&%Cjx*vKX{E#$AG9#302%DT+g-Ts#8rBI;Et22-;l(1eU@Dy zsI=3z$e+M*ILqrCcG~1NFu{Sph7umz39owJ&+U8LOFh9S`gCdfVA+=sheDy7`R_Q0 z56qR1OoMORm3GE-B_Y?bq~DhAtV40AQly8>wDQ`im;3%lcRlq*Y}UU9fzrCpQE=xt zFJkrsh0d2%Vg4&z+Ev#Mj4h4uC`X1L6h&fx=qcL1+PCn~#;0Q1pvX;dy4K66j#%4l z4PNcUzok=f`7gXW*E+R)mGQXr#Ey_CgE6#rZPRDkr2k`&&8eQyIW`#o2Kv@*?oQOB z(|l6RO}hn^V*!We$e&`gBO(vE@JMSqdCu}s58aKhtWVCH`Y!nt{DkXApfo{)PVrQq z2Y^y1O}?rJ_cU%W_x!*j>ymPn?({#Z$+xVJ2v0wdbwl4O56Z^Y=XUO~wAA030p8&1 z8F?q=317BsvY9we#7@o`QWw{08*;aZRS=XuQ`R!+v}?-g3omL;%r4%UFe4^AZBtPW zjM$`AruxFkFZV?!Zc{CX$=mPTHTZhZSK=E0N-Q<}V{^*ANEN1Dbsk3+6L@@*HS{b1 z*%eGpNXg}awz}PEu&u7#E*KImegnEJ-du28U@Jj_okIRltDgaCezJ9r0TQdfnF`fu zHH)n6mQTI*fmhxYSoSh1?cxz7e}Y#l(3@R~t!!9aS%SiE<$}UaQG0eOW2)27C0NwM zwB_BnxBe|}6*k*}D9m&F?2=U2LHfM-Oz3mUzYmHb+R{t`k9rXY zZeVGE`HA-je*SE*sGJCo99c6q69}N!izf2JERsSlm>H8Ys=a3IAz%T1{m_dm5`eiw zCH1^C*=1>8AQfed>;^m{}iX{O1mU z-sIz(AEYJIqwDq;xv%tlFf+_1Ad-;|g z$VcSRJfH{sGJi_=DD7lBaSt{vOHb;*x6DVVvFKFv_llAJ(Kulvb8=ymhW;6DXwLjj zXD4UChGb-&^iRqWahDS+Ko|5XiL+MeoV{QV`W$2uc!hs8EnG(S2qyTs$n>20jt~$!;6yi%iSaqX65dZgrWf-<$~66i&X4n$La&SOCP`T+1>`C-=}EJ8&n~mHaebr+mDKLfyE@| z2W@cfI}n*8#w?j9+Rq_hb{zrdma98ijP-APhtdaW@)ZSaR$mT-HQL=k37I4Vh&~l> z+prI?4<8?zP2}xM za%l7YICVuhXKgURIS+YllO~xdDl#KJrr9^npIL@p z!R;5l;JO*&H6|(}Yqq+U%_BK#pgimDq$S~(u4D8cYrL+^7(l0E%YIECL#*Z)scsI} z?(9mY45Ma-rUY5*MvY^aqyXjAerq zUzw5*76cgHj^sk+hltP6|B{`#&;GC*^k^|KV?1Pyih9Q}p&jEbU%cmG2W`o3E%VTa zJBQxt)wTJqE4jCXbGwTGuECy7V<*t>1Ny)O7e#}eZ`ic1o!KQc;QRj3UAF2^faN$f z7|2*t45N+RmtNeFyIkdz&$I{cZd3w@v=iGLoVLOCXeWPZi*gy?KETo6@;xus%uYXN z83a1t;CJdchy5*NgU0tfc$45zn-H}KVv^OhNTD*wpe=gq_%pZ0y-nNi(fR8l=tFJ- zK!Pe8qrL_b6zmgv$hDzs3BF38F06EuH{gICnc=5DVwCHMZHQc{F$Tl4MkIKl9)Cxm zr{bY=N#~yv{#^dZgAI-gDPu<040T3s=q*-{)yS`)%3J41UvPV@c0oV(sTX@<2QY(Q zUqf`^p~c)J^R!X>TZwrhBQI3JX=@}455A}9Qkm>Y$_hn-?>?+Yd)J30+vvPX(1*9CB3=9Ti1zhe!tQF zxbplK@Ke5}c=Sti+CVh}bn`;EXou`%-DFP-i*hsU!s_J5`Un|K)(@INKg(r-)Ma75 z=vp!mBW}?Mze$yEXo4K<39Pgc=GYf|T^KrHhSR+BgHkRa!!IA48R-frJTQx?y9h1B zfTp@8-PHnvrb!LZY)nHyrMhrRF;|4cuEnXX4X8$vH4o$^Z&@vT^NF*EyCjuaUfY>g z?{=%b{#iL~io7T+y)RMrHdGcb7J}L;!Pp58)#&)s-M;F4@6I2)2K_O5cL`XwAXMj- zDBE_9z_VI{4M@6y3vfvk#<^Jv^C?~0zc5%Z!>An3(Py}sMe-9m#z?jC9M)|tnY8|*B- zu~Y@mlKzDMGk7PIhsmNrIJR_G3%k~w?o-KpFLOOb{GFiEfMPYF%xR^*x&9(FVV55e zT|-;5%$jX`!gYd(WJEq#+kyRWdrt}Y4M0vs%brBc`O+9NEbm{*R1}E*y z1Z>F~Y+9z<(#FM+=73paNtKGOZpQ-to;FKsl3?i{R7aJ)+thJEO#rlBFX}t-TEZFG z*+_^*N~oo6r#d>H^jEl07P%_r$gU)^8NsaeZ^2W%Gjt9O)a?_Am0c1^*;tqqvpSUdp_||dt>4+;tnogh* zQTCbEBaD0z1hPcyqiK%gB7=imwR2k2GiHkym&xf2$pR$bwM$p~N|mO`F~-3g3E@>F zH3K$xNVu?Zb%NAjlf{O`?oR@+EP4o%FSaO7nXBFNsjxc4z#a7Dwb#W$cwV~_Cq#rs zAgZlog$vO3^vmPiHsW;*emOq74$y_(re`5)y>_$kti>sd3wHEB#IUJU51N~n&Lz_( z<s9*7)L+z0fqM(|jAHeasu?OaegUe$}oo?glb0bBhyM zlCL1Mo@l$gcqaIa+=QHrZ{`vPHySC@4Sg%;xEp3>3%hy-*_^KR(!0+y^!dH2crFCH$p2|?UvJF7ypwDctJ^`Mc zr>N4l<)?T{nIWq07EDpGb*&rI%)lH&;n60nGq6^yZL31`*zWLhmQ=cfApo~o!gIU-ed#mN)k#8N;<1?1wkGYrEOstVN^zeo z$hYJu%Ly8(%J1Up0;>&`Pf@nDNLLg*$HeX!tG^^RoQ%ae`IH>=uBFr!odsk`|C1+$ z`=jvcUKc(Vm-t)7X$<_i$aoQ`oQw}~Ye8%~tcL_5bK928GcfC`T{9p;7v!=il;zvF zB`zp|qolMi&&!VRj~`$19O7S!5OT8okodWXe+=~AX3e^rbFclEbe?Ti(4jiFT)8lP zC4l&YVCD~Ywz_k|m@{zVFd5u@^5@~;)%*Dckk#M$@B=&#ZSad88DCzs9M8!1wx_pb z_iq3@?l`>g=i)D&N|YzR@U`H1fhdE-9=ywzIojgBWxeJ)2C8T902F1>(Fu(wjrY^GB zQDeY`YB8HBq_&Go+x-6F3P|1gGcYx1^MQi?M4h{P3SSD8imlV11~Ca_q`;T&`Bjuj z^|fmmx|V;({@4;iZL06Jr>~w$6d3cfQiY^+Tej`CLVHGb?6iY+vzH^3kLq%dYk8X3cL%eNs5dg;B9?aGhvn=pk-?^U`} z{ABIX%!93xYuEVsK))zH6LkcD6(m^w)o1Erf#KVfx}OSE)3cg z-%*Ttnx?$5*F`qLCl@6y;QEL ze*ZuJkzm&GnqcZL1jXj+-p z_%*gKd*t;$`k*mMo3sjwUnvkjU@TbL%jx=HK)JxEZyV|>S;EFiIhOsPFbdO$@?vL1 zNRukIqO-C}9({g4Rv-D)Fw$Zh=qr^k^UtgpzK^msCR&vRBZX z<^lgu4cU)Qr#Z_)Sf=z+;!DV-;RpZ=Y-fzHi*R8d0E>?7;?5ZQlb{Mjs)RbmWWBAg7{#Z;zAAOEnhU}^`iJ;zES^w zQ#nkrDM$4mXpd4IC6lhw>yW`b$=@>crRem(W8FaR3%g1ARS*I|zYJk;M+aG29W&I}r1oKUKhkzp|sLH0O%8b0`{$%*#Ic ziVgEhojn0!Xzh@}YEqbEn?Qe+C2P|P7!ptsBsr%O%oA`YNKC^OpdENMyM6|N?&^~3 zUmXxVTUpwnzx+$GyySPS7%+HoIb2JCduZ-r4P{^gi@4E;z@~xoL#?+oOp$2@v$_MU zKOs&{adE9D2{ro*Dw-+B6G_pvdsQNj55%cAEz&v_tbL z(~u<(?G18O+TN=^Z95>Z6l<5rDZQoV6(LW-1c1*(+0ao{zBb*V1N?~}2Goo8@Xqjg z)P2aG4xM~yj=W3g7BGXiftQo6sMbgCCazm4mi? zTryp3gXaVVM~K7UU|6UZN*5~idO#C@AZvX(-k*#k7b)hkV=`c}$!Ctlrn6+31NmK2 zw8?t@cm6%!KU}z2)kQ^at*v}7#M&W%G=oHM1Zra`3ibO z{aijqzanh)flEz?K&jf)SosVGza)79)h1kV~3~_^_+|` zT2TgApE&%U-Y-09>&ut@-rh$p$i3xz1__Q)gR}SV{sQg4{`Ic}LGR!FKY#m=cfS)H z`O@f*1Q-2jxKHoC{qmiFlJBPxY~@{VJOpC$!shn@ec6hE;d^!kef6MTba%TSZU|5k zNtVa&3i=wE_rDX25`;P1d>5aA4NQ5U#3z=07h!^lgpzn;2Nld20<;8?fBv4fedN1) zdC9Z(&?b|8nH@EPKOa`fcm8NYp4@ewV^eOS<{^(20GAQH{u^9rGxFjqf>ZG(-;oIH zyFdNqod!RN2CMF_9ap`yeU%Jz*}%q~J$Ln8lNRfF`&B6h>Uj`{-(r?XSOP$eYwfZp zDjYFVkrW!)u7N<8PXJawHW*|YY<4v)TllMJBo$#zwWh3xX}*=3qPilhPd)Z0cI;rz zr3*jBmSt0HW1OU2z`Fh)Jky3e(cS)nxO&xBr7c8P*T>S-G>H(CHOdbo6qfPISxGr_ z(4&sYz0S)YJGQdb?8UFI?Njw9M;SSQ9O3em0(s0|fcR3MXi`qgpo9K`Y!L@2#S#4o zzt>g#Hsy(xy6FiYgeUD#KFyb)WIxSRNxJZ@bnF0@veV=h7D;lIJT1D@j+8s}SuMhf z$bhss)2~)k)-&GayiLHs*}Mn+;G-%h=$e;mwc}}5EV@ljq5m0x!#UclOL`Ge1i0pU zFd4X(9+@{t30q3ZB6$2#!m>N*g9Hdydb+Ki3 z|MJ&=Huie=x8MH{yNACUn&d%-+~(vd;%~?{`15t>@BV6TY0|YdIW&j=u6k#flIToFM*nViQUzm+r@sDk6p=M{^`$m zzvx$v>R(=!g$uDem-)`$Z|wZB`#10FtL@#L%uc&9)S5|MTfGrJ-RTaXZEC8%JlVVa z8Mrdm;u8B;0GR;CwwMgO__Ku{@&OOnvQ>LC$JNDc!|w#z4UV)6Iy*@nOO)cG2fzeT z!s;u75(B^n;8|~}_trKx=;P?CI7KR}>$0^`;`p*(v|5TD8J&y7B{X9dY*NN9rTB)- z9azixRUmC$N5;=pcg$yOVOIiFa#g4?JFe`~!hF~mZA*`Bt8HVsoPi1VUw!^*u#)v< zl6;}&B%v)WY}&0aO&u#Cj;v5h?}r)eZ4g))ijY6LqECSJr7NX%TISUMC*tobPm7*& ziLL&@5B(iF*vSt*2ye7jM#zvqIf5-N6+dqe#^bX!A*{VitOb?4%B-*1GTy=FGSLFz(t(ax2eZzX4ZE zV#YSWLMtz%+K2#OVBlFWvMwBG9MCG53EHZ*F)tya0_BtmZEXPH3;_!eD9#Ixiz^zk zIAKNTL5E`cVEAgEYk3zd7NCl$8hB!_1{=UtNN}0J5x(GAY_w?|OYzvBT5-vW z-CNtuSSi40&;buLmZWr@qya8%eErBXl#8y^1AI|C5J&MY^Ip@YJLIL^iaKeYwWIz! zl)fmQ5;pP#9%4`M(5|(a>RW^hcaRK!^H&jfvS+pF&j%5$9`n6d+>WV5I~Ubo`F`Jj z`{yx7t zVvjKYq|qSS*dtFx_m;CX z-U837U1)!vEcQEEOmKsb{z{7cHr$g9vsjsVP$PD63zvK@_?h=*(knV6G7WmGL%X^L zDa!`A*QD_9T8hu0kK+orsD4E*qbL+4FzBUAoeMxwIZIYJHdE}lY_ES6znH7vs%Q##B=JML08L7}>4$!Na94RSX9tQ0K3%vGAiA`Quw86tc zzSCLWz!u8#0IZrfxSrD2wuREprveTjG$9+1mDkcUT$o>Dcmw`~@7e);RJ4h)av3@U z_SWDBeHmQB9MRLj2b!QC^=%qEcU3}j5C*PXV3{#$Bh93Fq+hs8!c}_HI7MRu7$U0z16_+s zObIw8d`_Oj?nV|DSziME*MB7d{I`GOwI-hlig*=^FJmTH`SSZ8>^i;YU4FdM#b7Qw zDj(kcL6BuoDk7VRr-)>FIEt%Xbn=!T^B2koPsdC-JlGd3GEVoTOTM51=t3$M291BCLdBN2;o zF17yZN)nCX(T~!uKZ6~G({l(p4vMzV+tApNU8@zCM%JcXUR+}@dMW!Ci?q#>u(_T^ zA7J`Y?%=?Oo}J;^6E=x#+MGf!AYTOl><5lnQ>9(R^_%sWw|t*+tuI^xSaKSfE00oJ z0e-bDJCEs;%1d+9FTeIP=IdL1X;N}&^)pB8F-a#WKqdJkkSN z&|~@ulFiZ%+SQ|g`7c^3SJySKS#X#WO#VjSb&p#)y64g`5y2)!= zu4@bKyz<2WF~3-W{eEBY)33e; z$AAwRT1eT8v8#ij3m7l&K{Z$dij2Htk=;|@v1lOMoyuvU3@fd6^g)faBTAbp3;M8d zLT5Y|{q_BKeY}FDtf}DEzz^-HICG^$mJ_5RgKnSb3sf%OTd7YCL`Bfj*aJ)QsVKrS zhjcHJ(p}fYS8YfZsb-`YJ9R06;#_RUec@}J3; zPyREkk38C>JwHl6OZS$Xn~YoKEw13M9l%YhfY%bZx6mi@vGL(^5Rp29my(lE`49C+ zQ#!f>t(e20urfss`IV;JQ_!hn!4DoGPbh}4x%8We!cG1nU0KOW;5lEizUj-fX2AyM zCwggQ%ECZx=~>y5Dt;A>jG(=_E~o{!4D*dYm4^W@`R22{`b%gGQiis!yu@MZ8Y@mk zF8-ABdzh6ertfi5R;VI!Y^qcQ`vy+G1T+qX# zu^zNHyP0GOV!Qh{ZHS%rBgcFPvAKML31q){TmA|f<<))-yvo!gMo&?IH#n%0mW~7{ znnjAu`bq!NpXRbQ)uzY_uL8wv0!kH>^XiitAz3)d-Nillv|XP7w^u_?z3rhoI)bXM zp^BIXok}yQE&ZgdhU!3z%Q-%SIstaIPTRz%e-&i1z0*3!t79?OquS#*vANTSA(sOm zIyS<;{h>gT{*cg|zvY6ER;qm(LTDso?%FTm6CNuq>{Py1&+;btFBYmXMlDIFmJ|M8 zRP+XWwb-+huF^oxdyEf^kSuAh zQ7rh9^(gYN(SiK7&O^l>q-xiQ3UZv@)2Z+QDGE?T4a!_`{)rC_Ko|Wps$2A(e4B9b zE`M%WEzF{`W!?=So`5#_F4WRpox&^NL62|7me_b9DZPZ; z(Eq8*TSmQtJHhR!SQh_}i8ntTm7^GQAL}oGBk)uT(aAUc47gMW@?<;c?gFGAJ$FpZ zIZw)PvK}gewk~)bT$K|1nH%EdH+mVzANb;)zq9*^pNISUh21;@H+K09^xp9^ZJMDa z-WvA1f`0$*E5V|-jSZ;sAc+AWx0OG9>b*;M#SARI`*4)pUcdq)H^4drK<5s0OtILZ z?5_lC?%ufznV&f%@JSGh-QH@RAnF@IRW6Rvl1nNjD^5@^!pfj-U_+t5^5IXrNy3xR ze(w+e8NBwO{n+bmX3SyjKxPh`P)8;}!VY)(l=qc)E9TvN1lI|o&}plc)3kh$fWh{- ztLSbXHpVw(+NgXJ_zC_JTm$kIIkz1^`6F*>qO2_cBIS@b0ZNrjJM^2%TCd&u51{Q0 zBIuqL@xpZ7I?y)bYVXzrtn$PuQ~TC`@~rur1Z>(Np+I@gU=-eEM_VnOJQv^eR|k`$ zys74S*8k-R&bD$auPHFsrph0~gaXmUBT$HPDt_A)-!aaz1FST7q&sz`4PH+G<_UHS z4$=@+V2awNEOTij2%_zfGS#vixBlXSPuTkx0J}xhEuC8J<^s7j0OkWh;9=(!AzTv zddkA{Z*8^ppgXl@y-~<=nD%=CaAG<)n_N)JmEBHcHWwR>$<7uCE&Je?Z57zF9r<5L zmy$Q6j1F@cmN_j08}w5NPmmk53okjN7U*Z-q*=D;28NybpwD)Xah&}Z}6tg^SAwdP~NZRCq9H;m}EC=$P3I-K< zeG6sZwfFUJzkwIYRVq6cJ^@VC@8A(+ed0TNp9t)n3%^7Ehdcy;fA~AO1Zn;C4|tGb z*yOk;&Z@k*prKg2fn0v~*C;PaxS5L1KFA@D5`5@H0n9UY1GB@HI=hyC`g#;~aOU5g zFoQRP)b~D=k^s-|u7U0enDPk%lUy&E%g}kCkUw_YDE51ONM^?`-!Ifz;KcXA4|og+ z6Tp^V*#>?I0Nwq|4r3pTSyo1dj-MHSJyb&Q#-9sISCg2Noybt*_wdn1+X)e4*_~AW zv~6T2Sc-QMV1h8KmQq(>9KWpgrd^OkhC5{Ch%b<3@TER~j?a!fcLEc{D89y6NGd32 z>Z>*S-!yq^1z}f~@6_6!d`~=0#v)lY%oBvRdHX0(`%#=UCJXUQiksar#0Ph|i!bT0 z)k4l|ti-7JQ<(q5yXv8noO*B}t9n6Uk`_*nMU#M5e+N!KgjQQ>x132atg=gkgnoen`D3ci~_;iW~jB0A>H5qfclY^jz|%yYa{bFo8m3 z%w%}Zf2vvK9}uc=WIl4sn$Gm}OwJ~_bB1)$!+Pgz?GC%M@7ilb87+>QW!5z_7wf?| z#n8wwY()%OSt+LjDCK{EOKjLZflRi_3+-fiEoEYf#@7+E&N~B`<-op>CV64Yn2^o{ z-MYpEbdUC2Fd|QV)wv1@{5qbh=c&E&knV0>z@pZ9G=}B47Av|dp;ABbp>RTzQVtfEW{};0aq2jazy`r}0 zMKjziP9r(|FL;L@gvE`glKRR=-kJBx08cNFqGZ`)*|I6Xingr=fChAaZ}m?Cxi5_M z-csZ%)9hw>%S^hDJkaE;Mm`e^co_VAF;L<=ZtnX1{#$=4&ENZVha#_Bfbly)+IxS` z*9)lu1%LUzo^|MYTh|>z=jDe4lV5y+GFYt-$I8sDI07{ls4p;sINGBPqr;d~vfLIH=k37|s~7z~0OO0I=iv@^ z7M1Obqrcz_cmMQ-`qS%*PO<~4#}B#jb$+Y6@)Jy;$3N}!<TVmEEDQ3iwVG+}GnzevIxIh5dW9gBX0KMsFW{QIBX&4h)d-j)bobn%!~#{rOTs`4&zX2A%v9U#2Bl+6;yj9mS%9%#1T z9apheKQ$m$#l|Bmsumpxu~off1|*YEeLnI8K@;6}k)|N0GKv&kVHTQV55T%hit1e0 zMfDHL6#ZXF7yDI8n~-@y{tg9;>8E%%5gM;f*vhgdwFee#EVKHf@)o}3!81(HkO$o^ zLbpkWcO!3wV4smZBA(D3(_+i4+O2%UZv|v^;vCRn*?KH2;D$**ga>bmLsYzjIk#$D z&_VTfPAAZsMqAWyCSSfDShZL~9_LxGBDBchES8m)ZDwqVIhW0u-~gLnJP|%*mw@$2 zEYg?CC0v?=PKu{#+wv4!`+h|8lvSoN_#oJ_7Ct1DH~gSYanTKU+O#LuBObyxK7DPI zUez~>evrrRC+!;r8~^YUlEGv|(>FFXFquAuY!qk&UfLe9n1K!O)Wf8xQ4kDryrPL@y0LfbW~ z7velX0q<9WtOPTm>#n2x{Aaf^JA(!?Hp+hkCQQp~Whl7LMiof>MmKc$}mN?OQeCPjl+)o8NB77kE8`|ht>z2wTI)n3sJrhDM2~w5Oy1%Dqj2vGP6e4 z#`tmq&T5P59Z(8WuI8F+R1Sqs5*BpzS`B@``&64c#uT9}$x3WqIg?jc(Wp-0npXnK zKU`^J$@AYO!U9NXO9*P%9$Tw{l?*sz$@XM?*)PX9^T&&T z+!lc^eCH>8L4;2KQ9+)(R7SOn!Sn^A4(z(U{vPaZyZdmkJLrF+osJo|is7Ume51qr z5||oGy9H6No!mlqmtc7VuanPWiV zzlQ80{KXe4zF6*-S6E5ka2{{r%72_^ZDQLXDx{6{yaYr&0^G8sjHE1yElt*k`!Z>e!Q- z1cnCLzMN>vC(u#XzE85EB!*;-r+T@R`+>{5!Z54#_~S{*-}kF;-}JI)C4hPZ^wsUB zxUBn39MI`R#)A@f_j>1_BKLdvWW(!Jo_&(zGOc3Le|^(Eo5zgSM_xAkffJ%e@0Suf zlc}!#fqx`qevm>>6_ev&bE_FBIrAk^etG2Q)py5_DSa6yRdL1)Cie&G#Ltkp;~BHs zzQn7S+wjwA_0S5K=*wsI=c8vki3f8hW~w;(Q(_vIewjg&FU7{IX`Hxe48s>b-R)TA zxJRKLI`LDf@vaZ!WM8bQLjcAkT-j>WufWs*o=d5D%8ZMg9;ud+e)6?^mX)EI`Tj5 zVeX%|KOy8e-^d3)NC2Wf_631ILCg2VZdB5jjKb31LS4(im*6esC8JC7#(5bcO^tuU z|J$pV1K3^z12C7W&HJU#9ZGmq3RT&maI`CW7NgEq0+s zgu|B!p5!iNecOx!0~0H@B%rfW;#$n(m60V5B6yI@vYJDdC&FPD=(OX2RJIL4NM5oM z9ZVZ3N^fTg?ez#M*P%ykGx}ZjMpUEXD58cd|LN*bl*ytP9-FjeWq|Lhm#)D_wd*E6 zPQ3%v`c<)4-x`L_Z{n>vz|+$Z$rN;HN`58_UG9wqY~}8?_p!lL-Mv*i7zL@P(;Tp|`sA!8G>lgv>1 z7?K;qGj2+B>YhIzr|{`yGiGo&J~_#1$8bj5_p&*DybxygRq@pWCiFY*K@?!v<6NIQ zhTxC!&x54@SO!}k)Lz0)ZoHT-Rv{P|6E+!beK52!W5Y+u7a#2}p;wW5;CyF7mkud1 zCQB+1^~LvfV`Dd3F+N_Wt?IRSJZT8rld!4BH~NyOv~S8T3`m6x+I3dlZQ2f;Dxof} z#M3MhWZ45(X-S8jd0etzs6x^&EbCxKsG9aWU!GRX{Ig-jMhuQ4N*Rm=YrA%3i2r?+ z9FOQtb28+i=?)vJi&e*nb!=}p9DLMXThA1{ke59f;TW~5jgV#+W&qI=*cmCZ2!13& zNmd)ax>m5EKC5g2?E%v6Lv*B|QzN1Xp@TBiA*yzEt(r5|A(4sd{=drN$=p>o9d~(9 z4BtzIe#weIVK|U54*FKG^WW*_avcjbd%$1g+^{{jLkw5g@_{a zWww{$88RwMWJ?3>ktbvw*fG71y%vd(+QO9+jDZEJ#w@X2tt811vY6mkYZZ-38MCdO zl`O9~g8NWwyaK%{P zI)Ar#k08g4xDPIVO3n8L62g;GIn6dI^HT)OxRKB?i^fc%5;i4}{0^~m4P|LR>#xd`Eep>yke1!cWJfJTPG(~N-T=NNeIXx;@^M#Y8-F<3nLs9!y9}~e8O$? zCqguZSA4(S8I=yxM#h@Rt2D}bc;;J1%zUs>$-nFb7W9K(mtaJB^$)MHd3yL35BBJR z7VFc=@SqA74hvfS^O6Pi@_{yzMO!2i;9#>UxLV>k89tDeX8H-PsdGSTA{Sn(fh7rj z*964?06+jqL_t)uE3p(&86wZ^ltY3>i+CicBa~Tlj2I6u$;C^|2Q4-3Jp~c;u_IkLQR?^MUoMLLbj}9%$ zff<5>nW@-NZHq(|oBC>ks-?KpZdLaC%>I12B+!~s;2^}oT%_>&UL5b(abJ(rTH2Q? zH;TWEgFnAe*mHEXGwie&qt)muGLh2OXNr?73)>!6QWEG`dR@XvHV{N4#caDO*)T;g z8i5<|s#G~?Mvd*inTJ0KhnXs_4?(t@p{uE1IHl;i;rOJo;M@q1$EESKFoIh;wgu>B z7RF^4t>bz%SX+he(&oHX3mIJ(e%C?a@7kvD0l2L9(nb=h^nt(Y;W_csA#bTyIJmm7 z6r>L>yD^DT%>X|9h$Qe%$>6=@oOJlr4?a5g=zFPILL~#=r4PAg@bo=0hY~<#PVtem zJKhV(3?NCR5|w9PX4TWdo<-sd&5RkgS6BC+K3?5_RHAkx8#K(oxi5Uf_4KdmzKxI| zI96~XWOh$+Nv&B#jve~e^MPOY403-SiQKPWT$)9vzUpHgPxPt}-rMXa28|gwW+zEV z&9C^UI#0ADcl?vDNdB0YM8Yu#Cn_~guG7}SI9Lr%di#}#@#Ue4TP3^3nhdLNt(RWkKOviQYyj^FE866=CP&UnGCQ!^pFMb1JQIqbo}Iod7C{=V2CooQ&X` z|G;e(V`7|S$a<)=pO(1~s!0~(=yeQ-B8fljgCjV#uCYo&iaKje z9|OHq=qp<{7HVM)XC(RPNR~&RKf2ZSxwLgpCFeZJ)63x-TVdTy zK6~9(0ke>5EEQC>dpS{EI_hx}AI;OsOY~&`<`q{3{dbo>w)7a^630c1iCF0as1sj` zoIPV(LQ->@yoZ>UD4kps27E1U5OHSemW)on2-S(QbSmb% zlZ&(-mECJM8`v%s0|^r+dEZaQ><%Y*$>WbQoph8G{nUMbpFe-`Y>@BkhkNeIch5qL3kB%(r zJ32k2!YrXae&9izB$od9#t4Rhg^Gn^7xycVL6^6A=lGJLe9{JLbt z5@YQLNup^fp%W5|{c2+qTl5VfThiL-10uKks_@vR+#q7EHkE3qYQOB@>*Dhg{`H}6 zv7Kg{a~PbF@P{qlJ@d(!Yl#rTm+je~;X>q9?9acHiCdrj_4$^#csf}&V>Z{U+p7Ax ziI2_J=cBSo&T;2b%n0DJwh=c}$G_BpoqJ*zO{bGX?a4?cxCe1s-w0NWc-Wf?^BOhS zZ3#)rDa4`OU~)=ivyGcwez6_A8_>Zezv{zkhuIz>OZvyGL@MiRW{CI1)E7O9Zew6! zN}-YiH3usHMa)SkfqVg|s?;Gmeb)iF+lLzuj0XqK{9tbqDyjfrK%c)>{LwtFPqs<) zxf?dZF7A$w%tO*mf{FE%a&VYSuTRX>x7x1G_7Iz@v7^`rM6!YBs5O?Z7{aVH9Mv9j zLE%dOC7NZkM>v|JlF-(Mt2Gm_6?-6Q&}|n;H3D}|AI7CC3mh-shY=jej_M&^&=q-y zj{1qxG^>xk={8L;SvWP|IYD`5hvdZxU_7wFD_ZRLb#LJ<$&s+!`{Y@nDZHR%K@qhoDq*Zc zmCpczAde(UCTyd=Wc+qh@}!L&LtZonz~++QVDm~UU76H)xn$f?rmbfhbDydN%)P;w zF@c5ga$T+5j+S}M<=33)kGf+E2lgcvzt~)IVxWK)KgMd@xjlmKM<{2n{zq!-z`f`q zhbb`xe!f(1$H1P!1nPV%8?CPO5CzLB9?X2xH9Nc4pyM@50PY96uo8H7%D1l3AxsATBnu&yKz8qpoa0P{5 zJ1}2CzStI5KeS(8|B8d7IYMbyqp!9{1P=g8L)KNvM);!=HY++?9fOEAL@Kj5_6^*= z(7U-*C?)A%`iT925VSKKo5dC7>aPZ*qF=B{8->={E}pfWaaG?Jq6>|^D+}xr5kWLV zZP&d=L37D|anc$MzqtUkbiG-*x+x=`7URH|k5#w08(ha;tyV=k3?j%5>ckC(Mx!2?>^{$JSATKi8SunlaZ4;5|`qDj$;uC0gJX*Bq(ty zl@l)~zq=32xCul2IRh9^_42?4zDR0xEKp7nc?DRVKz&?@WE5_nH1VNWdhV+)QO+I>EkhFe^A11 z40_`di)mPf{9jnZ7!gn7^kPBvW@=xr?VO$O;OsTJo$P=Qz~Un@XQuk|?!X|yJ_H@J z8o0HHdV_l7qIxt~Ai(_>Q+HYQ+~7e2uoSHnKi>~SOJ8M$Q)M@ETmW5Znsfu{SbBX3 z50zn(@Y?SIt|74F>tMp4(irLEFJ}>CNcH82&K1iRabm~8;t*8|5;xS!g7*Q4_c7@Ud1pUv5*0ER}KCk4l=JuvTA-yoF=Y z;wJ4aTNGv8%AF`x&1{Lrjiww-iCVx%uDJ&a$l1mV+er0lB0KOjL92%Swq~prOb{=k z6)*_E^e~2kN)ap|HAX)cv>WT*7kc=SmyYjOBwm_<;(k57z6A`IdT;$u21x_6Q(WrQ z$xAve!Lsn(=ENBfZ7Dg>i7M`&iw7IH{OfoADVbzg>bvZ(yV^H;0+?h8842RW5KIqNbYQ_ z1nv6S-);d3i-ek(c>f_!7|RE?o_(dy@%k9v!|08m!lfPIOfE^zMwzpH=wpC$jE&%s zN=ImDQ5+r{NVPC_{)msC+S7^-B<#mB zVwuv=3Txe#pviDZl7_$dCoRLE+W1YZ$2P|(>=GIqK@G+* z$4|Ri%<3YA0{$37RkXlMQT)Uc@?g-q{-_|qb3GD&?BbRH-8N9V#O9#dC!shVN~p(D zEjt`iS1za!PxK3*Vw>QS9Li#uiZY6=fqcglB5bC1)+XDFwMMktY6kHAOW(m})H`+Y zB3A?z1Z6=j>w>f?Y*A2_%?1harW7W2umrcl$fk7rXg=fZx{9~U8h03l@~jJdS$&D2 z+ZT`nwa+4aIV2o0s;<2|zPt6M>jX;x(ZEE$^M#fuCu?iKUH&njpd(q2W6{1~gsSr|cBy*}v)lCc zCD$jM0qqLat7)ZIo&97u0<&~!X)NZ)#?i&gC1iKH*YH*!7UU$0o~^7gl8kKE4|6C=c@&SZ;__^q__@!| zFvdlRB0s063>Kt)M?xC+{*iccVz<9cAmh@lk|*L6uR0-q0^o=S2UYyqaqudMh2Jvl z{DIZbiT7XOP(Z>b7jvneyn|b9k1yNR;gg_b^2bgQ!PqZ0#+Xtbh++6hUxciG{Lhuq zV+DsABeGF(Xkj9m&65Y8mMn&WK+bky`^1>YSYzOsPG8r@8BQdFD6!zz`0>Fa3_F%> z_@0C`0>%$Ku`g7DUi>*!vWG)mVDAR;l1pls;*d z29X=8lxzr65@u+P#$sJwP_4jYi~i$p`ra{@H9K;)TR;~=F6^2B7Wg%v);A|+i;j5X z_U_~tt{fiAH#ieyM^&gp(*ae_1L44Ah=&-4ybK$n9HF8wv`f}tJwShv&|$M--JGjr z=pY$63`)uUWeYNkQThvjF3tA>;OKkU8XN>Wy762f+{Ls9*U~s}2duz5(E%<&@*SXX zNI2xt=2+r|ibYx_G&KcKiK3P=RJ&D29hu=9*>G4qoBbdteJ3wjl^5cHvbmkro$Ero z)8eYbdfj2{U<=dc0B*{o9q1ulOtZ1blIpY&i?AL8>)&EHJj>!O`003};kfn;*yrDW zzxwU(|KSHL?v$AE{ymZ<|J0c-4f|I@^avflz`;xw_qjQdQ4+>X7YBAQykXh>;K2^= z?bBt}I02HdamkXCCHJc-yL={LRI;Ob%#aEDNtb5D$&nv*dA4)wqhQJhj7 zuxF?Qy#X6r8ICuAJ$}m|wm`8TIyFZ9g#cd$1)+Ers%%iOs~(nvXcfec5<9tVOPxFM zfo}-<0I8l$iug+@fp#ELc)Q8YbEd<_rgaEI0KW@YsvdpcN%Z9rG^CrZ?`c+TdR%l- z`ApX@7Z|2N=QtS6=ng6i%D75|J&@JDW;#aP4nwPvIW)X!3=k(6JB(GYH}NUYCG0|2 zBn8gWMek4Pg{Rt8MIl8)4e1fuQC%xJ&Dt*q!zGuUC&3mqx#?+lKY?wiZoH1SH5<}R z@eOW)(#6qBQjek|WEB5H+f|Zm&1A6i)G7hgWzbK*{dV=`Z+}z$lb+DM*Drs3^M{ib zGgMD{z=H>1l?wT!_KOTk7?iQ?&EE-~wjDTVZ0?v(vc zo%n8)1pbl@nWgUwRPssk$3rJq4|{Rv@NYYHX@q<%#?#LNdu_P2m;KJIj?Z=?`Qc)Nsd{U>Z&Af4eM%GExrU8 zloM6U-jJ?a6iLwRsJ8J-z)2yVGpZ58uB2Ul?4)sa9pcUQQs>LeaBcrI3wS9{_?qWg zt=Ljx^G(*NtUA%#ynJUsS&Z&ar=zQb=~7>t&A={%0AsO~I_m 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