├── .gitattributes ├── README.md ├── BHTabBarDemo ├── bg.jpg ├── BHTabBarDemo │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ └── MainWindow.xib │ ├── main.m │ ├── BHTabBarDemo-Prefix.pch │ ├── BHTabBarDemoAppDelegate.h │ ├── BHTabBarDemoAppDelegate.m │ └── BHTabBarDemo-Info.plist └── BHTabBarDemo.xcodeproj │ └── project.pbxproj ├── Docs ├── screenshot.png ├── tab-analysis.png └── tab-analysis.graffle ├── .gitignore ├── Source ├── BHTabsFooterView.h ├── BHTabsView.h ├── BHTabView.h ├── BHTabsView.m ├── BHTabsViewController.h ├── BHTabsFooterView.m ├── BHTabStyle.h ├── BHTabStyle.m ├── BHTabsViewController.m └── BHTabView.m └── LICENSE /.gitattributes: -------------------------------------------------------------------------------- 1 | *.pbxproj -crlf -diff -merge 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![](https://github.com/fictorial/BHTabBar/raw/master/Docs/screenshot.png) 2 | -------------------------------------------------------------------------------- /BHTabBarDemo/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horatio-sans-serif/BHTabBar/HEAD/BHTabBarDemo/bg.jpg -------------------------------------------------------------------------------- /Docs/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horatio-sans-serif/BHTabBar/HEAD/Docs/screenshot.png -------------------------------------------------------------------------------- /BHTabBarDemo/BHTabBarDemo/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Docs/tab-analysis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/horatio-sans-serif/BHTabBar/HEAD/Docs/tab-analysis.png -------------------------------------------------------------------------------- /BHTabBarDemo/BHTabBarDemo/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | int main(int argc, char *argv[]) { 4 | NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 5 | int retVal = UIApplicationMain(argc, argv, nil, nil); 6 | [pool release]; 7 | return retVal; 8 | } 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | build/* 3 | *.pbxuser 4 | !default.pbxuser 5 | *.mode1v3 6 | !default.mode1v3 7 | *.mode2v3 8 | !default.mode2v3 9 | *.perspectivev3 10 | !default.perspectivev3 11 | *.xcworkspace 12 | !default.xcworkspace 13 | xcuserdata 14 | profile 15 | *.moved-aside 16 | -------------------------------------------------------------------------------- /Source/BHTabsFooterView.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @class BHTabStyle; 4 | 5 | // Adds some space under the tabs so that the tabs don't jut right up atop the content view. 6 | 7 | @interface BHTabsFooterView : UIView 8 | 9 | @property (nonatomic, retain) BHTabStyle *style; 10 | 11 | @end 12 | -------------------------------------------------------------------------------- /Source/BHTabsView.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @class BHTabStyle; 4 | 5 | @interface BHTabsView : UIView { 6 | NSArray *tabViews; 7 | BHTabStyle *style; 8 | } 9 | 10 | @property (nonatomic, retain) NSArray *tabViews; 11 | @property (nonatomic, retain) BHTabStyle *style; 12 | 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /BHTabBarDemo/BHTabBarDemo/BHTabBarDemo-Prefix.pch: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #ifndef __IPHONE_3_0 4 | #warning "This project uses features only available in iPhone SDK 3.0 and later." 5 | #endif 6 | 7 | #ifdef __OBJC__ 8 | #import 9 | #import 10 | #endif 11 | -------------------------------------------------------------------------------- /Source/BHTabView.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @class BHTabView; 4 | @class BHTabStyle; 5 | 6 | @protocol BHTabViewDelegate 7 | - (void)didTapTabView:(BHTabView *)tabView; 8 | @end 9 | 10 | @interface BHTabView : UIView 11 | 12 | @property (nonatomic, retain, readonly) UILabel *titleLabel; 13 | @property (nonatomic, assign) id delegate; 14 | @property (nonatomic, assign) BOOL selected; 15 | @property (nonatomic, retain) BHTabStyle *style; 16 | 17 | - (id)initWithFrame:(CGRect)frame title:(NSString *)title; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /BHTabBarDemo/BHTabBarDemo/BHTabBarDemoAppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @class BHTabsViewController; 4 | 5 | @interface BHTabBarDemoAppDelegate : NSObject { 6 | UIViewController *_vc1; 7 | UIViewController *_vc2; 8 | UIViewController *_vc3; 9 | BHTabsViewController *viewController; 10 | } 11 | 12 | @property (nonatomic, retain) IBOutlet UIWindow *window; 13 | @property (nonatomic, retain) IBOutlet UIViewController *vc1; 14 | @property (nonatomic, retain) IBOutlet UIViewController *vc2; 15 | @property (nonatomic, retain) IBOutlet UIViewController *vc3; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Source/BHTabsView.m: -------------------------------------------------------------------------------- 1 | #import "BHTabsView.h" 2 | #import "BHTabStyle.h" 3 | 4 | @implementation BHTabsView 5 | 6 | @synthesize tabViews; 7 | @synthesize style; 8 | 9 | - (void)layoutSubviews { 10 | NSUInteger N = [self.tabViews count]; 11 | 12 | CGFloat W = self.frame.size.width / N; 13 | NSUInteger overlap = W * self.style.overlapAsPercentageOfTabWidth; 14 | W = (self.frame.size.width + overlap * (N-1)) / N; 15 | 16 | NSUInteger tabIndex = 0; 17 | 18 | for (UIView *tabView in self.tabViews) { 19 | CGRect tabFrame = CGRectMake(tabIndex * W, 20 | self.style.tabsViewHeight - self.style.tabHeight - self.style.tabBarHeight, 21 | W, self.style.tabHeight); 22 | 23 | if (tabIndex > 0) 24 | tabFrame.origin.x -= tabIndex * overlap; 25 | 26 | tabView.frame = tabFrame; 27 | 28 | tabIndex++; 29 | } 30 | } 31 | 32 | - (void)dealloc { 33 | self.tabViews = nil; 34 | self.style = nil; 35 | 36 | [super dealloc]; 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | Copyright (c) 2011 Fictorial LLC. 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy of 5 | this software and associated documentation files (the "Software"), to deal in 6 | the Software without restriction, including without limitation the rights to 7 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 8 | of the Software, and to permit persons to whom the Software is furnished to do 9 | so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in all 12 | copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 20 | SOFTWARE. 21 | -------------------------------------------------------------------------------- /BHTabBarDemo/BHTabBarDemo/BHTabBarDemoAppDelegate.m: -------------------------------------------------------------------------------- 1 | #import "BHTabBarDemoAppDelegate.h" 2 | #import "BHTabsViewController.h" 3 | #import "BHTabStyle.h" 4 | 5 | @implementation BHTabBarDemoAppDelegate 6 | 7 | @synthesize window=_window; 8 | @synthesize vc1 = _vc1; 9 | @synthesize vc2 = _vc2; 10 | @synthesize vc3 = _vc3; 11 | 12 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 13 | NSArray *vcs = [NSArray arrayWithObjects:self.vc1, self.vc2, nil]; 14 | 15 | viewController = [[BHTabsViewController alloc] 16 | initWithViewControllers:vcs 17 | style:[BHTabStyle defaultStyle]]; 18 | 19 | UIImageView *iv = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bg.jpg"]]; 20 | iv.frame = self.window.frame; 21 | [self.window addSubview:iv]; 22 | 23 | [self.window addSubview:viewController.view]; 24 | [self.window makeKeyAndVisible]; 25 | 26 | return YES; 27 | } 28 | 29 | - (void)dealloc { 30 | [viewController release]; 31 | [_vc1 release]; 32 | [_vc2 release]; 33 | [_vc3 release]; 34 | [_window release]; 35 | [super dealloc]; 36 | } 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /Source/BHTabsViewController.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import "BHTabView.h" 3 | 4 | @class BHTabsViewController; 5 | @class BHTabsFooterView; 6 | @class BHTabStyle; 7 | @class BHTabsView; 8 | 9 | @protocol BHTabsViewControllerDelegate 10 | @optional 11 | 12 | - (BOOL)shouldMakeTabCurrentAtIndex:(NSUInteger)index 13 | controller:(UIViewController *)viewController 14 | tabBarController:(BHTabsViewController *)tabBarController; 15 | 16 | - (void)didMakeTabCurrentAtIndex:(NSUInteger)index 17 | controller:(UIViewController *)viewController 18 | tabBarController:(BHTabsViewController *)tabBarController; 19 | 20 | @end 21 | 22 | @interface BHTabsViewController : UIViewController { 23 | NSArray *viewControllers; 24 | UIView *contentView; 25 | BHTabsView *tabsContainerView; 26 | BHTabsFooterView *footerView; 27 | BHTabStyle *tabStyle; 28 | NSUInteger currentTabIndex; 29 | id delegate; 30 | } 31 | 32 | @property (nonatomic, assign) id delegate; 33 | @property (nonatomic, assign, readonly) UIView *contentView; 34 | @property (nonatomic, retain) BHTabStyle *style; 35 | 36 | - (id)initWithViewControllers:(NSArray *)viewControllers 37 | style:(BHTabStyle *)style; 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /BHTabBarDemo/BHTabBarDemo/BHTabBarDemo-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIconFile 12 | 13 | CFBundleIdentifier 14 | com.fictorial.${PRODUCT_NAME:rfc1034identifier} 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | ${PRODUCT_NAME} 19 | CFBundlePackageType 20 | APPL 21 | CFBundleShortVersionString 22 | 1.0 23 | CFBundleSignature 24 | ???? 25 | CFBundleVersion 26 | 1.0 27 | LSRequiresIPhoneOS 28 | 29 | NSMainNibFile 30 | MainWindow 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /Source/BHTabsFooterView.m: -------------------------------------------------------------------------------- 1 | #import "BHTabsFooterView.h" 2 | #import "BHTabStyle.h" 3 | 4 | @implementation BHTabsFooterView 5 | 6 | @synthesize style; 7 | 8 | - (void)drawRect:(CGRect)rect { 9 | CGContextRef context = UIGraphicsGetCurrentContext(); 10 | 11 | // We don't want to see the shadow anywhere but above the top edge. 12 | // But the shadow only looks good when we _fill_ a path so we just 13 | // use a rect whose left/right/bottom aren't visible. 14 | 15 | CGFloat bigValue = 1e6; 16 | 17 | CGRect r = CGRectMake(-bigValue, self.frame.size.height - self.style.tabBarHeight - 0.5, 18 | self.frame.size.width + bigValue, bigValue); 19 | 20 | CGContextSaveGState(context); 21 | CGContextSetShadow(context, CGSizeZero, self.style.shadowRadius); 22 | CGContextSetFillColorWithColor(context, self.style.selectedTabColor.CGColor); 23 | CGContextFillRect(context, r); 24 | CGContextRestoreGState(context); 25 | 26 | CGContextSaveGState(context); 27 | CGContextSetStrokeColorWithColor(context, [UIColor colorWithWhite:0 alpha:0.05].CGColor); 28 | CGContextMoveToPoint(context, 0, self.frame.size.height - 0.5); 29 | CGContextAddLineToPoint(context, self.frame.size.width, self.frame.size.height - 0.5); 30 | CGContextStrokePath(context); 31 | CGContextRestoreGState(context); 32 | } 33 | 34 | - (void)dealloc { 35 | [style release]; 36 | [super dealloc]; 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /Source/BHTabStyle.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface BHTabStyle : NSObject 4 | 5 | // The height in points of the tabs container view. 6 | // The default is 50 points. 7 | 8 | @property (nonatomic, assign) NSUInteger tabsViewHeight; 9 | 10 | // The height of each tab in points. 11 | // The default is 40 points. 12 | 13 | @property (nonatomic, assign) NSUInteger tabHeight; 14 | 15 | // The height of the bar under the tabs. 16 | // The default is 10 points. 17 | 18 | @property (nonatomic, assign) NSUInteger tabBarHeight; 19 | 20 | // What percentage of a tab's width should be used to overlap 21 | // tabs with previous tabs? E.g. 0.2 = 20%. If this is set to 22 | // 0 a tab's left-most point does not overlap with the previous 23 | // tab's right-most point. 24 | 25 | @property (nonatomic, assign) CGFloat overlapAsPercentageOfTabWidth; 26 | 27 | // The radius of the shadow rendered behind and above the tabs. 28 | // The default is 3 points. 29 | 30 | @property (nonatomic, assign) CGFloat shadowRadius; 31 | 32 | @property (nonatomic, retain) UIColor *selectedTabColor; 33 | @property (nonatomic, retain) UIColor *selectedTitleTextColor; 34 | @property (nonatomic, retain) UIFont *selectedTitleFont; 35 | @property (nonatomic, assign) CGSize selectedTitleShadowOffset; 36 | @property (nonatomic, retain) UIColor *selectedTitleShadowColor; 37 | 38 | @property (nonatomic, retain) UIColor *unselectedTabColor; 39 | @property (nonatomic, retain) UIColor *unselectedTitleTextColor; 40 | @property (nonatomic, retain) UIFont *unselectedTitleFont; 41 | @property (nonatomic, assign) CGSize unselectedTitleShadowOffset; 42 | @property (nonatomic, retain) UIColor *unselectedTitleShadowColor; 43 | 44 | + (BHTabStyle *)defaultStyle; 45 | 46 | @end 47 | 48 | -------------------------------------------------------------------------------- /Source/BHTabStyle.m: -------------------------------------------------------------------------------- 1 | #import "BHTabStyle.h" 2 | 3 | @implementation BHTabStyle 4 | 5 | @synthesize tabHeight; 6 | @synthesize tabsViewHeight; 7 | @synthesize tabBarHeight; 8 | @synthesize overlapAsPercentageOfTabWidth; 9 | @synthesize shadowRadius; 10 | @synthesize selectedTabColor; 11 | @synthesize selectedTitleTextColor; 12 | @synthesize selectedTitleFont; 13 | @synthesize selectedTitleShadowColor; 14 | @synthesize selectedTitleShadowOffset; 15 | @synthesize unselectedTabColor; 16 | @synthesize unselectedTitleTextColor; 17 | @synthesize unselectedTitleFont; 18 | @synthesize unselectedTitleShadowColor; 19 | @synthesize unselectedTitleShadowOffset; 20 | 21 | - (id)init { 22 | if ((self = [super init])) { 23 | self.tabsViewHeight = 50; 24 | self.tabHeight = 40; 25 | self.tabBarHeight = 5; 26 | self.overlapAsPercentageOfTabWidth = 0.20; 27 | self.shadowRadius = 3; 28 | 29 | self.selectedTabColor = [UIColor colorWithWhite:220/255.0 alpha:1]; 30 | self.selectedTitleFont = [UIFont boldSystemFontOfSize:14]; 31 | self.selectedTitleTextColor = [UIColor colorWithWhite:80/255.0 alpha:1]; 32 | self.selectedTitleShadowOffset = CGSizeMake(0, 0.5); 33 | self.selectedTitleShadowColor = [UIColor colorWithWhite:1 alpha:0.5]; 34 | 35 | CGFloat unselectedAlpha = 0.7; 36 | self.unselectedTabColor = [self.selectedTabColor colorWithAlphaComponent:unselectedAlpha]; 37 | self.unselectedTitleFont = [UIFont boldSystemFontOfSize:14]; 38 | self.unselectedTitleTextColor = [self.selectedTitleTextColor colorWithAlphaComponent:unselectedAlpha]; 39 | self.unselectedTitleShadowOffset = CGSizeMake(0, 0.5); 40 | self.unselectedTitleShadowColor = [UIColor colorWithWhite:1 alpha:0.5]; 41 | } 42 | 43 | return self; 44 | } 45 | 46 | - (void)setTabHeight:(NSUInteger)newTabHeight { 47 | tabHeight = MIN(tabsViewHeight, newTabHeight); 48 | } 49 | 50 | + (BHTabStyle *)defaultStyle { 51 | return [[[BHTabStyle alloc] init] autorelease]; 52 | } 53 | 54 | @end 55 | -------------------------------------------------------------------------------- /Source/BHTabsViewController.m: -------------------------------------------------------------------------------- 1 | #import "BHTabsViewController.h" 2 | #import "BHTabsFooterView.h" 3 | #import "BHTabStyle.h" 4 | #import "BHTabsView.h" 5 | 6 | enum { kTagTabBase = 100 }; 7 | 8 | @interface BHTabsViewController () 9 | 10 | @property (nonatomic, retain) NSArray *viewControllers; 11 | @property (nonatomic, assign, readwrite) UIView *contentView; 12 | @property (nonatomic, retain) BHTabsView *tabsContainerView; 13 | @property (nonatomic, retain) BHTabsFooterView *footerView; 14 | 15 | @end 16 | 17 | @implementation BHTabsViewController 18 | 19 | @synthesize delegate, style, viewControllers, contentView, 20 | tabsContainerView, footerView; 21 | 22 | - (id)initWithViewControllers:(NSArray *)theViewControllers 23 | style:(BHTabStyle *)theStyle { 24 | 25 | self = [super initWithNibName:nil bundle:nil]; 26 | 27 | if (self) { 28 | self.viewControllers = theViewControllers; 29 | self.style = theStyle; 30 | } 31 | 32 | return self; 33 | } 34 | 35 | - (void)dealloc { 36 | self.style = nil; 37 | self.viewControllers = nil; 38 | self.tabsContainerView = nil; 39 | self.footerView = nil; 40 | 41 | [super dealloc]; 42 | } 43 | 44 | - (void)_reconfigureTabs { 45 | NSUInteger thisIndex = 0; 46 | 47 | for (BHTabView *aTabView in self.tabsContainerView.tabViews) { 48 | aTabView.style = self.style; 49 | 50 | if (thisIndex == currentTabIndex) { 51 | aTabView.selected = YES; 52 | [self.tabsContainerView bringSubviewToFront:aTabView]; 53 | } else { 54 | aTabView.selected = NO; 55 | [self.tabsContainerView sendSubviewToBack:aTabView]; 56 | } 57 | 58 | aTabView.autoresizingMask = UIViewAutoresizingNone; 59 | 60 | [aTabView setNeedsDisplay]; 61 | 62 | ++thisIndex; 63 | } 64 | } 65 | 66 | - (void)_makeTabViewCurrent:(BHTabView *)tabView { 67 | if (!tabView) return; 68 | 69 | currentTabIndex = tabView.tag - kTagTabBase; 70 | 71 | UIViewController *viewController = [self.viewControllers objectAtIndex:currentTabIndex]; 72 | 73 | [self.contentView removeFromSuperview]; 74 | self.contentView = viewController.view; 75 | 76 | self.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight; 77 | self.contentView.frame = CGRectMake(0, self.tabsContainerView.bounds.size.height, self.view.bounds.size.width, self.view.bounds.size.height); 78 | 79 | [self.view addSubview:self.contentView]; 80 | 81 | [self _reconfigureTabs]; 82 | } 83 | 84 | - (void)didTapTabView:(BHTabView *)tappedView { 85 | NSUInteger index = tappedView.tag - kTagTabBase; 86 | NSAssert(index < [self.viewControllers count], @"invalid tapped view"); 87 | 88 | UIViewController *viewController = [self.viewControllers objectAtIndex:index]; 89 | 90 | if ([self.delegate respondsToSelector:@selector(shouldMakeTabCurrentAtIndex:controller:tabBarController:)]) 91 | if (![self.delegate shouldMakeTabCurrentAtIndex:index controller:viewController tabBarController:self]) 92 | return; 93 | 94 | [self _makeTabViewCurrent:tappedView]; 95 | 96 | if ([self.delegate respondsToSelector:@selector(didMakeTabCurrentAtIndex:controller:tabBarController:)]) 97 | [self.delegate didMakeTabCurrentAtIndex:index controller:viewController tabBarController:self]; 98 | } 99 | 100 | - (void)loadView { 101 | CGRect frame = [UIScreen mainScreen].applicationFrame; 102 | UIView *view = [[UIView alloc] initWithFrame:frame]; 103 | self.view = view; 104 | [view release]; 105 | 106 | self.view.backgroundColor = [UIColor clearColor]; 107 | self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth; 108 | 109 | // The view that contains the tab views is located across the top. 110 | 111 | CGRect tabsViewFrame = CGRectMake(0, 0, frame.size.width, self.style.tabsViewHeight); 112 | self.tabsContainerView = [[[BHTabsView alloc] initWithFrame:tabsViewFrame] autorelease]; 113 | self.tabsContainerView.backgroundColor = [UIColor clearColor]; 114 | self.tabsContainerView.autoresizingMask = UIViewAutoresizingFlexibleWidth; 115 | self.tabsContainerView.style = self.style; 116 | [self.view addSubview:tabsContainerView]; 117 | 118 | // Tabs are resized such that all fit in the view's width. 119 | // We position the tab views from left to right, with some overlapping after the first one. 120 | 121 | CGFloat tabWidth = frame.size.width / [self.viewControllers count]; 122 | NSUInteger overlap = tabWidth * self.style.overlapAsPercentageOfTabWidth; 123 | tabWidth = (frame.size.width + overlap * ([self.viewControllers count] - 1)) / [self.viewControllers count]; 124 | 125 | NSMutableArray *allTabViews = [NSMutableArray arrayWithCapacity:[self.viewControllers count]]; 126 | 127 | for (UIViewController *viewController in self.viewControllers) { 128 | NSUInteger tabIndex = [allTabViews count]; 129 | 130 | // The selected tab's bottom-most edge should overlap the top shadow of the tab bar under it. 131 | 132 | CGRect tabFrame = CGRectMake(tabIndex * tabWidth, 133 | self.style.tabsViewHeight - self.style.tabHeight - self.style.tabBarHeight, 134 | tabWidth, 135 | self.style.tabHeight); 136 | 137 | if (tabIndex > 0) 138 | tabFrame.origin.x -= tabIndex * overlap; 139 | 140 | BHTabView *tabView = [[BHTabView alloc] initWithFrame:tabFrame title:viewController.title]; 141 | tabView.tag = kTagTabBase + tabIndex; 142 | tabView.titleLabel.font = self.style.unselectedTitleFont; 143 | tabView.delegate = self; 144 | 145 | [self.tabsContainerView addSubview:tabView]; 146 | [allTabViews addObject:tabView]; 147 | } 148 | 149 | self.tabsContainerView.tabViews = allTabViews; 150 | 151 | CGRect footerFrame = CGRectMake(0, tabsViewFrame.size.height - self.style.tabBarHeight - self.style.shadowRadius, 152 | tabsViewFrame.size.width, 153 | self.style.tabBarHeight + self.style.shadowRadius); 154 | 155 | self.footerView = [[[BHTabsFooterView alloc] initWithFrame:footerFrame] autorelease]; 156 | self.footerView.backgroundColor = [UIColor clearColor]; 157 | self.footerView.style = self.style; 158 | self.footerView.autoresizingMask = UIViewAutoresizingFlexibleWidth; 159 | 160 | [self.tabsContainerView addSubview:footerView]; 161 | [self.tabsContainerView bringSubviewToFront:footerView]; 162 | 163 | [self _makeTabViewCurrent:[self.tabsContainerView.tabViews objectAtIndex:0]]; 164 | } 165 | 166 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 167 | return YES; 168 | } 169 | 170 | @end 171 | -------------------------------------------------------------------------------- /Source/BHTabView.m: -------------------------------------------------------------------------------- 1 | #import "BHTabView.h" 2 | #import "BHTabStyle.h" 3 | 4 | // It's best to reference the visual guide to the path of the tab. 5 | // See the Docs/tab-analysis.png file. 6 | // The view width is divided into 4 horizontal sections. 7 | // Each section is divided by a 20 x 16 grid. 8 | // The control points were visually laid out atop this grid. 9 | 10 | #define kHorizontalSectionCount 4 11 | #define kGridWidthInSection 16 12 | #define kGridHeight 20 13 | #define kTabHeightInGridUnits 17 14 | #define kBottomControlPointDXInGridUnits 8 15 | #define kBottomControlPointDYInGridUnits 1 16 | #define kTopControlPointDXInGridUnits 10 17 | 18 | static inline CGFloat radians(CGFloat degrees) { 19 | return degrees * M_PI/180; 20 | } 21 | 22 | @interface BHTabView () 23 | 24 | @property (nonatomic, retain, readwrite) UILabel *titleLabel; 25 | 26 | - (CGFloat)_sectionWidth; 27 | - (CGSize)_gridSize; 28 | - (CGRect)_tabRect; 29 | - (CGMutablePathRef)_makeTabPath; 30 | 31 | @end 32 | 33 | @implementation BHTabView 34 | 35 | @synthesize titleLabel, delegate, selected, style; 36 | 37 | - (id)initWithFrame:(CGRect)frame title:(NSString *)title { 38 | if ((self = [super initWithFrame:frame])) { 39 | self.userInteractionEnabled = YES; 40 | 41 | self.opaque = NO; 42 | self.backgroundColor = [UIColor clearColor]; 43 | self.style = [BHTabStyle defaultStyle]; 44 | 45 | CGRect labelFrame = [self _tabRect]; 46 | self.titleLabel = [[[UILabel alloc] initWithFrame:labelFrame] autorelease]; 47 | self.titleLabel.text = title; 48 | self.titleLabel.textAlignment = UITextAlignmentCenter; 49 | self.titleLabel.lineBreakMode = UILineBreakModeTailTruncation; 50 | self.titleLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth; 51 | self.titleLabel.backgroundColor = [UIColor clearColor]; 52 | self.titleLabel.textColor = self.style.unselectedTitleTextColor; 53 | self.titleLabel.shadowColor = self.style.unselectedTitleShadowColor; 54 | self.titleLabel.shadowOffset = self.style.unselectedTitleShadowOffset; 55 | [self addSubview:self.titleLabel]; 56 | 57 | [self addGestureRecognizer:[[[UITapGestureRecognizer alloc] 58 | initWithTarget:self 59 | action:@selector(_onTap:)] autorelease]]; 60 | } 61 | 62 | return self; 63 | } 64 | 65 | - (void)_configureTitleLabel { 66 | if (self.selected) { 67 | self.titleLabel.textColor = self.style.selectedTitleTextColor; 68 | self.titleLabel.shadowColor = self.style.selectedTitleShadowColor; 69 | self.titleLabel.shadowOffset = self.style.selectedTitleShadowOffset; 70 | self.titleLabel.font = self.style.selectedTitleFont; 71 | } else { 72 | self.titleLabel.textColor = self.style.unselectedTitleTextColor; 73 | self.titleLabel.shadowColor = self.style.unselectedTitleShadowColor; 74 | self.titleLabel.shadowOffset = self.style.unselectedTitleShadowOffset; 75 | self.titleLabel.font = self.style.unselectedTitleFont; 76 | } 77 | } 78 | 79 | - (void)_onTap:(UIGestureRecognizer *)gesture { 80 | UITapGestureRecognizer *tapGesture = (UITapGestureRecognizer *) gesture; 81 | if (tapGesture.state == UIGestureRecognizerStateEnded) { 82 | if ([self.delegate respondsToSelector:@selector(didTapTabView:)]) { 83 | [self.delegate didTapTabView:self]; 84 | } 85 | } 86 | } 87 | 88 | - (CGFloat)_sectionWidth { 89 | return self.frame.size.width / kHorizontalSectionCount; 90 | } 91 | 92 | - (CGSize)_gridSize { 93 | return CGSizeMake([self _sectionWidth] / kGridWidthInSection, 94 | self.frame.size.height / kGridHeight); 95 | } 96 | 97 | - (CGRect)_tabRect { 98 | CGFloat tabHeight = [self _gridSize].height * kTabHeightInGridUnits; 99 | return CGRectMake(0, self.frame.size.height - tabHeight + 0.5, 100 | self.frame.size.width - 0.5, tabHeight); 101 | } 102 | 103 | - (CGMutablePathRef)_makeTabPath { 104 | CGFloat sectionWidth = [self _sectionWidth]; 105 | CGSize gridSize = [self _gridSize]; 106 | CGRect tabRect = [self _tabRect]; 107 | 108 | CGFloat tabLeft = tabRect.origin.x + 0.5; 109 | CGFloat tabRight = tabRect.origin.x + tabRect.size.width - 0.5; 110 | CGFloat tabTop = tabRect.origin.y + 0.5; 111 | CGFloat tabBottom = tabRect.origin.y + tabRect.size.height - 0.5; 112 | 113 | CGFloat bottomControlPointDX = gridSize.width * kBottomControlPointDXInGridUnits; 114 | CGFloat bottomControlPointDY = gridSize.height * kBottomControlPointDYInGridUnits; 115 | CGFloat topControlPointDX = gridSize.width * kTopControlPointDXInGridUnits; 116 | 117 | CGMutablePathRef path = CGPathCreateMutable(); 118 | 119 | CGPathMoveToPoint(path, NULL, tabLeft, tabBottom); 120 | 121 | CGPathAddCurveToPoint(path, NULL, 122 | bottomControlPointDX, tabBottom - bottomControlPointDY, 123 | sectionWidth - topControlPointDX, tabTop, 124 | sectionWidth, tabTop); 125 | 126 | CGPathAddLineToPoint(path, NULL, tabRight - sectionWidth, tabTop); 127 | 128 | CGPathAddCurveToPoint(path, NULL, 129 | tabRight - sectionWidth + topControlPointDX, tabTop, 130 | tabRight - bottomControlPointDX, tabBottom - bottomControlPointDY, 131 | tabRight, tabBottom); 132 | 133 | return path; 134 | } 135 | 136 | - (void)drawRect:(CGRect)rect { 137 | CGMutablePathRef path = [self _makeTabPath]; 138 | 139 | CGContextRef context = UIGraphicsGetCurrentContext(); 140 | 141 | // Configure a linear gradient which adds a simple white highlight on the top. 142 | 143 | CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 144 | CGFloat locations[] = { 0.0, 0.4 }; 145 | 146 | CGColorRef tabColor = (self.selected 147 | ? self.style.selectedTabColor.CGColor 148 | : self.style.unselectedTabColor.CGColor); 149 | 150 | CGColorRef startColor = [UIColor whiteColor].CGColor; 151 | CGColorRef endColor = tabColor; 152 | NSArray *colors = [NSArray arrayWithObjects:(id)startColor, (id)endColor, nil]; 153 | 154 | CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (CFArrayRef)colors, locations); 155 | 156 | CGRect tabRect = [self _tabRect]; 157 | CGPoint startPoint = CGPointMake(CGRectGetMidX(tabRect), tabRect.origin.y); 158 | CGPoint endPoint = CGPointMake(CGRectGetMidX(tabRect), tabRect.origin.y + tabRect.size.height); 159 | 160 | // Fill with current tab color 161 | 162 | CGContextSaveGState(context); 163 | CGContextAddPath(context, path); 164 | CGContextSetFillColorWithColor(context, tabColor); 165 | CGContextSetShadow(context, CGSizeMake(0, -1), self.style.shadowRadius); 166 | CGContextFillPath(context); 167 | CGContextRestoreGState(context); 168 | 169 | // Render the interior of the tab path using the gradient. 170 | 171 | CGContextSaveGState(context); 172 | CGContextAddPath(context, path); 173 | CGContextClip(context); 174 | CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0); 175 | CGContextRestoreGState(context); 176 | CGGradientRelease(gradient); 177 | CGColorSpaceRelease(colorSpace); 178 | 179 | CFRelease(path); 180 | 181 | [self _configureTitleLabel]; 182 | } 183 | 184 | - (void)setSelected:(BOOL)isSelected { 185 | selected = isSelected; 186 | [self setNeedsDisplay]; 187 | } 188 | 189 | - (void)dealloc { 190 | self.titleLabel = nil; 191 | self.style = nil; 192 | 193 | [super dealloc]; 194 | } 195 | 196 | @end 197 | -------------------------------------------------------------------------------- /BHTabBarDemo/BHTabBarDemo.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 604C22BC13C622D800D39052 /* BHTabsFooterView.m in Sources */ = {isa = PBXBuildFile; fileRef = 604C22BB13C622D800D39052 /* BHTabsFooterView.m */; }; 11 | 605798D213C4C8A800D7494A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 605798D113C4C8A800D7494A /* UIKit.framework */; }; 12 | 605798D413C4C8A800D7494A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 605798D313C4C8A800D7494A /* Foundation.framework */; }; 13 | 605798D613C4C8A800D7494A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 605798D513C4C8A800D7494A /* CoreGraphics.framework */; }; 14 | 605798DC13C4C8A800D7494A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 605798DA13C4C8A800D7494A /* InfoPlist.strings */; }; 15 | 605798DF13C4C8A800D7494A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 605798DE13C4C8A800D7494A /* main.m */; }; 16 | 605798E213C4C8A800D7494A /* BHTabBarDemoAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 605798E113C4C8A800D7494A /* BHTabBarDemoAppDelegate.m */; }; 17 | 605798E513C4C8A800D7494A /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 605798E313C4C8A800D7494A /* MainWindow.xib */; }; 18 | 605798F013C4D40500D7494A /* BHTabsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 605798ED13C4D40500D7494A /* BHTabsViewController.m */; }; 19 | 605798F113C4D40500D7494A /* BHTabView.m in Sources */ = {isa = PBXBuildFile; fileRef = 605798EF13C4D40500D7494A /* BHTabView.m */; }; 20 | 6065447913C6B8CC00A14A88 /* bg.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 6065447813C6B8CC00A14A88 /* bg.jpg */; }; 21 | 6092E07913C64F73004C03ED /* BHTabStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = 6092E07813C64F72004C03ED /* BHTabStyle.m */; }; 22 | 60F48D6B13CC13AC00E42F17 /* BHTabsView.m in Sources */ = {isa = PBXBuildFile; fileRef = 60F48D6A13CC13AC00E42F17 /* BHTabsView.m */; }; 23 | /* End PBXBuildFile section */ 24 | 25 | /* Begin PBXFileReference section */ 26 | 604C22BA13C622D800D39052 /* BHTabsFooterView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BHTabsFooterView.h; sourceTree = ""; }; 27 | 604C22BB13C622D800D39052 /* BHTabsFooterView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BHTabsFooterView.m; sourceTree = ""; }; 28 | 605798CD13C4C8A800D7494A /* BHTabBarDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BHTabBarDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; 29 | 605798D113C4C8A800D7494A /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 30 | 605798D313C4C8A800D7494A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 31 | 605798D513C4C8A800D7494A /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 32 | 605798D913C4C8A800D7494A /* BHTabBarDemo-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "BHTabBarDemo-Info.plist"; sourceTree = ""; }; 33 | 605798DB13C4C8A800D7494A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 34 | 605798DD13C4C8A800D7494A /* BHTabBarDemo-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "BHTabBarDemo-Prefix.pch"; sourceTree = ""; }; 35 | 605798DE13C4C8A800D7494A /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 36 | 605798E013C4C8A800D7494A /* BHTabBarDemoAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BHTabBarDemoAppDelegate.h; sourceTree = ""; }; 37 | 605798E113C4C8A800D7494A /* BHTabBarDemoAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BHTabBarDemoAppDelegate.m; sourceTree = ""; }; 38 | 605798E413C4C8A800D7494A /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainWindow.xib; sourceTree = ""; }; 39 | 605798EC13C4D40500D7494A /* BHTabsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BHTabsViewController.h; sourceTree = ""; }; 40 | 605798ED13C4D40500D7494A /* BHTabsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BHTabsViewController.m; sourceTree = ""; }; 41 | 605798EE13C4D40500D7494A /* BHTabView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BHTabView.h; sourceTree = ""; }; 42 | 605798EF13C4D40500D7494A /* BHTabView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BHTabView.m; sourceTree = ""; }; 43 | 6065447813C6B8CC00A14A88 /* bg.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = bg.jpg; sourceTree = ""; }; 44 | 6092E07713C64F72004C03ED /* BHTabStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BHTabStyle.h; sourceTree = ""; }; 45 | 6092E07813C64F72004C03ED /* BHTabStyle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BHTabStyle.m; sourceTree = ""; }; 46 | 60F48D6913CC13AC00E42F17 /* BHTabsView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BHTabsView.h; sourceTree = ""; }; 47 | 60F48D6A13CC13AC00E42F17 /* BHTabsView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BHTabsView.m; sourceTree = ""; }; 48 | /* End PBXFileReference section */ 49 | 50 | /* Begin PBXFrameworksBuildPhase section */ 51 | 605798CA13C4C8A800D7494A /* Frameworks */ = { 52 | isa = PBXFrameworksBuildPhase; 53 | buildActionMask = 2147483647; 54 | files = ( 55 | 605798D213C4C8A800D7494A /* UIKit.framework in Frameworks */, 56 | 605798D413C4C8A800D7494A /* Foundation.framework in Frameworks */, 57 | 605798D613C4C8A800D7494A /* CoreGraphics.framework in Frameworks */, 58 | ); 59 | runOnlyForDeploymentPostprocessing = 0; 60 | }; 61 | /* End PBXFrameworksBuildPhase section */ 62 | 63 | /* Begin PBXGroup section */ 64 | 605798C213C4C8A800D7494A = { 65 | isa = PBXGroup; 66 | children = ( 67 | 605798EB13C4D40500D7494A /* Source */, 68 | 605798D713C4C8A800D7494A /* BHTabBarDemo */, 69 | 605798D013C4C8A800D7494A /* Frameworks */, 70 | 605798CE13C4C8A800D7494A /* Products */, 71 | 6065447813C6B8CC00A14A88 /* bg.jpg */, 72 | ); 73 | sourceTree = ""; 74 | }; 75 | 605798CE13C4C8A800D7494A /* Products */ = { 76 | isa = PBXGroup; 77 | children = ( 78 | 605798CD13C4C8A800D7494A /* BHTabBarDemo.app */, 79 | ); 80 | name = Products; 81 | sourceTree = ""; 82 | }; 83 | 605798D013C4C8A800D7494A /* Frameworks */ = { 84 | isa = PBXGroup; 85 | children = ( 86 | 605798D113C4C8A800D7494A /* UIKit.framework */, 87 | 605798D313C4C8A800D7494A /* Foundation.framework */, 88 | 605798D513C4C8A800D7494A /* CoreGraphics.framework */, 89 | ); 90 | name = Frameworks; 91 | sourceTree = ""; 92 | }; 93 | 605798D713C4C8A800D7494A /* BHTabBarDemo */ = { 94 | isa = PBXGroup; 95 | children = ( 96 | 605798E013C4C8A800D7494A /* BHTabBarDemoAppDelegate.h */, 97 | 605798E113C4C8A800D7494A /* BHTabBarDemoAppDelegate.m */, 98 | 605798E313C4C8A800D7494A /* MainWindow.xib */, 99 | 605798D813C4C8A800D7494A /* Supporting Files */, 100 | ); 101 | path = BHTabBarDemo; 102 | sourceTree = ""; 103 | }; 104 | 605798D813C4C8A800D7494A /* Supporting Files */ = { 105 | isa = PBXGroup; 106 | children = ( 107 | 605798D913C4C8A800D7494A /* BHTabBarDemo-Info.plist */, 108 | 605798DA13C4C8A800D7494A /* InfoPlist.strings */, 109 | 605798DD13C4C8A800D7494A /* BHTabBarDemo-Prefix.pch */, 110 | 605798DE13C4C8A800D7494A /* main.m */, 111 | ); 112 | name = "Supporting Files"; 113 | sourceTree = ""; 114 | }; 115 | 605798EB13C4D40500D7494A /* Source */ = { 116 | isa = PBXGroup; 117 | children = ( 118 | 605798EC13C4D40500D7494A /* BHTabsViewController.h */, 119 | 605798ED13C4D40500D7494A /* BHTabsViewController.m */, 120 | 605798EE13C4D40500D7494A /* BHTabView.h */, 121 | 605798EF13C4D40500D7494A /* BHTabView.m */, 122 | 604C22BA13C622D800D39052 /* BHTabsFooterView.h */, 123 | 604C22BB13C622D800D39052 /* BHTabsFooterView.m */, 124 | 6092E07713C64F72004C03ED /* BHTabStyle.h */, 125 | 6092E07813C64F72004C03ED /* BHTabStyle.m */, 126 | 60F48D6913CC13AC00E42F17 /* BHTabsView.h */, 127 | 60F48D6A13CC13AC00E42F17 /* BHTabsView.m */, 128 | ); 129 | name = Source; 130 | path = ../Source; 131 | sourceTree = ""; 132 | }; 133 | /* End PBXGroup section */ 134 | 135 | /* Begin PBXNativeTarget section */ 136 | 605798CC13C4C8A800D7494A /* BHTabBarDemo */ = { 137 | isa = PBXNativeTarget; 138 | buildConfigurationList = 605798E813C4C8A800D7494A /* Build configuration list for PBXNativeTarget "BHTabBarDemo" */; 139 | buildPhases = ( 140 | 605798C913C4C8A800D7494A /* Sources */, 141 | 605798CA13C4C8A800D7494A /* Frameworks */, 142 | 605798CB13C4C8A800D7494A /* Resources */, 143 | ); 144 | buildRules = ( 145 | ); 146 | dependencies = ( 147 | ); 148 | name = BHTabBarDemo; 149 | productName = BHTabBarDemo; 150 | productReference = 605798CD13C4C8A800D7494A /* BHTabBarDemo.app */; 151 | productType = "com.apple.product-type.application"; 152 | }; 153 | /* End PBXNativeTarget section */ 154 | 155 | /* Begin PBXProject section */ 156 | 605798C413C4C8A800D7494A /* Project object */ = { 157 | isa = PBXProject; 158 | buildConfigurationList = 605798C713C4C8A800D7494A /* Build configuration list for PBXProject "BHTabBarDemo" */; 159 | compatibilityVersion = "Xcode 3.2"; 160 | developmentRegion = English; 161 | hasScannedForEncodings = 0; 162 | knownRegions = ( 163 | en, 164 | ); 165 | mainGroup = 605798C213C4C8A800D7494A; 166 | productRefGroup = 605798CE13C4C8A800D7494A /* Products */; 167 | projectDirPath = ""; 168 | projectRoot = ""; 169 | targets = ( 170 | 605798CC13C4C8A800D7494A /* BHTabBarDemo */, 171 | ); 172 | }; 173 | /* End PBXProject section */ 174 | 175 | /* Begin PBXResourcesBuildPhase section */ 176 | 605798CB13C4C8A800D7494A /* Resources */ = { 177 | isa = PBXResourcesBuildPhase; 178 | buildActionMask = 2147483647; 179 | files = ( 180 | 605798DC13C4C8A800D7494A /* InfoPlist.strings in Resources */, 181 | 605798E513C4C8A800D7494A /* MainWindow.xib in Resources */, 182 | 6065447913C6B8CC00A14A88 /* bg.jpg in Resources */, 183 | ); 184 | runOnlyForDeploymentPostprocessing = 0; 185 | }; 186 | /* End PBXResourcesBuildPhase section */ 187 | 188 | /* Begin PBXSourcesBuildPhase section */ 189 | 605798C913C4C8A800D7494A /* Sources */ = { 190 | isa = PBXSourcesBuildPhase; 191 | buildActionMask = 2147483647; 192 | files = ( 193 | 605798DF13C4C8A800D7494A /* main.m in Sources */, 194 | 605798E213C4C8A800D7494A /* BHTabBarDemoAppDelegate.m in Sources */, 195 | 605798F013C4D40500D7494A /* BHTabsViewController.m in Sources */, 196 | 605798F113C4D40500D7494A /* BHTabView.m in Sources */, 197 | 604C22BC13C622D800D39052 /* BHTabsFooterView.m in Sources */, 198 | 6092E07913C64F73004C03ED /* BHTabStyle.m in Sources */, 199 | 60F48D6B13CC13AC00E42F17 /* BHTabsView.m in Sources */, 200 | ); 201 | runOnlyForDeploymentPostprocessing = 0; 202 | }; 203 | /* End PBXSourcesBuildPhase section */ 204 | 205 | /* Begin PBXVariantGroup section */ 206 | 605798DA13C4C8A800D7494A /* InfoPlist.strings */ = { 207 | isa = PBXVariantGroup; 208 | children = ( 209 | 605798DB13C4C8A800D7494A /* en */, 210 | ); 211 | name = InfoPlist.strings; 212 | sourceTree = ""; 213 | }; 214 | 605798E313C4C8A800D7494A /* MainWindow.xib */ = { 215 | isa = PBXVariantGroup; 216 | children = ( 217 | 605798E413C4C8A800D7494A /* en */, 218 | ); 219 | name = MainWindow.xib; 220 | sourceTree = ""; 221 | }; 222 | /* End PBXVariantGroup section */ 223 | 224 | /* Begin XCBuildConfiguration section */ 225 | 605798E613C4C8A800D7494A /* Debug */ = { 226 | isa = XCBuildConfiguration; 227 | buildSettings = { 228 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 229 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 230 | GCC_C_LANGUAGE_STANDARD = gnu99; 231 | GCC_OPTIMIZATION_LEVEL = 0; 232 | GCC_PREPROCESSOR_DEFINITIONS = DEBUG; 233 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 234 | GCC_VERSION = com.apple.compilers.llvmgcc42; 235 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 236 | GCC_WARN_UNUSED_VARIABLE = YES; 237 | IPHONEOS_DEPLOYMENT_TARGET = 4.3; 238 | SDKROOT = iphoneos; 239 | }; 240 | name = Debug; 241 | }; 242 | 605798E713C4C8A800D7494A /* Release */ = { 243 | isa = XCBuildConfiguration; 244 | buildSettings = { 245 | ARCHS = "$(ARCHS_STANDARD_32_BIT)"; 246 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 247 | GCC_C_LANGUAGE_STANDARD = gnu99; 248 | GCC_VERSION = com.apple.compilers.llvmgcc42; 249 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 250 | GCC_WARN_UNUSED_VARIABLE = YES; 251 | IPHONEOS_DEPLOYMENT_TARGET = 4.3; 252 | OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; 253 | SDKROOT = iphoneos; 254 | }; 255 | name = Release; 256 | }; 257 | 605798E913C4C8A800D7494A /* Debug */ = { 258 | isa = XCBuildConfiguration; 259 | buildSettings = { 260 | ALWAYS_SEARCH_USER_PATHS = NO; 261 | COPY_PHASE_STRIP = NO; 262 | GCC_DYNAMIC_NO_PIC = NO; 263 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 264 | GCC_PREFIX_HEADER = "BHTabBarDemo/BHTabBarDemo-Prefix.pch"; 265 | INFOPLIST_FILE = "BHTabBarDemo/BHTabBarDemo-Info.plist"; 266 | PRODUCT_NAME = "$(TARGET_NAME)"; 267 | WRAPPER_EXTENSION = app; 268 | }; 269 | name = Debug; 270 | }; 271 | 605798EA13C4C8A800D7494A /* Release */ = { 272 | isa = XCBuildConfiguration; 273 | buildSettings = { 274 | ALWAYS_SEARCH_USER_PATHS = NO; 275 | COPY_PHASE_STRIP = YES; 276 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 277 | GCC_PREFIX_HEADER = "BHTabBarDemo/BHTabBarDemo-Prefix.pch"; 278 | INFOPLIST_FILE = "BHTabBarDemo/BHTabBarDemo-Info.plist"; 279 | PRODUCT_NAME = "$(TARGET_NAME)"; 280 | VALIDATE_PRODUCT = YES; 281 | WRAPPER_EXTENSION = app; 282 | }; 283 | name = Release; 284 | }; 285 | /* End XCBuildConfiguration section */ 286 | 287 | /* Begin XCConfigurationList section */ 288 | 605798C713C4C8A800D7494A /* Build configuration list for PBXProject "BHTabBarDemo" */ = { 289 | isa = XCConfigurationList; 290 | buildConfigurations = ( 291 | 605798E613C4C8A800D7494A /* Debug */, 292 | 605798E713C4C8A800D7494A /* Release */, 293 | ); 294 | defaultConfigurationIsVisible = 0; 295 | defaultConfigurationName = Release; 296 | }; 297 | 605798E813C4C8A800D7494A /* Build configuration list for PBXNativeTarget "BHTabBarDemo" */ = { 298 | isa = XCConfigurationList; 299 | buildConfigurations = ( 300 | 605798E913C4C8A800D7494A /* Debug */, 301 | 605798EA13C4C8A800D7494A /* Release */, 302 | ); 303 | defaultConfigurationIsVisible = 0; 304 | defaultConfigurationName = Release; 305 | }; 306 | /* End XCConfigurationList section */ 307 | }; 308 | rootObject = 605798C413C4C8A800D7494A /* Project object */; 309 | } 310 | -------------------------------------------------------------------------------- /BHTabBarDemo/BHTabBarDemo/en.lproj/MainWindow.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1056 5 | 10K540 6 | 1306 7 | 1038.36 8 | 461.00 9 | 10 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 11 | 301 12 | 13 | 14 | YES 15 | IBUIWindow 16 | IBUICustomObject 17 | IBUIViewController 18 | IBUITextView 19 | IBUILabel 20 | IBProxyObject 21 | 22 | 23 | YES 24 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 25 | 26 | 27 | YES 28 | 29 | YES 30 | 31 | 32 | 33 | 34 | YES 35 | 36 | IBFilesOwner 37 | IBCocoaTouchFramework 38 | 39 | 40 | IBFirstResponder 41 | IBCocoaTouchFramework 42 | 43 | 44 | IBCocoaTouchFramework 45 | 46 | 47 | 48 | 1316 49 | 50 | {320, 480} 51 | 52 | 53 | 54 | 55 | 1 56 | MSAxIDEAA 57 | 58 | NO 59 | NO 60 | 61 | IBCocoaTouchFramework 62 | YES 63 | 64 | 65 | Tab 1 66 | 67 | 68 | 274 69 | {{0, 20}, {320, 300}} 70 | 71 | 72 | 73 | 74 | 2 75 | MC44NjI3NDUxNjU4IDAuODYyNzQ1MTY1OCAwLjg2Mjc0NTE2NTgAA 76 | 77 | YES 78 | YES 79 | IBCocoaTouchFramework 80 | NO 81 | 4oCoQkhUYWJCYXIgZm9yIGlPUzQrCuKAqApUaGlzIGlzIGEgdGFiIGJhciBpbXBsZW1lbnRhdGlvbiBm 82 | b3IgVUlLaXQgdGhhdCByZXNlbWJsZXMgZmFtaWxpYXIgd2ViIGJyb3dzZXIgdGFicyAoKm5vdCogYSBV 83 | SVRhYkJhcikuIFRhYnMgYXJlIHJlbmRlcmVkIG9uIHRvcCBvZiBhIGNvbnRlbnQgdmlldyB3aGljaCBp 84 | cyBkZWZpbmVkIGJ5IHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGFiJ3MgdmlldyBjb250cm9sbGVyLgoK 85 | VGhlIHRhYnMgYXJlIHJlbmRlcmVkIHVzaW5nIENvcmUgR3JhcGhpY3M7IG5vIGltYWdlcyBhcmUgdXNl 86 | ZC4gCuKAqApCcmlhbiBIYW1tb25kIOKAoiBodHRwOi8vZmljdG9yaWFsLmNvbQrigKgKQ29weXJpZ2h0 87 | IChjKSAyMDExIEZpY3RvcmlhbCBMTEMuCkxpY2Vuc2U6IE1JVA 88 | 89 | 3 90 | MC40OTU5Njc3NDE5AA 91 | 92 | 93 | Helvetica-Bold 94 | 13 95 | 16 96 | 97 | 98 | 2 99 | IBCocoaTouchFramework 100 | 101 | 102 | 103 | 104 | 1 105 | 1 106 | 107 | IBCocoaTouchFramework 108 | NO 109 | 110 | 111 | Tab 2 112 | 113 | 114 | 292 115 | {{0, 20}, {320, 460}} 116 | 117 | 118 | 119 | 120 | 1 121 | MC44NjI3NDUwOTggMC44NjI3NDUwOTggMC44NjI3NDUwOTgAA 122 | 123 | YES 124 | 7 125 | NO 126 | IBCocoaTouchFramework 127 | This is the view for the second tab. 128 | 129 | Helvetica 130 | 17 131 | 16 132 | 133 | 134 | 1 135 | MCAwIDAAA 136 | 137 | 138 | 1 139 | 10 140 | 1 141 | 142 | 143 | 144 | 1 145 | 1 146 | 147 | IBCocoaTouchFramework 148 | NO 149 | 150 | 151 | 152 | 153 | YES 154 | 155 | 156 | delegate 157 | 158 | 159 | 160 | 4 161 | 162 | 163 | 164 | window 165 | 166 | 167 | 168 | 5 169 | 170 | 171 | 172 | vc1 173 | 174 | 175 | 176 | 17 177 | 178 | 179 | 180 | vc2 181 | 182 | 183 | 184 | 18 185 | 186 | 187 | 188 | 189 | YES 190 | 191 | 0 192 | 193 | 194 | 195 | 196 | 197 | 2 198 | 199 | 200 | YES 201 | 202 | 203 | 204 | 205 | -1 206 | 207 | 208 | File's Owner 209 | 210 | 211 | 3 212 | 213 | 214 | 215 | 216 | -2 217 | 218 | 219 | 220 | 221 | 11 222 | 223 | 224 | YES 225 | 226 | 227 | 228 | View Controller 229 | 230 | 231 | 13 232 | 233 | 234 | YES 235 | 236 | 237 | 238 | View Controller 239 | 240 | 241 | 14 242 | 243 | 244 | 245 | 246 | 20 247 | 248 | 249 | 250 | 251 | 252 | 253 | YES 254 | 255 | YES 256 | -1.CustomClassName 257 | -2.CustomClassName 258 | 11.IBPluginDependency 259 | 13.IBPluginDependency 260 | 14.IBPluginDependency 261 | 2.IBAttributePlaceholdersKey 262 | 2.IBEditorWindowLastContentRect 263 | 2.IBPluginDependency 264 | 20.IBPluginDependency 265 | 3.CustomClassName 266 | 3.IBPluginDependency 267 | 268 | 269 | YES 270 | UIApplication 271 | UIResponder 272 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 273 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 274 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 275 | 276 | YES 277 | 278 | 279 | 280 | {{198, 376}, {320, 480}} 281 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 282 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 283 | BHTabBarDemoAppDelegate 284 | com.apple.InterfaceBuilder.IBCocoaTouchPlugin 285 | 286 | 287 | 288 | YES 289 | 290 | 291 | 292 | 293 | 294 | YES 295 | 296 | 297 | 298 | 299 | 20 300 | 301 | 302 | 303 | YES 304 | 305 | BHTabBarDemoAppDelegate 306 | NSObject 307 | 308 | YES 309 | 310 | YES 311 | vc1 312 | vc2 313 | vc3 314 | window 315 | 316 | 317 | YES 318 | UIViewController 319 | UIViewController 320 | UIViewController 321 | UIWindow 322 | 323 | 324 | 325 | YES 326 | 327 | YES 328 | vc1 329 | vc2 330 | vc3 331 | window 332 | 333 | 334 | YES 335 | 336 | vc1 337 | UIViewController 338 | 339 | 340 | vc2 341 | UIViewController 342 | 343 | 344 | vc3 345 | UIViewController 346 | 347 | 348 | window 349 | UIWindow 350 | 351 | 352 | 353 | 354 | IBProjectSource 355 | ./Classes/BHTabBarDemoAppDelegate.h 356 | 357 | 358 | 359 | 360 | 0 361 | IBCocoaTouchFramework 362 | 363 | com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 364 | 365 | 366 | YES 367 | 3 368 | 301 369 | 370 | 371 | -------------------------------------------------------------------------------- /Docs/tab-analysis.graffle: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ActiveLayerIndex 6 | 0 7 | ApplicationVersion 8 | 9 | com.omnigroup.OmniGraffle 10 | 138.17.0.133677 11 | 12 | AutoAdjust 13 | 14 | BackgroundGraphic 15 | 16 | Bounds 17 | {{0, 0}, {288, 288}} 18 | Class 19 | SolidGraphic 20 | ID 21 | 2 22 | Style 23 | 24 | shadow 25 | 26 | Draws 27 | NO 28 | 29 | stroke 30 | 31 | Draws 32 | NO 33 | 34 | 35 | 36 | CanvasOrigin 37 | {0, 0} 38 | CanvasSize 39 | {288, 288} 40 | ColumnAlign 41 | 1 42 | ColumnSpacing 43 | 36 44 | CreationDate 45 | 2011-07-07 10:57:40 -0400 46 | Creator 47 | Brian Hammond 48 | DisplayScale 49 | 1 0/72 in = 1.0000 in 50 | GraphDocumentVersion 51 | 6 52 | GraphicsList 53 | 54 | 55 | AllowConnections 56 | NO 57 | Bounds 58 | {{23.4995, 139.5}, {242.001, 91.1765}} 59 | Class 60 | ShapedGraphic 61 | FontInfo 62 | 63 | Font 64 | Helvetica 65 | Size 66 | 9 67 | 68 | ID 69 | 34 70 | Shape 71 | Rectangle 72 | Style 73 | 74 | fill 75 | 76 | Draws 77 | NO 78 | 79 | shadow 80 | 81 | Draws 82 | NO 83 | 84 | 85 | 86 | 87 | Bounds 88 | {{23.5003, 175.016}, {242, 14.9538}} 89 | Class 90 | ShapedGraphic 91 | FontInfo 92 | 93 | Font 94 | Helvetica 95 | Size 96 | 9 97 | 98 | ID 99 | 44 100 | Shape 101 | Rectangle 102 | Style 103 | 104 | fill 105 | 106 | Color 107 | 108 | b 109 | 0.240829 110 | g 111 | 0.820138 112 | r 113 | 1 114 | 115 | 116 | shadow 117 | 118 | Draws 119 | NO 120 | 121 | stroke 122 | 123 | Draws 124 | NO 125 | 126 | 127 | Text 128 | 129 | Text 130 | {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 131 | {\fonttbl\f0\fswiss\fcharset0 Helvetica;} 132 | {\colortbl;\red255\green255\blue255;} 133 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural 134 | 135 | \f0\fs18 \cf0 BHTabsFooterView} 136 | 137 | 138 | 139 | Bounds 140 | {{89.723, 230.676}, {108.554, 14.9538}} 141 | Class 142 | ShapedGraphic 143 | FontInfo 144 | 145 | Font 146 | Helvetica 147 | Size 148 | 9 149 | 150 | ID 151 | 40 152 | Shape 153 | Rectangle 154 | Style 155 | 156 | fill 157 | 158 | Draws 159 | NO 160 | 161 | shadow 162 | 163 | Draws 164 | NO 165 | 166 | stroke 167 | 168 | CornerRadius 169 | 3 170 | Draws 171 | NO 172 | 173 | 174 | Text 175 | 176 | Text 177 | {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 178 | {\fonttbl\f0\fswiss\fcharset0 Helvetica;} 179 | {\colortbl;\red255\green255\blue255;} 180 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural 181 | 182 | \f0\fs18 \cf0 BHTabBarViewController.view} 183 | 184 | Wrap 185 | NO 186 | 187 | 188 | Bounds 189 | {{23.4995, 189}, {242, 41.6765}} 190 | Class 191 | ShapedGraphic 192 | FontInfo 193 | 194 | Font 195 | Helvetica 196 | Size 197 | 9 198 | 199 | ID 200 | 39 201 | Shape 202 | Rectangle 203 | Style 204 | 205 | fill 206 | 207 | Color 208 | 209 | b 210 | 0.996221 211 | g 212 | 0.911595 213 | r 214 | 0.785394 215 | 216 | 217 | shadow 218 | 219 | Draws 220 | NO 221 | 222 | stroke 223 | 224 | Draws 225 | NO 226 | 227 | 228 | Text 229 | 230 | Text 231 | {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 232 | {\fonttbl\f0\fswiss\fcharset0 Helvetica;} 233 | {\colortbl;\red255\green255\blue255;} 234 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural 235 | 236 | \f0\fs18 \cf0 contentView\ 237 | (UIViewController.view of tab # 1)} 238 | 239 | 240 | 241 | Bounds 242 | {{205, 161.438}, {60.5, 18.0769}} 243 | Class 244 | ShapedGraphic 245 | FontInfo 246 | 247 | Font 248 | Helvetica 249 | Size 250 | 9 251 | 252 | ID 253 | 12 254 | Shape 255 | Rectangle 256 | Style 257 | 258 | fill 259 | 260 | Color 261 | 262 | a 263 | 0.43 264 | b 265 | 0.446644 266 | g 267 | 0.920134 268 | r 269 | 1 270 | 271 | Draws 272 | NO 273 | 274 | shadow 275 | 276 | Draws 277 | NO 278 | 279 | stroke 280 | 281 | CornerRadius 282 | 5 283 | Width 284 | 0.5 285 | 286 | 287 | Text 288 | 289 | Pad 290 | 0 291 | Text 292 | {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 293 | {\fonttbl\f0\fswiss\fcharset0 Helvetica;} 294 | {\colortbl;\red255\green255\blue255;} 295 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural 296 | 297 | \f0\fs18 \cf0 BHTabView} 298 | VerticalPad 299 | 0 300 | 301 | TextPlacement 302 | 0 303 | 304 | 305 | Bounds 306 | {{144.5, 161.438}, {60.5, 18.0769}} 307 | Class 308 | ShapedGraphic 309 | FontInfo 310 | 311 | Font 312 | Helvetica 313 | Size 314 | 9 315 | 316 | ID 317 | 38 318 | Shape 319 | Rectangle 320 | Style 321 | 322 | fill 323 | 324 | Color 325 | 326 | a 327 | 0.43 328 | b 329 | 0.446644 330 | g 331 | 0.920134 332 | r 333 | 1 334 | 335 | Draws 336 | NO 337 | 338 | shadow 339 | 340 | Draws 341 | NO 342 | 343 | stroke 344 | 345 | CornerRadius 346 | 5 347 | Width 348 | 0.5 349 | 350 | 351 | Text 352 | 353 | Pad 354 | 0 355 | Text 356 | {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 357 | {\fonttbl\f0\fswiss\fcharset0 Helvetica;} 358 | {\colortbl;\red255\green255\blue255;} 359 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural 360 | 361 | \f0\fs18 \cf0 BHTabView} 362 | VerticalPad 363 | 0 364 | 365 | TextPlacement 366 | 0 367 | 368 | 369 | Bounds 370 | {{83.9998, 161.438}, {60.5, 18.0769}} 371 | Class 372 | ShapedGraphic 373 | FontInfo 374 | 375 | Font 376 | Helvetica 377 | Size 378 | 9 379 | 380 | ID 381 | 37 382 | Shape 383 | Rectangle 384 | Style 385 | 386 | fill 387 | 388 | Color 389 | 390 | a 391 | 0.43 392 | b 393 | 0.446644 394 | g 395 | 0.920134 396 | r 397 | 1 398 | 399 | Draws 400 | NO 401 | 402 | shadow 403 | 404 | Draws 405 | NO 406 | 407 | stroke 408 | 409 | CornerRadius 410 | 5 411 | Width 412 | 0.5 413 | 414 | 415 | Text 416 | 417 | Pad 418 | 0 419 | Text 420 | {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 421 | {\fonttbl\f0\fswiss\fcharset0 Helvetica;} 422 | {\colortbl;\red255\green255\blue255;} 423 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural 424 | 425 | \f0\fs18 \cf0 BHTabView} 426 | VerticalPad 427 | 0 428 | 429 | TextPlacement 430 | 0 431 | 432 | 433 | Bounds 434 | {{23.4996, 161.438}, {60.5, 18.0769}} 435 | Class 436 | ShapedGraphic 437 | FontInfo 438 | 439 | Font 440 | Helvetica 441 | Size 442 | 9 443 | 444 | ID 445 | 36 446 | Shape 447 | Rectangle 448 | Style 449 | 450 | fill 451 | 452 | Color 453 | 454 | b 455 | 0.240829 456 | g 457 | 0.820138 458 | r 459 | 1 460 | 461 | 462 | shadow 463 | 464 | Draws 465 | NO 466 | 467 | stroke 468 | 469 | CornerRadius 470 | 5 471 | Width 472 | 0.5 473 | 474 | 475 | Text 476 | 477 | Pad 478 | 0 479 | Text 480 | {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 481 | {\fonttbl\f0\fswiss\fcharset0 Helvetica;} 482 | {\colortbl;\red255\green255\blue255;} 483 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural 484 | 485 | \f0\fs18 \cf0 BHTabView} 486 | VerticalPad 487 | 0 488 | 489 | TextPlacement 490 | 0 491 | 492 | 493 | AllowConnections 494 | NO 495 | AllowLabelDrop 496 | 497 | AllowToConnect 498 | 499 | Class 500 | LineGraphic 501 | FontInfo 502 | 503 | Font 504 | Helvetica 505 | Size 506 | 9 507 | 508 | ID 509 | 48 510 | Points 511 | 512 | {144, 27} 513 | {144, 117} 514 | 515 | Style 516 | 517 | stroke 518 | 519 | Color 520 | 521 | b 522 | 0.31282 523 | g 524 | 0.31282 525 | r 526 | 0.31282 527 | 528 | HeadArrow 529 | 0 530 | HeadScale 531 | 0.80000001192092896 532 | Pattern 533 | 2 534 | TailArrow 535 | 0 536 | TailScale 537 | 0.80000001192092896 538 | 539 | 540 | 541 | 542 | AllowConnections 543 | NO 544 | AllowLabelDrop 545 | 546 | AllowToConnect 547 | 548 | Class 549 | LineGraphic 550 | FontInfo 551 | 552 | Font 553 | Helvetica 554 | Size 555 | 9 556 | 557 | ID 558 | 47 559 | Points 560 | 561 | {211.5, 27} 562 | {211.5, 117} 563 | 564 | Style 565 | 566 | stroke 567 | 568 | Color 569 | 570 | b 571 | 0.31282 572 | g 573 | 0.31282 574 | r 575 | 0.31282 576 | 577 | HeadArrow 578 | 0 579 | HeadScale 580 | 0.80000001192092896 581 | Pattern 582 | 2 583 | TailArrow 584 | 0 585 | TailScale 586 | 0.80000001192092896 587 | 588 | 589 | 590 | 591 | AllowConnections 592 | NO 593 | AllowLabelDrop 594 | 595 | AllowToConnect 596 | 597 | Class 598 | LineGraphic 599 | FontInfo 600 | 601 | Font 602 | Helvetica 603 | Size 604 | 9 605 | 606 | ID 607 | 52 608 | Points 609 | 610 | {76.5, 27} 611 | {76.5, 117} 612 | 613 | Style 614 | 615 | stroke 616 | 617 | Color 618 | 619 | b 620 | 0.31282 621 | g 622 | 0.31282 623 | r 624 | 0.31282 625 | 626 | HeadArrow 627 | 0 628 | HeadScale 629 | 0.80000001192092896 630 | Pattern 631 | 2 632 | TailArrow 633 | 0 634 | TailScale 635 | 0.80000001192092896 636 | 637 | 638 | 639 | 640 | Class 641 | LineGraphic 642 | FontInfo 643 | 644 | Font 645 | Helvetica 646 | Size 647 | 9 648 | 649 | ID 650 | 51 651 | Points 652 | 653 | {76.5, 45} 654 | {211.5, 45} 655 | 656 | Style 657 | 658 | stroke 659 | 660 | Color 661 | 662 | b 663 | 0.31282 664 | g 665 | 0.31282 666 | r 667 | 0.31282 668 | 669 | HeadArrow 670 | 0 671 | HeadScale 672 | 0.80000001192092896 673 | TailArrow 674 | 0 675 | TailScale 676 | 0.80000001192092896 677 | 678 | 679 | 680 | 681 | Class 682 | LineGraphic 683 | FontInfo 684 | 685 | Font 686 | Helvetica 687 | Size 688 | 9 689 | 690 | ID 691 | 45 692 | Points 693 | 694 | {4.5, 112.5} 695 | {283.5, 112.5} 696 | 697 | Style 698 | 699 | stroke 700 | 701 | Color 702 | 703 | b 704 | 0.31282 705 | g 706 | 0.31282 707 | r 708 | 0.31282 709 | 710 | HeadArrow 711 | 0 712 | HeadScale 713 | 0.80000001192092896 714 | TailArrow 715 | 0 716 | TailScale 717 | 0.80000001192092896 718 | 719 | 720 | 721 | 722 | AllowConnections 723 | NO 724 | AllowLabelDrop 725 | 726 | AllowToConnect 727 | 728 | Class 729 | LineGraphic 730 | ControlPoints 731 | 732 | {45, -0.203004} 733 | {-36, -4.5} 734 | 735 | FontInfo 736 | 737 | Font 738 | Helvetica 739 | Size 740 | 9 741 | 742 | ID 743 | 46 744 | Points 745 | 746 | {211.5, 45} 747 | {283.5, 112.5} 748 | 749 | Style 750 | 751 | stroke 752 | 753 | Bezier 754 | 755 | Color 756 | 757 | b 758 | 0.31282 759 | g 760 | 0.31282 761 | r 762 | 0.31282 763 | 764 | HeadArrow 765 | 0 766 | HeadScale 767 | 0.80000001192092896 768 | LineType 769 | 1 770 | TailArrow 771 | 0 772 | TailScale 773 | 0.80000001192092896 774 | 775 | 776 | 777 | 778 | AllowConnections 779 | NO 780 | AllowLabelDrop 781 | 782 | AllowToConnect 783 | 784 | Class 785 | LineGraphic 786 | ControlPoints 787 | 788 | {-45, -0.20302} 789 | {36, -4.5} 790 | 791 | FontInfo 792 | 793 | Font 794 | Helvetica 795 | Size 796 | 9 797 | 798 | ID 799 | 49 800 | Points 801 | 802 | {76.5, 45} 803 | {4.5, 112.5} 804 | 805 | Style 806 | 807 | stroke 808 | 809 | Bezier 810 | 811 | Color 812 | 813 | b 814 | 0.31282 815 | g 816 | 0.31282 817 | r 818 | 0.31282 819 | 820 | HeadArrow 821 | 0 822 | HeadScale 823 | 0.80000001192092896 824 | LineType 825 | 1 826 | TailArrow 827 | 0 828 | TailScale 829 | 0.80000001192092896 830 | 831 | 832 | 833 | 834 | Bounds 835 | {{76.5, 45}, {135, 55}} 836 | Class 837 | ShapedGraphic 838 | FitText 839 | Vertical 840 | Flow 841 | Resize 842 | FontInfo 843 | 844 | Color 845 | 846 | w 847 | 0 848 | 849 | Font 850 | Helvetica 851 | Size 852 | 9 853 | 854 | ID 855 | 50 856 | Shape 857 | Rectangle 858 | Style 859 | 860 | fill 861 | 862 | Color 863 | 864 | a 865 | 0.63 866 | b 867 | 1 868 | g 869 | 1 870 | r 871 | 1 872 | 873 | Draws 874 | NO 875 | 876 | shadow 877 | 878 | Draws 879 | NO 880 | 881 | stroke 882 | 883 | Draws 884 | NO 885 | 886 | 887 | Text 888 | 889 | Pad 890 | 0 891 | Text 892 | {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 893 | {\fonttbl\f0\fswiss\fcharset0 Helvetica;} 894 | {\colortbl;\red255\green255\blue255;} 895 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural 896 | 897 | \f0\fs18 \cf0 \ 898 | \ 899 | Tab Title\ 900 | \ 901 | } 902 | VerticalPad 903 | 0 904 | 905 | 906 | 907 | AllowConnections 908 | NO 909 | Bounds 910 | {{4.5, 27}, {279, 85.5}} 911 | Class 912 | ShapedGraphic 913 | FontInfo 914 | 915 | Font 916 | Helvetica 917 | Size 918 | 9 919 | 920 | ID 921 | 53 922 | Shape 923 | Rectangle 924 | Style 925 | 926 | fill 927 | 928 | Color 929 | 930 | a 931 | 0.61 932 | b 933 | 0.245473 934 | g 935 | 0.996221 936 | r 937 | 0.833816 938 | 939 | 940 | shadow 941 | 942 | Draws 943 | NO 944 | 945 | stroke 946 | 947 | Color 948 | 949 | b 950 | 0.31282 951 | g 952 | 0.31282 953 | r 954 | 0.31282 955 | 956 | 957 | 958 | 959 | 960 | Bounds 961 | {{23.4995, 139.5}, {242, 35.5158}} 962 | Class 963 | ShapedGraphic 964 | FontInfo 965 | 966 | Font 967 | Helvetica 968 | Size 969 | 9 970 | 971 | ID 972 | 35 973 | Shape 974 | Rectangle 975 | Style 976 | 977 | fill 978 | 979 | Color 980 | 981 | a 982 | 0.59 983 | b 984 | 0.352409 985 | g 986 | 0.851282 987 | r 988 | 0.747563 989 | 990 | 991 | shadow 992 | 993 | Draws 994 | NO 995 | 996 | stroke 997 | 998 | Draws 999 | NO 1000 | 1001 | 1002 | Text 1003 | 1004 | Text 1005 | {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 1006 | {\fonttbl\f0\fswiss\fcharset0 Helvetica;} 1007 | {\colortbl;\red255\green255\blue255;} 1008 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural 1009 | 1010 | \f0\fs18 \cf0 tabs view} 1011 | 1012 | TextPlacement 1013 | 0 1014 | 1015 | 1016 | GridInfo 1017 | 1018 | GridInFront 1019 | YES 1020 | GridSpacing 1021 | 4.5 1022 | MajorGridColor 1023 | 1024 | a 1025 | 0 1026 | w 1027 | 0.5 1028 | 1029 | MajorGridSpacing 1030 | 16 1031 | MinorGridColor 1032 | 1033 | a 1034 | 0.07 1035 | b 1036 | 0.232906 1037 | g 1038 | 0.22977 1039 | r 1040 | 0.13049 1041 | 1042 | PrintsGrid 1043 | YES 1044 | ShowsGrid 1045 | YES 1046 | SnapsToGrid 1047 | YES 1048 | 1049 | GuidesLocked 1050 | NO 1051 | GuidesVisible 1052 | YES 1053 | HPages 1054 | 1 1055 | ImageCounter 1056 | 2 1057 | KeepToScale 1058 | 1059 | Layers 1060 | 1061 | 1062 | Lock 1063 | NO 1064 | Name 1065 | Layer 1 1066 | Print 1067 | YES 1068 | View 1069 | YES 1070 | 1071 | 1072 | LayoutInfo 1073 | 1074 | Animate 1075 | NO 1076 | circoMinDist 1077 | 18 1078 | circoSeparation 1079 | 0.0 1080 | layoutEngine 1081 | dot 1082 | neatoSeparation 1083 | 0.0 1084 | twopiSeparation 1085 | 0.0 1086 | 1087 | LinksVisible 1088 | NO 1089 | MagnetsVisible 1090 | NO 1091 | MasterSheets 1092 | 1093 | ModificationDate 1094 | 2011-07-08 01:29:56 -0400 1095 | Modifier 1096 | Brian Hammond 1097 | NotesVisible 1098 | NO 1099 | Orientation 1100 | 2 1101 | OriginVisible 1102 | NO 1103 | PageBreaks 1104 | YES 1105 | PrintInfo 1106 | 1107 | NSBottomMargin 1108 | 1109 | float 1110 | 41 1111 | 1112 | NSLeftMargin 1113 | 1114 | float 1115 | 18 1116 | 1117 | NSPaperSize 1118 | 1119 | size 1120 | {612, 792} 1121 | 1122 | NSRightMargin 1123 | 1124 | float 1125 | 18 1126 | 1127 | NSTopMargin 1128 | 1129 | float 1130 | 18 1131 | 1132 | 1133 | PrintOnePage 1134 | 1135 | QuickLookPreview 1136 | 1137 | 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 1201 | 3eUc7fkPTVwSt2pG10RyoD0vcQs0SWjdQR0t2dGe/+B2ydC7vGStG1GlvUB6u0S0bstG 1202 | LdGYVVwT6oKQNLsjm89VngtpvheSZnFk84kuAESa0BGpK4QhJdrsSn4hbR4hmzPUiHCk 1203 | 6FEweNYTqSuPcUo0pAokcrogZEs/NUyE7DzJgWwe0BXNOCUapyd4n1wgp7o5jmy214WQ 1204 | s7tApK6UhpRonJ7YeGwnopA0w4MKLPWiHGkGB7JZXldg45RoSE/oPrlwB4OpO+ZIqxmY 1205 | N7pwU08XOLuu745s3vRE7jsXiFQXz5ASbXZPYjy2eYRs3lS3QchOyczZXSBS3UbjlGic 1206 | nrx4bDWJkM2b7I541HviAtm8qa6ocUo0Tk9aJFOzvFo4ZnmJjuRM1NMzl7O32qPtcF53 1207 | qJ9re3hLoZZB4cbmxZY+zd5qMHNOF+7S287/E5ya0Naonp7SqFZ80+uPtg5tOxf0sQYN 1208 | 0vqJ110V/caNf2FZyjI0nKiLyVMuDwwZu0ZYMdtKMRRau0L5Uinma/PI8BSgNnGcweO6 1209 | qpoztWcYuG0fsWscbR8fdygW2Byavvk/e0TfggplbmRzdHJlYW0KZW5kb2JqCjYgMCBv 1210 | YmoKMzYyMgplbmRvYmoKMyAwIG9iago8PCAvVHlwZSAvUGFnZSAvUGFyZW50IDQgMCBS 1211 | IC9SZXNvdXJjZXMgNyAwIFIgL0NvbnRlbnRzIDUgMCBSIC9NZWRpYUJveCBbMCAwIDI4 1212 | OCAyODhdCj4+CmVuZG9iago3IDAgb2JqCjw8IC9Qcm9jU2V0IFsgL1BERiAvVGV4dCBd 1213 | IC9Db2xvclNwYWNlIDw8IC9DczIgOSAwIFIgL0NzMSA4IDAgUiA+PiAvRXh0R1N0YXRl 1214 | Cjw8IC9HczQgMTEgMCBSIC9HczUgMTIgMCBSIC9HczEgMTMgMCBSIC9HczIgMTQgMCBS 1215 | IC9HczMgMTUgMCBSID4+IC9Gb250IDw8Ci9GMS4wIDEwIDAgUiA+PiA+PgplbmRvYmoK 1216 | MTEgMCBvYmoKPDwgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMC4wNyA+PgplbmRvYmoKMTIg 1217 | MCBvYmoKPDwgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMCA+PgplbmRvYmoKMTMgMCBvYmoK 1218 | PDwgL1R5cGUgL0V4dEdTdGF0ZSAvY2EgMC41OSA+PgplbmRvYmoKMTQgMCBvYmoKPDwg 1219 | L1R5cGUgL0V4dEdTdGF0ZSAvY2EgMSA+PgplbmRvYmoKMTUgMCBvYmoKPDwgL1R5cGUg 1220 | L0V4dEdTdGF0ZSAvY2EgMC42MSA+PgplbmRvYmoKMTYgMCBvYmoKPDwgL0xlbmd0aCAx 1221 | NyAwIFIgL04gMSAvQWx0ZXJuYXRlIC9EZXZpY2VHcmF5IC9GaWx0ZXIgL0ZsYXRlRGVj 1222 | b2RlID4+CnN0cmVhbQp4AYVST0gUURz+zTYShIhBhXiIdwoJlSmsrKDadnVZlW1bldKi 1223 | GGffuqOzM9Ob2TXFkwRdojx1D6JjdOzQoZuXosCsS9cgqSAIPHXo+83s6iiEb3k73/v9 1224 | /X7fe0RtnabvOylBVHNDlSulp25OTYuDHylFHdROWKYV+OlicYyx67mSv7vX1mfS2LLe 1225 | x7V2+/Y9tZVlYCHqLba3EPohkWYAH5mfKGWAs8Adlq/YPgE8WA6sGvAjogMPmrkw09Gc 1226 | dKWyLZFT5qIoKq9iO0mu+/m5xr6LtYmD/lyPZtaOvbPqqtFM1LT3RKG8D65EGc9fVPZs 1227 | NRSnDeOcSEMaKfKu1d8rTMcRkSsQSgZSNWS5n2pOnXXgdRi7XbqT4/j2EKU+yWCoibXp 1228 | spkdhX0AdirL7BDwBejxsmIP54F7Yf9bUcOTwCdhP2SHedatH/YXrlPge4Q9NeDOFK7F 1229 | 8dqKH14tAUP3VCNojHNNxNPXOXOkiO8x1BmY90Y5pgsxd5aqEzeAO2EfWapmCrFd+67q 1230 | Je57AnfT4zvRmzkLXKAcSXKxFdkU0DwJWBR9i7BJDjw+zh5V4HeomMAcuYnczSj3HtUR 1231 | G2ejUoFWeo1Xxk/jufHF+GVsGM+Afqx213t8/+njFXXXtj48+Y163DmuvZ0bVWFWcWUL 1232 | 3f/HMoSP2Sc5psHToVlYa9h25A+azEywDCjEfwU+l/qSE1Xc1e7tuEUSzFA+LGwluktU 1233 | binU6j2DSqwcK9gAdnCSxCxaHLhTa7o5eHfYInpt+U1XsuuG/vr2evva8h5tyqgpKBPN 1234 | s0RmlLFbo+TdeNv9ZpERnzg6vue9ilrJ/klFED+FOVoq8hRV9FZQ1sRvZw5+G7Z+XD+l 1235 | 5/VB/TwJPa2f0a/ooxG+DHRJz8JzUR+jSfCwaSHiEqCKgzPUTlRjjQPiKfHytFtkkf0P 1236 | QBn9ZgplbmRzdHJlYW0KZW5kb2JqCjE3IDAgb2JqCjcwNAplbmRvYmoKOSAwIG9iagpb 1237 | IC9JQ0NCYXNlZCAxNiAwIFIgXQplbmRvYmoKMTggMCBvYmoKPDwgL0xlbmd0aCAxOSAw 1238 | IFIgL04gMyAvQWx0ZXJuYXRlIC9EZXZpY2VSR0IgL0ZpbHRlciAvRmxhdGVEZWNvZGUg 1239 | Pj4Kc3RyZWFtCngBhVTPaxNBFP42bqnQIghaaw6yeJAiSVmraEXUNv0RYmsM2x+2RZBk 1240 | M0nWbjbr7ia1pYjk4tEq3kXtoQf/gB568GQvSoVaRSjeqyhioRct8c1uTLal6sDOfvPe 1241 | N+99b3bfAA1y0jT1gATkDcdSohFpbHxCavyIAI6iCUE0JVXb7E4kBkGDc/l759h6D4Fb 1242 | VsN7+3eyd62a0raaB4T9QOBHmtkqsO8XcQpZEgKIPN+hKcd0CN/j2PLsjzlOeXjBtQ8r 1243 | PcRZInxANS3Of024U80l00CDSDiU9XFSPpzXi5TXHQdpbmbGyBC9T5Cmu8zuq2KhnE72 1244 | DpC9nfR+TrPePsIhwgsZrT9GuI2e9YzVP+Jh4aTmxIY9HBg19PhgFbcaqfg1whRfEE0n 1245 | olRx2S4N8Ziu/VbySoJwkDjKZGGAc1pIT9dMbvi6hwV9JtcTr+J3VlHheY8TZ97U3e9F 1246 | 2gKvMA4dDBoMmg1IUBBFBGGYsFBAhjwaMTSycj8jqwYbk3sydSRqu3RiRLFBezbcPbdR 1247 | pN08/igicZRDtQiS/EH+Kq/JT+V5+ctcsNhW95Stm5q68uA7xeWZuRoe19PI43NNXnyV 1248 | 1HaTV0eWrHl6vJrsGj/sV5cx5oI1j8RzsPvxLV+VzJcpjBTF41Xz6kuEdVoxN9+fbH87 1249 | PeIuzy611nOtiYs3VpuXZ/1qSPvuqryT5lX5T1718fxnzcRj4ikxJnaK5yGJl8Uu8ZLY 1250 | S6sL4mBtxwidlYYp0m2R+iTVYGCavPUvXT9beL1Gfwz1UZQZzNJUifd/wipkNJ25Dm/6 1251 | j9vH/Bfk94rnnygCL2zgyJm6bVNx7xChZaVuc64CF7/RffC2bmujfjj8BFg8qxatUjWf 1252 | ILwBHHaHeh7oKZjTlpbNOVKHLJ+TuunKYlLMUNtDUlLXJddlSxazmVVi6XbYmdMdbhyh 1253 | OUL3xKdKZZP6r/ERsP2wUvn5rFLZfk4a1oGX+m/AvP1FCmVuZHN0cmVhbQplbmRvYmoK 1254 | MTkgMCBvYmoKNzM3CmVuZG9iago4IDAgb2JqClsgL0lDQ0Jhc2VkIDE4IDAgUiBdCmVu 1255 | ZG9iago0IDAgb2JqCjw8IC9UeXBlIC9QYWdlcyAvTWVkaWFCb3ggWzAgMCA2MTIgNzky 1256 | XSAvQ291bnQgMSAvS2lkcyBbIDMgMCBSIF0gPj4KZW5kb2JqCjIwIDAgb2JqCjw8IC9U 1257 | eXBlIC9DYXRhbG9nIC9PdXRsaW5lcyAyIDAgUiAvUGFnZXMgNCAwIFIgL1ZlcnNpb24g 1258 | LzEuNCA+PgplbmRvYmoKMiAwIG9iago8PCAvTGFzdCAyMSAwIFIgL0ZpcnN0IDIyIDAg 1259 | UiA+PgplbmRvYmoKMjIgMCBvYmoKPDwgL1BhcmVudCAyMyAwIFIgL0NvdW50IDAgL0Rl 1260 | c3QgWyAzIDAgUiAvWFlaIDAgMjg4IDAgXSAvVGl0bGUgKENhbnZhcyAxKQo+PgplbmRv 1261 | YmoKMjMgMCBvYmoKPDwgPj4KZW5kb2JqCjIxIDAgb2JqCjw8IC9QYXJlbnQgMjMgMCBS 1262 | IC9Db3VudCAwIC9EZXN0IFsgMyAwIFIgL1hZWiAwIDI4OCAwIF0gL1RpdGxlIChDYW52 1263 | YXMgMSkKPj4KZW5kb2JqCjI0IDAgb2JqCjw8IC9MZW5ndGggMjUgMCBSIC9MZW5ndGgx 1264 | IDExNDAwIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ab06eXyU1bX3fvss 1265 | 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 1409 | fO4gXJSLO/gzf1B50yCcfJtzZ/8PDMIfHIQvHYTDvzJ3tW8ZhLcOwlcQ/P8BAoacaQpl 1410 | bmRzdHJlYW0KZW5kb2JqCjI1IDAgb2JqCjc0MDYKZW5kb2JqCjI2IDAgb2JqCjw8IC9U 1411 | eXBlIC9Gb250RGVzY3JpcHRvciAvQXNjZW50IDc3MCAvQ2FwSGVpZ2h0IDcxNyAvRGVz 1412 | Y2VudCAtMjMwIC9GbGFncyAzMgovRm9udEJCb3ggWy05NTEgLTQ4MSAxNDQ1IDExMjJd 1413 | IC9Gb250TmFtZSAvV1NaT09aK0hlbHZldGljYSAvSXRhbGljQW5nbGUgMAovU3RlbVYg 1414 | MCAvTWF4V2lkdGggMTUwMCAvWEhlaWdodCA2MzcgL0ZvbnRGaWxlMiAyNCAwIFIgPj4K 1415 | ZW5kb2JqCjI3IDAgb2JqClsgMjc4IDAgMCA1NTYgMCAwIDAgMCAzMzMgMzMzIDAgMCAw 1416 | IDAgMjc4IDAgMCA1NTYgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCA2Njcg 1417 | NzIyIDAgMCA2MTEgMCA3MjIgMjc4IDAgMCAwIDAgMCAwIDAgMCAwIDAgNjExIDcyMiA2 1418 | NjcgMCAwIDAgMAowIDAgMCAwIDAgMCA1NTYgNTU2IDUwMCAwIDU1NiAyNzggMCAwIDIy 1419 | MiAwIDAgMjIyIDAgNTU2IDU1NiAwIDAgMzMzIDUwMCAyNzgKMCA1MDAgNzIyIF0KZW5k 1420 | b2JqCjEwIDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9UcnVlVHlwZSAvQmFz 1421 | ZUZvbnQgL1dTWk9PWitIZWx2ZXRpY2EgL0ZvbnREZXNjcmlwdG9yCjI2IDAgUiAvV2lk 1422 | dGhzIDI3IDAgUiAvRmlyc3RDaGFyIDMyIC9MYXN0Q2hhciAxMTkgL0VuY29kaW5nIC9N 1423 | YWNSb21hbkVuY29kaW5nCj4+CmVuZG9iagoyOCAwIG9iagooTWFjIE9TIFggMTAuNi44 1424 | IFF1YXJ0eiBQREZDb250ZXh0KQplbmRvYmoKMjkgMCBvYmoKKEQ6MjAxMTA3MDgwNTI5 1425 | NThaMDAnMDAnKQplbmRvYmoKMSAwIG9iago8PCAvUHJvZHVjZXIgMjggMCBSIC9DcmVh 1426 | dGlvbkRhdGUgMjkgMCBSIC9Nb2REYXRlIDI5IDAgUiA+PgplbmRvYmoKeHJlZgowIDMw 1427 | CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAxNDcwNiAwMDAwMCBuIAowMDAwMDA2MTg2 1428 | IDAwMDAwIG4gCjAwMDAwMDM3MzggMDAwMDAgbiAKMDAwMDAwNjAyMyAwMDAwMCBuIAow 1429 | MDAwMDAwMDIyIDAwMDAwIG4gCjAwMDAwMDM3MTggMDAwMDAgbiAKMDAwMDAwMzg0MiAw 1430 | MDAwMCBuIAowMDAwMDA1OTg3IDAwMDAwIG4gCjAwMDAwMDUwOTEgMDAwMDAgbiAKMDAw 1431 | MDAxNDQzNyAwMDAwMCBuIAowMDAwMDA0MDI5IDAwMDAwIG4gCjAwMDAwMDQwNzcgMDAw 1432 | MDAgbiAKMDAwMDAwNDEyMiAwMDAwMCBuIAowMDAwMDA0MTcwIDAwMDAwIG4gCjAwMDAw 1433 | MDQyMTUgMDAwMDAgbiAKMDAwMDAwNDI2MyAwMDAwMCBuIAowMDAwMDA1MDcxIDAwMDAw 1434 | IG4gCjAwMDAwMDUxMjcgMDAwMDAgbiAKMDAwMDAwNTk2NyAwMDAwMCBuIAowMDAwMDA2 1435 | MTA2IDAwMDAwIG4gCjAwMDAwMDYzNDkgMDAwMDAgbiAKMDAwMDAwNjIzNCAwMDAwMCBu 1436 | IAowMDAwMDA2MzI3IDAwMDAwIG4gCjAwMDAwMDY0NDIgMDAwMDAgbiAKMDAwMDAxMzkz 1437 | OSAwMDAwMCBuIAowMDAwMDEzOTYwIDAwMDAwIG4gCjAwMDAwMTQxODUgMDAwMDAgbiAK 1438 | MDAwMDAxNDYxMiAwMDAwMCBuIAowMDAwMDE0NjY0IDAwMDAwIG4gCnRyYWlsZXIKPDwg 1439 | L1NpemUgMzAgL1Jvb3QgMjAgMCBSIC9JbmZvIDEgMCBSIC9JRCBbIDw3OGVmNmM1OWE0 1440 | NjJmOGRmZTQ2NjQzMWFhN2Y5OGE4YT4KPDc4ZWY2YzU5YTQ2MmY4ZGZlNDY2NDMxYWE3 1441 | Zjk4YThhPiBdID4+CnN0YXJ0eHJlZgoxNDc4MQolJUVPRgoxIDAgb2JqCjw8L0F1dGhv 1442 | ciAoQnJpYW4gSGFtbW9uZCkvQ3JlYXRpb25EYXRlIChEOjIwMTEwNzA3MTQ1NzAwWikv 1443 | Q3JlYXRvciAoT21uaUdyYWZmbGUgNS4yLjMpL01vZERhdGUgKEQ6MjAxMTA3MDgwNTI5 1444 | MDBaKS9Qcm9kdWNlciAyOCAwIFIgL1RpdGxlICh0YWItYW5hbHlzaXMuZ3JhZmZsZSk+ 1445 | PgplbmRvYmoKeHJlZgoxIDEKMDAwMDAxNTUzOSAwMDAwMCBuIAp0cmFpbGVyCjw8L0lE 1446 | IFs8NzhlZjZjNTlhNDYyZjhkZmU0NjY0MzFhYTdmOThhOGE+IDw3OGVmNmM1OWE0NjJm 1447 | OGRmZTQ2NjQzMWFhN2Y5OGE4YT5dIC9JbmZvIDEgMCBSIC9QcmV2IDE0NzgxIC9Sb290 1448 | IDIwIDAgUiAvU2l6ZSAzMD4+CnN0YXJ0eHJlZgoxNTcxNwolJUVPRgo= 1449 | 1450 | QuickLookThumbnail 1451 | 1452 | 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 1612 | PFwAAAJTWFlaIAAAAAAAAF8fAAC3sgAAFQpYWVogAAAAAAAAIz0AAAvyAAC70GN1cnYA 1613 | AAAAAAAEAAAAAAUACgAPABQAGQAeACMAKAAtADIANgA7AEAARQBKAE8AVABZAF4AYwBo 1614 | AG0AcgB3AHwAgQCGAIsAkACVAJoAnwCjAKgArQCyALcAvADBAMYAywDQANUA2wDgAOUA 1615 | 6wDwAPYA+wEBAQcBDQETARkBHwElASsBMgE4AT4BRQFMAVIBWQFgAWcBbgF1AXwBgwGL 1616 | AZIBmgGhAakBsQG5AcEByQHRAdkB4QHpAfIB+gIDAgwCFAIdAiYCLwI4AkECSwJUAl0C 1617 | ZwJxAnoChAKOApgCogKsArYCwQLLAtUC4ALrAvUDAAMLAxYDIQMtAzgDQwNPA1oDZgNy 1618 | A34DigOWA6IDrgO6A8cD0wPgA+wD+QQGBBMEIAQtBDsESARVBGMEcQR+BIwEmgSoBLYE 1619 | xATTBOEE8AT+BQ0FHAUrBToFSQVYBWcFdwWGBZYFpgW1BcUF1QXlBfYGBgYWBicGNwZI 1620 | BlkGagZ7BowGnQavBsAG0QbjBvUHBwcZBysHPQdPB2EHdAeGB5kHrAe/B9IH5Qf4CAsI 1621 | HwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJEAklCToJTwlkCXkJjwmkCboJzwnlCfsKEQon 1622 | Cj0KVApqCoEKmAquCsUK3ArzCwsLIgs5C1ELaQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUM 1623 | jgynDMAM2QzzDQ0NJg1ADVoNdA2ODakNww3eDfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8l 1624 | D0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+EJsQuRDXEPURExExEU8RbRGMEaoRyRHoEgcS 1625 | JhJFEmQShBKjEsMS4xMDEyMTQxNjE4MTpBPFE+UUBhQnFEkUahSLFK0UzhTwFRIVNBVW 1626 | FXgVmxW9FeAWAxYmFkkWbBaPFrIW1hb6Fx0XQRdlF4kXrhfSF/cYGxhAGGUYihivGNUY 1627 | +hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4axRrsGxQbOxtjG4obshvaHAIcKhxSHHscoxzM 1628 | HPUdHh1HHXAdmR3DHeweFh5AHmoelB6+HukfEx8+H2kflB+/H+ogFSBBIGwgmCDEIPAh 1629 | HCFIIXUhoSHOIfsiJyJVIoIiryLdIwojOCNmI5QjwiPwJB8kTSR8JKsk2iUJJTglaCWX 1630 | Jccl9yYnJlcmhya3JugnGCdJJ3onqyfcKA0oPyhxKKIo1CkGKTgpaymdKdAqAio1Kmgq 1631 | myrPKwIrNitpK50r0SwFLDksbiyiLNctDC1BLXYtqy3hLhYuTC6CLrcu7i8kL1ovkS/H 1632 | L/4wNTBsMKQw2zESMUoxgjG6MfIyKjJjMpsy1DMNM0YzfzO4M/E0KzRlNJ402DUTNU01 1633 | hzXCNf02NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5BTlCOX85vDn5OjY6dDqyOu87LTtr 1634 | O6o76DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+4D8hP2E/oj/iQCNAZECmQOdBKUFqQaxB 1635 | 7kIwQnJCtUL3QzpDfUPARANER0SKRM5FEkVVRZpF3kYiRmdGq0bwRzVHe0fASAVIS0iR 1636 | SNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkviTCpMcky6TQJNSk2TTdxOJU5uTrdPAE9JT5NP 1637 | 3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNTX1OqU/ZUQlSPVNtVKFV1VcJWD1ZcVqlW91dE 1638 | V5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1W0VblVvlXDVchlzWXSddeF3JXhpebF69Xw9f 1639 | YV+zYAVgV2CqYPxhT2GiYfViSWKcYvBjQ2OXY+tkQGSUZOllPWWSZedmPWaSZuhnPWeT 1640 | Z+loP2iWaOxpQ2maafFqSGqfavdrT2una/9sV2yvbQhtYG25bhJua27Ebx5veG/RcCtw 1641 | hnDgcTpxlXHwcktypnMBc11zuHQUdHB0zHUodYV14XY+dpt2+HdWd7N4EXhueMx5KnmJ 1642 | eed6RnqlewR7Y3vCfCF8gXzhfUF9oX4BfmJ+wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSD 1643 | V4O6hB2EgITjhUeFq4YOhnKG14c7h5+IBIhpiM6JM4mZif6KZIrKizCLlov8jGOMyo0x 1644 | jZiN/45mjs6PNo+ekAaQbpDWkT+RqJIRknqS45NNk7aUIJSKlPSVX5XJljSWn5cKl3WX 1645 | 4JhMmLiZJJmQmfyaaJrVm0Kbr5wcnImc951kndKeQJ6unx2fi5/6oGmg2KFHobaiJqKW 1646 | owajdqPmpFakx6U4pammGqaLpv2nbqfgqFKoxKk3qamqHKqPqwKrdavprFys0K1Erbiu 1647 | La6hrxavi7AAsHWw6rFgsdayS7LCszizrrQltJy1E7WKtgG2ebbwt2i34LhZuNG5SrnC 1648 | uju6tbsuu6e8IbybvRW9j74KvoS+/796v/XAcMDswWfB48JfwtvDWMPUxFHEzsVLxcjG 1649 | RsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB 1650 | 00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp22vvbgNwF3IrdEN2W3hzeot8p36/g 1651 | NuC94UThzOJT4tvjY+Pr5HPk/OWE5g3mlucf56noMui86Ubp0Opb6uXrcOv77IbtEe2c 1652 | 7ijutO9A78zwWPDl8XLx//KM8xnzp/Q09ML1UPXe9m32+/eK+Bn4qPk4+cf6V/rn+3f8 1653 | B/yY/Sn9uv5L/tz/bf//cGFyYQAAAAAAAwAAAAJmZgAA8qcAAA1ZAAAT0AAACg52Y2d0 1654 | AAAAAAAAAAAAAwEAAAIAAABWAS4B6wKdA14EKQUHBfEG6QfXCN8J4Qr3DAUNJg5LD3QQ 1655 | oBHOEv8UMxVwFqYX3hkYGlAbhhy6He8fISBJIW0ijCOnJLwlyCbNJ8oovymtKpYrfixk 1656 | LUsuMC8WL/ww5DHKMrEzlzR9NWE2RDcmOAc45znHOqc7hTxjPUE+Hz8BP+pA2EHOQshD 1657 | xkTERcNGwUe+SLpJtkqxS6xMpk2fTppPl1CXUZlSnlOlVKpVsFa1V7lYvFm/WsJbw1zE 1658 | XcZeyV/RYNth6mL7ZA9lI2Y1Z0loW2ltan1rjWyeba1uv2/ScOlyAnMedDt1WHZ2d5J4 1659 | rXnJeuN7/X0Wfi1/QIBOgViCXoNghGCFYIZfh16IXYlbilmLVoxTjVCOT49OkFORW5Jo 1660 | k3iUipWdlq+XwJjRmeKa8pwCnRGeIZ8zoEahXKJ0o46kqKXBptqn8qkKqiGrN6xOrWSu 1661 | ea+NsKCxsrLBs9G04LXvtv24DLkZuie7NbxCvU++Xb9swH3BkcKow8DE2MXvxwbIHckz 1662 | yknLXsxzzYjOms+q0LbRvtLC08TUxdXG1sbXxtjG2cXaxNvE3MLdwd7A37/gweHD4sfj 1663 | y+TP5dHm0+fU6NTp1OrU69Ls0e3P7sjvuvCg8XvyTPMW89v0nvVg9iT25/eq+Gz5L/ny 1664 | +rT7dvw4/Pr9u/58/z7//wAAAFYBLgHrAp0DXgQlBOoF1Qa9B60ItAm8CsUL1QzqDhIP 1665 | MBBcEYUSshPlFRMWSxd7GK4Z4xsSHEIdcR6ZH7wg3yH6IxAkHiUpJiUnHCgLKPQp2Cq6 1666 | K5wsfC1bLjsvGy/6MNoxujKaM3k0VzU2NhI27TfHOKE5ezpVOyw8BTzcPbM+jT9qQE5B 1667 | OkIsQyREHUUVRg5HBkf8SPNJ6EreS9JMxU25Tq5Po1CbUZZSlFOTVJJVkVaPV45YilmG 1668 | WoNbf1x6XXVecV9xYHVhfWKIY5ZkpGWzZsFnz2jbaehq9GwAbQtuF28lcDVxSXJec3V0 1669 | jnWndr531njtegR7GnwwfUR+V39ngHSBeoJ+g36EfIV5hnWHcYhtiWiKY4tejFiNUo5N 1670 | j0uQTZFUkmCTb5R/lZGWopezmMOZ05rjm/KdAZ4QnyGgM6FIol+jeKSSpaymxqffqPiq 1671 | EasprEGtWK5vr4SwmbGssr2zzrTdte22/LgKuRi6Jrs0vEG9Tr5dv27AgcGYwrLDz8Tt 1672 | xgvHKshHyWXKgsufzLvN1s7v0ATRFdIj0y3UNdU81kPXSdhO2VTaWdtd3GLdZ95s33Lg 1673 | euGE4pDjneSr5bnmxufT6ODp7er57AXtEO4Y7xzwGfEL8fTy0POo9H31UvYl9vn3zPie 1674 | +XH6Q/sW++j8uf2L/lz/Lv//AAAAVgEuAesCnQNeBCkFBwXaBs8Hwgi7CbwK0gvlDPkO 1675 | IA8+EGwRnRLIE/sVMhZnF5sY0RoFGzocbx2fHs0f9SEdIj8jWCRsJXkmgSeAKHopbCpc 1676 | K0osOC0jLgsu9y/gMMoxszKaM4E0ZzVMNjA3FDf1ONc5uDqXO3Y8Vj00PhQ+9T/bQMlB 1677 | vEK0Q69ErEWoRqNHn0iaSZRKjUuGTH1NdE5sT2RQYFFbUltTWlRaVVlWV1dWWFRZUVpO 1678 | W0pcRF1AXjtfOGA5YT1iRWNQZFplZWZvZ3pogmmLapNrm2yibalusW+7cMdx1XLlc/d1 1679 | CXYbdyx4PXlOel17bXx8fYh+lH+dgKCBn4Kag5KEiIV+hnOHZ4haiU6KQYszjCaNGI4K 1680 | jv+P9pDykfKS9pP9lQWWDJcUmBuZIpoomy6cM505nj6fRKBMoVaiYqNwpH+lj6adp6uo 1681 | uqnHqtWr4qzurfqvBrARsRuyI7MqtDG1N7Y8t0G4RrlLuk+7U7xWvVm+Xr9kwGzBeMKH 1682 | w5nErMXAxtLH5cj4ygrLHMwtzT7OTc9a0GXRbdJy03XUdtV21nbXdth12XTacttx3HDd 1683 | b95v33DgdOF74oXjkeSe5azmuefH6NTp4ert6/rtBu4Q7xjwHfEb8hTzCPP59Oj11fbD 1684 | 97D4nvmL+nf7ZPxQ/Tz+KP8T//8AAG5kaW4AAAAAAAAGNgAApLUAAFZfAABL7QAAnigA 1685 | ACVZAAAMYwAAUA0AAFQ5AAJuFAACMKMAAi4UAAMBAAACAAAAAQAEAAkAEAAYACEAKwA3 1686 | AEMAUQBfAG8AfwCQAKIAtQDJAN4A9AELASIBOwFVAXABjAGpAcgB5wIJAisCTwJ1Ap0C 1687 | xwLzAyEDUgOGA70D+AQ3BHoEwAUJBVQFogXyBkQGmAbvB0gHpAgDCGUIygkyCZ0KCgp7 1688 | Cu8LZgvfDFgM0A1HDbwOMg6pDyIPnRAbEJsRHhGjEisStRNCE9EUYRTxFYIWFBamFzsX 1689 | 0hhrGQcZphpHGuobkBw5HOMdkB48HugflCA/IOshmCJHIvkjrCRiJRol1SaSJ1EoEyjV 1690 | KZkqXCsgK+Mspy1tLjQu/S/JMJcxZzI5Mw4z5TS/NZ02gDdpOFg5TTpIO0Y8Rz1LPlE/ 1691 | W0BnQXZCiEOcRLNFy0bjR/hJC0ocSyxMPU1PTmRPfFCWUbNS0lP0VRhWP1dmWI5Ztlre 1692 | XAVdLV5XX4Rgs2HlYxlkUGWKZsZoBGlFaopr0W0cbmtvvnEUcmxzx3UkdoR353lMerN8 1693 | Hn2LfvqAaoHag0qEuIYlh5OJA4p1i+uNY47dkFuR25NdlOOWbJf6mY6bKpzPnnygL6Hn 1694 | o6GlX6cfqOKqqaxzrj+wD7His7a1jLdhuTe7DbzlvsDAoMKExGzGWchIyjvMMs4r0CvS 1695 | NtRW1pfZAduS3jzg8eOq5mfpKevw7r3xj/Rn90X6KP0R//8AAAABAAQACQAQABkAIgAt 1696 | ADkARQBTAGIAcgCDAJQApwC6AM8A5AD7ARIBKwFEAV8BewGYAbYB1gH3AhkCPQJjAosC 1697 | tALgAw4DPwNyA6oD5QQkBGcErgT4BUQFlAXmBjoGkQbqB0YHpAgGCGoI0gk9CasKHAqQ 1698 | CwgLggwADIANAQ2ADf0OeQ70D3EP8RByEPcRfhIIEpQTIxO1FEoU4BV5FhIWrBdGF+EY 1699 | fhkeGcAaZBsMG7YcYh0RHcMedx8tH+IglyFLIf8isyNpJCAk2iWWJlUnFifZKJ8pZyox 1700 | Kv0rySyVLWEuLi77L8kwmTFsMkEzGDPxNM01qzaLN284VTlBOjE7KTwmPSk+MD87QElB 1701 | WUJsQ4NEnEW4RtdH+UkbSjxLW0x2TY9Op0/AUNpR91MWVDhVXFaDV6xY2FoGWzZcZl2W 1702 | XsVf9GEkYlRjh2S8ZfNnLWhpaahq6WwtbXNuvXAKcVpyrnQGdWF2wHgheYV67HxVfcJ/ 1703 | MICighaDi4UBhnaH6YlaismMN42mjxeQiZH+k3aU8JZsl+uZbZrznH2eDp+moUai7qSc 1704 | pk+oBam/q3ytPK7/sMWyjrRZtie39bnEu5K9X78swPnCyMSZxm3IRMoey/vN28++0aTT 1705 | kNWH147Zrtvs3kvgv+M+5cPoTerc7XDwCfKm9Uj37/qa/Ur//wAAAAEABAAJABAAGAAi 1706 | ACwAOABFAFMAYQBxAIIAkwCmALkAzQDiAPkBEAEoAUEBXAF3AZQBsgHRAfECEwI2AlsC 1707 | ggKqAtQDAQMwA2IDlgPOBAkESASKBM8FFgVgBa0F+wZNBqAG9wdQB6wICwhtCNEJOQmj 1708 | ChEKggr1C2wL5AxeDNcNTg3FDjwOtA8uD6sQKhCrES8RthI/EssTWhPqFH0VEBWlFjoW 1709 | 0RdqGAYYpBlEGecajRs1G+Acjh0+HfAeox9VIAgguiFsIiEi1yOQJEslCSXJJownUSgZ 1710 | KOMpryp7K0ksFizkLbMugy9VMCoxATHaMrUzlDR0NVc2PjcoOBY5CzoHOwo8Ej0fPi8/ 1711 | Q0BaQXRCkUOxRNVF+0ckSE9JeUqgS8VM504ITylQTVFzUptTx1T1ViZXWliQWclbBFxA 1712 | XXxet1/zYS9ibGOrZO1mMmd5aMNqD2tebLBuBW9ccLZyFHN3dN12RnezeSN6lnwMfYV/ 1713 | AIB/ggCDhYULhpKIGYmeiyCMoY4gj6CRIpKnlC6VuJdEmNOaZpv7nZSfMaDUon6kLqXm 1714 | p6SpZ6strPeuxLCUsme0PbYVt/C5zbuqvYa/X8E2wwrE3sayyIjKYsw9zhzP/tHi08nV 1715 | s9ei2Zfbld2h37zh5uQc5lnom+rh7SvvePHJ9B72d/jU+zT9mP//AABzZjMyAAAAAAAB 1716 | DEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbG1tb2QAAAAAAAAGEAAAnNcA 1717 | AAAAx6OFAAAAAAAAAAAAAAAAAAAAAAA= 1718 | 1719 | ReadOnly 1720 | NO 1721 | RowAlign 1722 | 1 1723 | RowSpacing 1724 | 36 1725 | SheetTitle 1726 | Canvas 1 1727 | SmartAlignmentGuidesActive 1728 | YES 1729 | SmartDistanceGuidesActive 1730 | YES 1731 | UniqueID 1732 | 1 1733 | UseEntirePage 1734 | 1735 | VPages 1736 | 1 1737 | WindowInfo 1738 | 1739 | CurrentSheet 1740 | 0 1741 | ExpandedCanvases 1742 | 1743 | 1744 | name 1745 | Canvas 1 1746 | 1747 | 1748 | Frame 1749 | {{965, 347}, {872, 1024}} 1750 | ListView 1751 | 1752 | OutlineWidth 1753 | 142 1754 | RightSidebar 1755 | 1756 | Sidebar 1757 | 1758 | SidebarWidth 1759 | 120 1760 | VisibleRegion 1761 | {{-73, -97.5}, {436, 485}} 1762 | Zoom 1763 | 2 1764 | ZoomValues 1765 | 1766 | 1767 | Canvas 1 1768 | 2 1769 | 1 1770 | 1771 | 1772 | 1773 | saveQuickLookFiles 1774 | YES 1775 | 1776 | 1777 | --------------------------------------------------------------------------------