From abe874cda3b930551d42ca89eb9c6cf774a318e8 Mon Sep 17 00:00:00 2001 From: Maarten Billemont Date: Sat, 13 Apr 2013 13:40:17 -0400 Subject: [PATCH] Temporary moc fix, setup & new guide. [FIXED] Pass along temporary mocs, they appear to be stored __weak in the object and we can't rely on them not being nil. [ADDED] Setup flow for initially setting the iCloud preference. [ADDED] New guide. [IMPROVED] Hierarchy and flow of unlock -> main. --- External/Pearl | 2 +- MasterPassword/ObjC/MPAlgorithmV0.m | 2 +- MasterPassword/ObjC/MPEntities.h | 4 +- MasterPassword/ObjC/MPEntities.m | 15 +- MasterPassword/ObjC/MPTypes.h | 1 + .../.xccurrentversion | 2 +- MasterPassword/ObjC/iOS/MPAppDelegate.h | 3 +- MasterPassword/ObjC/iOS/MPAppDelegate.m | 34 +- .../ObjC/iOS/MPGuideViewController.h | 3 - .../ObjC/iOS/MPGuideViewController.m | 21 - .../ObjC/iOS/MPMainViewController.m | 159 ++-- .../ObjC/iOS/MPPreferencesViewController.m | 3 +- .../ObjC/iOS/MPSetupViewController.h | 24 + .../ObjC/iOS/MPSetupViewController.m | 38 + .../ObjC/iOS/MPUnlockViewController.m | 65 +- MasterPassword/ObjC/iOS/MPiOSConfig.h | 2 +- MasterPassword/ObjC/iOS/MPiOSConfig.m | 4 +- .../ObjC/iOS/MainStoryboard_iPhone.storyboard | 855 +++++++++++++----- .../project.pbxproj | 117 ++- MasterPassword/Resources/Media/cloud.png | Bin 0 -> 4013 bytes MasterPassword/Resources/Media/cloud@2x.png | Bin 0 -> 18118 bytes MasterPassword/Resources/Media/identity.png | Bin 0 -> 3236 bytes .../Resources/Media/identity@2x.png | Bin 0 -> 13217 bytes MasterPassword/Resources/Media/lock.png | Bin 0 -> 3917 bytes MasterPassword/Resources/Media/lock@2x.png | Bin 0 -> 15239 bytes .../QuickLook/Preview.pdf | Bin 0 -> 52269 bytes .../QuickLook/Thumbnail.jpg | Bin 0 -> 17137 bytes .../Raw/Large Icons.vdesigner/VectorDesigner | Bin 0 -> 27109 bytes 28 files changed, 930 insertions(+), 424 deletions(-) create mode 100644 MasterPassword/ObjC/iOS/MPSetupViewController.h create mode 100644 MasterPassword/ObjC/iOS/MPSetupViewController.m create mode 100644 MasterPassword/Resources/Media/cloud.png create mode 100644 MasterPassword/Resources/Media/cloud@2x.png create mode 100644 MasterPassword/Resources/Media/identity.png create mode 100644 MasterPassword/Resources/Media/identity@2x.png create mode 100644 MasterPassword/Resources/Media/lock.png create mode 100644 MasterPassword/Resources/Media/lock@2x.png create mode 100644 MasterPassword/Resources/Raw/Large Icons.vdesigner/QuickLook/Preview.pdf create mode 100644 MasterPassword/Resources/Raw/Large Icons.vdesigner/QuickLook/Thumbnail.jpg create mode 100644 MasterPassword/Resources/Raw/Large Icons.vdesigner/VectorDesigner diff --git a/External/Pearl b/External/Pearl index 17a3f485..d8c2fa37 160000 --- a/External/Pearl +++ b/External/Pearl @@ -1 +1 @@ -Subproject commit 17a3f485d1056976f55d0311d20ce4a693a62748 +Subproject commit d8c2fa3755d1f440cd5eaa980adffef08a805b25 diff --git a/MasterPassword/ObjC/MPAlgorithmV0.m b/MasterPassword/ObjC/MPAlgorithmV0.m index 7318e11b..1e7bf8ea 100644 --- a/MasterPassword/ObjC/MPAlgorithmV0.m +++ b/MasterPassword/ObjC/MPAlgorithmV0.m @@ -35,7 +35,7 @@ NSError *error = nil; NSFetchRequest *migrationRequest = [NSFetchRequest fetchRequestWithEntityName:NSStringFromClass([MPElementEntity class])]; - migrationRequest.predicate = [NSPredicate predicateWithFormat:@"version_ < %d AND user == %@", MPAlgorithmDefaultVersion, user]; + migrationRequest.predicate = [NSPredicate predicateWithFormat:@"version_ < %d AND user == %@", self.version, user]; NSArray *migrationElements = [user.managedObjectContext executeFetchRequest:migrationRequest error:&error]; if (!migrationElements) { err(@"While looking for elements to migrate: %@", error); diff --git a/MasterPassword/ObjC/MPEntities.h b/MasterPassword/ObjC/MPEntities.h index 779da898..f27429b4 100644 --- a/MasterPassword/ObjC/MPEntities.h +++ b/MasterPassword/ObjC/MPEntities.h @@ -15,9 +15,9 @@ #define MPAvatarCount 19 -@interface NSManagedObject (MP) +@interface NSManagedObjectContext(MP) -- (BOOL)saveContext; +- (BOOL)saveToStore; @end diff --git a/MasterPassword/ObjC/MPEntities.m b/MasterPassword/ObjC/MPEntities.m index 654cfb9d..e95e00f1 100644 --- a/MasterPassword/ObjC/MPEntities.m +++ b/MasterPassword/ObjC/MPEntities.m @@ -9,22 +9,17 @@ #import "MPEntities.h" #import "MPAppDelegate.h" -@implementation NSManagedObject (MP) +@implementation NSManagedObjectContext (MP) -- (BOOL)saveContext { +- (BOOL)saveToStore { NSError *error; - NSManagedObjectContext *moc = [self managedObjectContext]; - if (![moc save:&error]) { - err(@"While saving %@: %@", NSStringFromClass([self class]), error); - return NO; - } - if (![moc.parentContext save:&error]) { - err(@"While saving parent %@: %@", NSStringFromClass([self class]), error); + if (![self save:&error]) { + err(@"While saving: %@", NSStringFromClass([self class]), error); return NO; } - return YES; + return !self.parentContext || [self.parentContext saveToStore]; } @end diff --git a/MasterPassword/ObjC/MPTypes.h b/MasterPassword/ObjC/MPTypes.h index cb72989b..9ddc34fc 100644 --- a/MasterPassword/ObjC/MPTypes.h +++ b/MasterPassword/ObjC/MPTypes.h @@ -52,6 +52,7 @@ typedef enum { #define MPCheckpointUseType @"MPCheckpointUseType" #define MPCheckpointDeleteElement @"MPCheckpointDeleteElement" #define MPCheckpointShowGuide @"MPCheckpointShowGuide" +#define MPCheckpointShowSetup @"MPCheckpointShowSetup" #define MPCheckpointChangeMP @"MPCheckpointChangeMP" #define MPCheckpointMPErrorUbiquity @"MPCheckpointMPErrorUbiquity" #define MPCheckpointLocalStoreReset @"MPCheckpointLocalStoreReset" diff --git a/MasterPassword/ObjC/MasterPassword.xcdatamodeld/.xccurrentversion b/MasterPassword/ObjC/MasterPassword.xcdatamodeld/.xccurrentversion index 6bc55904..000aa55d 100644 --- a/MasterPassword/ObjC/MasterPassword.xcdatamodeld/.xccurrentversion +++ b/MasterPassword/ObjC/MasterPassword.xcdatamodeld/.xccurrentversion @@ -3,6 +3,6 @@ _XCCurrentVersionName - MasterPassword 1.xcdatamodel + MasterPassword 4.xcdatamodel diff --git a/MasterPassword/ObjC/iOS/MPAppDelegate.h b/MasterPassword/ObjC/iOS/MPAppDelegate.h index 02d548d6..a5c545ed 100644 --- a/MasterPassword/ObjC/iOS/MPAppDelegate.h +++ b/MasterPassword/ObjC/iOS/MPAppDelegate.h @@ -17,9 +17,10 @@ @property (nonatomic, readonly) GPPShare *googlePlus; - (void)showGuide; +- (void)showSetup; - (void)showFeedbackWithLogs:(BOOL)logs forVC:(UIViewController *)viewController; - (void)export; -- (void)changeMasterPasswordFor:(MPUserEntity *)user didResetBlock:(void(^)(void))didReset; +- (void)changeMasterPasswordFor:(MPUserEntity *)user inContext:(NSManagedObjectContext *)moc didResetBlock:(void(^)(void))didReset; @end diff --git a/MasterPassword/ObjC/iOS/MPAppDelegate.m b/MasterPassword/ObjC/iOS/MPAppDelegate.m index b61d16fe..316a11ba 100644 --- a/MasterPassword/ObjC/iOS/MPAppDelegate.m +++ b/MasterPassword/ObjC/iOS/MPAppDelegate.m @@ -188,14 +188,6 @@ [[UISegmentedControl appearance] setDividerImage:segUnselectedSelected forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; */ - [[NSNotificationCenter defaultCenter] addObserverForName:MPSignedOutNotification object:nil queue:nil - usingBlock:^(NSNotification *note) { - if ([[note.userInfo objectForKey:@"animated"] boolValue]) - [self.navigationController performSegueWithIdentifier:@"MP_Unlock" sender:nil]; - else - [self.navigationController presentViewController:[self.navigationController.storyboard instantiateViewControllerWithIdentifier:@"MPUnlockViewController"] - animated:NO completion:nil]; - }]; [[NSNotificationCenter defaultCenter] addObserverForName:MPCheckConfigNotification object:nil queue:nil usingBlock: ^(NSNotification *note) { if ([[MPiOSConfig get].sendInfo boolValue]) { @@ -207,7 +199,7 @@ [[Crashlytics sharedInstance] setBoolValue:[[MPConfig get].iCloudDecided boolValue] forKey:@"iCloudDecided"]; [[Crashlytics sharedInstance] setBoolValue:[[MPiOSConfig get].sendInfo boolValue] forKey:@"sendInfo"]; [[Crashlytics sharedInstance] setBoolValue:[[MPiOSConfig get].helpHidden boolValue] forKey:@"helpHidden"]; - [[Crashlytics sharedInstance] setBoolValue:[[MPiOSConfig get].showQuickStart boolValue] forKey:@"showQuickStart"]; + [[Crashlytics sharedInstance] setBoolValue:[[MPiOSConfig get].showSetup boolValue] forKey:@"showQuickStart"]; [[Crashlytics sharedInstance] setBoolValue:[[PearlConfig get].firstRun boolValue] forKey:@"firstRun"]; [[Crashlytics sharedInstance] setIntValue:[[PearlConfig get].launchCount intValue] forKey:@"launchCount"]; [[Crashlytics sharedInstance] setBoolValue:[[PearlConfig get].askForReviews boolValue] forKey:@"askForReviews"]; @@ -220,7 +212,7 @@ [TestFlight addCustomEnvironmentInformation:[[MPConfig get].iCloudDecided boolValue]? @"YES": @"NO" forKey:@"iCloudDecided"]; [TestFlight addCustomEnvironmentInformation:[[MPiOSConfig get].sendInfo boolValue]? @"YES": @"NO" forKey:@"sendInfo"]; [TestFlight addCustomEnvironmentInformation:[[MPiOSConfig get].helpHidden boolValue]? @"YES": @"NO" forKey:@"helpHidden"]; - [TestFlight addCustomEnvironmentInformation:[[MPiOSConfig get].showQuickStart boolValue]? @"YES": @"NO" + [TestFlight addCustomEnvironmentInformation:[[MPiOSConfig get].showSetup boolValue]? @"YES": @"NO" forKey:@"showQuickStart"]; [TestFlight addCustomEnvironmentInformation:[[PearlConfig get].firstRun boolValue]? @"YES": @"NO" forKey:@"firstRun"]; [TestFlight addCustomEnvironmentInformation:[[PearlConfig get].launchCount description] forKey:@"launchCount"]; @@ -237,7 +229,7 @@ @"iCloudDecided" : [[MPConfig get].iCloudDecided boolValue]? @"YES": @"NO", @"sendInfo" : [[MPiOSConfig get].sendInfo boolValue]? @"YES": @"NO", @"helpHidden" : [[MPiOSConfig get].helpHidden boolValue]? @"YES": @"NO", - @"showQuickStart" : [[MPiOSConfig get].showQuickStart boolValue]? @"YES": @"NO", + @"showQuickStart" : [[MPiOSConfig get].showSetup boolValue]? @"YES": @"NO", @"firstRun" : [[PearlConfig get].firstRun boolValue]? @"YES": @"NO", @"launchCount" : NilToNSNull([[PearlConfig get].launchCount description]), @"askForReviews" : [[PearlConfig get].askForReviews boolValue]? @"YES": @"NO", @@ -268,6 +260,9 @@ inf(@"Started up with device identifier: %@", [PearlKeyChain deviceIdentifier]); + if ([[MPiOSConfig get].showSetup boolValue]) + [[MPAppDelegate get] showSetup]; + return YES; } @@ -438,6 +433,16 @@ [[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointShowGuide attributes:nil]; } +- (void)showSetup { + + [self.navigationController performSegueWithIdentifier:@"MP_Setup" sender:self]; + +#ifdef TESTFLIGHT_SDK_VERSION + [TestFlight passCheckpoint:MPCheckpointShowSetup]; +#endif + [[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointShowSetup attributes:nil]; +} + - (void)showFeedback { [self showFeedbackWithLogs:NO forVC:nil]; @@ -575,7 +580,7 @@ nil]; } -- (void)changeMasterPasswordFor:(MPUserEntity *)user didResetBlock:(void (^)(void))didReset { +- (void)changeMasterPasswordFor:(MPUserEntity *)user inContext:(NSManagedObjectContext *)moc didResetBlock:(void (^)(void))didReset { [PearlAlert showAlertWithTitle:@"Changing Master Password" message: @@ -587,12 +592,13 @@ if (buttonIndex == [alert cancelButtonIndex]) return; - [user.managedObjectContext performBlock:^{ + [moc performBlock:^{ inf(@"Unsetting master password for: %@.", user.userID); user.keyID = nil; [self forgetSavedKeyFor:user]; - [self signOutAnimated:YES]; + [moc saveToStore]; + [self signOutAnimated:YES]; if (didReset) didReset(); diff --git a/MasterPassword/ObjC/iOS/MPGuideViewController.h b/MasterPassword/ObjC/iOS/MPGuideViewController.h index a7e4e656..9669ca5e 100644 --- a/MasterPassword/ObjC/iOS/MPGuideViewController.h +++ b/MasterPassword/ObjC/iOS/MPGuideViewController.h @@ -10,9 +10,6 @@ @interface MPGuideViewController : UIViewController -@property (weak, nonatomic) IBOutlet UIScrollView *scrollView; -@property (weak, nonatomic) IBOutlet UIPageControl *pageControl; - - (IBAction)close; @end diff --git a/MasterPassword/ObjC/iOS/MPGuideViewController.m b/MasterPassword/ObjC/iOS/MPGuideViewController.m index 3b2f7adf..119ab18e 100644 --- a/MasterPassword/ObjC/iOS/MPGuideViewController.m +++ b/MasterPassword/ObjC/iOS/MPGuideViewController.m @@ -21,18 +21,9 @@ return UIInterfaceOrientationPortrait; } -- (void)viewDidLoad { - - [super viewDidLoad]; - - [self.scrollView autoSizeContent]; -} - - (void)viewWillAppear:(BOOL)animated { inf(@"Guide will appear."); - [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; - [super viewWillAppear:animated]; } @@ -46,10 +37,6 @@ - (void)viewWillDisappear:(BOOL)animated { inf(@"Guide will disappear."); - [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide]; - - [MPiOSConfig get].showQuickStart = @NO; - [super viewWillDisappear:animated]; } @@ -58,12 +45,4 @@ [self.presentingViewController dismissViewControllerAnimated:YES completion:nil]; } -- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView_ { - - NSInteger page = (NSInteger)(self.scrollView.contentOffset.x / self.scrollView.bounds.size.width); - - self.pageControl.currentPage = page; - self.pageControl.hidden = (page == self.pageControl.numberOfPages - 1); -} - @end diff --git a/MasterPassword/ObjC/iOS/MPMainViewController.m b/MasterPassword/ObjC/iOS/MPMainViewController.m index 114a58ca..d4267702 100644 --- a/MasterPassword/ObjC/iOS/MPMainViewController.m +++ b/MasterPassword/ObjC/iOS/MPMainViewController.m @@ -25,17 +25,17 @@ #pragma mark - View lifecycle - (BOOL)shouldAutorotate { - + return YES; } - (NSUInteger)supportedInterfaceOrientations { - + return UIInterfaceOrientationMaskAllButUpsideDown; } - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { - + return UIInterfaceOrientationPortrait; } @@ -91,30 +91,24 @@ [self showToolTip:@"Password outdated. Tap to upgrade it." withIcon:nil]; }]; }]; - [[NSNotificationCenter defaultCenter] addObserverForName:MPSignedOutNotification object:nil queue:nil - usingBlock:^void(NSNotification *note) { - _activeElementOID = nil; - self.suppressOutdatedAlert = NO; - [self updateAnimated:NO]; - }]; + [[NSNotificationCenter defaultCenter] addObserverForName:MPSignedOutNotification object:nil queue:nil usingBlock: + ^(NSNotification *note) { + _activeElementOID = nil; + self.suppressOutdatedAlert = NO; + [self updateAnimated:NO]; + [self.navigationController popToRootViewControllerAnimated:[[note.userInfo objectForKey:@"animated"] boolValue]]; + }]; [super viewDidLoad]; } - (void)viewWillAppear:(BOOL)animated { - if ([[MPiOSConfig get].showQuickStart boolValue]) - [[MPAppDelegate get] showGuide]; - if (![MPAppDelegate get].activeUser) - // FIXME: Remove either this one or the one in -viewDidAppear: - [self presentViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"MPUnlockViewController"] - animated:animated completion:nil]; - - [self activeElementDo:^(MPElementEntity *activeElement) { if (activeElement.user != [MPAppDelegate get].activeUser) _activeElementOID = nil; }]; + self.searchDisplayController.searchBar.text = nil; self.alertContainer.alpha = 0; self.outdatedAlertContainer.alpha = 0; @@ -131,23 +125,21 @@ - (void)viewDidAppear:(BOOL)animated { inf(@"Main will appear"); - + // Sometimes, the search bar gets stuck in some sort of first-responder mode that it can't get out of... [[self.view.window findFirstResponderInHierarchy] resignFirstResponder]; // Needed for when we appear after a modal VC dismisses: // We can't present until the other modal VC has been fully dismissed and presenting in -viewWillAppear: will fail. - if ([MPAppDelegate get].activeUser) - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{ - if ([MPAlgorithmDefault migrateUser:[MPAppDelegate get].activeUser] && !self.suppressOutdatedAlert) - [UIView animateWithDuration:0.3f animations:^{ - self.outdatedAlertContainer.alpha = 1; - self.suppressOutdatedAlert = YES; - }]; - }); - else - [self presentViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"MPUnlockViewController"] - animated:animated completion:nil]; + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{ + MPUserEntity *activeUser = [MPAppDelegate get].activeUser; + if ([MPAlgorithmDefault migrateUser:activeUser] && !self.suppressOutdatedAlert) + [UIView animateWithDuration:0.3f animations:^{ + self.outdatedAlertContainer.alpha = 1; + self.suppressOutdatedAlert = YES; + }]; + [activeUser saveContext]; + }); if (![[MPiOSConfig get].actionsTipShown boolValue]) [UIView animateWithDuration:animated? 0.3f: 0 animations:^{ @@ -686,19 +678,20 @@ if (!warning) return; - [self changeActiveElementWithWarning:warning - do:^BOOL(MPElementEntity *activeElement) { - inf(@"Explicitly migrating element: %@", activeElement); - [activeElement migrateExplicitly:YES]; + [self changeActiveElementWithWarning:warning do: + ^BOOL(MPElementEntity *activeElement) { + inf(@"Explicitly migrating element: %@", activeElement); + [activeElement migrateExplicitly:YES]; #ifdef TESTFLIGHT_SDK_VERSION - [TestFlight passCheckpoint:MPCheckpointExplicitMigration]; + [TestFlight passCheckpoint:MPCheckpointExplicitMigration]; #endif - [[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointExplicitMigration - attributes:@{@"type" : activeElement.typeName, - @"version" : @(activeElement.version)}]; - return YES; - }]; + [[LocalyticsSession sharedLocalyticsSession] tagEvent:MPCheckpointExplicitMigration attributes:@{ + @"type" : activeElement.typeName, + @"version" : @(activeElement.version) + }]; + return YES; + }]; } - (IBAction)searchOutdatedElements { @@ -736,63 +729,59 @@ - (IBAction)action:(id)sender { [PearlSheet showSheetWithTitle:nil viewStyle:UIActionSheetStyleAutomatic - initSheet:nil - tappedButtonBlock:^(UIActionSheet *sheet, NSInteger buttonIndex) { - if (buttonIndex == [sheet cancelButtonIndex]) - return; + initSheet:nil tappedButtonBlock:^(UIActionSheet *sheet, NSInteger buttonIndex) { + if (buttonIndex == [sheet cancelButtonIndex]) + return; - switch (buttonIndex - [sheet firstOtherButtonIndex]) { - case 0: { - inf(@"Action: FAQ"); - [self setHelpChapter:@"faq"]; - [self setHelpHidden:NO animated:YES]; - break; - } - case 1: { - inf(@"Action: Guide"); - [[MPAppDelegate get] showGuide]; - break; - } - case 2: { - inf(@"Action: Preferences"); - [self performSegueWithIdentifier:@"MP_UserProfile" sender:self]; - break; - } - case 3: { - inf(@"Action: Other Apps"); - [self performSegueWithIdentifier:@"MP_OtherApps" sender:self]; - break; - } + switch (buttonIndex - [sheet firstOtherButtonIndex]) { + case 0: { + inf(@"Action: FAQ"); + [self setHelpChapter:@"faq"]; + [self setHelpHidden:NO animated:YES]; + break; + } + case 1: { + inf(@"Action: Guide"); + [[MPAppDelegate get] showGuide]; + break; + } + case 2: { + inf(@"Action: Preferences"); + [self performSegueWithIdentifier:@"MP_UserProfile" sender:self]; + break; + } + case 3: { + inf(@"Action: Other Apps"); + [self performSegueWithIdentifier:@"MP_OtherApps" sender:self]; + break; + } //#if defined(ADHOC) && defined(TESTFLIGHT_SDK_VERSION) // case 4: { // inf(@"Action: Feedback via TestFlight"); // [TestFlight openFeedbackView]; // break; // } -// case 5: //#else - case 4: { - inf(@"Action: Feedback via Mail"); - [[MPAppDelegate get] showFeedbackWithLogs:YES forVC:self]; - break; - } - case 5: + case 4: { + inf(@"Action: Feedback via Mail"); + [[MPAppDelegate get] showFeedbackWithLogs:YES forVC:self]; + break; + } //#endif - { - inf(@"Action: Sign out"); - [[MPAppDelegate get] signOutAnimated:YES]; - break; - } - default: { - wrn(@"Unsupported action: %u", buttonIndex - [sheet firstOtherButtonIndex]); - break; - } - } - } + default: { + wrn(@"Unsupported action: %u", buttonIndex - [sheet firstOtherButtonIndex]); + break; + } + } + } cancelTitle:[PearlStrings get].commonButtonCancel destructiveTitle:nil otherTitles: - @"FAQ", @"Tutorial", @"Preferences", @"Other Apps", @"Feedback", @"Sign Out", - nil]; + @"? FAQ", + @"ℹ Quick Guide", + @"⚙ Preferences", + @"⬇ Other Apps", + @"✉ Feedback", + nil]; } - (MPElementType)selectedType { diff --git a/MasterPassword/ObjC/iOS/MPPreferencesViewController.m b/MasterPassword/ObjC/iOS/MPPreferencesViewController.m index 825bc20f..e18ad705 100644 --- a/MasterPassword/ObjC/iOS/MPPreferencesViewController.m +++ b/MasterPassword/ObjC/iOS/MPPreferencesViewController.m @@ -114,8 +114,7 @@ else if (cell == self.changeMPCell) { MPUserEntity *activeUser = [MPAppDelegate get].activeUser; - [[MPAppDelegate get] changeMasterPasswordFor:activeUser didResetBlock:nil]; - [activeUser saveContext]; + [[MPAppDelegate get] changeMasterPasswordFor:activeUser inContext:activeUser.managedObjectContext didResetBlock:nil]; } [tableView deselectRowAtIndexPath:indexPath animated:YES]; diff --git a/MasterPassword/ObjC/iOS/MPSetupViewController.h b/MasterPassword/ObjC/iOS/MPSetupViewController.h new file mode 100644 index 00000000..7c8bd08e --- /dev/null +++ b/MasterPassword/ObjC/iOS/MPSetupViewController.h @@ -0,0 +1,24 @@ +/** + * Copyright Maarten Billemont (http://www.lhunath.com, lhunath@lyndir.com) + * + * See the enclosed file LICENSE for license information (LGPLv3). If you did + * not receive this file, see http://www.gnu.org/licenses/lgpl-3.0.txt + * + * @author Maarten Billemont + * @license http://www.gnu.org/licenses/lgpl-3.0.txt + */ + +// +// MPSetupViewController.h +// MPSetupViewController +// +// Created by lhunath on 2013-04-11. +// Copyright, lhunath (Maarten Billemont) 2013. All rights reserved. +// + +#import + +@interface MPSetupViewController : UIViewController +- (IBAction)close:(UIBarButtonItem *)sender; +- (IBAction)showGuide:(UIBarButtonItem *)sender; +@end diff --git a/MasterPassword/ObjC/iOS/MPSetupViewController.m b/MasterPassword/ObjC/iOS/MPSetupViewController.m new file mode 100644 index 00000000..edc09c4b --- /dev/null +++ b/MasterPassword/ObjC/iOS/MPSetupViewController.m @@ -0,0 +1,38 @@ +/** + * Copyright Maarten Billemont (http://www.lhunath.com, lhunath@lyndir.com) + * + * See the enclosed file LICENSE for license information (LGPLv3). If you did + * not receive this file, see http://www.gnu.org/licenses/lgpl-3.0.txt + * + * @author Maarten Billemont + * @license http://www.gnu.org/licenses/lgpl-3.0.txt + */ + +// +// MPSetupViewController.h +// MPSetupViewController +// +// Created by lhunath on 2013-04-11. +// Copyright, lhunath (Maarten Billemont) 2013. All rights reserved. +// + +#import "MPSetupViewController.h" +#import "MPAppDelegate.h" + +@implementation MPSetupViewController + +- (IBAction)close:(UIBarButtonItem *)sender { + + [MPiOSConfig get].showSetup = @NO; + [self dismissViewControllerAnimated:YES completion:nil]; +} + +- (IBAction)showGuide:(UIBarButtonItem *)sender { + + [MPiOSConfig get].showSetup = @NO; + [self dismissViewControllerAnimated:YES completion:^{ + [[MPAppDelegate get] showGuide]; + }]; +} + +@end diff --git a/MasterPassword/ObjC/iOS/MPUnlockViewController.m b/MasterPassword/ObjC/iOS/MPUnlockViewController.m index 9a588e3b..e6bc04e0 100644 --- a/MasterPassword/ObjC/iOS/MPUnlockViewController.m +++ b/MasterPassword/ObjC/iOS/MPUnlockViewController.m @@ -26,7 +26,7 @@ NSManagedObjectID *_selectedUserOID; } -- (void)initializeAvatarAlert:(UIAlertView *)alert forUser:(MPUserEntity *)user { +- (void)initializeAvatarAlert:(UIAlertView *)alert forUser:(MPUserEntity *)user inContext:(NSManagedObjectContext *)moc { UIScrollView *alertAvatarScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(12, 30, 260, 150)]; alertAvatarScrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite; @@ -59,7 +59,7 @@ } options:0]; [avatar onSelect:^(BOOL selected) { if (selected) - [user.managedObjectContext performBlock:^{ + [moc performBlock:^{ user.avatar = (unsigned)avatar.tag; }]; } options:0]; @@ -164,9 +164,12 @@ - (void)viewWillAppear:(BOOL)animated { + inf(@"Lock screen will appear"); + [self.navigationController setNavigationBarHidden:YES animated:animated]; [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; - inf(@"Lock screen will appear"); + [[MPAppDelegate get] signOutAnimated:NO]; + _selectedUserOID = nil; [self updateUsers]; @@ -196,6 +199,9 @@ inf(@"Lock screen will disappear"); [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide]; + [[NSOperationQueue mainQueue] addOperationWithBlock:^{ + [self.navigationController setNavigationBarHidden:NO animated:animated]; + }]; [super viewWillDisappear:animated]; } @@ -288,7 +294,7 @@ [self.passwordField resignFirstResponder]; else if ([[MPAppDelegate get] signInAsUser:selectedUser usingMasterPassword:nil]) { - [self dismissViewControllerAnimated:YES completion:nil]; + [self performSegueWithIdentifier:@"MP_Unlock" sender:self]; return; } @@ -301,19 +307,17 @@ - (void)didSelectNewUserAvatar:(UIButton *)newUserAvatar { [MPAppDelegate managedObjectContextPerformBlock:^(NSManagedObjectContext *moc) { - MPUserEntity *newUser = [NSEntityDescription insertNewObjectForEntityForName:NSStringFromClass([MPUserEntity class]) - inManagedObjectContext:moc]; + MPUserEntity *newUser = [NSEntityDescription insertNewObjectForEntityForName:NSStringFromClass([MPUserEntity class]) inManagedObjectContext:moc]; - [self showNewUserNameAlertFor:newUser completion:^(BOOL finished) { + [self showNewUserNameAlertFor:newUser inContext:moc completion:^(BOOL finished) { newUserAvatar.selected = NO; - - if (finished) - [newUser saveContext]; + self.selectedUser = newUser; }]; }]; } -- (void)showNewUserNameAlertFor:(MPUserEntity *)newUser completion:(void (^)(BOOL finished))completion { +- (void)showNewUserNameAlertFor:(MPUserEntity *)newUser inContext:(NSManagedObjectContext *)moc + completion:(void (^)(BOOL finished))completion { dispatch_async(dispatch_get_main_queue(), ^{ [PearlAlert showAlertWithTitle:@"Enter Your Name" @@ -333,40 +337,42 @@ if (![alert textFieldAtIndex:0].text.length) { [PearlAlert showAlertWithTitle:@"Name Is Required" message:nil viewStyle:UIAlertViewStyleDefault initAlert:nil tappedButtonBlock:^(UIAlertView *alert_, NSInteger buttonIndex_) { - [newUser.managedObjectContext performBlock:^{ - [self showNewUserNameAlertFor:newUser completion:completion]; + [moc performBlock:^{ + [self showNewUserNameAlertFor:newUser inContext:moc completion:completion]; }]; } cancelTitle:@"Try Again" otherTitles:nil]; return; } - + // Save - [newUser.managedObjectContext performBlock:^{ + [moc performBlock:^{ newUser.name = [alert textFieldAtIndex:0].text; - [self showNewUserAvatarAlertFor:newUser completion:completion]; + [self showNewUserAvatarAlertFor:newUser inContext:moc completion:completion]; }]; } cancelTitle:[PearlStrings get].commonButtonCancel otherTitles:[PearlStrings get].commonButtonSave, nil]; }); } -- (void)showNewUserAvatarAlertFor:(MPUserEntity *)newUser completion:(void (^)(BOOL finished))completion { +- (void)showNewUserAvatarAlertFor:(MPUserEntity *)newUser inContext:(NSManagedObjectContext *)moc + completion:(void (^)(BOOL finished))completion { [PearlAlert showAlertWithTitle:@"Choose Your Avatar" message:@"\n\n\n\n\n\n" viewStyle:UIAlertViewStyleDefault initAlert:^(UIAlertView *_alert, UITextField *_firstField) { - [self initializeAvatarAlert:_alert forUser:newUser]; + [self initializeAvatarAlert:_alert forUser:newUser inContext:moc]; } tappedButtonBlock:^(UIAlertView *_alert, NSInteger _buttonIndex) { // Okay - [newUser.managedObjectContext performBlock:^{ - [self showNewUserConfirmationAlertFor:newUser completion:completion]; + [moc performBlock:^{ + [self showNewUserConfirmationAlertFor:newUser inContext:moc completion:completion]; }]; } cancelTitle:nil otherTitles:[PearlStrings get].commonButtonOkay, nil]; } -- (void)showNewUserConfirmationAlertFor:(MPUserEntity *)newUser completion:(void (^)(BOOL finished))completion { +- (void)showNewUserConfirmationAlertFor:(MPUserEntity *)newUser inContext:(NSManagedObjectContext *)moc + completion:(void (^)(BOOL finished))completion { [PearlAlert showAlertWithTitle:@"Is this correct?" message: @@ -378,15 +384,15 @@ } tappedButtonBlock:^void(UIAlertView *__alert, NSInteger __buttonIndex) { if (__buttonIndex == [__alert cancelButtonIndex]) { - [newUser.managedObjectContext performBlock:^{ - [self showNewUserNameAlertFor:newUser completion:completion]; + [moc performBlock:^{ + [self showNewUserNameAlertFor:newUser inContext:moc completion:completion]; }]; return; } // Confirm + [moc saveToStore]; completion(YES); - self.selectedUser = newUser; [self updateUsers]; } @@ -556,7 +562,7 @@ dispatch_async(dispatch_get_main_queue(), ^{ if (unlocked) - [self dismissViewControllerAnimated:YES completion:nil]; + [self performSegueWithIdentifier:@"MP_Unlock" sender:self]; else { if (self.passwordField.text.length) @@ -782,6 +788,7 @@ if (!targetedUser) return; + NSManagedObjectContext *moc = targetedUser.managedObjectContext; [PearlSheet showSheetWithTitle:targetedUser.name viewStyle:UIActionSheetStyleBlackTranslucent initSheet:nil tappedButtonBlock:^(UIActionSheet *sheet, NSInteger buttonIndex) { @@ -789,9 +796,9 @@ return; if (buttonIndex == [sheet destructiveButtonIndex]) { - [targetedUser.managedObjectContext performBlock:^{ - [targetedUser.managedObjectContext deleteObject:targetedUser]; - [targetedUser saveContext]; + [moc performBlock:^{ + [moc deleteObject:targetedUser]; + [moc saveToStore]; dispatch_async(dispatch_get_main_queue(), ^{ [self updateUsers]; @@ -801,7 +808,7 @@ } if (buttonIndex == [sheet firstOtherButtonIndex]) - [targetedUser.managedObjectContext performBlock:^{ + [moc performBlock:^{ [[MPAppDelegate get] changeMasterPasswordFor:targetedUser didResetBlock:^{ dispatch_async(dispatch_get_main_queue(), ^{ [[self avatarForUser:targetedUser] setSelected:YES]; diff --git a/MasterPassword/ObjC/iOS/MPiOSConfig.h b/MasterPassword/ObjC/iOS/MPiOSConfig.h index b66083ee..a363dca7 100644 --- a/MasterPassword/ObjC/iOS/MPiOSConfig.h +++ b/MasterPassword/ObjC/iOS/MPiOSConfig.h @@ -12,7 +12,7 @@ @property (nonatomic, retain) NSNumber *helpHidden; @property (nonatomic, retain) NSNumber *siteInfoHidden; -@property (nonatomic, retain) NSNumber *showQuickStart; +@property (nonatomic, retain) NSNumber *showSetup; @property (nonatomic, retain) NSNumber *actionsTipShown; @property (nonatomic, retain) NSNumber *typeTipShown; @property (nonatomic, retain) NSNumber *loginNameTipShown; diff --git a/MasterPassword/ObjC/iOS/MPiOSConfig.m b/MasterPassword/ObjC/iOS/MPiOSConfig.m index dfb2c350..f36f7695 100644 --- a/MasterPassword/ObjC/iOS/MPiOSConfig.m +++ b/MasterPassword/ObjC/iOS/MPiOSConfig.m @@ -7,7 +7,7 @@ // @implementation MPiOSConfig -@dynamic sendInfo, helpHidden, siteInfoHidden, showQuickStart, actionsTipShown, typeTipShown, loginNameTipShown; +@dynamic sendInfo, helpHidden, siteInfoHidden, showSetup, actionsTipShown, typeTipShown, loginNameTipShown; - (id)init { @@ -16,7 +16,7 @@ [self.defaults registerDefaults:@{ NSStringFromSelector(@selector(helpHidden)): @NO, NSStringFromSelector(@selector(siteInfoHidden)): @YES, - NSStringFromSelector(@selector(showQuickStart)): @YES, + NSStringFromSelector(@selector(showSetup)): @YES, NSStringFromSelector(@selector(iTunesID)): @"510296984", NSStringFromSelector(@selector(actionsTipShown)): PearlBoolNot(self.firstRun), NSStringFromSelector(@selector(typeTipShown)): PearlBoolNot(self.firstRun), diff --git a/MasterPassword/ObjC/iOS/MainStoryboard_iPhone.storyboard b/MasterPassword/ObjC/iOS/MainStoryboard_iPhone.storyboard index 7659bcfc..e4afda33 100644 --- a/MasterPassword/ObjC/iOS/MainStoryboard_iPhone.storyboard +++ b/MasterPassword/ObjC/iOS/MainStoryboard_iPhone.storyboard @@ -9,7 +9,7 @@ - + @@ -474,18 +474,18 @@ Your passwords will be AES-encrypted with your master password. - + - + - + @@ -629,7 +629,7 @@ Your passwords will be AES-encrypted with your master password. - + @@ -664,7 +664,7 @@ Your passwords will be AES-encrypted with your master password. - + @@ -830,8 +830,8 @@ Your passwords will be AES-encrypted with your master password. - - - - - - - - - - - - - - - - - - - - - - - - Welcome to Master Password. - -The goal of this application is to -secure your online life. - -To accomplish this, -over the course of the next few weeks -you will slowly change the passwords -of all your online accounts -to secure random passwords -generated by this application -specifically for you. - -Swipe to read the guide. - - - - - - - - Choose a master password. - -The first thing you'll do is choose a new master password. - -This password is the basis of all your -other passwords. It either generates -or securely encrypts them. - -This is the only password -you will need to remember. -Take your time and think of a good one. -Don't reuse an old password. - - - - - - - - Enter your site's name. - -Once you're in, you can get the password -for anything, just by entering its name -in the search box. - -You can name sites, email addresses, -but also real things like bike locks, -phone numbers for their SIM's PIN or -your house for the home alarm system. - -Examples: -apple.com, john@doe.com, office safe, ... - - - - - - - - Previously used sites. - -While you enter a site's name, -previously used sites show up immediately. -Tap one to go directly to its password. - -The first time you enter a certain site, -type its name fully and tap the result -marked with "Create a new site". - -To delete a site, swipe over the -search result for it from left to right -and tap "Delete". - - - - - - - - Your password is then shown. -Tap it to quickly copy it. - -The first time you generate a password, -don't forget to actually set it too: -Update your site or email account's password, -or whatever other item this password is for. - -Tap the password type button if you want a different kind of password. -Some sites have strange password policies -that may not accept the generated password. -You can then choose a different type of password. -Alternatively, you can save a password -of your own choosing. - - - - - - - - Tap to the edit button to set a custom password. - -Stored passwords have an edit button to let you set or update the password for the site. - -The password counter button. -Generated password use a counter. -If you increment the counter by tapping its button, -a new password will be generated. -Do this if someone learns the site's password -or if the site needs you to set a new one. -Holding down will reset the counter back to 1. - - - - - - - - Be safe online. Some tips: -Use a different password for every site. - -Let the application generate a password -for your sites. You won't need to remember -these and they aren't save anywhere, -so cannot get lost or stolen. - -It's a lot of work to change the passwords -of all your sites, but well worth it in the end! - -Choose a long master password. -Make a new password, don't reuse an old. -Whatever you do, never give your new -master password to anyone. Ever. - -A good master password is at least 10 characters long. -Absurd sentences make great password and they're -usually much more memorable. For example: -Pink fluffy door frame. - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -1282,22 +1081,22 @@ Pink fluffy door frame. - + - + - + - + @@ -1456,7 +1255,7 @@ Pink fluffy door frame. - + - + @@ -1662,7 +1461,11 @@ You could use the word wall for inspiration in finding a memorable master passw + + + + @@ -1680,6 +1483,7 @@ You could use the word wall for inspiration in finding a memorable master passw + @@ -1689,8 +1493,79 @@ You could use the word wall for inspiration in finding a memorable master passw + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Enabling iCloud will keep all your iPhones, iPads and Macs nicely in-sync. Any site you add on this device will automatically appear on all your others as well. + +Thanks to the special way Master Password works, your site passwords don't need to be sent to Apple. +If you set a custom password, it will be encrypted before it is saved to the cloud. + + + + + + + + + + + + + + + + + + + + + + + + @@ -1706,14 +1581,14 @@ You could use the word wall for inspiration in finding a memorable master passw - + - + @@ -1735,22 +1610,22 @@ You could use the word wall for inspiration in finding a memorable master passw - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + All + Outdated + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2194,20 +2550,16 @@ You could use the word wall for inspiration in finding a memorable master passw - - - - - - - + + + @@ -2220,7 +2572,6 @@ You could use the word wall for inspiration in finding a memorable master passw - @@ -2269,8 +2620,6 @@ You could use the word wall for inspiration in finding a memorable master passw - - @@ -2340,6 +2689,13 @@ You could use the word wall for inspiration in finding a memorable master passw + + + + + + + @@ -2377,9 +2733,10 @@ You could use the word wall for inspiration in finding a memorable master passw - + - + + \ No newline at end of file diff --git a/MasterPassword/ObjC/iOS/MasterPassword-iOS.xcodeproj/project.pbxproj b/MasterPassword/ObjC/iOS/MasterPassword-iOS.xcodeproj/project.pbxproj index 3be56bd0..245dbdcc 100644 --- a/MasterPassword/ObjC/iOS/MasterPassword-iOS.xcodeproj/project.pbxproj +++ b/MasterPassword/ObjC/iOS/MasterPassword-iOS.xcodeproj/project.pbxproj @@ -16,6 +16,7 @@ 93D399433EA75E50656040CB /* Twitter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 93D394077F8FAB8167647187 /* Twitter.framework */; }; 93D39C34FE35830EF5BE1D2A /* NSArray+Indexing.h in Headers */ = {isa = PBXBuildFile; fileRef = 93D396D04E57792A54D437AC /* NSArray+Indexing.h */; }; 93D39E281E3658B30550CB55 /* NSDictionary+Indexing.m in Sources */ = {isa = PBXBuildFile; fileRef = 93D39AA1EE2E1E7B81372240 /* NSDictionary+Indexing.m */; }; + 93D39F8A9254177891F38705 /* MPSetupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 93D39A28369954D147E239BA /* MPSetupViewController.m */; }; DA04E33E14B1E70400ECA4F3 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA04E33D14B1E70400ECA4F3 /* MobileCoreServices.framework */; }; DA30E9CE15722ECA00A68B4C /* NSBundle+PearlMutableInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = DA30E9CB15722ECA00A68B4C /* NSBundle+PearlMutableInfo.h */; }; DA30E9CF15722ECA00A68B4C /* NSBundle+PearlMutableInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = DA30E9CC15722ECA00A68B4C /* NSBundle+PearlMutableInfo.m */; }; @@ -750,6 +751,10 @@ DABD3C261711E2DC00CF925C /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = DABD3BFA1711E2DC00CF925C /* InfoPlist.strings */; }; DABD3C271711E2DC00CF925C /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = DABD3BFC1711E2DC00CF925C /* main.m */; }; DABD3FC717122ADD00CF925C /* libscrypt-bin-ios.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DABD3FC617122ADD00CF925C /* libscrypt-bin-ios.a */; }; + DABD3FCA1712446200CF925C /* cloud.png in Resources */ = {isa = PBXBuildFile; fileRef = DABD3FC81712446200CF925C /* cloud.png */; }; + DABD3FCB1712446200CF925C /* cloud@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DABD3FC91712446200CF925C /* cloud@2x.png */; }; + DABD3FCE1714F45C00CF925C /* identity.png in Resources */ = {isa = PBXBuildFile; fileRef = DABD3FCC1714F45B00CF925C /* identity.png */; }; + DABD3FCF1714F45C00CF925C /* identity@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DABD3FCD1714F45B00CF925C /* identity@2x.png */; }; DAC6325E1486805C0075AEA5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; }; DAC6326D148680650075AEA5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA5BFA4A147E415C00F98B1E /* Foundation.framework */; }; DAC632891486D9690075AEA5 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAC632871486D95D0075AEA5 /* Security.framework */; }; @@ -938,6 +943,41 @@ remoteGlobalIDString = DA5BFA43147E415C00F98B1E; remoteInfo = MasterPassword; }; + DA5A09D21714FA83005284AB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DACA29C01705E313002C6C22 /* scrypt.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = D2AAC07E0554694100DB518D; + remoteInfo = scryptenc; + }; + DA5A09D41714FA83005284AB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DACA29C01705E313002C6C22 /* scrypt.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = A0511C5A127770FD00DE46C4; + remoteInfo = scryptcrypto; + }; + DA5A09D61714FA83005284AB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DACA29C01705E313002C6C22 /* scrypt.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DA67FE5D14E4834300DB7CC9; + remoteInfo = util; + }; + DA5A09D81714FA83005284AB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DACA29C01705E313002C6C22 /* scrypt.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DABD3E841711E7D600CF925C; + remoteInfo = "scrypt-bin-ios"; + }; + DA5A09DA1714FA83005284AB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DACA29C01705E313002C6C22 /* scrypt.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DABD3E9D1711E7E000CF925C; + remoteInfo = "scrypt-bin-osx"; + }; DAC63283148681200075AEA5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = DA5BFA3B147E415C00F98B1E /* Project object */; @@ -974,6 +1014,8 @@ 93D394077F8FAB8167647187 /* Twitter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Twitter.framework; path = System/Library/Frameworks/Twitter.framework; sourceTree = SDKROOT; }; 93D3942A356B639724157982 /* PearlOverlay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PearlOverlay.h; sourceTree = ""; }; 93D396D04E57792A54D437AC /* NSArray+Indexing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+Indexing.h"; sourceTree = ""; }; + 93D39730673227EFF6DEFF19 /* MPSetupViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPSetupViewController.h; sourceTree = ""; }; + 93D39A28369954D147E239BA /* MPSetupViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPSetupViewController.m; sourceTree = ""; }; 93D39AA1EE2E1E7B81372240 /* NSDictionary+Indexing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+Indexing.m"; sourceTree = ""; }; 93D39F7C9F47BF6387FBC5C3 /* PearlEMail.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PearlEMail.h; sourceTree = ""; }; DA04E33D14B1E70400ECA4F3 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; }; @@ -1735,7 +1777,11 @@ DABD3BF91711E2DC00CF925C /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = ""; }; DABD3BFB1711E2DC00CF925C /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; DABD3BFC1711E2DC00CF925C /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - DABD3FC617122ADD00CF925C /* libscrypt-bin-ios.a */ = {isa = PBXFileReference; lastKnownFileType = file; name = "libscrypt-bin-ios.a"; path = "../../../External/Pearl/External/iOSPorts/ports/security/scrypt/build/Release-iphoneos/libscrypt-bin-ios.a"; sourceTree = ""; }; + DABD3FC617122ADD00CF925C /* libscrypt-bin-ios.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libscrypt-bin-ios.a"; path = "../../../External/Pearl/External/iOSPorts/ports/security/scrypt/build/Release-iphoneos/libscrypt-bin-ios.a"; sourceTree = ""; }; + DABD3FC81712446200CF925C /* cloud.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cloud.png; sourceTree = ""; }; + DABD3FC91712446200CF925C /* cloud@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "cloud@2x.png"; sourceTree = ""; }; + DABD3FCC1714F45B00CF925C /* identity.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = identity.png; sourceTree = ""; }; + DABD3FCD1714F45B00CF925C /* identity@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "identity@2x.png"; sourceTree = ""; }; DAC6325D1486805C0075AEA5 /* libuicolor-utilities.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libuicolor-utilities.a"; sourceTree = BUILT_PRODUCTS_DIR; }; DAC6326C148680650075AEA5 /* libjrswizzle.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libjrswizzle.a; sourceTree = BUILT_PRODUCTS_DIR; }; DAC632871486D95D0075AEA5 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; @@ -2088,6 +2134,18 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + DA5A09C91714FA83005284AB /* Products */ = { + isa = PBXGroup; + children = ( + DA5A09D31714FA83005284AB /* libscryptenc.a */, + DA5A09D51714FA83005284AB /* libscryptcrypto.a */, + DA5A09D71714FA83005284AB /* libutil.a */, + DA5A09D91714FA83005284AB /* libscrypt-bin-ios.a */, + DA5A09DB1714FA83005284AB /* libscrypt-bin-osx.a */, + ); + name = Products; + sourceTree = ""; + }; DA5BFA39147E415C00F98B1E = { isa = PBXGroup; children = ( @@ -2166,8 +2224,12 @@ DABD38751711E29700CF925C /* Tooltips */, DABD38C41711E29700CF925C /* book.png */, DABD38C51711E29700CF925C /* book@2x.png */, + DABD3FC81712446200CF925C /* cloud.png */, + DABD3FC91712446200CF925C /* cloud@2x.png */, DABD38C61711E29700CF925C /* help.html */, DABD38C71711E29700CF925C /* iTunesArtwork.png */, + DABD3FCC1714F45B00CF925C /* identity.png */, + DABD3FCD1714F45B00CF925C /* identity@2x.png */, DABD38C81711E29700CF925C /* jquery-1.6.1.min.js */, DABD38C91711E29700CF925C /* keypad.png */, DABD38CA1711E29700CF925C /* logo-bare.png */, @@ -2944,6 +3006,8 @@ DABD3BF91711E2DC00CF925C /* Settings.bundle */, DABD3BFA1711E2DC00CF925C /* InfoPlist.strings */, DABD3BFC1711E2DC00CF925C /* main.m */, + 93D39A28369954D147E239BA /* MPSetupViewController.m */, + 93D39730673227EFF6DEFF19 /* MPSetupViewController.h */, ); path = iOS; sourceTree = ""; @@ -3769,6 +3833,12 @@ mainGroup = DA5BFA39147E415C00F98B1E; productRefGroup = DA5BFA45147E415C00F98B1E /* Products */; projectDirPath = ""; + projectReferences = ( + { + ProductGroup = DA5A09C91714FA83005284AB /* Products */; + ProjectRef = DACA29C01705E313002C6C22 /* scrypt.xcodeproj */; + }, + ); projectRoot = ""; targets = ( DA5BFA43147E415C00F98B1E /* MasterPassword */, @@ -3785,6 +3855,44 @@ }; /* End PBXProject section */ +/* Begin PBXReferenceProxy section */ + DA5A09D31714FA83005284AB /* libscryptenc.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libscryptenc.a; + remoteRef = DA5A09D21714FA83005284AB /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + DA5A09D51714FA83005284AB /* libscryptcrypto.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libscryptcrypto.a; + remoteRef = DA5A09D41714FA83005284AB /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + DA5A09D71714FA83005284AB /* libutil.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libutil.a; + remoteRef = DA5A09D61714FA83005284AB /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + DA5A09D91714FA83005284AB /* libscrypt-bin-ios.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libscrypt-bin-ios.a"; + remoteRef = DA5A09D81714FA83005284AB /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + DA5A09DB1714FA83005284AB /* libscrypt-bin-osx.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libscrypt-bin-osx.a"; + remoteRef = DA5A09DA1714FA83005284AB /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + /* Begin PBXResourcesBuildPhase section */ DA3EF17615A47744003ABF4E /* Resources */ = { isa = PBXResourcesBuildPhase; @@ -4476,6 +4584,10 @@ DABD3C241711E2DC00CF925C /* MasterPassword.entitlements in Resources */, DABD3C251711E2DC00CF925C /* Settings.bundle in Resources */, DABD3C261711E2DC00CF925C /* InfoPlist.strings in Resources */, + DABD3FCA1712446200CF925C /* cloud.png in Resources */, + DABD3FCB1712446200CF925C /* cloud@2x.png in Resources */, + DABD3FCE1714F45C00CF925C /* identity.png in Resources */, + DABD3FCF1714F45C00CF925C /* identity@2x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4612,6 +4724,7 @@ DABD3C201711E2DC00CF925C /* MPUnlockViewController.m in Sources */, DABD3C211711E2DC00CF925C /* MPiOSConfig.m in Sources */, DABD3C271711E2DC00CF925C /* main.m in Sources */, + 93D39F8A9254177891F38705 /* MPSetupViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5459,7 +5572,7 @@ DABD3BD31711E2DC00CF925C /* MasterPassword 3.xcdatamodel */, DABD3BD41711E2DC00CF925C /* MasterPassword 4.xcdatamodel */, ); - currentVersion = DABD3BD11711E2DC00CF925C /* MasterPassword 1.xcdatamodel */; + currentVersion = DABD3BD41711E2DC00CF925C /* MasterPassword 4.xcdatamodel */; path = MasterPassword.xcdatamodeld; sourceTree = ""; versionGroupType = wrapper.xcdatamodel; diff --git a/MasterPassword/Resources/Media/cloud.png b/MasterPassword/Resources/Media/cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..df92c7fcb8a5580475ea9b0e32fb78b714382009 GIT binary patch literal 4013 zcmZ`+XEdB!)P6@B;fm2m7slv<=pt$`%qU~@8eNPUEkTUli5@LTv>>h$azzazk%)1P zD5ECojT%HtlyCCy`+j`qtY<&#?6vm(an@evc}|L{u|5MG7aafq3$|H0SDZgK=dslj>=Dle9Phq%1Y;?WF>gAp`uq1Toj+buTEYT?X_BqO|0}p=+#Ynjc1tnuoHquOxMZxXZUz;R zQx76oP1(wy4!^b;z zz?m!QYMHKc9T^?It}WJhmzLxL_eysguVQ#{O-h0`h+#0`;4Jb+;fT5>{xEr_-Fu=& z6?h5;EC5JYd2QENEsx5@5~VID&N|@!qeqW&l22Q_i=$^cd{r{z91j8J7>p<@pTeNb zzcPP)-Z*?Zvi7;9rNxP9|H5~!LuwUQE!&s!IgdqLeHU`wT2(N#xaKUS#@mSY2IgtU z4dcxo*YPE!zg@wRkzls6E-iu*x1;!s$GCxtSPN7jettRx~1=O zxbW!!WZIC+-|1OdCqgcJi#-wLhX_74nCRH;-1E3&fCy-IJ-&Ek7ZLHB<84!)!SG5s zfv*8zi$ytR)p%b9A8k%X&AsuzVgOPpEK&3?3=-sqORD+ef_3Lzpzk;Gh*USIXm8+> zO@P%h&#Z^YgI%_m!LC|s$;Ga~mG=aUc>Xg*RNmyLn<4UfCTECzkM8;hl7HD{x`m%rlvOLQ`{j+%fo3c z7)p(=(5#@n(Jmz=#Y@5-m#Bs9TE}kc4!wsxH+{>bUU)jKlN_#CKIYF3!c!(?Ahc}k zq0PEc7PIkQbsC-^fSNk--$f^cQA=D45GchU;4T90e0@vCp`SL?bokg z>(xeuyBqc_!B=^%Imk=5ipj~zBZziyuvY85r6NhlohmtBX=fmTUTSOV)o*Z-2Hy<+qm+m<6f;3bx7eF*Azq8OC zx-;vqfU-+Tjt^-PrI8_gxprf}Vk91=zVy0;=S6FTwP+1W=vQ;i52Eb-G&6?!d`+Q6h5 zo$~u+Z;z2X+#HRbRhUyHf2guXp+@y4qj))K#gXE7ncZ`BESgAr zzCJ#7-*dZKSsjm?ZYfPYz&q}^ zHo-8g2L~lCp;hZw`}z1;#ZyQ>1>3`%7DgD7vGRHvG}@~)_Mma3j9@uA*rZ_!3rsfY zJ%?v^HQT_%r#4xau@>g$<{`o&*HwXYp^#*lL0W(A5asx8y(AxXl#^+8fl^I&Hj|f^ zSKV>T%hkJ5QXrm9r(yCSEe-x9PHSKT7irM0tNM1YRh?87khOojGiOn{8uKPeQA!|X zae05$Pa4^sRw2nKo&ybCcrhTzhO?N6UXuOj(dOCY&~@zR({ve*dK%dwtpzq*}1{&otLg@b516{01A3=bvOz zxPwwMv=&RMEP8r+UfI3zQ|HY3kSk8GdNo8HGo*HtVyv8KLf!Z>c3qheE?0D(3?YKE z!u)w_#6U;=gqVv_-Fjl@jB}LY46ZrHCDZLzUKrNpHIR z9|bI`sugK0bvsmU_5ZjWjqpGIJ-T-ibvSAV{+wV?KUg1je!4&LY-6Wj!9Z;C*~&>u zRato7_QUgshGGC)CfmvEPlgHb%Wt%#mgeRklRth06t{8u>th0?G*caO0Duw5$s_L7 zPi_{*Ly|&L_r7*SO@@SON1+0xRZYZR`NjZT^LqUhhB4x^4?f^S7Sxlj^QziPvhR7c zk))E%lBv_|E!6>oS4~Zi*MDDT#Y3j4XleSDzv9L6&;o#_6poo>%MD2kJr5--LLaks zFAa_vz*sZbRBIP*rp8f;x@6M>DTf-Cw=;_@8^Merh5<5?uuU>K)cS zmbsUU{uAY1eWs$3w$gwX`h(jXUkEf{Q*)zW5s4J)?L1sH=fhEIsK?N4Ixhh}q zw@xea@HSeKUBl7d{(Noxg}(5$2rdsaYE#<&pJtKrv2x26{f*b|FTUWpF72U-hKa*^ z0k1w;YaeaDr@2n!ygA$1RKmy4e-+DcoQ%Tb;jzwUt4TS)zn0?py$_GKNpDn->!2=! zu-qlBwv-lHSKShTf?Mn0PCA-S3nIC_)E5l_6pNzifC}+b5g+(uBoh$+(d~f6T*N8M zvJE*SW3)k;hm;%UoVrPB)(?x8D~ddsZTI01LgS)7_V@Dd#>~)4T~}88jh!3R3=&4R7IdkW=NVRqZj~zO(P4?=vQ@e& zCIj}-y6}*JpOTQC6A;Z>+QPRR_XIi>slrS^1 zKm(%#z7dH;eo+-~oQ0}0(u_3}@)Sl`R?TiD%Z##2u zqLtJ!8*V7$nV*9pW_*ek@wS9!S^=39Qr+jVF;BqR$i-FI`g*MTZPUr|@$nC21-lsW zNc6u|+dLj!q9BP}^(>KV9gU2?XU)gU+rvgeTmN{GAtUz486)B9>Z*}&&-y*VBsi0; zWL5r5vW#)St)F{eVaDJ=Xz1}S9XW6gL>p_@fBLLG2s7<}ONxp}P$)DYA|iru zHnG2EE$FkHZr;}%_uIi@H;D1V^xUSWtsNa5!MpRF4L2RT!#}Pz;X6QJTU|Qxyh8EJ zu^@oTlTg~3KeBe2e#=Dmt|Q$0c|rPsK_lY+N=-We#0psV1%D?pcG~-8keVCsu^8@# zi?9a;S*>eP;6}}BjWgB`&#?1|>Q_uiZy0iy0Ppr^@%!`iGt z-Gsx$Nev?_AY4~(udxUm-m0I;^Bq|`u@^J+#%+pO-$ldr+CRpZ%drC-OD9&+PQ8&w zzmB$UVTBdz?RcEo5Re!Ogd)rO1hjqU{d>Le4MJHGFE8)NA2H}Z>^}B@GSR1E9}eVg zXHXXJK%bVBLoI{IxB+uHvoxu$62uIY+iO4i)o~<>vYbK%@_G@o}Qld4Gj%F zfB)@oWo0$3mZCebW@(;s-`&Fg1sYK_3?a=H?7m%#5L45ST4JP27#JauNE^L-g{ea> zDQGTgOX2HPsLE8dXZmh)Ij0(3#d9tY2F%>;C|DrH!s6AVoghZXe{o=*#|&oOOF{w& zEkgk{4sje?8?%{6?vGy&X5*<~E-KcSH^1TpYi*b|vUx-!*L3_@HK9-HWIi$q2dbAV zrm8ZvB!jOVwR_OZAxgIoHTUzgR{wpdCYg%|W7t?6dvmWDZ({gs`+NmbH1mZ?)IT-E zmWO#QhWVFBbRXc^TA5nAwoG-Vbr#0Q;sb#eUTKa-tsq40$aBh&1o0B8KB<_v(>a|? zDT^CBLb*z;xy#U0C{ZsnUZs^$+LjY$6R$74O-GIE*IO@UvS8A&92j?#uoY`H2UVe2 zNwPDowImurnnciW-<|tw+HB4-dPJ`mG>P!o>REpanxa_I`_8uJ48Lm(8`|K~;V6kK z&@5j=iGDe&GRJLGW*WX&g{JHH?fBLTJ$&BZeF@{iC#zh@iWT*2<4k| zotpA%?*JxUx^z{*QC;0oM_rxA(9_+{(Z%-CCAr&?|IN8iJ!gi*x<4yqQRaE66&;7H z{LlDxBRgApH?>Y`(dHADqE+lefkg$`*sts~Q>#C}83cvNQlDN{nWSRW2J_NWTLn!X z{Q99|9R2W{j&{&W7bCCW=C%J8ntiQ=jJwSCkNf54b#-P{+D-*8gHYeXqzu z3w%s1Vfm1)7dKivu1hukeN|s9xqt8uu;cFG(E0*r-1Yv=IncHbj$d2{Y(xEcNWQpb?J}TD=n| zAMqfLd(|WR_t!u7@XKL*?C;bT0^V-FApgKxuOyfD7(32e&UZWs{`Li$4tud2G1FiB z>dU|teuPbX$>8E!nzzb7%3DgW4UQ_vO6Ifd>Y6yaReV+bTaj*RM0+OjMbQG$^T4(F z9!KOMK{R)sz9>m*|Oz?CiG`=Q9|+<1!NZ~V7PYE(^cW_!?9rDeNu~o z&vO<9eZ$>Tm0;l*qoK)dw&Ov>c~p9puE-w0!LYd0>rEye8YTxH*-=P|v$OIB1Gta6 znLM=F=Irc!3L_=V#Ji$os@%GN{w8B9tHn-TpIuRW6Bzd?uW!fq_YHr3P9?L;WB2LT z-RDh*|33R$T~M@k6gJE+*rD7585nI`82)yifBx026j}-xpHp;-U{x#@2!0qWawZ%s z6bw3h8s}}=#CIlO{;@3?cul@}yEW%NHmDM6$utvZ?(oMsM_R~Ozb|MJu=L@y<+KLO zUd7x9F_Tz}#4x|At+^VWVl+ux`iefY9uemu>7Q!9>8 zpuI?)Y^+c(q-=T#=I_ET!bF)i zZg^;$dR@9iOWCGnx_l`;^WLRPmrWg?zw~~o_f)~!-4$qQ<8EaO^mp~3l)iKc?5{xC zbhY)ik2FvmD8UE0$-~0~ z_O!86c=lNH|6ESlQ{r>*_V!Q!f&BdZfPRudcTanexV*eP=#d0SLPCsELd+|`&D+vn z%*~7ce+&74l}*CI5fN{!cw%(7($6KR5HgTlzmo zDNTjk1cUzXV}sn}O7#-IbV=os&STZ*{+BniZv3#d^&yl8{-up(f=(Z^2jm2m+N!cFAkG8qmRAJe(8{H zt_kW%O;V-a{fxi)G~FSQR_;bl*{{M_!61qZFEfgeLD*%X1PwEVGNy0BP})pshk;_s$S!jH0>ggLu8SnMQwTU;_-?-Y8YQw_*i28rUML zWToAeUfPlGX9w8YDZ8c7T&uz|VeF|SdShXPGq?a_BbV3TC;qgAAw=WC)v;KI33f!d zq2b<9fUwd^qDbHRCrIOsa1`+sv>yY{JY;WCprrrvotq zvJ0*S3se^|(Ls`W>7}jXUQEwO!mJr{wsKm%9OQgZz(~Bsk5i@X0Cei%lzY3q#u!+V zZTZHCuwoQG&LQqDFDOCpTj+L1oVq7Fd(EyRqkHU;D@&BVwJTkK`eK7uXB7RMMYHeb zAB?%*3?@-wt#tkF80_kdy?SMyR|@yfK`F<4&j7+f5}S6$=dg{>wyVLY+MKhECGN8o zEymCRYc4NusUh0p;$kjV`YMUFGCJstV~^2Vgnlb)lgsTAdb7G~jrU#FeInqYQh(6f zt%tMy?k&V_G6-NtW0|9=8C~WRneWXR|EgFMPo5HZ0=QDF>GuAkviDV8QIG-zLcKN@*33<$|6moLk_}r z3Sw2*gspYHM%xWPXI!;Qm%5$ib=_AgNfsgDPui2#$A01pT*(sww(gByaJU<{!zOEN zgS3YJ`%n}BukBpGJ7oM_{dv1eghrzDQmY%34 zU9e*d2)EA?9nvjk0mrlt%iG*i9@|e}9rBMmoRl1r!)I}mf6;6)a7*8&p?_=*Bdn_Z zL1{L+atY~4E#5(Plk7UC7KFAsaoY$JK4H2c3+#DlLhkE zz^(tJf7318Pyb7iwR%bZ2@cP3jx9vZ#01O&E++P7L@HZ$Kcuy8*eWOWGDt_tCVMB| z;y$iS71S&2$BJ7~1=Y?kWy&Tlwk^x!V)%a|6o+5q#nzc{TeZ$u-6wM~55pLqIo!j6 z#xM1*60y^j{aX;O=+I@hU}N}096)@QDW|wW4&IvVz?USrrgzFatKGDcYGfK#GZh5Z z<4-7tZ8&G{j0n*b&z{U4ZgEzILTX6*iWg}Pxijh5x3lKO*NMNPn4L(H^COX+ayaLZ zY@z;eClR3lFOEQKC<~!6bQ*?kI9kq_yX`(%c|GWeStEBMrW2FMG=x2IR1b6I5c13K zyB4P>j?a%`2S9J9v<3|K7t0?`dttho-MQmR+@rg?M}_E)W%5TA37$H$AEE)j6}7Ti z4?KX%YZ*=0kDd4;$(^s0)xCgbrH}j?s*|0*Ip^l9b(O)J57M9^N5Pi&mMRL#aQkOU z4Jo0o;lrAr>0V!U=CM9u>j};0OKUc``V=`5h7piL3?Z_fAF26_W*JwUsJU^~ zVKvPg3Pdd43tSG$JkdQ^fZ)uxQ*;MQ`3oWPcpB8VEZ@JY%4Xgp8r%xRE~b4cnYmX~E8)kzDwR~_l0wD~Fi!8 zQ$G#hmUf2v1Shq*gjUR%Ut#HkDH%mUJ)1N^8Sz2fiiF+=c89f2?(>~=lNQ`vf_wdp zFCzX!Ful!v1@`;0_fDv@ImV1P#L1R4S$?d|hAjj?C6rATcnE_FpSqW@hkTi#e7t7T z{;kB#?I|7qT8S{JeQ zJeE!N#jh)z)cKl*K&o!=8?X~Fi(%9goo}(M=35@ok~Jii%1;B>wT)^@5(}L2&t4 zH?~;Qj7O$s8L4TPxWXD-VE?6AYq`jp%9%qZm{nUI*ha=(u+i_)$)pOVRep8B*6KAe z=-*W=h11Dt*&OzA$mF>wz#$d(P)xFtvIGgG6*DM*n96~wp_oo*5tN=CL*G!IsP_%t z^?C6M)@Nk6JHhprd1^qL79St6@p-9C*$Sa_@G`LD8lY^_J|}phD_Z3+;ZzYRbi?=h zduZgO|HbkCx_c`=QPEA|WTQ5eIplb$CbJXd(ugJc9;8#uv_r&izeW}yR98mm!atS~ zEDUj%Tl$??zGUU}#W>M2{N9nHKHK8nt2&Yg)auE*M4H1qU?#?Cw<2(&HhbTmVzck` z$7>Bk+Q+&i4xZI4%GSWX|OT4OwML)5W2zK6(-_Zb(QK6?O#nT1u^Mz#MyNgH> zlM47Nxy{??&NQTk8JF#+R}akZDSaGULnw4RLL& zDCKkF6n>@&5&6YAIp^=H!jj+SlcwFI)Ht)n>OUF6EEX9bjZ$^JBB*4%T|E}>6XnZ; zadR#f+;b+m?tPO=F2`+Gf(Jjy>KnFpT%!q}xrM=>4`Yz+RZwCAWdeFD!=yUR?-tLbdtIrePwuC&P7U{n*-1p0GAv*P1@sMcb_TGfz?o_oPCb!{AEZ zO&sHD;HU5M89u*FNfyGNn)ko~ttpj~?7%gkd))0o(walIIe*dYzRuSYlOOFiuuK_!UB<4u*iaj2kOq8e z<%@gJ)RcEviCgRb1PK@Z5k2nneQ6=kj@>aU&8$D%9T52RlNTL{HO=0wpj(ph(C^E! z2U5Am?oj#OdZ7L(!>HoB(Gu2i?IX9xk`E&IyDZ{*>i=VReC^1`rb&yZ51*CMyVaxH zeo$AbBs;qhU@wKX#{b@4$#@<{M=<|1Z}d0NZK z%=WqC&XL>VHg-fM@!S5?(gss17-;BO2A)<~|GiY;+KaP>LGK$y zThi|*UbiG+M3mOO)t4F^3hNd~D)7kdZ1PPaztB%ra9gfb(ifAVaKtTcD<>JaO}{!U zU|jCVuyeCV`n3ri_%orzjAFKelurwVlvdyG7%>r#n&4WaivdokSZ2z^`>?iDJ;QTE zOO!8x%88-TaabC)n=at7isw3PxT}0JiJs-8-&5vKXuJQzm1ndj+x%smbV9__GH+yn z%c)c65UhTRNgu+t!bOXqXGS+$r$|@bM$FdgqdNm^kPT1Y6E;)4l)OEKL5;yf9=rUS zF&o4lHC)7`i7yNhI9^~8a!N$4>mHp2o^ZXX{FNtye8Cxi?hRxaFyNX5P&c-&ciq&n zV5`(BZaZwknw^7*z`X97mE4x{y_*=X^2vx&)3-1_~P zN)wYFGUv+Cm_sfT?#iKb60jjL<%eqdgY~#_Iczv7g_suK&ocVJ7b(eDC8=thD!-5; zj_S8yuWLvLagYv=7m+j(egi~omvujJCt*9~&vz4UZqLSvuq7J%@TP`SL;7m>ZEX|! z1LF|@NtNmK4@;rG8{q@03N-OAS)|(%S3i?!#x7Xo|AN4K@qCkv_ifB2LF}0}^s9Br zXFI(uDEkbnU9+x$_udI?nA)exDat4L;bXUzbi7vLkg}+J5gC-Vv1m;}f0r@JdLDOJ z&5#&M4tcUNtNoWz>Q<0CZ%Tb^b*bJstXq_hR)ciC-|8F*Jw>)TPn5~?Xa8Q^T=!l1 z?XY46OK$MMdJOsc<3{cpFf_dTiUPNv@Y^fGp+lOmjDE6R;&ko?`EA$DYK#k($i1wt z$LncA*H|4ser17wu7+GI0lJy3l)H`?fWQPa-1&3GB!GXN^I!7lkB#V?qCF&U4hmRgLQye-J&fUHYlrIN>wJlSo%uu4^z)V?_)NCD-n}f# zqi>d`PAL34tDWM=w=ixGA$_s$Ue67kBiFIN1}M9~Ez^3MV=!m|d^4uKd+0px`BMk; zD;liidtCj(>+fICA9z;5r+oP3liH`w1F>>dT_zIJ0LWdPJ#;(?3_u z>44X3pmZ*oh6laAhu?cWSbG&?P$*{wLd)(OQl@z(e6Q{$q=&}JD+``D2|BT+sZQ<0 zKp|M7p8$2&vN*2+rQ5ljC7Sk7Z>#yFm=aSCYSR@|fSci=J*A+_cdG~hV5cEnX z1^sAiq%&RIVW!gd>hVff_|9(*P?owca^)5(sfCao1d;TfquscB5IcS2w`QD%mY!2J zwNQCrkLcTBK>2hm&cOE+^>TdI(tw3yAax6;E8eVaCS@*)NG`j~QWWqDpa{bS`-|2L z<9n0w({sU|E#3@k1+=7Fgplm1;NFGI{>81`e!@z1iZjui^w&1cJo`?lQn)>T8wlRc zLwFWn0kUH{>aD(%yUhFLnh5Q^oG1RKrYl%>(T0>o+G1LPq2N=ilWWhxGKTep=~YX3VUvMQvKOYbFPI@Baq=!j)Uh_XuPd z9!X8h%4o)X%i?;;Jw&)4^ssWW8CP3*>eT2&jJwYz!18*zI$T;&Mk_5E*<%teuYGW& zi%H5NX@H`ZJMh&(*)EJzDJ4pqj^^&bVMB{|N{iF^y|lBB2fyt3j_*0bM%B_$u(hgA zh9FJsxS?&;N(-K9y9dd9Y*PIjHu2{2 zb4FI1|zu!vb zA?sb<#2WjIIWK904Yg&x;9W)BcIM(hGjP&p?HR%!vjAq8Je%L!*0^18mW!mC1W7-S zEtimLL~_+#ds`4&jN2dP5*03udC>@c4v3M!fn0VAt|KOGaqZ{St40mrSBaVzgl1gFQ>ALz->f1 z%X&ypVq7eDe)CmKy^xwc`t8mBn&rQtYP+v~Ro~P5U=Wi!gsp#5owT`L*CH4a_Csb= zk_H+-*tXK;@VzsvMtq**eo(w2K(r0kjRe7i{ki;cg}U8ZP5q{630Tp7lW;O{BVeD4 z_!YSz#C;eJI5wMKqTM#@tCncf*UiDAPXyKru}%%Sdd##%OcV26L4SWRFpg>)SLYtr zB;i1dJYj~b#AIMVQ{m@Xo{3;vqQ4D}sNw!>@a?nO-X%?3B#;2dJ}KM(MCy4{o+vlj zi>Ms7MSKLw;HH75;1IGM_oKoS-Fk-VWZIlxW69p%U+38qeuXJ!G1Pd=T|(R#JG}^sLb83 z{P0YT2Xh&4XwzNamU{v|UnJg3v&Hc0Q-wYv?XpT|a}bk3XL*<0x#om6vSzP7&&Ajr z8!;F4Df~qgSwWL%^qidOpqJ823yX-+Ui;VLY#of`f5<7ot5$|=zmNxH<7Y+}^QmFu z8YY+8a=p3~2_cl3mY?8H#4@LC)|q`F`MV@yRVM`s!n+>P5X`$7^|jx-^k9(-{I6To zOWa>L9Y(07t8>&?4@UwXhF)ks*f>=d{WtM74ZI^;iJcvxL(iGSgySEMzg0iH4`WcS zch)0buEwLA3TTn5NCk27+eME7VwXbGMs-Ro8mv%FewWTvojXPGt^w8L@F6BbV^$|- z(}O4At8U9J?nxZY*AV+scc@g;0pm&cVTz4rGC!0xi8d^~=N;W3_>R}JT&E7j<9EzQ zbLX3L6=Fk!#VbWjW3L@BNXHRLA&c<%YjK^jUKRK>`BjeHUSAlbD!k@v8v|?rX)SoyR`I67S_THY@QvQ>Q ze)s;`(cp`WsvHhlBS`Wsd;W1}iJ2Oom7_|AV5cDD+Mn-!u^{_XmzFF*jF+*;Izv~)=gMf<(0h1 ze0>~6&%Q+-bPw?w1hkWph#dHC@7(o6df3iXg<1&yztU!w=su5#mzoba14ztOXf{G? ztd&sZ+ zh6-x=)7qNBTwC;@EIyiwxT%&C5C2?w5(GTuR2mAF+*TkC=^Pkk==M8ipoWsU3<_jj zW?PQ3n<-=4Ip=gyNO@<-uZcGMkk7VeRw3%G!Sd-9Ykq_`MOg_@L(v3@ zfUbr0YT5@U;O8j9TYBJnfJFhe*{a3Ygll<0-pNdA^jOXf0ono|{#P0J2ZfWaJ?GGM z<73l_Z*xeHa@S+dD4tNkIpn@#f&pH&QGEG|mW`Tz{n^lqvy0R=*mKzZA{k5Q+Ia$3 z2qh#Qowcg?jhl55P5t&eZ@`R+P{sFEc`T1~C}L2$$z_N?ye~|2FF9a2hVlH1U(nzu z5)LF_pTLiKPhLJ|VsDU{^&lT>L3WeJa3Gy&jz&*@;s>B?GDszvKg|nLUcDILnE&#v zD*bck{I(KLBH;21bN_|N3z6)$R)J^byWYU{fx`7^PI){~-`8rI28hy4gK~MuGbnrN zYWWU?V0Qp1>;lEKOC@<`Y+W6lH)gZ~U2hS*Qn>??m3&{)`C9cX!4o=_G2_N9_mod2 z>f3yt!1s6Bqm-13#yE9ojTJxW7l@jTZ;HJ^Wc(@EVj#(519CleCl(CW1=8?`A=`(( z=O^tKCx;qToJ@cUsid4Vo5Yw0HB~Z;CNgniw2e(Nw|tjGh;?1`LP5l8`t_~s{s5k0AWbW?GactH>T>6<_2<;b)Q7G|f)(20)}7bW90E zDC4H<;o?5!l%4kITm|`e(4O<+ylHUrj#(^4zCUaQ9uLjpIugUYobu%!_}(oYO*u1U z8d3Q@`Z#E_4&zG%G+g+>rFTY-d-J_M>jNyrqgItFzl4O7GgB4J_ZL(>6`cy!2VbL= zdfGuh3z8}JCjFmZ)Nxwf2GdnxAd+9`ZpT7AundNcMbV6Rzp2Nm1BV8^#uo=P_-9xX zyq&<`k6f@0d<((}&x@J7EMFCJv(|MGy!=Vp%RnhA(7#N~?K!7o+{=bhl}&+ByW8la zuyS|)7_>|~kDEHR*Eujd9ound&V?4XW4_QXLp1Fr**5IM0*fL>ca6a&R)ZRfCXJCw4WumApONkGuAzT9EvQ66D`a9$?EOUzbe4!##K+&W+w@Iuc9DSY#p zp@I<4mmCJ;5=t%rLIjM=vKTD<1(n$6F=v8448?nSDa%>?;sDJC6PYBKJ1>`feg&LF z+7Fn)9JqQko(|S`2QZ}7R(ccUpbgLF?)>u0Yy6pi(j-c=%HgWgsau()EN|n-%Bf#n z=MSTELMbPdg={)QPqN8(Z=N;dOA{Wao8rqXn2x1? zTL!LH5gz8mt=A;9ulH_#xU>bwK9QpVpuKT2MfjZ%1-5O%ika5FATGL)4~u4J1tmCUNBCtmob4!TiDWwngxC1 zQdasiyNo7|_rfzouO9Y>oWGC=X@tOgd;6pVqLCs|{(p)gaFdpe_o_r}O(hA)xSL83 zy%jo4V5I3QzWh4~hyWl4k7A~Pvp)h!ITuGcl?4yL9LP=FHJBdaWHfjYxuwmpW}mU1;uQ=V zPc92HSPq&v*IHA29gl8YR4+@qhgPR+t7+u+9k#yT8PsypGh~EUiVk_yW77DUs`@wB zQ}3vYD`*^s;`Dn$K9=NV>pK*da4h=nrrKjE_kzjPGwxCB`(S$J)Xxg*WwnX%pd9~9 zPz>lMn52cFXVJf&W9^fVz26L7o=MD1K9v@zw}Q`$08g~-xv>z6r0ejrlk#kZ&h{@BHR^oyw7^^M-=nGLLxJ0t1&uCc@Q7; z%yYJOU+0;}rNlpvsdgXbfk*O{52_L7taA=WTDL2i9)_oC0BYV2tv)w3Wckh#Zy-hk z3l3n{kU@^asV93h%mx9k4?Yfoi6iKj%OjrRvI%AJ?98BMMjR6PQ>>U{`@E;iwhQA~XSrz6@i$?aD8c4MRf2i^VM~fMxMZDc zyTv97)wJR3e=Eb|xm!{tLB-CzFzq6p-t4;`-3nw}EFhhu4cPRo%XSYOXQ@BLq|RC2 z5#UqFbXb+9l~3R4+fRRmNpP3# z99xMTZVALXV|&`*L2=r7qtUt?MBG;bq-TqwpU}KO!KW|dBi-xVcu~gT{>#Fg8TOq9 z9BqlX8Jc!h!Xq9Fak}N?+ls=?PLBZoYws45IrSxofoH*s$y#j^!kg*`g@z~0WzzZy z@kz&q`N^73N11dhI3Xhv#QK&cu@j^{KD(SR^GB7;F}b@0QOm)FKok^zr_w*~QRAG< z4z7U+XJ^KZ{HmuYLE>fIv+m17XZKT4x92!=&SH6mU@IZ#sefh(7vL(;KXkC0!#JQ33T!PbyNnWdtPVQUmW$Q&jC(j?(o*wr4GwEap662w# zCq$;a(>PgDj~9M1%OoRq8?S~DHsc562i!6MT9jEuYx!-|1O(^MRCg^9_Ny0OtHWc` z7;A=YU4DZBM+p)=LQn+k3mCV9V!-h)W|A^@h#WmN390c7ujqUt>KePaX{SU&*nh6$ zRsI%i%%!L?;uB#R+D8x4lW*Mc`7ksWwA~6VO+CD(Lj94MmAQmBOI?9hBQuY2cJPwvSgB`LS-!|ktS1LxHGxI`d~EWbypP%D+lamEe8d2wNKk4|v1qFl47kXp2Dj-rt8?ojJeUCz9Yw^+ z23wfO48&qusg4U$TgIZ+#>2&BU_Bp=C_vRV3^i8vQ!;|7Pb&r(N0k7?5Qv+QK|*Ku zk?wXsX8Qe0fRjJ)w0B8H4mZN-)#CDnUnroefB?r;FRVjSs&xh1`?1bMoE0}0*ZFZ? zg~7ugK|e-FWguD;FB#lV_DKpcoX*tr(_pxZyjFN&MJUC`*{9sHnd z+xquS%~p$K$WJJ1Ni4IDcpCBn<4=idY3GTJV=~1SkA=`E>)ao{70oC-bd+s>mYli8 zXoC1W>k__EBhG#56!3LjIMmy!Ba?rIf`eymaZB-ZaqK7z-l=9zqbl5D zZt2w-8$lfCchnc%!Lf4<$saCH%}q?{y@o@W2Y5e8& zp7w)9DH&(wMe@C2h^2k#a&U%E5!;XL2mg6EFiFp5KLUK%N)_>JscVo()OwJObn~o> z@3^4=0)m{_xj))$$MGYQK4@i*J<(RJdIS!^DBpz3I+SmGk4Q4YSN%zP zspV-C3hx3;`d-PHu_oHjs1kwoM?KD;&xT|3qP(Nf9rBB0TK?nypg;wb#oguB_a`q) zALHp>|Ndzl%=c9E+|gmRkL=nx^D#4(8tG{1Ek^^|)9BDzp^f8)k>wE^M_rDFIW1fU zoK*mEQt~~|1?czaO8eeS6h19@KGIxdPnEHrcp|KwS|~og-(+DI+O9pAmHRem;LL+wAm#l zy+U@)$qf1$cSj!Yq7fC;thERNKOL)`ITByD+nvD9{eD}2_Ezegg-|hacqcW&tIcCX zq}m1vWfZkZYbT&E@^>uN(T%Z|iRADtgs4D;U_4263%K{Ht0QcOwfDj7(ngxk(ZhNI z0D!4D8;{P;wp9#>@%u2q!w});9ZEDs)py79%f=`-;@FKb(F2UfzB$x{n(2`e1C@=p zd4>2y3)#K6+q#w>j#4AbdKogSx~Tpexa(^+BnJS`7bjXRQQDQjPfML)dfG~cnHau$ zl$D=8j7|C?yGR*irkN8x)ly8t_hg4Rc0OR_ke5zVO$g7yeU@F3=^ejZ-8?AY+qd+R zIp|j+0^K&SzLY4UP051w+w`g|~_D$JI%u^iljrAWu97Kez-FzymFu}%K<0QqG&#m<~& z^K4dTXT{9w=uItX{f4ENetKkZ^X#@C#igZkrgUHcgB2{xUOa-%hL?6dlN1MImzUUv z0PWj>=Hek9z@Y$Fbn5o=qs(E|-Eq%;8s$mpVNRsANwBwPA4Y!BQoH3uXCjviYkd+> z&uhQeP!XVjXy^BZ)lYl&>s{VFcR8(@9X<<5E~z(s$&@(t*j&T-ua;;d1)iCh30yBv z_h%Ko6R5cyn`0R5{|MDkITb^c+im8S2pA^bhwz7R5yWfyKW)xx-?t~x{SJ<`95as3 zd}9KJsd*+-DWUH+7r=EB?9RSY^yA0)77CJ0fGPK4vj8+8n@4`$T8Ca1yOcOlmMMPbDZ05p%fE|Lor+#i1CM{^pPsho*Xt3cv&oMSOP0muj3^2tgT z5Xdxui=nlgsZn}5k*>)+GtsQQzh1zdD~1S9!P8gN0ibYky)KAr{>^c@dd3fg(Z^J@ zP_IGh!)~Z#v#QV|4{AG`JS*0OES6>#ETFR0f6Ou%5WyzF&je~^F?hIEfbndgpCtMH z5ilullk;EJcEj}Q0pT32lMBHi9@(_|EBnJU*^Th~UhqU)ptMDG`0|o?wvYwm8PECK znzl1<)o!zN;Yx$Kt9ZRgF=CU0HMsmFB&Q?4i6w%*Kn|`_pA5(_q=BsDp3Z#27h!M< zM0AtYe3JR$F;bkXCWka2PVmTi)#Ak!FDg(^@kP0#{9Ss&akY#A5tEu0EWzQd;8hJcIW~vl>Fb$hE8L{25)T&rDC&)UT>@E*sWOQ zwDU^ID;Wt7vLpK;ruGX9vHkHhpmtHbNEdY)>B%AH7TLc2C{Cz-c*zX3K7M%5Ca1l> zjwD1O2E;uYAqp!*E_@BV79z?Ol(^Z)-|ikl%1BeD#6eE)#@zW9ZCB-Po;Hor3R%sv z&J^5z9IU~o7|ccpPgzxN*v-7AT83i!ey}ePpBtxwU@G}L4!9HEp44eg zWLhR~L>nXkw8ReMn}>^JXZ;HxlBkfy#0a1ty&{QAd}}P-ip=qHunb$P=}tcwFE?{I8S==LY3QrHZTAaI41Qu8C90Xv#BHUgp~iEa(<7 z5KGH?a=SLCC&tB9;})hYYrU(9p7nz=N$Y?kWd^|7g@GmM)xo>WR}$M#``b^|JT@V8 zrb3_hXLSx;da|8L!EQ`OT}CyDqmStA0(8MeC!s{fD(EgN{VV1}^዗+k9*oaM= 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 literal 0 HcmV?d00001 diff --git a/MasterPassword/Resources/Media/identity.png b/MasterPassword/Resources/Media/identity.png new file mode 100644 index 0000000000000000000000000000000000000000..be3c8bfa8fc86186baa190ce5ec04cca25ed41b9 GIT binary patch literal 3236 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 literal 0 HcmV?d00001 diff --git a/MasterPassword/Resources/Media/identity@2x.png b/MasterPassword/Resources/Media/identity@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..48a8e81d815204f2f0142930170e8dfc47837bd6 GIT binary patch literal 13217 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 literal 0 HcmV?d00001 diff --git a/MasterPassword/Resources/Media/lock.png b/MasterPassword/Resources/Media/lock.png new file mode 100644 index 0000000000000000000000000000000000000000..5dee96492a825e9d33be58b8d58cf2a5563646f7 GIT binary patch literal 3917 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 literal 0 HcmV?d00001 diff --git a/MasterPassword/Resources/Media/lock@2x.png b/MasterPassword/Resources/Media/lock@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d34f8a22bcc41a08e7c9b315cd31732e1de54951 GIT binary patch literal 15239 zcmY+r2Rxf!_%|H8c3XSvuv(kif}(0hX=}zFRYL8Vpo7|qTCumPy@}D4$dywCf-`F!r=H)&*H zF6|~(kI&!NpwHi)e)e=tMl!6Jg=B8K?ia{ESd#b(PjQBT`nB96N@6SjnX~p9b^Xw1 zztms*Z*@{X;@&5Ex7_Sy#iQS8dW!3pMoDkVZko-h$eTOVrZT)?rKK%4&d?9^8 zhIaT^^@JwDM9H>}z>ogHhk}3TutU4cY~lC%_kSGR=$t)i^NW}t4SNh~ccx>5GM!Vr z8JKXa)1+-9xjc8MC!WW!9*#>8;+NnjLDL@kjP~%z>pW5*jUIWnOILaiK`e)uwiBwi zG$&x}jbDD}%+mDO?niZLoTc0FvQUg`y~r)KAl&n05B$aOGA+N+x`8@u@%h=?)-VNR z?Fs9lW`%iqqq=1v(RmDRECAn!atv7L=%}zqCHIfG`Fv=<)zQ)8 z$`uo}5CQ3tsBrGC`+GiJUMX+|(ZiRu@C#4O{&(p0m(=G8o4hIBI2Yxv%aYN^tln&8 zZvM_i@W>PHKMK9Tfw9KrkzY4CH^t6H=0yw>DA|u+nPdx|LZ3mOU-LqFphDML;T}d! zkFTGCf42S*B$94Mw`6in`2f^|i!<-e@i}zCcf+w|n~JNuif% z+InKRk4#25&+9OB1gNuTMGU__195J4&RtPJaC#F@BP=7c1mV}>>J?i_mvMcsdP3#_ z9~lJ0h*4BI>Lp%N694E7X3Bq+^N|MpYY+ubs)f=Giqj3R^GbL(wET_8ecJlvarBnb z;$^F<*8&CPz(ghV_OI;j`wu2XG|>I~r)|u$A%{8v8)7*TB&SU+E1S8m*NA`U%T%B) z*|s%T7Ch=leS)y>hIv$EIV72H%Osg)%^%;=kJ@4si~z1aPAt!9?#u@1r`JaA008-2 znVbd>kebE_0N@!pyfySN)Yg)*c7X_5+PGNR3i?1k-AMxgay~M5MTo73C8rO>$=O}T zNB;5uNXXok|Em^y%=tee9***l4YhSSm0jFyIbR5h2#P)il5ui!%DLIt$>^!P`ajL@ zzR5rS;NkH}Mo7rp+gs3EOwh&6UPwe*T3Se0R7g}*;7&ro-PhT}(nrAA{mK7U^8e^j zv30k0bNJ-p;Nr~rpI%EV7f%oQ$B+N(=>NX{_c%Qq?Ec@LoZbJ=wC*M-^xrQ+B7(v~ z|5x{2Q@Q_YWt3eYpWJNS-S6}RU&#HB$>%wvonPs4jC6e8th#?!eygbJ@I>RwW6m#HQCW)K%Aj|r zH@DDX^vUgk4EFs(j?4Jr$8s6$<(cHZOWhnN2f|0QpKO%^!*fgR$BFLz-{WYB-;lS&4 zV{x;yTV>M3UxU^em`Wx;OzeRG^RG-bDt|=Z*yS8+Xpps_;y`{THKX0kJWA1{4KM(R z^}w@et+GU)7-hw}CJl(-*03ap^Y(b-cyW#Gy1Sb@-oXXb06I>+Bso`{4ffsP{3bw* zI_v5ErED`fpAY{G=as}6S|ZelJ=50gPtlI;jl%#t!YshoH^mGz92n33Z=s-61auen z?<1@aN+g9PZGUUgr@Fr)puE^61YLW=(RiXNTB)`pC{My$0lhDn2 z+SUTt0!A9+PRMMX%Um7gGMY_R!g-FjN6?3c6VXIk%jQX;P9&DC%PM zofj#EC$HG4)8v_jm4jAZ^6+kX<9F8eu(}U)qOTXxY=?KvuG+s)1E)EC4}q6^nD2DY z-?LUa%~W-~n98Q1p>b3(a4_M^REKzjw6!5`0;{(|wzs!;iBee(S}zZtyR==OJ%{Dg zS$2fX4asBY=YTgyF)m3^N_rgNYpa%~@_|l2y3ZdjPcLlz6tHaNb<_(`=Yg)Wpc;(* zX1GAce!{#qr9Q+u{y$yE_DiZ9T&99JJrk3f2?p6$;eU1qA*b4*-XPD}m{ zO){AIEDN+<&$V6C%n(Eh?tJQ9)?S$XBc}+ev2Qu}5yS*YB>Y}7O?tndT4pON-#){4 z12_yjtB#R5?tQ}H-Ht~hXIF0`#Kq_eX#aU3aZwb+Z1fO zI>xkJE}+e@ENw?D_3Dxk_ZWW0q%L-9-!7Y`d;dSOcyug*lMwHHOI=s1M-$GBuYa;~m9 zZqIuHz5BS5(r!Zo&qI-B0Y_c>V*u8o(izrgzPJMafegDCKqNhZZiB=NP$2zl8Y|jK zKdb}6j^j7C<7Z>?HAg0vW^$F>%L!h6BYvujY$CpQP0w4E;xi6kthv=RJC4)$u(}NC z>+7@L>;0SRJ;wyI=V1Ae1m5w>ki|Zm@eY_9JJd`8Sf9q6s_(R9;wB1#=l={^kGW6r zD1(CW89$%B>B=9DZT`7f5@ZB0q(~0C#-ajOykVQ(XUML4^M{6uMN**+ANe!*Ah82} z^akWj%82sD1aeP3ZIi-XQK}j(3)5^Ve+SGr`R2q#N44L^A*ID0aKcn~578?i-nC!Y zfqPaX5|H~>-?zx|W9uUB?AaJ74SF_nd5bH*#R+k^^*(aZOK!!`h1wozw0kjP{j~k+ zqi~D?p}@)c;t1FJMb{p-dY?IjFNXWHo=k4M$*ej_@L<0M-FnGhLs2P_e=< z+|rJiCHw#3cE0-80?t>)K?=}_GYRxqkF$BXtC-=3K9j_yLq)N&Y^wrRROOhzE%j=j zM70JP_3L?|(5w)ho$&pC^=;StJZ%1ZmA9JYK5uDqF}gMjLzanJq`V4K>}#RB$a00- z1vCu%O$P7ur3iOIY{v(qr@?kE(8$2wz-;;b;JXo5;zzd`8~$N_Ntyt~%sRInb+e#u zNCFQ@(6?J^3jb=E&xCbj-nmd2x#>o}WU}@iS)fYBvp6zs`4B`%X2D&nW&|6O-emRv zOUi>#Mm=CRU^Sk~#?W#dBMf0)I7bhdPkVhVHi(wk}>9%)iz1U!L z!{=3(kG^!?=*!jZ$}y+tzOE_+gb;}nJss(L;W%|pGx|t|6|sy*?bDt@oAIsqQZRK# zsQG|`_>u>E5Howfcc zb2kM+@@`SqgWa=_2Y3{Qn#d1+{&Z!9eM0ewal}imZ(hUP^#?Z3I^Z;CudV>UQdfPj zTABkBlt02FzpY-9dHUNvoxcJRYl9bdX(WW1EjWofe!&3t7**4e-LJvk;|DfAm9VCH zR!okn&DTDLEHapW`ctqekM_OY{K9dy)a*&#>9;RmH#6cJ_k28bNNbpXJnXcxFwO0s z%g$iMtBsowgv$Zd8_3S0|6t#Oi2#FO#NWTEI>0R@YU8u2q?Q5m$F0VS)BSxCS;;@^ z*FWAl(s`eCdmtvo-81>TVTcA%V$aXpN*W!&P&gk@+JQ<)*7PjtI5DzMKizM;*=>Ur zw$h&qtyfPH50Q_INJ8YWQ|u>9<^Bu18PCG-I$p7{D)?gOM7m@ppx!;RX}!)4BE@N} z@t~cwS?!3{a$x#Z)nZso))u9(#v+|UKIUi1?LO*epB0=d4I*Yj1}ME%#tU|E2C}Y& zM0cp*zb=3bh$ePtKCmeB-!(zu4osXI*XLwHkD;Pae50--W#SIP=2d6`oG`6zoTnPirw~X{S5~dwV(Ri; z?RK{OdbZkDII}}sI2pGCr zRk&F_y*(DXb&CdgJh?D2+C;Ys-YXl^HY?nf8OIYRGJgt+))%&0l_mfV#^?3NVZ~Qg4jMrY3W|g82Y|=&y;o-50!S-Y7)l%_IM*ijtU;Ll-HMUbt za_E#aK`$4Y{BOwvFOmX%-&yxtt>dSbGt6HL2IWz(w11(Jwop$E;%nSW9MtBxobI`K zXRbbf!0Ju~DEv`6@*+*mLCC#kz%*vQzajHf!|c~XWL2dEPh~SpywzXYzco%c3BQ@u zyZEBR)6kEVh)W%-{9eZcbyimoZ5<_`*9WY2o!~1EZW7;%n?hXHQjFXu9}yO8KgxF4 zdBSngTZ=SxAM_26zi2i=d%oY@CFV$c$UpI`psUR{yNqvc9l`LyyT(uSv@<=_mPi;B zutI~K@_qr*Ln&N*z!32EdYFBxr&4CvBJVU|c>?Ijsr>%J5TK|Bh!s`D=iO5Nq3kZ_ z_DM(cgs$BV%!2#uwm7d-WF;pA<*3z@tjyd3eb-C!d+TAZgu_a`t2y%UX0S+uQpW9J z>0Y6Re~(elgKB8}69~ygp}6TH?*rdDeHKD`dYXS$@TmX;j^@1RpLLxf%u;}YJ%<4N ztC_n`hhKI1AS-pReZ+7$JZtrX->qM7E|=l5r>ww%;sDyno}r(Kwo+fhR)E^`Db zSmJq#c|beyB8$o|^r3w-Ov`H!bv1}Geg22DV#1%EKB3EQ8IJ(Ew}te(%AVe2CmxBN zi=J@%4UfBOBQ# zC)wrBSH>enzc#>6aSoXMmH8W{`I!Ezw})UVgQ$|&hh?KfW1oJ2Jfu#(cIBuSTz2yw7;)s<>?+3&~IUmDIC;_2HSgf*@cI>KIt=KjPj zZdpDn3Y?qAd@!pnmmib>qt4l%y#aJQuKd8iV(JmwvhIFSkRdf9Aru^7+{W1eMtOpF z5%QU7G@|J}{7CjQ%N>GbBhR>@s)a=_28(1l7__iLn$Rrz+^rT3|KuG}8{FdWg zc_O%(bHyl6DI#)_+!Vv7j8vsz?VGDRFnI;D1r;^#)uFuRAO^lvdjhul_3G(8tiJ>t z2~h7kW&@p|JgzP^W$H9DKE0@~jjl%lfa=-kZ@YAsi=(Oz{M$?qeIZQc@e&ywuv_Hr z!s4#H)LKWH-hY&?XJBg6uum@|(e7b`CT&_*S=ykQ@wk=R zKPNv9Ef|vHEH3UC2Sky4QzP-@XTCsMONRoNKCp}74|omdmOR47Y6QZ#phjkQlOzG0>c$kQ7ZHW;VNd=bYZ~^VlNN{= zH}pUWFcXS&+B$#v@Q<6!QrXsToVx!$$u)m@p8t^@B~gHZIKbs@BGa!Ev5Q@7fH+LJ zG#wPPam3hITl@G!zFL~Qnpe!WAt3kh8eu$-rH%B(-{#lP(oTK19LTla_$%Kp(a;VrGO1nBFNAh~uER{tU&naUzvry8m$)M)qg z+NJs)t%^0K+KCJ#(W~yxH`jy;vigy4u}e>^+Mre&l4)rV>oU=JmeaW_PfXD#E|M-qnb9X~iCy090|Aop?=y+2jmJ(_igC+Tg7cbmPqNqK z$WEmqZBxB_MZ6&TxIMNM8h4vdYf%gB#(j%2nOb7e%E|U-8w(mJ$NcFnztjij=m!>Q zijfAG10>70y<9)y{ybPb;uZF=%=aXhW51k824hv$`YIc3{Jw38NJvU0Q?AgX#VWK_ zhZla%cjrNrCG>H}&KjV1pHLjOg)fF`uIv!fE=3n_Qp@muHm3TGGh}OeLTq0SLsKT? zyJ>bnJ0A~3)7wEGO}JzksW|nzoOVm`;d=czZVD@U3e~oL1xT5C zU!>Ss8_k4Cl)YcqQq;Wh&bKy{5&d9Za?)<;oSu^4mu`QJ_Qzx>!CeX|mCedm#m-15MG<(e5&NZ98>hRxl z+r;4#fqTNw0vHrym3$c#$#qYh%?swJspU>5^iRdH))~LNNA*wA`#Nfi)@PnwXZJr& z3iE;04uuOE4YA6fW@k!}uZ!{cbQfFa)Ca_B?^IBmD6DSCEZCmEThPa-%2RCXEkL$R zfRxOD_$(35X^jtU;*dXCOiaShq=F8o5ARYDE<^4ZnVq7aeu@8vw~&#;6BskIyamjU zLBfB3_0w)1`O)`Q#o`;8A3?srbWKlm=Tf{&t}BCQiGjuIU;&6|;9Sm^9*#x_gKAUw zt$KIc?pZW-8@2@vF1O#f=+{zQb!V0UC<_-UGniHC*A6?T@*x`LQ~E(;bSGA@drHZAG<;qYVNmeM%S`sjx;J z`O|2s*Kux(qQ&ON7jLW;genk5Jca8>K;GMzO@>rsA!vtfF%H~R>M%Z5j#;5Fw@nFG z!`4ZI!mTy$iM5H^MVenC>pbO7YSUmlUAxcgw^?9!JL9^Tz2PMARE!?&fbhl>-k=c% zd-3MIO!37$AfmXw&!A=J9m!6pgAfV-P{e!|JJ0%oy>h+Sx0$o)yiDKj zigL-ltZDDlqhZErC5W==p0>j_+^aSNrp*+3RVpM>i_ms5x02c`%8i!M1g)7qf8p;n z74)LdQ?xB>!-Cx5G$=(2UIf!^(*s%fY*_!LyYzE=6MITR*Ik|zl*)LZ-g{4S31tFD@P7gKDRRff<*&Nz-Voc zpt9sl!F1#!rH-bF-7e#oq_VNm_{kKrFND>9+MEVPP?h%6D(=+L8Z4>x??74~Q2>X^htg;*Sq-SVC zV(~ZTy`+`Ln-#v7EF^&|b|^XPKh_2@QS-EOiSGgJ1&k6x=gpcK8HD+wx`kg@e zb(o`x$Enl-(rbFct;hAr`#}a*$;`tD5iw$!E4)wLW9)W+Z=tGH%)-CljZvU9 zpK-ATY(faxyqG9}BoZhRW^KC^H=#|T&fQeu_?pEoE|kxdc({lvDsFkk|a#|(iLzAXVS#K zm+bes(0P}}26%i4l=^5Oksck++4NGx{Po12coN#?6$U;F zkSX>@iYS%nUKU?yC_UUqjFFRR7*P-O$B!_MZb9SXd*Mo}Ov(18Sr32Gi>Zhw4`EqD z?h)FL2pT_}WU$hyvq_0BzOd4#!-uEN(i^G_R-CmB~5{!AH z1;!y6&pl@rkT2HiFf{7twb=rgsTZ(+#-SmP=q0wolAu1ktp^>F{@zHG`AdBI4=o|r zU9MS=AaC2H-pX@kxxU=*W`A`Haet4u8<5N^P98b{+#uN&R2f4fIBs-ST=SawL<<#4fq^ zdk5bi7K2=NOEu?0>hA|taQ~*MIe#IPC@ueC2Y3DkuxcSrT3HbZk*@5GHyz$a@fA=jcp{R8(A~c;R7*@G35!(a)IS- z1YsQ5+e_KM!^YzB9`+P!Ez%q%mJ0sztYrflaaws?Ekw6kvnaZx0mGR z=YK)u{47tsJ_k?;y!9GK-QHj&Tke>g+gX;y!w~9i*lhoaX3+6>+#RCVgHBc3uz{!1 zoaydXQ^wydF_xWKf3|5i=&Wa@Np%?QqN|>ZuQ`h?b$qmR?D_#iR=eY8TMN)c=@5bM z8wsJrNw4?$0=R_ys8c4M3p>W$LXVTiH{N)#m$z@un5iGY2Nfl{Onxa(3~VagUQo_H zfok1O*%g-+0FA9LEG6n(@Lr;-28g76;c+aYd;2E!mN#`=A&1&SjqHh@kW*pzGd7R1 zSNLGBl&`0dwi$ssAZ-yHVTVm9-N43H*tg8^w>jA{Bc;@$ms_s(@RLl_wx<=Q0*xRF z_x_$3E_0`oK!Sr21^9U+we9I+uPC&ue1ZD_qHn>^IBB5iq+_av9VI%~{iqmB4VQ!u z($8-YB+E3Acxh^gs{6k`(oo`4ESk;9)7}}>*PXMeYzkl`;3x`jRK~WOVWPbet8KIo zvltmMGX*t;GdF`SFihg@dCYBtB4f|8Xh)irEDi-Z*tFqHGwdzcUDC_V}zBzbC$5DmV{=B@Eev`qRITk+F6sZuW_)3)>B z_rgc}?T2mm&!&j7Rth%>T}Ih(lKll>mGis}l3E!x>_XPzv`EaI zW6g*3f^Epa`tU~`wu>GKAa(E;inxnUYm@0e@6inOJ<+tbDVToTF?4JkBOp<59yYY~ z6-oW&ET=kDWH4qdz$&gm9Q4h_@wC>Lb=UXFb4F~Y3NnPnia`0$jBh8reBJ$ z9u+IaPgvua?A!MWZ=fPb=WA(gKdG?v^JQ&^-YU*%E3xk@@kgi5PHC3&OR_4ybRHoywXbw7Nv^6aeDu3mX<543yV5Dl zYGCVTW|4+FA;fM(l6#fGx=lQb&naH=BBg2lDxA}-qPABKm^=YpW1Da{`owZh#q?-p zgm9-%q>?|{7Z(|ketEZZAhXlaKyll%AM-HnfR*DmeF8cK)A+w*2RRxnb7LDoP$uZ#J#Lu1{H52i=E(fLv`nAo2pN= z_!^2=`ir%k4)&;7?rYE2#y5yNmLpr#x_pd;urKs9A|_KB^Ic8ODk|g1?QL|I6rVfL zdF^{NY$x0jai5y`*I&CxW681`DZu!~&Wero=K}Dzjtu-!ba*howXIh7U#e&DmJ^Uv z%(%kw@jPBsaWKC2NS^lc>1|qKCJeV7gItE7%3OOhMY6lzyAQv=9GA2OP8U+m928g+ z4OEckXzCh<%zq0CE%?2toIeymFMI9DUj4HExg3tJ+~-^1qYr>{ge^VqOXAq@C}-DX z-y!!5_pdj*`{TCysjFhd9wX=NM6x8WZ_PRv9g(d1)R{L-4A*6O)nakF@7K`&#y-up+np#) zIR%v7Uvbno4y;vx7D2|!GCkcViFyR@ zlCHX7`MCoG0dg`{qu!B`g)~SyZCBkNcNf|V%3khO z$BZlgh(<1W-)e6Pgwm>F{z~zQ#iSvKw>O{j*bUk1?#XPF?ZxcJuC?zOiCU65{F~b0 z%6-G=bg1my{GL7_Q_kx$QQzW9h38b{^0mCq{($*amw7<`!GgenAD+0FUqE-NzK-;I zEw%r2hZ%+8-?qU&RSB}OETN$Tb8cAK zIWa_KJTYwFUYg_F4t5RNH95LZeGZ%cwViIjU2Y0mljp;x<3{4RZp_Ce7d*y^4n&Dz zi9ZaE9YTTbuNPtNwT*kDVpFC^2VpR$pyk-RSeDE7GuVwg3hGJ~h((NNxCM0AWk zNMhCUj2YO#3@hC3PCtEN(Rvi+Vp=3+BI?}zhutVCoh)c3En(j2Lq?<04>5MUUEncT zy@!~Qds5YXMVg5$Dg$3}d`j+Y1M-E97Cup!en;$`lmxTf?3CZ^XdJx)qYC`Z3)-&M zh0F_SRyZbH@MW7H#Jf5gJB6=bnYrDZvW8js?!?Bxqv?d7g7CJGM0Knw!|c3LXCqVG z`)?#BBqBqh|Efk39nn?qu(hUnnTh8#dY`)<^gH+aGtH!#6ISY;sl8`xSu^a7TOm;0 zggNtpfRKSrQ-}fj&C$X;kG&wv&tD$aEe_HM1sLU|Pi<-Q>CEP$wnr(Y_OvvAv(pDC zPl9Dwq2qjS;f~fbopc7KmHP~1>{MnvLsRol_z>i?}t-&Ot-MEy|w={79q$ z4eaSyDY2DoxCiVuGXo0_>vmU~ZAhuC&P!rk>yBQza1YzWC31Z{q4ge78C?Yh-mwaG z`IhDvpzX3-N?h39yD9=KQm2Ax2A}{v`PnF2dH`9Ue0Y1l63G0 z_+4i>lqg~-yC%hmz3}z=4W0Duf-ifQ)CM^eR&4b8hVwyl{(sS4?LJmPon7#ZnTrTT ztV5R|jxSU)U)R9}csXso+X|>wMH&Q1<#2uY*gCysY7d7A`lpo5&08vU_a6<64@*x1 zxjrEBAZ#pRYn_ELuz8Q)L6)Mr-1==#_-MWM-Y?iYLb=>KBz$c=5ebr434)yqxI4CR z_;k6b^T3A>@US;=MiS}<-gD88hse~Wq!X?(3+S@6B* z{KS1=ZS>B9T%V|gEXuglA_y4|N&&3nU#&)0s|ot>^2zfZl__@rdt zKP1X`HIx$QP+f9SiN{U;MWyBah%6Vy!)^`Hk><# zSv-Y3AT#QwdDrf`TIV)7aOjAMWv*!$pjsBcIg$ItI4Mfnq#L2HKy_!4j!uKp?)Qmp zTYmc^;V_HrQU~Kt-fZoyYHvQ8tC>#P%5*&5?zKB*&p)u%FQU?%Ydxzi2mh{Q%@vPX zeIMh(B!gMA%t-XJ0Z+6Jkc5L5)LKinrvb`2T5&Lj!OvVMTSp@U*H{s=J80f??1SKA+Qq>`X;QZ9jiuUy#K5Ze{6DxJnROKOKjO1;f}A;@y}LQlsHWl#79 z)dFFwvd2I8S@`-bI3jW3n^V6_r)s}~5VG$$?@YH}C25<(<@acySBrX#gTm)KJGhz9 zXpEFVr>C}%h!}%ACR$G*=tL+IXzYUIiH{XX2J>3D9j?u(B-E_K@IT)w8#-wHW8(ZK?{3DpfbPz5-ecY7)ofDfUk0vu8WX&nt;=}{Wh1tR{zSH9; z`%)Hx9>a{s?F4km86R53Y0bLzSDDXQeVMQ62cGuHI?Or7R3*U#-Bfl4Ow`Q4*Gg3< zl~F8JemcEO5m!I32=CUZiVOPis6Kla-EV%l2dN?^2}8+JWE*t)x-(6xgXXZkE1~*HKu!E3db% zFJ!)E1N^k!ShBaRE^AD^rgY`H>>QmW3$}Jv#ChzPE+?=oo+Z| zpR=Sza z?J3lBW^x-pQ3qlasYg8ZPaw+xL1p5$u+P0w%-7L>=ZwronxWR@wC zWRkt~vM0J$E7Yoswmm-6BRx~JY@*o8F9mF?R+&v}5QEERg`)f+gpP+KDK7(JUBIPL z7YKFCf-!s|{+6K+G;fcU|3Z@t(>58|l7*MfYQr?!*st=+2CpWfje6Hg`>oDxhM+dI z^s)h?Pb58+sZ?LF^7?&nJvi)Pm+5s*P7~1zix>6jVeFivZc(7yzDe`EOSj>-@63PU zMo?3WkA4k0JNNpxJTTiNXC!_kPQX2=qU4+1w0cvffXh|DMY1>EFlqlo-rGag@l$kF zi27p3qg!n|_QptB3!;Bgw%CFL{*6&D`Z;BJ{@yFp9o#*I!G-J{C+<=4mETtbmX3xi5%nrS zg99**RX;PNZac~wvz}z$dQj>D-R(L3v%+({Y&lT?;|D_750k0APli7txY_}cwgh+U zTjWy+UUxg5uz)VJ(e~~UvwynZPBFFbOuyNghrG-B@(#LOE%~5S=;~j!1hJhlAFlUV_$)16mv;WvLm0;5QU zn~IdId_Q-E3bb2&%wl|6!2A(;VEIs(Sm(gfO(@i|UASz))IUYA zJ#Rn`0H4TqXk?$RE)S|krM_@H8)Nv|pHSb!tNlWs(qykjE7y*##hVW$MgHlV8v60M z$%j*Wr`183Q8!uT4u%wJwzJ_7Ez9$Qrjfn5#cOVZJ&k1PW1%uw@o~~z4Vr4+@A?#p zDuxfcpc-6rm6nO@#qK?14C1!ks03A1B=LFv(9TX(F8+c`ha@P+5di3U{TcNMf=c&P zCqmtlbEvyAqyP_gTmkpq<_sm$d=pZQJ>}d{EPf(u*NAK~kAXwaQ)TEy zSB6xXkP|HAPGlBZjw2I6>MT=_tsj_YzjDdN@BY$wzrdM-%GRx}?=x3sT^*=mBJ}CX z67}hH2lGX~_CMky2Zis$ta0_%rq@a$eLdp!riaYp9YOJRoxKf1xd%xxufIH00g_qB zDS~5JC&C(Mx=HUSN{GA{WpY`^kLxhJpC1+nSG{VL+~x|Lr<1`=f=0-5K5Il?S=1$e zgCp7fhy01_kH}=5j(9SxMWd%jXL*AjxydueS1oqASrzCchs5xm)$PtUPbVq=@Rg_( z_%t9?^P~UewWGqOH;6@=%Qjeh27s3ZkUHp4uH=fgwh!>x%s^Zc%pm~dY3EeWD88h~ zG&UJ!NKE^_Bu%#TXXp-@vYtm?8gUGNW1ghFpFC9SD^P*Pr(8`QY91sPelSRLm?QE> zw>DlY<)X%O#fkV{{0=_3KT{8YSGWJbB}yixs&Zt4pD!poB#0m!!WPk5Y?8gmchb~h zu12KACP3o)If!%LsUw8l1XM;$t|%fk&00>Zxllg{EwuVhIJC)PoNK@xF(4{pdJ4H19cHh%c}xiZ&B+YK~zDZjDUgYzb{8Iq@o zl&eRTl$1=@Kep3QT$2wxCzHCq%n~lvEIy<-)ScrtznrREXls)YDlpNbZzv$f6ZI)t z?`uYfK+EfcS|Zrgh_zgq*~DMmr^lzgoX=z--<952`AePiLh56)4Ewb&xTxB-j)*Nz zX2_m(Jk0OS9nRMT_%c*i%g*FV9BdoQ+9sc3mo5rgQ+HgvwuG-{he~=rd0#HMviljJ zAGJ(qD0MEww+85Vv~-jn@xCKb5D0FPH+qlcao1);I1D18Jw^MmDNW1OSuGI+{9Ca$ zYQ|~fh6&{N6gZ6MCMuh7i3=#>=B!jhhL{0yU!byS%z}o%RQMM zL-kku*mJY1-$ zAT(2kPe!`$)_#B51K<<>Y+vTQF=%|*t&P?*I45I^9}cFBWBv3ys4sXaH0U19xN7^! oFA;JIqo~0z7Y!1poj5 literal 0 HcmV?d00001 diff --git a/MasterPassword/Resources/Raw/Large Icons.vdesigner/QuickLook/Preview.pdf b/MasterPassword/Resources/Raw/Large Icons.vdesigner/QuickLook/Preview.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c9c1360cddf74d2df01e0fadafb3ccab14ff279c GIT binary patch literal 52269 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
6*{=cf7*yUOuknh91?3XPw6HvkYxGpXqcTZ>@ug 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 ASpWb4 literal 0 HcmV?d00001