Mac OS X build fixes of shared code from iOS.
[FIXED]     Build problems with code shared from the iOS project in the
            Mac project.
			
			
This commit is contained in:
		@@ -9,6 +9,8 @@
 | 
				
			|||||||
/* Begin PBXBuildFile section */
 | 
					/* Begin PBXBuildFile section */
 | 
				
			||||||
		DA600BEB150420AC008E9AB6 /* MPPasswordWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = DA600BE9150420AC008E9AB6 /* MPPasswordWindowController.m */; };
 | 
							DA600BEB150420AC008E9AB6 /* MPPasswordWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = DA600BE9150420AC008E9AB6 /* MPPasswordWindowController.m */; };
 | 
				
			||||||
		DA600BEC150420AC008E9AB6 /* MPPasswordWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = DA600BEA150420AC008E9AB6 /* MPPasswordWindowController.xib */; };
 | 
							DA600BEC150420AC008E9AB6 /* MPPasswordWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = DA600BEA150420AC008E9AB6 /* MPPasswordWindowController.xib */; };
 | 
				
			||||||
 | 
							DA600C2D150565FC008E9AB6 /* MPConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = DA600C2A150565FC008E9AB6 /* MPConfig.m */; };
 | 
				
			||||||
 | 
							DA600C2E150565FC008E9AB6 /* MPAppDelegate_Key.m in Sources */ = {isa = PBXBuildFile; fileRef = DA600C2B150565FC008E9AB6 /* MPAppDelegate_Key.m */; };
 | 
				
			||||||
		DAB8D98D150374AD00CED3BC /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAB8D98C150374AD00CED3BC /* Cocoa.framework */; };
 | 
							DAB8D98D150374AD00CED3BC /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAB8D98C150374AD00CED3BC /* Cocoa.framework */; };
 | 
				
			||||||
		DAB8D9C8150375C800CED3BC /* MasterPassword.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = DAB8D9B2150375C800CED3BC /* MasterPassword.xcdatamodeld */; };
 | 
							DAB8D9C8150375C800CED3BC /* MasterPassword.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = DAB8D9B2150375C800CED3BC /* MasterPassword.xcdatamodeld */; };
 | 
				
			||||||
		DAB8D9C9150375C800CED3BC /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D9B5150375C800CED3BC /* Credits.rtf */; };
 | 
							DAB8D9C9150375C800CED3BC /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = DAB8D9B5150375C800CED3BC /* Credits.rtf */; };
 | 
				
			||||||
@@ -773,6 +775,10 @@
 | 
				
			|||||||
		DA600BE8150420AC008E9AB6 /* MPPasswordWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPPasswordWindowController.h; sourceTree = "<group>"; };
 | 
							DA600BE8150420AC008E9AB6 /* MPPasswordWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPPasswordWindowController.h; sourceTree = "<group>"; };
 | 
				
			||||||
		DA600BE9150420AC008E9AB6 /* MPPasswordWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPPasswordWindowController.m; sourceTree = "<group>"; };
 | 
							DA600BE9150420AC008E9AB6 /* MPPasswordWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPPasswordWindowController.m; sourceTree = "<group>"; };
 | 
				
			||||||
		DA600BEA150420AC008E9AB6 /* MPPasswordWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MPPasswordWindowController.xib; sourceTree = "<group>"; };
 | 
							DA600BEA150420AC008E9AB6 /* MPPasswordWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MPPasswordWindowController.xib; sourceTree = "<group>"; };
 | 
				
			||||||
 | 
							DA600C29150565FC008E9AB6 /* MPConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPConfig.h; path = MasterPassword/MPConfig.h; sourceTree = SOURCE_ROOT; };
 | 
				
			||||||
 | 
							DA600C2A150565FC008E9AB6 /* MPConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPConfig.m; path = MasterPassword/MPConfig.m; sourceTree = SOURCE_ROOT; };
 | 
				
			||||||
 | 
							DA600C2B150565FC008E9AB6 /* MPAppDelegate_Key.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MPAppDelegate_Key.m; path = MasterPassword/MPAppDelegate_Key.m; sourceTree = SOURCE_ROOT; };
 | 
				
			||||||
 | 
							DA600C2C150565FC008E9AB6 /* MPAppDelegate_Key.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MPAppDelegate_Key.h; path = MasterPassword/MPAppDelegate_Key.h; sourceTree = SOURCE_ROOT; };
 | 
				
			||||||
		DAB8D988150374AD00CED3BC /* MasterPassword.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MasterPassword.app; sourceTree = BUILT_PRODUCTS_DIR; };
 | 
							DAB8D988150374AD00CED3BC /* MasterPassword.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MasterPassword.app; sourceTree = BUILT_PRODUCTS_DIR; };
 | 
				
			||||||
		DAB8D98C150374AD00CED3BC /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
 | 
							DAB8D98C150374AD00CED3BC /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
 | 
				
			||||||
		DAB8D98F150374AD00CED3BC /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
 | 
							DAB8D98F150374AD00CED3BC /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
 | 
				
			||||||
@@ -2013,6 +2019,10 @@
 | 
				
			|||||||
			children = (
 | 
								children = (
 | 
				
			||||||
				DAB8D9B2150375C800CED3BC /* MasterPassword.xcdatamodeld */,
 | 
									DAB8D9B2150375C800CED3BC /* MasterPassword.xcdatamodeld */,
 | 
				
			||||||
				DAB8D9B4150375C800CED3BC /* Mac */,
 | 
									DAB8D9B4150375C800CED3BC /* Mac */,
 | 
				
			||||||
 | 
									DA600C2B150565FC008E9AB6 /* MPAppDelegate_Key.m */,
 | 
				
			||||||
 | 
									DA600C2C150565FC008E9AB6 /* MPAppDelegate_Key.h */,
 | 
				
			||||||
 | 
									DA600C29150565FC008E9AB6 /* MPConfig.h */,
 | 
				
			||||||
 | 
									DA600C2A150565FC008E9AB6 /* MPConfig.m */,
 | 
				
			||||||
				DAB8D9C0150375C800CED3BC /* MPElementStoredEntity.m */,
 | 
									DAB8D9C0150375C800CED3BC /* MPElementStoredEntity.m */,
 | 
				
			||||||
				DAB8D9C1150375C800CED3BC /* MPTypes.m */,
 | 
									DAB8D9C1150375C800CED3BC /* MPTypes.m */,
 | 
				
			||||||
				DAB8D9C2150375C800CED3BC /* MPElementEntity.h */,
 | 
									DAB8D9C2150375C800CED3BC /* MPElementEntity.h */,
 | 
				
			||||||
