diff --git a/MacPass/Base.lproj/InspectorView.xib b/MacPass/Base.lproj/InspectorView.xib index f1d9c3cd..646ca00f 100644 --- a/MacPass/Base.lproj/InspectorView.xib +++ b/MacPass/Base.lproj/InspectorView.xib @@ -18,6 +18,8 @@ NSCustomView NSImageCell NSImageView + NSLevelIndicator + NSLevelIndicatorCell NSScrollView NSScroller NSSegmentedCell @@ -64,7 +66,7 @@ NeXT Encapsulated PostScript v1.2 pasteboard type NeXT TIFF v4.0 pasteboard type - {{20, 450}, {48, 48}} + {{20, 514}, {48, 48}} @@ -89,7 +91,7 @@ 268 - {{73, 466}, {141, 17}} + {{73, 530}, {209, 17}} @@ -132,16 +134,17 @@ 268 - {231, 30} + {299, 30} + _NS:9 HNHGradientView 268 - {{39, 418}, {154, 25}} + {{73, 482}, {154, 25}} @@ -172,7 +175,7 @@ 12 - {{0, 31}, {231, 388}} + {{0, 31}, {299, 452}} @@ -187,7 +190,7 @@ 268 - {{17, 350}, {35, 14}} + {{17, 418}, {35, 14}} _NS:1535 @@ -219,7 +222,7 @@ 268 - {{80, 346}, {131, 22}} + {{20, 388}, {259, 22}} _NS:9 @@ -253,7 +256,7 @@ 268 - {{17, 318}, {58, 14}} + {{17, 366}, {58, 14}} _NS:1535 @@ -273,7 +276,7 @@ 268 - {{80, 314}, {131, 22}} + {{20, 336}, {259, 22}} _NS:9 @@ -294,7 +297,7 @@ 268 - {{80, 282}, {131, 22}} + {{20, 285}, {259, 22}} _NS:9 @@ -315,7 +318,7 @@ 268 - {{17, 286}, {25, 14}} + {{17, 315}, {25, 13}} _NS:1535 @@ -335,7 +338,7 @@ 268 - {{17, 232}, {58, 14}} + {{17, 263}, {58, 14}} _NS:1535 @@ -355,7 +358,7 @@ 268 - {{80, 228}, {131, 22}} + {{20, 233}, {259, 22}} _NS:9 @@ -376,9 +379,9 @@ 268 - {{80, 201}, {131, 19}} + {{20, 206}, {259, 19}} - + _NS:9 {250, 750} YES @@ -402,8 +405,49 @@ NO + + + 268 + {{17, 185}, {42, 14}} + + + _NS:1535 + YES + + 68157504 + 272761856 + Quality + + _NS:1535 + + + + + NO + + + + 268 + {{20, 159}, {259, 18}} + + + _NS:9 + YES + + 0 + 0 + _NS:9 + + 2 + 2 + 2 + 2 + 2 + + NO + - {231, 388} + {299, 452} _NS:11 @@ -429,7 +473,7 @@ 256 - {189, 123} + {257, 123} @@ -446,7 +490,7 @@ - 186 + 254 40 1000 @@ -509,7 +553,7 @@ 1 - {{1, 1}, {189, 123}} + {{1, 1}, {257, 123}} @@ -546,7 +590,7 @@ 0.99487179487179489 - {{20, 236}, {191, 125}} + {{20, 282}, {259, 125}} @@ -590,7 +634,7 @@ WebURLsWithTitlesPboardType public.url - {189, 155} + {257, 201} @@ -610,7 +654,7 @@ - 189 + 257 1 @@ -653,7 +697,7 @@ - {{1, 1}, {189, 155}} + {{1, 1}, {257, 201}} @@ -684,7 +728,7 @@ 256 - {{174, 1}, {16, 155}} + {{242, 1}, {16, 201}} @@ -711,7 +755,7 @@ 0.94565218687057495 - {{20, 20}, {191, 157}} + {{20, 20}, {259, 203}} @@ -727,7 +771,7 @@ 268 - {{17, 362}, {79, 17}} + {{17, 415}, {79, 17}} @@ -748,7 +792,7 @@ 268 - {{17, 185}, {35, 17}} + {{17, 231}, {35, 17}} @@ -769,7 +813,7 @@ 268 - {{149, 209}, {62, 19}} + {{217, 255}, {62, 19}} @@ -794,7 +838,7 @@ 268 - {{77, 209}, {64, 19}} + {{145, 255}, {64, 19}} @@ -817,7 +861,7 @@ NO - {231, 388} + {299, 452} @@ -838,7 +882,7 @@ - {231, 518} + {299, 582} @@ -1009,7 +1053,7 @@ 266 - {{25, 0}, {161, 17}} + {{25, 0}, {229, 17}} _NS:20 @@ -1028,7 +1072,7 @@ NO - {{1, 1}, {186, 17}} + {{1, 1}, {254, 17}} _NS:9 @@ -1456,11 +1500,6 @@ - - 1391 - - - 1393 @@ -1522,23 +1561,7 @@ 29 3 - - - 4 - 0 - - 4 - 1 - - 20 - - 1000 - - 9 - 40 - 3 - - + 3 0 @@ -1550,8 +1573,40 @@ 1000 - 9 - 40 + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 4 + 0 + + 4 + 1 + + 20 + + 1000 + + 8 + 29 3 @@ -1570,27 +1625,27 @@ 29 3 - - - 6 + + + 11 0 - - 6 + + 11 1 - - 20 + + 0.0 1000 - 8 - 29 - 3 + 6 + 24 + 2 - - + + 3 0 - + 4 1 @@ -1602,6 +1657,22 @@ 24 3 + + + 3 + 0 + + 3 + 1 + + 178 + + 1000 + + 3 + 9 + 3 + 5 @@ -1618,27 +1689,11 @@ 29 3 - + 3 0 - - 3 - 1 - - 186 - - 1000 - - 9 - 40 - 3 - - - - 3 - 0 - + 4 1 @@ -1650,21 +1705,37 @@ 24 3 - - - 11 + + + 3 0 - - 11 + + 4 1 - - 0.0 + + 8 1000 6 24 - 2 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 @@ -1682,12 +1753,12 @@ 29 3 - - - 6 + + + 3 0 - - 6 + + 3 1 20 @@ -1698,22 +1769,6 @@ 29 3 - - - 3 - 0 - - 3 - 1 - - 27 - - 1000 - - 3 - 9 - 3 - 5 @@ -1730,28 +1785,12 @@ 29 3 - - - 3 - 0 - - 3 - 1 - - 9 - - 1000 - - 3 - 9 - 3 - - - + + @@ -1759,20 +1798,59 @@ 1397 - - - - - - - - - + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + 4 1 - + 4 1 @@ -1784,43 +1862,11 @@ 40 3 - - - 5 - 0 - - 5 - 1 - - 0.0 - - 1000 - - 6 - 24 - 2 - - - - 6 - 0 - - 6 - 1 - - 20 - - 1000 - - 8 - 29 - 3 - - - + + 3 0 - + 4 1 @@ -1828,88 +1874,136 @@ 1000 - 9 - 40 + 6 + 24 3 - - - 6 - 0 - - 6 - 1 - - 20 - - 1000 - - 8 - 29 - 3 - - - + + 5 0 - - 6 - 1 - - 8 - - 1000 - - 6 - 24 - 3 - - - - 10 - 0 - - 10 - 1 - - 0.0 - - 1000 - - 6 - 24 - 2 - - - - 5 - 0 - - 5 - 1 - - 0.0 - - 1000 - - 6 - 24 - 2 - - - - 3 - 0 - 3 + 5 1 - - 138 + + 20 1000 - 9 - 40 + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 3 @@ -1928,125 +2022,13 @@ 29 3 - - - 6 - 0 - - 6 - 1 - - 20 - - 1000 - - 8 - 29 - 3 - - + - 10 + 3 0 - 10 - 1 - - 0.0 - - 1000 - - 6 - 24 - 2 - - - - 3 - 0 - 4 1 - - 10 - - 1000 - - 6 - 24 - 3 - - - - 6 - 0 - - 6 - 1 - - 20 - - 1000 - - 8 - 29 - 3 - - - - 10 - 0 - - 10 - 1 - - 0.0 - - 1000 - - 6 - 24 - 2 - - - - 3 - 0 - - 4 - 1 - - 10 - - 1000 - - 6 - 24 - 3 - - - - 5 - 0 - - 5 - 1 - - 0.0 - - 1000 - - 6 - 24 - 2 - - - - 5 - 0 - - 6 - 1 8 @@ -2056,21 +2038,53 @@ 24 3 - - - 5 + + + 6 0 + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + 5 1 - - 0.0 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 1000 6 24 - 2 + 3 @@ -2088,11 +2102,27 @@ 29 3 - + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + 6 0 - + 6 1 @@ -2104,12 +2134,12 @@ 29 3 - - - 3 + + + 5 0 - 3 + 5 1 20 @@ -2120,7 +2150,39 @@ 29 3 - + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 6 + 0 + + 6 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + 5 0 @@ -2136,21 +2198,69 @@ 29 3 - - - 10 + + + 3 0 - - 10 + + 4 1 - - 0.0 + + 8 1000 6 24 - 2 + 3 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 3 + 1 + + 20 + + 1000 + + 8 + 29 + 3 @@ -2168,6 +2278,17 @@ 29 3 + + + + + + + + + + + @@ -2256,6 +2377,22 @@ + + + 8 + 0 + + 0 + 1 + + 13 + + 1000 + + 3 + 9 + 1 + @@ -2303,131 +2440,26 @@ - - 1438 - - - 1440 - - 1441 - - - - - 1442 - - - - - 1443 - - - - - 1444 - - - - - 1445 - - - 1446 - - 1447 - - - 1448 - - 1450 - - - - - 1451 - - - - - 1452 - - - - - 1453 - - - - - 1455 - - - - - 1456 - - - - - 1457 - - - - - 1460 - - - - - 1462 - - - - - 1464 - - - - - 1467 - - - - - 1469 - - - - - 1470 - - - 1471 - - 1472 - - - 1473 @@ -2511,11 +2543,6 @@ - - 1504 - - - 1512 @@ -2566,26 +2593,11 @@ - - 1520 - - - - - 1521 - - - 1522 - - 1524 - - - 1526 @@ -2635,36 +2647,11 @@ - - 1545 - - - 1546 - - 1549 - - - - - 1547 - - - - - 1531 - - - - - 1552 - - - 1557 @@ -2879,28 +2866,239 @@ - 1592 - + 1604 + + + + + + + + 1605 + + + + + 1606 + + + + + 1609 + + + + + + + + 1610 + + + + + 1626 + + + + + 1665 + + + + + 1672 + + + + + 1697 + + + + + 1705 + + + + + 1720 + + + + + 1721 + + + + + 1723 + + + + + 1737 + + + + + 1741 + + + + + 1793 + - 1594 + 1795 - 1595 - - - - - 1596 + 1796 - 1598 - + 1798 + + + + + 1806 + + + + + 1808 + + + + + 1810 + + + + + 1815 + + + + + 1817 + + + + + 1819 + + + + + 1824 + + + + + 1849 + + + + + 1851 + + + + + 1852 + + + + + 1853 + + + + + 1855 + + + + + 1856 + + + + + 1858 + + + + + 1859 + + + + + 1860 + + + + + 1861 + + + + + 1862 + + + + + 1869 + + + + + 1871 + + + + + 1874 + + + + + 1875 + + + + + 1876 + + + + + 1877 + + + + + 1879 + + + + + 1777 + + + + + 1883 + @@ -2925,6 +3123,9 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin @@ -2950,86 +3151,69 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - - + - - - + + + - - + + + - - + + + com.apple.InterfaceBuilder.CocoaPlugin - + - - - - + + + + + + + + + + - - - - - - - - - + + + + - - - - - - - - + + + + + + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -3050,7 +3234,6 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin @@ -3059,10 +3242,7 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin @@ -3070,15 +3250,10 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -3111,11 +3286,55 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + HNHLevelIndicatorCell + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin @@ -3162,7 +3381,7 @@ - 1603 + 1883 @@ -3174,6 +3393,14 @@ ./Classes/HNHGradientView.h + + HNHLevelIndicatorCell + NSLevelIndicatorCell + + IBProjectSource + ./Classes/HNHLevelIndicatorCell.h + + HNHRoundedSecureTextFieldCell HNHRoundedTextFieldCell diff --git a/MacPass/MPDocument.h b/MacPass/MPDocument.h index 96cde642..9a536636 100644 --- a/MacPass/MPDocument.h +++ b/MacPass/MPDocument.h @@ -20,11 +20,13 @@ APPKIT_EXTERN NSString *const MPDocumentGroupKey; @class KdbGroup; @class KdbEntry; +@class KdbTree; @class UUID; @interface MPDocument : NSDocument @property (assign, readonly) BOOL isProtected; +@property (retain, readonly) KdbTree *tree; @property (assign, readonly) KdbGroup *root; @property (nonatomic,retain) NSString *password; @property (nonatomic, retain) NSURL *key; diff --git a/MacPass/MPDocumentWindowController.m b/MacPass/MPDocumentWindowController.m index 761dc351..e1a9d86e 100644 --- a/MacPass/MPDocumentWindowController.m +++ b/MacPass/MPDocumentWindowController.m @@ -224,7 +224,7 @@ NSString *const MPCurrentItemChangedNotification = @"com.hicknhack.macpass.MPCur else { // Remove contraint on view removal. [_splitView addSubview:inspectorView]; - [_splitView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"[inspectorView(>=300)]" + [_splitView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"[inspectorView(>=200)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(inspectorView)]]; @@ -255,7 +255,7 @@ NSString *const MPCurrentItemChangedNotification = @"com.hicknhack.macpass.MPCur removeInspector = YES; } NSDictionary *views = NSDictionaryOfVariableBindings(outlineView, inspectorView, entryView, _splitView); - [self.splitView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[outlineView(>=150,<=250)]-1-[entryView(>=350)]-1-[inspectorView(>=300)]|" + [self.splitView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[outlineView(>=150,<=250)]-1-[entryView(>=350)]-1-[inspectorView(>=200)]|" options:0 metrics:nil views:views]]; diff --git a/MacPass/MPInspectorViewController.m b/MacPass/MPInspectorViewController.m index 6b91532c..e5fde967 100644 --- a/MacPass/MPInspectorViewController.m +++ b/MacPass/MPInspectorViewController.m @@ -17,6 +17,7 @@ #import "MPDocumentWindowController.h" #import "MPOutlineViewController.h" #import "MPOutlineViewDelegate.h" +#import "MPDocument.h" #import "KdbLib.h" #import "Kdb4Node.h" @@ -295,6 +296,14 @@ enum { Kdb4Entry *entry = (Kdb4Entry *)self.selectedEntry; BinaryRef *binaryRef = entry.binaries[row]; [[view textField] bind:NSValueBinding toObject:binaryRef withKeyPath:@"key" options:nil]; + MPDocument *document = [[self windowController] document]; + Kdb4Tree *tree = (Kdb4Tree *)document.tree; + NSPredicate *filterPredicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) { + Binary *binaryFile = evaluatedObject; + return (binaryFile.binaryId == binaryRef.ref); + }]; + NSArray *filteredBinary = [tree.binaries filteredArrayUsingPredicate:filterPredicate]; + Binary *attachedFile = [filteredBinary lastObject]; } return view; } diff --git a/MacPass/MacPass-Info.plist b/MacPass/MacPass-Info.plist index 2c2902b3..472753a8 100644 --- a/MacPass/MacPass-Info.plist +++ b/MacPass/MacPass-Info.plist @@ -48,7 +48,7 @@ CFBundleSignature ???? CFBundleVersion - 932 + 947 LSMinimumSystemVersion ${MACOSX_DEPLOYMENT_TARGET} NSHumanReadableCopyright