From e57d585db9e86dc1d58b23abcc66a95c2f92d6dd Mon Sep 17 00:00:00 2001 From: renanvs Date: Tue, 4 Mar 2014 11:57:29 -0300 Subject: [PATCH] refatorando #3 --- .../PaleoProject.xcodeproj/project.pbxproj | 12 +++++++ .../FoodItemViewController.h | 1 + .../FoodItemViewController.m | 13 ++++++++ .../FoodItemViewController.xib | 1 + .../SearchViewController.m | 15 +-------- .../FoodSubcategoryHeadView.h | 3 ++ .../FoodSubcategoryHeadView.m | 6 ++++ .../FoodSubcategoryHeadView.xib | 11 ++++--- .../PaleoFoodManager/PaleoFoodManager.h | 1 + .../PaleoFoodManager/PaleoFoodManager.m | 31 ++++++++++++++---- PaleoProject/PaleoProject/Utils/Utils.h | 5 +++ PaleoProject/PaleoProject/Utils/Utils.m | 4 +++ .../ImagesTest/foodItemTopCellBorder1.png | Bin 0 -> 1370 bytes .../ImagesTest/foodItemTopCellBorder2.png | Bin 0 -> 1347 bytes .../ImagesTest/foodItemTopCellBorder3.png | Bin 0 -> 1352 bytes 15 files changed, 78 insertions(+), 25 deletions(-) create mode 100644 PaleoProject/PaleoProject/images/ImagesTest/foodItemTopCellBorder1.png create mode 100644 PaleoProject/PaleoProject/images/ImagesTest/foodItemTopCellBorder2.png create mode 100644 PaleoProject/PaleoProject/images/ImagesTest/foodItemTopCellBorder3.png diff --git a/PaleoProject/PaleoProject.xcodeproj/project.pbxproj b/PaleoProject/PaleoProject.xcodeproj/project.pbxproj index 175a375..92e3d85 100644 --- a/PaleoProject/PaleoProject.xcodeproj/project.pbxproj +++ b/PaleoProject/PaleoProject.xcodeproj/project.pbxproj @@ -77,6 +77,9 @@ 1E157B0C18C050AC00E0BC61 /* Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E157AC818C050AC00E0BC61 /* Utils.m */; }; 1E56B1EF18B43DEB004E8523 /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E56B1EE18B43DEB004E8523 /* CoreData.framework */; }; 1E56B20018B443E1004E8523 /* libsqlite3.0.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E56B1FF18B443E1004E8523 /* libsqlite3.0.dylib */; settings = {ATTRIBUTES = (Weak, ); }; }; + 1E92781118C3CEBE0056B4FB /* foodItemTopCellBorder1.png in Resources */ = {isa = PBXBuildFile; fileRef = 1E92780E18C3CEBE0056B4FB /* foodItemTopCellBorder1.png */; }; + 1E92781218C3CEBE0056B4FB /* foodItemTopCellBorder2.png in Resources */ = {isa = PBXBuildFile; fileRef = 1E92780F18C3CEBE0056B4FB /* foodItemTopCellBorder2.png */; }; + 1E92781318C3CEBE0056B4FB /* foodItemTopCellBorder3.png in Resources */ = {isa = PBXBuildFile; fileRef = 1E92781018C3CEBE0056B4FB /* foodItemTopCellBorder3.png */; }; 1E9DD70518B931260076F3DC /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E9DD70318B930790076F3DC /* MessageUI.framework */; }; 1ECCC4CA18B06B7F0073992A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ECCC4C918B06B7F0073992A /* Foundation.framework */; }; 1ECCC4CC18B06B7F0073992A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ECCC4CB18B06B7F0073992A /* CoreGraphics.framework */; }; @@ -253,6 +256,9 @@ 1E157AC818C050AC00E0BC61 /* Utils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Utils.m; sourceTree = ""; }; 1E56B1EE18B43DEB004E8523 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; 1E56B1FF18B443E1004E8523 /* libsqlite3.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.0.dylib; path = usr/lib/libsqlite3.0.dylib; sourceTree = SDKROOT; }; + 1E92780E18C3CEBE0056B4FB /* foodItemTopCellBorder1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = foodItemTopCellBorder1.png; sourceTree = ""; }; + 1E92780F18C3CEBE0056B4FB /* foodItemTopCellBorder2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = foodItemTopCellBorder2.png; sourceTree = ""; }; + 1E92781018C3CEBE0056B4FB /* foodItemTopCellBorder3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = foodItemTopCellBorder3.png; sourceTree = ""; }; 1E9DD70318B930790076F3DC /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; }; 1ECCC4C618B06B7F0073992A /* PaleoProject.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PaleoProject.app; sourceTree = BUILT_PRODUCTS_DIR; }; 1ECCC4C918B06B7F0073992A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; @@ -656,6 +662,9 @@ 1E157A9418C050AC00E0BC61 /* ImagesTest */ = { isa = PBXGroup; children = ( + 1E92780E18C3CEBE0056B4FB /* foodItemTopCellBorder1.png */, + 1E92780F18C3CEBE0056B4FB /* foodItemTopCellBorder2.png */, + 1E92781018C3CEBE0056B4FB /* foodItemTopCellBorder3.png */, 1E157A9518C050AC00E0BC61 /* categoryCellBorder.png */, 1E157A9618C050AC00E0BC61 /* defaultImage.png */, 1E157A9718C050AC00E0BC61 /* defaultMoreCellButton.png */, @@ -877,6 +886,7 @@ 1E157AEB18C050AC00E0BC61 /* default in Resources */, 1E157AFC18C050AC00E0BC61 /* tabBarItemFood@2x.png in Resources */, 1E157AF518C050AC00E0BC61 /* maca.jpg in Resources */, + 1E92781118C3CEBE0056B4FB /* foodItemTopCellBorder1.png in Resources */, 1E157AED18C050AC00E0BC61 /* defaultImage.png in Resources */, 1E157AD018C050AC00E0BC61 /* FoodCategoryViewController.xib in Resources */, 1E157AF418C050AC00E0BC61 /* foodItemTopCellBorder.png in Resources */, @@ -906,6 +916,7 @@ 1E157AEE18C050AC00E0BC61 /* defaultMoreCellButton.png in Resources */, 1E157AEC18C050AC00E0BC61 /* categoryCellBorder.png in Resources */, 1E157ADD18C050AC00E0BC61 /* FoodSubcategoryHeadView.xib in Resources */, + 1E92781218C3CEBE0056B4FB /* foodItemTopCellBorder2.png in Resources */, 1E157AE518C050AC00E0BC61 /* test.png in Resources */, 1E157AD418C050AC00E0BC61 /* AboutAppView.xib in Resources */, 1E157AE818C050AC00E0BC61 /* bolo1.png in Resources */, @@ -914,6 +925,7 @@ 1E157AFF18C050AC00E0BC61 /* tabBarItemSettings.png in Resources */, 1E157ACC18C050AC00E0BC61 /* FoodItemViewController.xib in Resources */, 1E157ACE18C050AC00E0BC61 /* FoodSubcategoriesViewController.xib in Resources */, + 1E92781318C3CEBE0056B4FB /* foodItemTopCellBorder3.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/PaleoProject/PaleoProject/Controllers/Food/FoodItemViewController/FoodItemViewController.h b/PaleoProject/PaleoProject/Controllers/Food/FoodItemViewController/FoodItemViewController.h index 3c70ca8..e586b5e 100644 --- a/PaleoProject/PaleoProject/Controllers/Food/FoodItemViewController/FoodItemViewController.h +++ b/PaleoProject/PaleoProject/Controllers/Food/FoodItemViewController/FoodItemViewController.h @@ -16,6 +16,7 @@ IBOutlet UIImageView *foodImage; IBOutlet UILabel *foodLabel; IBOutlet UITextView *foodAbout; + IBOutlet UIImageView *typeImageView; FoodItemModel *foodModel; } diff --git a/PaleoProject/PaleoProject/Controllers/Food/FoodItemViewController/FoodItemViewController.m b/PaleoProject/PaleoProject/Controllers/Food/FoodItemViewController/FoodItemViewController.m index 083ef82..35b5e6a 100644 --- a/PaleoProject/PaleoProject/Controllers/Food/FoodItemViewController/FoodItemViewController.m +++ b/PaleoProject/PaleoProject/Controllers/Food/FoodItemViewController/FoodItemViewController.m @@ -42,6 +42,7 @@ -(void)viewWillAppear:(BOOL)animated{ foodLabel.text = foodModel.name; foodAbout.text = foodModel.about; [self setFavoriteImage]; + [self setFoodTypeImage]; } -(void)viewDidLoad{ @@ -53,4 +54,16 @@ -(void)setFavoriteImage{ [favoriteButton setImage:[UIImage imageNamed:favoriteImageName] forState:UIControlStateNormal]; } +-(void)setFoodTypeImage{ + NSString *type = foodModel.type.name; + + if ([type isEqualToString:@"Paleo"]) { + typeImageView.image = [UIImage imageNamed:@"foodItemTopCellBorder1.png"]; + }else if ([type isEqualToString:@"Low-Carb"]) { + typeImageView.image = [UIImage imageNamed:@"foodItemTopCellBorder2.png"]; + }else if ([type isEqualToString:@"Não LowCarb"]) { + typeImageView.image = [UIImage imageNamed:@"foodItemTopCellBorder3.png"]; + } +} + @end diff --git a/PaleoProject/PaleoProject/Controllers/Food/FoodItemViewController/FoodItemViewController.xib b/PaleoProject/PaleoProject/Controllers/Food/FoodItemViewController/FoodItemViewController.xib index a3ca336..744055a 100644 --- a/PaleoProject/PaleoProject/Controllers/Food/FoodItemViewController/FoodItemViewController.xib +++ b/PaleoProject/PaleoProject/Controllers/Food/FoodItemViewController/FoodItemViewController.xib @@ -11,6 +11,7 @@ + diff --git a/PaleoProject/PaleoProject/Controllers/Search/SearchViewController/SearchViewController.m b/PaleoProject/PaleoProject/Controllers/Search/SearchViewController/SearchViewController.m index 874276c..69b1e58 100644 --- a/PaleoProject/PaleoProject/Controllers/Search/SearchViewController/SearchViewController.m +++ b/PaleoProject/PaleoProject/Controllers/Search/SearchViewController/SearchViewController.m @@ -51,7 +51,7 @@ - (void)dealloc { } -(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{ - foodItemList = [[PaleoFoodManager sharedInstance] getFoodWithSearchQuery:searchText]; + foodItemList = [[NSArray alloc ]initWithArray: [[PaleoFoodManager sharedInstance] getFoodWithSearchQuery:searchText]]; [tableView reloadData]; } @@ -108,17 +108,4 @@ -(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{ [self removeKeyboard]; } -//-(NSUInteger)supportedInterfaceOrientations{ -// -// return UIInterfaceOrientationMaskPortraitUpsideDown; -//} -// -//-(BOOL)shouldAutorotate{ -// return NO; -//} -// -//-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{ -// return UIInterfaceOrientationPortrait; -//} - @end diff --git a/PaleoProject/PaleoProject/Custom/CustomCells/FoodSubcategoryHeadCell/FoodSubcategoryHeadView.h b/PaleoProject/PaleoProject/Custom/CustomCells/FoodSubcategoryHeadCell/FoodSubcategoryHeadView.h index c2bcc1f..3a0d8ae 100644 --- a/PaleoProject/PaleoProject/Custom/CustomCells/FoodSubcategoryHeadCell/FoodSubcategoryHeadView.h +++ b/PaleoProject/PaleoProject/Custom/CustomCells/FoodSubcategoryHeadCell/FoodSubcategoryHeadView.h @@ -10,8 +10,11 @@ @interface FoodSubcategoryHeadView : UIView{ IBOutlet UILabel *typeLabel; + UIImageView *headBackgroundImageView; } +@property (retain, nonatomic) IBOutlet UIImageView *headBackgroundImageView; + -(void)setTypeName:(NSString*)typeName; @end diff --git a/PaleoProject/PaleoProject/Custom/CustomCells/FoodSubcategoryHeadCell/FoodSubcategoryHeadView.m b/PaleoProject/PaleoProject/Custom/CustomCells/FoodSubcategoryHeadCell/FoodSubcategoryHeadView.m index ad678ff..88e0b2d 100644 --- a/PaleoProject/PaleoProject/Custom/CustomCells/FoodSubcategoryHeadCell/FoodSubcategoryHeadView.m +++ b/PaleoProject/PaleoProject/Custom/CustomCells/FoodSubcategoryHeadCell/FoodSubcategoryHeadView.m @@ -9,9 +9,15 @@ #import "FoodSubcategoryHeadView.h" @implementation FoodSubcategoryHeadView +@synthesize headBackgroundImageView; -(void)setTypeName:(NSString*)typeName{ typeLabel.text = typeName; } + +- (void)dealloc { + [headBackgroundImageView release]; + [super dealloc]; +} @end diff --git a/PaleoProject/PaleoProject/Custom/CustomCells/FoodSubcategoryHeadCell/FoodSubcategoryHeadView.xib b/PaleoProject/PaleoProject/Custom/CustomCells/FoodSubcategoryHeadCell/FoodSubcategoryHeadView.xib index f8f069b..3fa2b9e 100644 --- a/PaleoProject/PaleoProject/Custom/CustomCells/FoodSubcategoryHeadCell/FoodSubcategoryHeadView.xib +++ b/PaleoProject/PaleoProject/Custom/CustomCells/FoodSubcategoryHeadCell/FoodSubcategoryHeadView.xib @@ -8,16 +8,16 @@ - + - - + + + diff --git a/PaleoProject/PaleoProject/PaleoFoodManager/PaleoFoodManager.h b/PaleoProject/PaleoProject/PaleoFoodManager/PaleoFoodManager.h index ea663ff..9c1418d 100644 --- a/PaleoProject/PaleoProject/PaleoFoodManager/PaleoFoodManager.h +++ b/PaleoProject/PaleoProject/PaleoFoodManager/PaleoFoodManager.h @@ -29,5 +29,6 @@ -(NSArray *)getFoodListByCategory:(FoodCategoryModel*)categoryModel; -(NSArray*)getFoodTypeListWithFoodList:(NSArray*)list; -(NSDictionary*)getDictionaryWithFoodTypeList:(NSArray*)typeList_ AndFoodList:(NSArray*)foodList; +-(FoodItemModel*)findFoodItemByIndex:(NSIndexPath*)index AtList:(NSArray*)list; @end diff --git a/PaleoProject/PaleoProject/PaleoFoodManager/PaleoFoodManager.m b/PaleoProject/PaleoProject/PaleoFoodManager/PaleoFoodManager.m index 01e8ca4..97b3649 100644 --- a/PaleoProject/PaleoProject/PaleoFoodManager/PaleoFoodManager.m +++ b/PaleoProject/PaleoProject/PaleoFoodManager/PaleoFoodManager.m @@ -72,17 +72,17 @@ -(NSArray *)getFavoriteFoodList{ } -(NSArray *)getFoodWithSearchQuery:(NSString*)query{ + if ([query isEqualToString:@"*"]) { + return [self getAllFoodItens]; + } + query = [[Utils sharedInstance] getSafeLiteralString:query]; - NSEntityDescription *entity = [NSEntityDescription entityForName:EntityFood inManagedObjectContext:context]; - NSFetchRequest *request = [[NSFetchRequest alloc] init]; - request.entity = entity; - NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]; - request.sortDescriptors = [NSArray arrayWithObject:descriptor]; - NSArray *list = [context executeFetchRequest:request error:nil]; NSMutableArray *foundedItens = [[NSMutableArray alloc] init]; NSRange range; + NSArray *list = [self getAllFoodItens]; + for (FoodItemModel *foodItem in list) { NSString *foodName = [[Utils sharedInstance] getSafeLiteralString:foodItem.name]; range = [foodName rangeOfString:query]; @@ -95,6 +95,16 @@ -(NSArray *)getFoodWithSearchQuery:(NSString*)query{ return foundedItens; } +-(NSArray *)getAllFoodItens{ + NSEntityDescription *entity = [NSEntityDescription entityForName:EntityFood inManagedObjectContext:context]; + NSFetchRequest *request = [[NSFetchRequest alloc] init]; + request.entity = entity; + NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]; + request.sortDescriptors = [NSArray arrayWithObject:descriptor]; + NSArray *list = [context executeFetchRequest:request error:nil]; + return list; +} + -(NSArray *)getTypeList{ NSEntityDescription *entity = [NSEntityDescription entityForName:EntityType inManagedObjectContext:context]; NSFetchRequest *request = [[NSFetchRequest alloc] init]; @@ -144,4 +154,13 @@ -(NSArray *)favoriteFoodList{ return [self getFavoriteFoodList]; } +-(FoodItemModel*)findFoodItemByIndex:(NSIndexPath*)index AtList:(NSArray*)list{ + NSArray *type = [self getFoodTypeListWithFoodList:list]; + NSDictionary *dic = [self getDictionaryWithFoodTypeList:type AndFoodList:list]; + NSString *keyDesire = [[dic allKeys] objectAtIndex:index.section]; + FoodItemModel *currentFood = [[dic objectForKey:keyDesire] lastObject]; + + return currentFood; +} + @end diff --git a/PaleoProject/PaleoProject/Utils/Utils.h b/PaleoProject/PaleoProject/Utils/Utils.h index fa8853e..10563e0 100644 --- a/PaleoProject/PaleoProject/Utils/Utils.h +++ b/PaleoProject/PaleoProject/Utils/Utils.h @@ -8,6 +8,9 @@ #import +#define debugAlert(message) \ +[Utils debugAlert:(message)] + @interface Utils : NSObject + (Utils *) sharedInstance; @@ -18,6 +21,8 @@ +(UIInterfaceOrientation)getDeviceOrientation; ++(void)debugAlert:(NSString*)message; + @end @interface NSString (custom) diff --git a/PaleoProject/PaleoProject/Utils/Utils.m b/PaleoProject/PaleoProject/Utils/Utils.m index eb12928..511f1f7 100644 --- a/PaleoProject/PaleoProject/Utils/Utils.m +++ b/PaleoProject/PaleoProject/Utils/Utils.m @@ -65,6 +65,10 @@ +(UIInterfaceOrientation)getDeviceOrientation{ return interfaceOrientation; } ++(void)debugAlert:(NSString*)message{ + [[[[UIAlertView alloc] initWithTitle:@"Debbug" message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil] autorelease]show]; +} + @end @implementation UIView (Additions) diff --git a/PaleoProject/PaleoProject/images/ImagesTest/foodItemTopCellBorder1.png b/PaleoProject/PaleoProject/images/ImagesTest/foodItemTopCellBorder1.png new file mode 100644 index 0000000000000000000000000000000000000000..a3c93b39593a53afc4453bdbcf96854d1aad9f7c GIT binary patch literal 1370 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!EjieLWRIZOOCTj#;u=vBoS#-wo>-L1;Fyx1 zl&avFo0y&&l$w}QS$HzlhJk@uB{L+VB*NFnDmgz_FA=0huOhbqsGEVo#=fE;F*!T6 zL?J0PJu}Z%>HY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C$yM3OmMKd1b_zBXRzL%C zQ%e#RDspr3imfVamB8j&0ofp7eI*63l9Fs&C5WRUd;=7m^NUgyO!bU)lMM_F70k@^ z3{6bU%nWrDj0_Bo^bLT>OxMuF%GAut$Xo#mlz_GsrKDK}xwt{?0`hE?GD=Dctn~HE z%ggo3jrH=2()A53EiFN27#ZmTRp=I1=9MH?=;jqG!%T2VElw`VEGWs$&r<-In3$Ab zT4JjNbScCOxdm`z^NOLt1Pn0!io^naLp=kKmtYEgeeo;J&4sHjE(uCSxEHIz#UYgi zsro^w#rdU0$-sz9QwCX8VC7ttnpl!w6q28x0}I7~jQo=P;*9(P1?ONh1r6WC(sS486?E6e~kV19MADM<6nDGcF)(s< zb~ZFMhv{|6PcF?(%`1WFO+n~&#HkmQ7;+1MHoK%2WtOF;xE1B+Du6w0m5JLe<~YrR z>P^Az77Ltu^?{Dj2SqJXRKtXT=?BDwCtM&0p7c}mfa$#mn6U33@XrM1vNN78jv*Dd z-rU{qB@-xe;NkAa9Ew?@8@$A|I~Qb}U|!Oj>M>nBzYe?{`JWOp_1R$(#Ewy8EY$vG`?ghPykuEclxcboOj{GZvA>_m^nRU#Bh2=+>IR z*u<(3(U8E%AqFHsY=$OQ4l&uRH4H4-AwRxf!6J#Q5Udld30rlTi5q;B94 zLsjAUu}1B!VAItltA3@Zet0nNbo!-P>i@0(s@>hYZ=d-3%Zv42K7F(4yLdp${`=b> z|H|F*r#@*}(b02v_A#~Io$L2xzItij)d%8}zcGtst>V4rzmUo8z{|A^%nXhfZSL}O RO-%%qcAl<&F6*2UngH1%;wu0E literal 0 HcmV?d00001 diff --git a/PaleoProject/PaleoProject/images/ImagesTest/foodItemTopCellBorder2.png b/PaleoProject/PaleoProject/images/ImagesTest/foodItemTopCellBorder2.png new file mode 100644 index 0000000000000000000000000000000000000000..a8daaeb1ad4e7bb2799160d8e8497216ed283295 GIT binary patch literal 1347 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!EjieLWRIZOOCTj#;u=vBoS#-wo>-L1;Fyx1 zl&avFo0y&&l$w}QS$HzlhJk@uB{L+VB*NFnDmgz_FA=0huOhbqsGEVo#=fE;F*!T6 zL?J0PJu}Z%>HY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C$yM3OmMKd1b_zBXRzL%C zQ%e#RDspr3imfVamB8j&0ofp7eI*63l9Fs&C5WRUd;=7m^NUgyO!bU)lMM_F70k@^ z3{6bU%nWrDj0_Bo^bLT>OxMuF%GAut$Xo#mlz_GsrKDK}xwt{?0`hE?GD=Dctn~HE z%ggo3jrH=2()A53EiFN27#ZmTRp=I1=9MH?=;jqG!%T2VElw`VEGWs$&r<-In3$Ab zT4JjNbScCOxdm`z^NOLt1Pn0!io^naLp=kKmtYEgeeo;J&4sHjE(uCSxEHIz#UYgi zsro^w#rdU0$-sz9QwCX8VC7ttnpl!w6q28x0}I7~jQo=P;*9(P1?ONh1r6WC(sS486?E6e~kV19MADM;A*+GdDv+S7S$0S0gtQM-u}h zS7&EKQ*)SJm;B_?+|;}hnBEkGURRuYL5U%^0BEyIYEfocYKmJ?ey#%8(^i?d-QtAP zJgD9j+-`BksaGH97=2LGB1JV!2$+6AOnAZta^OinH4m8Hi+~AR+c`E6n9H_$x;TbZ z+QPhO0RlSGwt)bnbUjSH{R+y zUnn7;bn{$8=MORWjiTB=UkCs6zqsP;Bi`55=Pnt9i63TXP+L9Kx2hv-`Ml}oPal^5 z>6mWD65^&F_w}~Ph5(k;k#c#TS8vR9c1YdxqMqyCwB>GsYvL+bxSR9ka;)faoc!wP z%JA)i4|WRZIBZ~G;TF(gILHKL0|h{AAi=^-q$JB}E<*Y%nxf8yo{RZkC-^yxDa32_ z{S}LR?>@V6`&!-L1;Fyx1 zl&avFo0y&&l$w}QS$HzlhJk@uB{L+VB*NFnDmgz_FA=0huOhbqsGEVo#=fE;F*!T6 zL?J0PJu}Z%>HY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C$yM3OmMKd1b_zBXRzL%C zQ%e#RDspr3imfVamB8j&0ofp7eI*63l9Fs&C5WRUd;=7m^NUgyO!bU)lMM_F70k@^ z3{6bU%nWrDj0_Bo^bLT>OxMuF%GAut$Xo#mlz_GsrKDK}xwt{?0`hE?GD=Dctn~HE z%ggo3jrH=2()A53EiFN27#ZmTRp=I1=9MH?=;jqG!%T2VElw`VEGWs$&r<-In3$Ab zT4JjNbScCOxdm`z^NOLt1Pn0!io^naLp=kKmtYEgeeo;J&4sHjE(uCSxEHIz#UYgi zsro^w#rdU0$-sz9QwCX8VC7ttnpl!w6q28x0}I7~jQo=P;*9(P1?ONh1r6WC(sS486?E6f0v>14|bRQxi)^GdDv+S7S$0S0gtQM-u}h zS7&EKQ*)SJm;B_?+|;}hnBEkGUQ?WUL5U%^0BEyIYEfocYKmJ?ey#%8(^i>S++yfx zU~XyY=!VlgsNNJTZh`1^GQg=c_HbOtX%Z2Y;OSq%ptVrNu6f~SRh>6$ z7A_E7Eb@UzC9LJDLrK~3;=^}SR87LFJ@@Hb8dsY~&wX^>XWPu5*Xz!dojE-tjV-}y z*NpBN{)Y0$;`Wx-EZfsMZ?YlWK{eX$g_rKHUUVKqnW1|!Q)a~t4^)>m1uOCO0YRX252Q*(P zWf#8q>)x@am6m_xmTXCIbIZY=)pz-9fu7JEZhP*3 zrDu}%m22uoat2JkQo1v6r*E^#&n;W6W!CM>zil4Ia^=C@j1rOU>-lXHzZ&j8CA(nS y_5;hG+GVhCRhX=AH=J&Geht%#JLmT^@i3(Ra_X&p_N5zCwt2exxvX