@@ -4163,6 +4173,8 @@
 | 
				
			|||||||
				DAB8D9D1150375C800CED3BC /* MPElementEntity.m in Sources */,
 | 
									DAB8D9D1150375C800CED3BC /* MPElementEntity.m in Sources */,
 | 
				
			||||||
				DAB8D9D2150375C800CED3BC /* MPElementGeneratedEntity.m in Sources */,
 | 
									DAB8D9D2150375C800CED3BC /* MPElementGeneratedEntity.m in Sources */,
 | 
				
			||||||
				DA600BEB150420AC008E9AB6 /* MPPasswordWindowController.m in Sources */,
 | 
									DA600BEB150420AC008E9AB6 /* MPPasswordWindowController.m in Sources */,
 | 
				
			||||||
 | 
									DA600C2D150565FC008E9AB6 /* MPConfig.m in Sources */,
 | 
				
			||||||
 | 
									DA600C2E150565FC008E9AB6 /* MPAppDelegate_Key.m in Sources */,
 | 
				
			||||||
			);
 | 
								);
 | 
				
			||||||
			runOnlyForDeploymentPostprocessing = 0;
 | 
								runOnlyForDeploymentPostprocessing = 0;
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3824,6 +3824,7 @@
 | 
				
			|||||||
				GCC_DYNAMIC_NO_PIC = NO;
 | 
									GCC_DYNAMIC_NO_PIC = NO;
 | 
				
			||||||
				GCC_OPTIMIZATION_LEVEL = 0;
 | 
									GCC_OPTIMIZATION_LEVEL = 0;
 | 
				
			||||||
				GCC_PREPROCESSOR_DEFINITIONS = (
 | 
									GCC_PREPROCESSOR_DEFINITIONS = (
 | 
				
			||||||
 | 
										"TESTFLIGHT=1",
 | 
				
			||||||
					"DEBUG=1",
 | 
										"DEBUG=1",
 | 
				
			||||||
					"$(inherited)",
 | 
										"$(inherited)",
 | 
				
			||||||
				);
 | 
									);
 | 
				
			||||||
@@ -3847,6 +3848,10 @@
 | 
				
			|||||||
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
 | 
									"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
 | 
				
			||||||
				COPY_PHASE_STRIP = NO;
 | 
									COPY_PHASE_STRIP = NO;
 | 
				
			||||||
				GCC_C_LANGUAGE_STANDARD = gnu99;
 | 
									GCC_C_LANGUAGE_STANDARD = gnu99;
 | 
				
			||||||
 | 
									GCC_PREPROCESSOR_DEFINITIONS = (
 | 
				
			||||||
 | 
										"TESTFLIGHT=1",
 | 
				
			||||||
 | 
										"$(inherited)",
 | 
				
			||||||
 | 
									);
 | 
				
			||||||
				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
 | 
									GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
 | 
				
			||||||
				GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
 | 
									GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
 | 
				
			||||||
				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 | 
									GCC_WARN_ABOUT_RETURN_TYPE = YES;
 | 
				
			||||||
@@ -3917,7 +3922,7 @@
 | 
				
			|||||||
			};
 | 
								};
 | 
				
			||||||
			name = Release;
 | 
								name = Release;
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
		DA95D60914DF3F3B008D1B94 /* Production */ = {
 | 
							DA95D60914DF3F3B008D1B94 /* AppStore */ = {
 | 
				
			||||||
			isa = XCBuildConfiguration;
 | 
								isa = XCBuildConfiguration;
 | 
				
			||||||
			buildSettings = {
 | 
								buildSettings = {
 | 
				
			||||||
				ALWAYS_SEARCH_USER_PATHS = NO;
 | 
									ALWAYS_SEARCH_USER_PATHS = NO;
 | 
				
			||||||
@@ -3925,7 +3930,10 @@
 | 
				
			|||||||
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
 | 
									"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
 | 
				
			||||||
				COPY_PHASE_STRIP = NO;
 | 
									COPY_PHASE_STRIP = NO;
 | 
				
			||||||
				GCC_C_LANGUAGE_STANDARD = gnu99;
 | 
									GCC_C_LANGUAGE_STANDARD = gnu99;
 | 
				
			||||||
				GCC_PREPROCESSOR_DEFINITIONS = "PRODUCTION=1";
 | 
									GCC_PREPROCESSOR_DEFINITIONS = (
 | 
				
			||||||
 | 
										"APPSTORE=1",
 | 
				
			||||||
 | 
										"$(inherited)",
 | 
				
			||||||
 | 
									);
 | 
				
			||||||
				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
 | 
									GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
 | 
				
			||||||
				GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
 | 
									GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
 | 
				
			||||||
				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 | 
									GCC_WARN_ABOUT_RETURN_TYPE = YES;
 | 
				
			||||||
@@ -3938,9 +3946,9 @@
 | 
				
			|||||||
				TARGETED_DEVICE_FAMILY = "1,2";
 | 
									TARGETED_DEVICE_FAMILY = "1,2";
 | 
				
			||||||
				VALIDATE_PRODUCT = YES;
 | 
									VALIDATE_PRODUCT = YES;
 | 
				
			||||||
			};
 | 
								};
 | 
				
			||||||
			name = Production;
 | 
								name = AppStore;
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
		DA95D60A14DF3F3B008D1B94 /* Production */ = {
 | 
							DA95D60A14DF3F3B008D1B94 /* AppStore */ = {
 | 
				
			||||||
			isa = XCBuildConfiguration;
 | 
								isa = XCBuildConfiguration;
 | 
				
			||||||
			buildSettings = {
 | 
								buildSettings = {
 | 
				
			||||||
				CLANG_ENABLE_OBJC_ARC = YES;
 | 
									CLANG_ENABLE_OBJC_ARC = YES;
 | 
				
			||||||
@@ -3956,9 +3964,9 @@
 | 
				
			|||||||
				PRODUCT_NAME = "$(TARGET_NAME)";
 | 
									PRODUCT_NAME = "$(TARGET_NAME)";
 | 
				
			||||||
				WRAPPER_EXTENSION = app;
 | 
									WRAPPER_EXTENSION = app;
 | 
				
			||||||
			};
 | 
								};
 | 
				
			||||||
			name = Production;
 | 
								name = AppStore;
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
		DA95D60B14DF3F3B008D1B94 /* Production */ = {
 | 
							DA95D60B14DF3F3B008D1B94 /* AppStore */ = {
 | 
				
			||||||
			isa = XCBuildConfiguration;
 | 
								isa = XCBuildConfiguration;
 | 
				
			||||||
			buildSettings = {
 | 
								buildSettings = {
 | 
				
			||||||
				CLANG_ENABLE_OBJC_ARC = NO;
 | 
									CLANG_ENABLE_OBJC_ARC = NO;
 | 
				
			||||||
@@ -3970,9 +3978,9 @@
 | 
				
			|||||||
				PRODUCT_NAME = "$(TARGET_NAME)";
 | 
									PRODUCT_NAME = "$(TARGET_NAME)";
 | 
				
			||||||
				SKIP_INSTALL = YES;
 | 
									SKIP_INSTALL = YES;
 | 
				
			||||||
			};
 | 
								};
 | 
				
			||||||
			name = Production;
 | 
								name = AppStore;
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
		DA95D60C14DF3F3B008D1B94 /* Production */ = {
 | 
							DA95D60C14DF3F3B008D1B94 /* AppStore */ = {
 | 
				
			||||||
			isa = XCBuildConfiguration;
 | 
								isa = XCBuildConfiguration;
 | 
				
			||||||
			buildSettings = {
 | 
								buildSettings = {
 | 
				
			||||||
				CLANG_ENABLE_OBJC_ARC = NO;
 | 
									CLANG_ENABLE_OBJC_ARC = NO;
 | 
				
			||||||
@@ -3982,9 +3990,9 @@
 | 
				
			|||||||
				PRODUCT_NAME = "$(TARGET_NAME)";
 | 
									PRODUCT_NAME = "$(TARGET_NAME)";
 | 
				
			||||||
				SKIP_INSTALL = YES;
 | 
									SKIP_INSTALL = YES;
 | 
				
			||||||
			};
 | 
								};
 | 
				
			||||||
			name = Production;
 | 
								name = AppStore;
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
		DA95D60D14DF3F3B008D1B94 /* Production */ = {
 | 
							DA95D60D14DF3F3B008D1B94 /* AppStore */ = {
 | 
				
			||||||
			isa = XCBuildConfiguration;
 | 
								isa = XCBuildConfiguration;
 | 
				
			||||||
			buildSettings = {
 | 
								buildSettings = {
 | 
				
			||||||
				CLANG_ENABLE_OBJC_ARC = NO;
 | 
									CLANG_ENABLE_OBJC_ARC = NO;
 | 
				
			||||||
@@ -3994,9 +4002,9 @@
 | 
				
			|||||||
				PRODUCT_NAME = "$(TARGET_NAME)";
 | 
									PRODUCT_NAME = "$(TARGET_NAME)";
 | 
				
			||||||
				SKIP_INSTALL = YES;
 | 
									SKIP_INSTALL = YES;
 | 
				
			||||||
			};
 | 
								};
 | 
				
			||||||
			name = Production;
 | 
								name = AppStore;
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
		DA95D60E14DF3F3B008D1B94 /* Production */ = {
 | 
							DA95D60E14DF3F3B008D1B94 /* AppStore */ = {
 | 
				
			||||||
			isa = XCBuildConfiguration;
 | 
								isa = XCBuildConfiguration;
 | 
				
			||||||
			buildSettings = {
 | 
								buildSettings = {
 | 
				
			||||||
				DSTROOT = /tmp/InAppSettingsKit.dst;
 | 
									DSTROOT = /tmp/InAppSettingsKit.dst;
 | 
				
			||||||
@@ -4004,7 +4012,7 @@
 | 
				
			|||||||
				PRODUCT_NAME = InAppSettingsKit;
 | 
									PRODUCT_NAME = InAppSettingsKit;
 | 
				
			||||||
				SKIP_INSTALL = YES;
 | 
									SKIP_INSTALL = YES;
 | 
				
			||||||
			};
 | 
								};
 | 
				
			||||||
			name = Production;
 | 
								name = AppStore;
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
		DAC632661486805C0075AEA5 /* Debug */ = {
 | 
							DAC632661486805C0075AEA5 /* Debug */ = {
 | 
				
			||||||
			isa = XCBuildConfiguration;
 | 
								isa = XCBuildConfiguration;
 | 
				
			||||||
@@ -4090,7 +4098,7 @@
 | 
				
			|||||||
			buildConfigurations = (
 | 
								buildConfigurations = (
 | 
				
			||||||
				DA5BFA6B147E415C00F98B1E /* Debug */,
 | 
									DA5BFA6B147E415C00F98B1E /* Debug */,
 | 
				
			||||||
				DA5BFA6C147E415C00F98B1E /* Release */,
 | 
									DA5BFA6C147E415C00F98B1E /* Release */,
 | 
				
			||||||
				DA95D60914DF3F3B008D1B94 /* Production */,
 | 
									DA95D60914DF3F3B008D1B94 /* AppStore */,
 | 
				
			||||||
			);
 | 
								);
 | 
				
			||||||
			defaultConfigurationIsVisible = 0;
 | 
								defaultConfigurationIsVisible = 0;
 | 
				
			||||||
			defaultConfigurationName = Release;
 | 
								defaultConfigurationName = Release;
 | 
				
			||||||
@@ -4100,7 +4108,7 @@
 | 
				
			|||||||
			buildConfigurations = (
 | 
								buildConfigurations = (
 | 
				
			||||||
				DA5BFA6E147E415C00F98B1E /* Debug */,
 | 
									DA5BFA6E147E415C00F98B1E /* Debug */,
 | 
				
			||||||
				DA5BFA6F147E415C00F98B1E /* Release */,
 | 
									DA5BFA6F147E415C00F98B1E /* Release */,
 | 
				
			||||||
				DA95D60A14DF3F3B008D1B94 /* Production */,
 | 
									DA95D60A14DF3F3B008D1B94 /* AppStore */,
 | 
				
			||||||
			);
 | 
								);
 | 
				
			||||||
			defaultConfigurationIsVisible = 0;
 | 
								defaultConfigurationIsVisible = 0;
 | 
				
			||||||
			defaultConfigurationName = Release;
 | 
								defaultConfigurationName = Release;
 | 
				
			||||||
@@ -4110,7 +4118,7 @@
 | 
				
			|||||||
			buildConfigurations = (
 | 
								buildConfigurations = (
 | 
				
			||||||
				DA95D5A514DF063C008D1B94 /* Debug */,
 | 
									DA95D5A514DF063C008D1B94 /* Debug */,
 | 
				
			||||||
				DA95D5A614DF063C008D1B94 /* Release */,
 | 
									DA95D5A614DF063C008D1B94 /* Release */,
 | 
				
			||||||
				DA95D60E14DF3F3B008D1B94 /* Production */,
 | 
									DA95D60E14DF3F3B008D1B94 /* AppStore */,
 | 
				
			||||||
			);
 | 
								);
 | 
				
			||||||
			defaultConfigurationIsVisible = 0;
 | 
								defaultConfigurationIsVisible = 0;
 | 
				
			||||||
			defaultConfigurationName = Release;
 | 
								defaultConfigurationName = Release;
 | 
				
			||||||
@@ -4120,7 +4128,7 @@
 | 
				
			|||||||
			buildConfigurations = (
 | 
								buildConfigurations = (
 | 
				
			||||||
				DAC632661486805C0075AEA5 /* Debug */,
 | 
									DAC632661486805C0075AEA5 /* Debug */,
 | 
				
			||||||
				DAC632671486805C0075AEA5 /* Release */,
 | 
									DAC632671486805C0075AEA5 /* Release */,
 | 
				
			||||||
				DA95D60C14DF3F3B008D1B94 /* Production */,
 | 
									DA95D60C14DF3F3B008D1B94 /* AppStore */,
 | 
				
			||||||
			);
 | 
								);
 | 
				
			||||||
			defaultConfigurationIsVisible = 0;
 | 
								defaultConfigurationIsVisible = 0;
 | 
				
			||||||
			defaultConfigurationName = Release;
 | 
								defaultConfigurationName = Release;
 | 
				
			||||||
@@ -4130,7 +4138,7 @@
 | 
				
			|||||||
			buildConfigurations = (
 | 
								buildConfigurations = (
 | 
				
			||||||
				DAC63275148680650075AEA5 /* Debug */,
 | 
									DAC63275148680650075AEA5 /* Debug */,
 | 
				
			||||||
				DAC63276148680650075AEA5 /* Release */,
 | 
									DAC63276148680650075AEA5 /* Release */,
 | 
				
			||||||
				DA95D60D14DF3F3B008D1B94 /* Production */,
 | 
									DA95D60D14DF3F3B008D1B94 /* AppStore */,
 | 
				
			||||||
			);
 | 
								);
 | 
				
			||||||
			defaultConfigurationIsVisible = 0;
 | 
								defaultConfigurationIsVisible = 0;
 | 
				
			||||||
			defaultConfigurationName = Release;
 | 
								defaultConfigurationName = Release;
 | 
				
			||||||
@@ -4140,7 +4148,7 @@
 | 
				
			|||||||
			buildConfigurations = (
 | 
								buildConfigurations = (
 | 
				
			||||||
				DAC77CB5148291A600BCF976 /* Debug */,
 | 
									DAC77CB5148291A600BCF976 /* Debug */,
 | 
				
			||||||
				DAC77CB6148291A600BCF976 /* Release */,
 | 
									DAC77CB6148291A600BCF976 /* Release */,
 | 
				
			||||||
				DA95D60B14DF3F3B008D1B94 /* Production */,
 | 
									DA95D60B14DF3F3B008D1B94 /* AppStore */,
 | 
				
			||||||
			);
 | 
								);
 | 
				
			||||||
			defaultConfigurationIsVisible = 0;
 | 
								defaultConfigurationIsVisible = 0;
 | 
				
			||||||
			defaultConfigurationName = Release;
 | 
								defaultConfigurationName = Release;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -63,14 +63,14 @@
 | 
				
			|||||||
      shouldUseLaunchSchemeArgsEnv = "YES"
 | 
					      shouldUseLaunchSchemeArgsEnv = "YES"
 | 
				
			||||||
      savedToolIdentifier = ""
 | 
					      savedToolIdentifier = ""
 | 
				
			||||||
      useCustomWorkingDirectory = "NO"
 | 
					      useCustomWorkingDirectory = "NO"
 | 
				
			||||||
      buildConfiguration = "Release"
 | 
					      buildConfiguration = "Production"
 | 
				
			||||||
      debugDocumentVersioning = "YES">
 | 
					      debugDocumentVersioning = "YES">
 | 
				
			||||||
   </ProfileAction>
 | 
					   </ProfileAction>
 | 
				
			||||||
   <AnalyzeAction
 | 
					   <AnalyzeAction
 | 
				
			||||||
      buildConfiguration = "Debug">
 | 
					      buildConfiguration = "Debug">
 | 
				
			||||||
   </AnalyzeAction>
 | 
					   </AnalyzeAction>
 | 
				
			||||||
   <ArchiveAction
 | 
					   <ArchiveAction
 | 
				
			||||||
      buildConfiguration = "Release"
 | 
					      buildConfiguration = "Production"
 | 
				
			||||||
      revealArchiveInOrganizer = "YES">
 | 
					      revealArchiveInOrganizer = "YES">
 | 
				
			||||||
   </ArchiveAction>
 | 
					   </ArchiveAction>
 | 
				
			||||||
</Scheme>
 | 
					</Scheme>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,6 @@
 | 
				
			|||||||
//  Copyright (c) 2011 Lyndir. All rights reserved.
 | 
					//  Copyright (c) 2011 Lyndir. All rights reserved.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#import <UIKit/UIKit.h>
 | 
					 | 
				
			||||||
#import "MPAppDelegate.h"
 | 
					#import "MPAppDelegate.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@interface MPAppDelegate ()
 | 
					@interface MPAppDelegate ()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,11 +6,9 @@
 | 
				
			|||||||
//  Copyright (c) 2011 Lyndir. All rights reserved.
 | 
					//  Copyright (c) 2011 Lyndir. All rights reserved.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#import "MPConfig.h"
 | 
				
			||||||
#import "MPAppDelegate_Key.h"
 | 
					#import "MPAppDelegate_Key.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#import "MPMainViewController.h"
 | 
					 | 
				
			||||||
#import "IASKSettingsReader.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@implementation MPAppDelegate (Key)
 | 
					@implementation MPAppDelegate (Key)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static NSDictionary *keyQuery() {
 | 
					static NSDictionary *keyQuery() {
 | 
				
			||||||
@@ -44,7 +42,7 @@ static NSDictionary *keyHashQuery() {
 | 
				
			|||||||
    [PearlKeyChain deleteItemForQuery:keyHashQuery()];
 | 
					    [PearlKeyChain deleteItemForQuery:keyHashQuery()];
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    [[NSNotificationCenter defaultCenter] postNotificationName:MPNotificationKeyForgotten object:self];
 | 
					    [[NSNotificationCenter defaultCenter] postNotificationName:MPNotificationKeyForgotten object:self];
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
    [TestFlight passCheckpoint:MPTestFlightCheckpointMPForgotten];
 | 
					    [TestFlight passCheckpoint:MPTestFlightCheckpointMPForgotten];
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -56,7 +54,7 @@ static NSDictionary *keyHashQuery() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
- (void)loadStoredKey {
 | 
					- (void)loadStoredKey {
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    if ([[MPiOSConfig get].storeKey boolValue]) {
 | 
					    if ([[MPConfig get].storeKey boolValue]) {
 | 
				
			||||||
        // Key is stored in keychain.  Load it.
 | 
					        // Key is stored in keychain.  Load it.
 | 
				
			||||||
        dbg(@"Loading key from key chain.");
 | 
					        dbg(@"Loading key from key chain.");
 | 
				
			||||||
        [self updateKey:[PearlKeyChain dataOfItemForQuery:keyQuery()]];
 | 
					        [self updateKey:[PearlKeyChain dataOfItemForQuery:keyQuery()]];
 | 
				
			||||||
@@ -65,15 +63,21 @@ static NSDictionary *keyHashQuery() {
 | 
				
			|||||||
        // Key should not be stored in keychain.  Delete it.
 | 
					        // Key should not be stored in keychain.  Delete it.
 | 
				
			||||||
        dbg(@"Deleting key from key chain.");
 | 
					        dbg(@"Deleting key from key chain.");
 | 
				
			||||||
        [PearlKeyChain deleteItemForQuery:keyQuery()];
 | 
					        [PearlKeyChain deleteItemForQuery:keyQuery()];
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
        [TestFlight passCheckpoint:MPTestFlightCheckpointMPUnstored];
 | 
					        [TestFlight passCheckpoint:MPTestFlightCheckpointMPUnstored];
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
+ (MPAppDelegate *)get {
 | 
					+ (MPAppDelegate *)get {
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    return (MPAppDelegate *)[super get];
 | 
					#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
 | 
				
			||||||
 | 
					    return (MPAppDelegate *)[UIApplication sharedApplication].delegate;
 | 
				
			||||||
 | 
					#elif defined (__MAC_OS_X_VERSION_MIN_REQUIRED)
 | 
				
			||||||
 | 
					    return (MPAppDelegate *)[NSApplication sharedApplication].delegate;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#error Unsupported OS.
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- (BOOL)tryMasterPassword:(NSString *)tryPassword {
 | 
					- (BOOL)tryMasterPassword:(NSString *)tryPassword {
 | 
				
			||||||
@@ -92,13 +96,13 @@ static NSDictionary *keyHashQuery() {
 | 
				
			|||||||
        if (![keyHash isEqual:tryKeyHash]) {
 | 
					        if (![keyHash isEqual:tryKeyHash]) {
 | 
				
			||||||
            dbg(@"Key phrase hash mismatch. Expected: %@, answer: %@.", keyHash, tryKeyHash);
 | 
					            dbg(@"Key phrase hash mismatch. Expected: %@, answer: %@.", keyHash, tryKeyHash);
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
            [TestFlight passCheckpoint:MPTestFlightCheckpointMPMismatch];
 | 
					            [TestFlight passCheckpoint:MPTestFlightCheckpointMPMismatch];
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
            return NO;
 | 
					            return NO;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
    [TestFlight passCheckpoint:MPTestFlightCheckpointMPAsked];
 | 
					    [TestFlight passCheckpoint:MPTestFlightCheckpointMPAsked];
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
@@ -123,18 +127,22 @@ static NSDictionary *keyHashQuery() {
 | 
				
			|||||||
        [PearlKeyChain addOrUpdateItemForQuery:keyHashQuery()
 | 
					        [PearlKeyChain addOrUpdateItemForQuery:keyHashQuery()
 | 
				
			||||||
                                withAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
 | 
					                                withAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
 | 
				
			||||||
                                                self.keyHash,                                      (__bridge id)kSecValueData,
 | 
					                                                self.keyHash,                                      (__bridge id)kSecValueData,
 | 
				
			||||||
 | 
					#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
 | 
				
			||||||
                                                kSecAttrAccessibleWhenUnlocked,                          (__bridge id)kSecAttrAccessible,
 | 
					                                                kSecAttrAccessibleWhenUnlocked,                          (__bridge id)kSecAttrAccessible,
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
                                                nil]];
 | 
					                                                nil]];
 | 
				
			||||||
        if ([[MPiOSConfig get].storeKey boolValue]) {
 | 
					        if ([[MPConfig get].storeKey boolValue]) {
 | 
				
			||||||
            dbg(@"Storing key in key chain.");
 | 
					            dbg(@"Storing key in key chain.");
 | 
				
			||||||
            [PearlKeyChain addOrUpdateItemForQuery:keyQuery()
 | 
					            [PearlKeyChain addOrUpdateItemForQuery:keyQuery()
 | 
				
			||||||
                                    withAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
 | 
					                                    withAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
 | 
				
			||||||
                                                    key,  (__bridge id)kSecValueData,
 | 
					                                                    key,  (__bridge id)kSecValueData,
 | 
				
			||||||
 | 
					#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
 | 
				
			||||||
                                                    kSecAttrAccessibleWhenUnlocked,                      (__bridge id)kSecAttrAccessible,
 | 
					                                                    kSecAttrAccessibleWhenUnlocked,                      (__bridge id)kSecAttrAccessible,
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
                                                    nil]];
 | 
					                                                    nil]];
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
        [TestFlight passCheckpoint:[NSString stringWithFormat:MPTestFlightCheckpointSetKeyphraseLength, key.length]];
 | 
					        [TestFlight passCheckpoint:[NSString stringWithFormat:MPTestFlightCheckpointSetKeyphraseLength, key.length]];
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,7 +32,7 @@ typedef enum {
 | 
				
			|||||||
    MPElementTypeStoredDevicePrivate    = MPElementTypeClassStored      | 0x02,
 | 
					    MPElementTypeStoredDevicePrivate    = MPElementTypeClassStored      | 0x02,
 | 
				
			||||||
} MPElementType;
 | 
					} MPElementType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
#define MPTestFlightCheckpointAction                    @"MPTestFlightCheckpointAction"
 | 
					#define MPTestFlightCheckpointAction                    @"MPTestFlightCheckpointAction"
 | 
				
			||||||
#define MPTestFlightCheckpointHelpChapter               @"MPTestFlightCheckpointHelpChapter_%@"
 | 
					#define MPTestFlightCheckpointHelpChapter               @"MPTestFlightCheckpointHelpChapter_%@"
 | 
				
			||||||
#define MPTestFlightCheckpointCopyToPasteboard          @"MPTestFlightCheckpointCopyToPasteboard"
 | 
					#define MPTestFlightCheckpointCopyToPasteboard          @"MPTestFlightCheckpointCopyToPasteboard"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,15 +17,9 @@
 | 
				
			|||||||
@property (readonly, strong, nonatomic) NSManagedObjectModel            *managedObjectModel;
 | 
					@property (readonly, strong, nonatomic) NSManagedObjectModel            *managedObjectModel;
 | 
				
			||||||
@property (readonly, strong, nonatomic) NSManagedObjectContext          *managedObjectContext;
 | 
					@property (readonly, strong, nonatomic) NSManagedObjectContext          *managedObjectContext;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@property (readonly, strong, nonatomic) MPPasswordWindowController      *passwordWindow;
 | 
					 | 
				
			||||||
@property (readonly, strong, nonatomic) NSData                          *keyPhrase;
 | 
					 | 
				
			||||||
@property (readonly, strong, nonatomic) NSString                        *keyPhraseHashHex;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
+ (MPAppDelegate *)get;
 | 
					 | 
				
			||||||
+ (NSManagedObjectModel *)managedObjectModel;
 | 
					+ (NSManagedObjectModel *)managedObjectModel;
 | 
				
			||||||
+ (NSManagedObjectContext *)managedObjectContext;
 | 
					+ (NSManagedObjectContext *)managedObjectContext;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- (IBAction)saveAction:(id)sender;
 | 
					- (IBAction)saveAction:(id)sender;
 | 
				
			||||||
- (NSData *)keyPhraseWithLength:(NSUInteger)keyLength;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
@end
 | 
					@end
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@
 | 
				
			|||||||
//  Copyright (c) 2012 Lyndir. All rights reserved.
 | 
					//  Copyright (c) 2012 Lyndir. All rights reserved.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#import "MPAppDelegate.h"
 | 
					#import "MPAppDelegate_Key.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@interface MPAppDelegate ()
 | 
					@interface MPAppDelegate ()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -20,12 +20,10 @@
 | 
				
			|||||||
@synthesize managedObjectModel = __managedObjectModel;
 | 
					@synthesize managedObjectModel = __managedObjectModel;
 | 
				
			||||||
@synthesize managedObjectContext = __managedObjectContext;
 | 
					@synthesize managedObjectContext = __managedObjectContext;
 | 
				
			||||||
@synthesize passwordWindow;
 | 
					@synthesize passwordWindow;
 | 
				
			||||||
@synthesize keyPhrase;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
+ (MPAppDelegate *)get {
 | 
					@synthesize key;
 | 
				
			||||||
    
 | 
					@synthesize keyHash;
 | 
				
			||||||
    return (MPAppDelegate *)[NSApplication sharedApplication].delegate;
 | 
					@synthesize keyHashHex;
 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
+ (NSManagedObjectContext *)managedObjectContext {
 | 
					+ (NSManagedObjectContext *)managedObjectContext {
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
@@ -54,11 +52,6 @@
 | 
				
			|||||||
    return [appSupportURL URLByAppendingPathComponent:@"com.lyndir.lhunath.MasterPassword"];
 | 
					    return [appSupportURL URLByAppendingPathComponent:@"com.lyndir.lhunath.MasterPassword"];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- (NSData *)keyPhraseWithLength:(NSUInteger)keyLength {
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    return [self.keyPhrase subdataWithRange:NSMakeRange(0, MIN(keyLength, self.keyPhrase.length))];
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#pragma mark - Core Data stack
 | 
					#pragma mark - Core Data stack
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- (NSManagedObjectModel *)managedObjectModel {
 | 
					- (NSManagedObjectModel *)managedObjectModel {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,7 +7,7 @@
 | 
				
			|||||||
//
 | 
					//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#import "MPPasswordWindowController.h"
 | 
					#import "MPPasswordWindowController.h"
 | 
				
			||||||
#import "MPAppDelegate.h"
 | 
					#import "MPAppDelegate_Key.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@interface MPPasswordWindowController ()
 | 
					@interface MPPasswordWindowController ()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -46,7 +46,7 @@
 | 
				
			|||||||
                                    fetchRequestFromTemplateWithName:@"MPElements"
 | 
					                                    fetchRequestFromTemplateWithName:@"MPElements"
 | 
				
			||||||
                                    substitutionVariables:[NSDictionary dictionaryWithObjectsAndKeys:
 | 
					                                    substitutionVariables:[NSDictionary dictionaryWithObjectsAndKeys:
 | 
				
			||||||
                                                           query,                                   @"query",
 | 
					                                                           query,                                   @"query",
 | 
				
			||||||
                                                           [MPAppDelegate get].keyPhraseHashHex,    @"mpHashHex",
 | 
					                                                           [MPAppDelegate get].keyHashHex,    @"mpHashHex",
 | 
				
			||||||
                                                           nil]];
 | 
					                                                           nil]];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return [NSArray arrayWithObjects:@"cow", @"milk", @"hippopotamus", nil];
 | 
					    return [NSArray arrayWithObjects:@"cow", @"milk", @"hippopotamus", nil];
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -40,7 +40,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
 | 
					- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
    @try {
 | 
					    @try {
 | 
				
			||||||
        [TestFlight takeOff:@"bd44885deee7adce0645ce8e5498d80a_NDQ5NDQyMDExLTEyLTAyIDExOjM1OjQ4LjQ2NjM4NA"];
 | 
					        [TestFlight takeOff:@"bd44885deee7adce0645ce8e5498d80a_NDQ5NDQyMDExLTEyLTAyIDExOjM1OjQ4LjQ2NjM4NA"];
 | 
				
			||||||
        [TestFlight setOptions:[NSDictionary dictionaryWithObjectsAndKeys:
 | 
					        [TestFlight setOptions:[NSDictionary dictionaryWithObjectsAndKeys:
 | 
				
			||||||
@@ -124,7 +124,7 @@
 | 
				
			|||||||
                                                          [self loadKey:YES];
 | 
					                                                          [self loadKey:YES];
 | 
				
			||||||
                                                  }];
 | 
					                                                  }];
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
    [PearlAlert showAlertWithTitle:@"Welcome, tester!" message:
 | 
					    [PearlAlert showAlertWithTitle:@"Welcome, tester!" message:
 | 
				
			||||||
     @"Thank you for taking the time to test Master Password.\n\n"
 | 
					     @"Thank you for taking the time to test Master Password.\n\n"
 | 
				
			||||||
     @"Please provide any feedback, however minor it may seem, via the Feedback action item accessible from the top right.\n\n"
 | 
					     @"Please provide any feedback, however minor it may seem, via the Feedback action item accessible from the top right.\n\n"
 | 
				
			||||||
@@ -149,7 +149,7 @@
 | 
				
			|||||||
    else
 | 
					    else
 | 
				
			||||||
        [self loadKey:NO];
 | 
					        [self loadKey:NO];
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
    [TestFlight passCheckpoint:MPTestFlightCheckpointActivated];
 | 
					    [TestFlight passCheckpoint:MPTestFlightCheckpointActivated];
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -158,7 +158,7 @@
 | 
				
			|||||||
    
 | 
					    
 | 
				
			||||||
    [self.navigationController performSegueWithIdentifier:@"MP_Guide" sender:self];
 | 
					    [self.navigationController performSegueWithIdentifier:@"MP_Guide" sender:self];
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
    [TestFlight passCheckpoint:MPTestFlightCheckpointShowGuide];
 | 
					    [TestFlight passCheckpoint:MPTestFlightCheckpointShowGuide];
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -193,7 +193,7 @@
 | 
				
			|||||||
    if (![[MPiOSConfig get].rememberKey boolValue])
 | 
					    if (![[MPiOSConfig get].rememberKey boolValue])
 | 
				
			||||||
        [self updateKey:nil];
 | 
					        [self updateKey:nil];
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
    [TestFlight passCheckpoint:MPTestFlightCheckpointDeactivated];
 | 
					    [TestFlight passCheckpoint:MPTestFlightCheckpointDeactivated];
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -202,7 +202,7 @@
 | 
				
			|||||||
    
 | 
					    
 | 
				
			||||||
    [self saveContext];
 | 
					    [self saveContext];
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
    [TestFlight passCheckpoint:MPTestFlightCheckpointTerminated];
 | 
					    [TestFlight passCheckpoint:MPTestFlightCheckpointTerminated];
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -298,7 +298,7 @@
 | 
				
			|||||||
        [[NSFileManager defaultManager] removeItemAtURL:storeURL error:nil];        
 | 
					        [[NSFileManager defaultManager] removeItemAtURL:storeURL error:nil];        
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
        [TestFlight passCheckpoint:MPTestFlightCheckpointStoreIncompatible];
 | 
					        [TestFlight passCheckpoint:MPTestFlightCheckpointStoreIncompatible];
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -216,7 +216,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
- (void)setHelpChapter:(NSString *)chapter {
 | 
					- (void)setHelpChapter:(NSString *)chapter {
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
    [TestFlight passCheckpoint:[NSString stringWithFormat:MPTestFlightCheckpointHelpChapter, chapter]];
 | 
					    [TestFlight passCheckpoint:[NSString stringWithFormat:MPTestFlightCheckpointHelpChapter, chapter]];
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
@@ -280,7 +280,7 @@
 | 
				
			|||||||
    
 | 
					    
 | 
				
			||||||
    [self showContentTip:@"Copied!" withIcon:nil];
 | 
					    [self showContentTip:@"Copied!" withIcon:nil];
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
    [TestFlight passCheckpoint:MPTestFlightCheckpointCopyToPasteboard];
 | 
					    [TestFlight passCheckpoint:MPTestFlightCheckpointCopyToPasteboard];
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -295,7 +295,7 @@
 | 
				
			|||||||
        ++((MPElementGeneratedEntity *) self.activeElement).counter;
 | 
					        ++((MPElementGeneratedEntity *) self.activeElement).counter;
 | 
				
			||||||
    }];
 | 
					    }];
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
    [TestFlight passCheckpoint:MPTestFlightCheckpointIncrementPasswordCounter];
 | 
					    [TestFlight passCheckpoint:MPTestFlightCheckpointIncrementPasswordCounter];
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -323,7 +323,7 @@
 | 
				
			|||||||
        [self.contentField becomeFirstResponder];
 | 
					        [self.contentField becomeFirstResponder];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
    [TestFlight passCheckpoint:MPTestFlightCheckpointEditPassword];
 | 
					    [TestFlight passCheckpoint:MPTestFlightCheckpointEditPassword];
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -336,7 +336,7 @@
 | 
				
			|||||||
        self.alertBody.text = nil;
 | 
					        self.alertBody.text = nil;
 | 
				
			||||||
    }];
 | 
					    }];
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
    [TestFlight passCheckpoint:MPTestFlightCheckpointCloseAlert];
 | 
					    [TestFlight passCheckpoint:MPTestFlightCheckpointCloseAlert];
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -365,7 +365,7 @@
 | 
				
			|||||||
                             [self.navigationController pushViewController:settingsVC animated:YES];
 | 
					                             [self.navigationController pushViewController:settingsVC animated:YES];
 | 
				
			||||||
                             break;
 | 
					                             break;
 | 
				
			||||||
                         }
 | 
					                         }
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
                         case 4:
 | 
					                         case 4:
 | 
				
			||||||
                             [TestFlight openFeedbackView];
 | 
					                             [TestFlight openFeedbackView];
 | 
				
			||||||
                             break;
 | 
					                             break;
 | 
				
			||||||
@@ -380,13 +380,13 @@
 | 
				
			|||||||
                         }
 | 
					                         }
 | 
				
			||||||
                     }
 | 
					                     }
 | 
				
			||||||
                     
 | 
					                     
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
                     [TestFlight passCheckpoint:MPTestFlightCheckpointAction];
 | 
					                     [TestFlight passCheckpoint:MPTestFlightCheckpointAction];
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
                 } cancelTitle:[PearlStrings get].commonButtonCancel destructiveTitle:nil
 | 
					                 } cancelTitle:[PearlStrings get].commonButtonCancel destructiveTitle:nil
 | 
				
			||||||
                       otherTitles:
 | 
					                       otherTitles:
 | 
				
			||||||
     [self isHelpVisible]? @"Hide Help": @"Show Help", @"FAQ", @"Tutorial", @"Settings",
 | 
					     [self isHelpVisible]? @"Hide Help": @"Show Help", @"FAQ", @"Tutorial", @"Settings",
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
     @"Feedback",
 | 
					     @"Feedback",
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
     @"Sign Out",
 | 
					     @"Sign Out",
 | 
				
			||||||
@@ -418,7 +418,7 @@
 | 
				
			|||||||
        
 | 
					        
 | 
				
			||||||
        self.activeElement.type = type;
 | 
					        self.activeElement.type = type;
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
        [TestFlight passCheckpoint:[NSString stringWithFormat:MPTestFlightCheckpointSelectType, NSStringFromMPElementType(type)]];
 | 
					        [TestFlight passCheckpoint:[NSString stringWithFormat:MPTestFlightCheckpointSelectType, NSStringFromMPElementType(type)]];
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
@@ -436,7 +436,7 @@
 | 
				
			|||||||
        [self.searchDisplayController setActive:NO animated:YES];
 | 
					        [self.searchDisplayController setActive:NO animated:YES];
 | 
				
			||||||
        self.searchDisplayController.searchBar.text = self.activeElement.name;
 | 
					        self.searchDisplayController.searchBar.text = self.activeElement.name;
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
        [TestFlight passCheckpoint:MPTestFlightCheckpointSelectElement];
 | 
					        [TestFlight passCheckpoint:MPTestFlightCheckpointSelectElement];
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -474,7 +474,7 @@
 | 
				
			|||||||
 navigationType:(UIWebViewNavigationType)navigationType {
 | 
					 navigationType:(UIWebViewNavigationType)navigationType {
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    if (navigationType == UIWebViewNavigationTypeLinkClicked) {
 | 
					    if (navigationType == UIWebViewNavigationTypeLinkClicked) {
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
        [TestFlight passCheckpoint:MPTestFlightCheckpointExternalLink];
 | 
					        [TestFlight passCheckpoint:MPTestFlightCheckpointExternalLink];
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -54,7 +54,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
 | 
					- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
    [TestFlight passCheckpoint:MPTestFlightCheckpointCancelSearch];
 | 
					    [TestFlight passCheckpoint:MPTestFlightCheckpointCancelSearch];
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
@@ -302,7 +302,7 @@
 | 
				
			|||||||
                MPElementEntity *element = [self.fetchedResultsController objectAtIndexPath:indexPath];
 | 
					                MPElementEntity *element = [self.fetchedResultsController objectAtIndexPath:indexPath];
 | 
				
			||||||
                [self.fetchedResultsController.managedObjectContext deleteObject:element];
 | 
					                [self.fetchedResultsController.managedObjectContext deleteObject:element];
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
                [TestFlight passCheckpoint:MPTestFlightCheckpointDeleteElement];
 | 
					                [TestFlight passCheckpoint:MPTestFlightCheckpointDeleteElement];
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
            }];
 | 
					            }];
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -214,7 +214,7 @@ typedef enum {
 | 
				
			|||||||
                     
 | 
					                     
 | 
				
			||||||
                     [[MPAppDelegate get] loadKey:YES];
 | 
					                     [[MPAppDelegate get] loadKey:YES];
 | 
				
			||||||
                     
 | 
					                     
 | 
				
			||||||
#ifndef PRODUCTION
 | 
					#ifdef TESTFLIGHT
 | 
				
			||||||
                     [TestFlight passCheckpoint:MPTestFlightCheckpointMPChanged];
 | 
					                     [TestFlight passCheckpoint:MPTestFlightCheckpointMPChanged];
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
                 }
 | 
					                 }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user