summaryrefslogtreecommitdiff
path: root/ext/mac-ui-macgap1-wrapper/src/MacGap
diff options
context:
space:
mode:
Diffstat (limited to 'ext/mac-ui-macgap1-wrapper/src/MacGap')
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/AppDelegate.h18
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/AppDelegate.m145
-rwxr-xr-xext/mac-ui-macgap1-wrapper/src/MacGap/Classes/CallbackDelegate.h20
-rwxr-xr-xext/mac-ui-macgap1-wrapper/src/MacGap/Classes/CallbackDelegate.m168
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/App.h21
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/App.m128
-rwxr-xr-xext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Command.h18
-rwxr-xr-xext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Command.m28
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Dock.h11
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Dock.m31
-rwxr-xr-xext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/MenuItemProxy.h31
-rwxr-xr-xext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/MenuItemProxy.m150
-rwxr-xr-xext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/MenuProxy.h31
-rwxr-xr-xext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/MenuProxy.m233
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Notice.h26
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Notice.m108
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Path.h21
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Path.m53
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Sound.h17
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Sound.m97
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/UserDefaults.h43
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/UserDefaults.m211
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/fonts.h9
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/fonts.m48
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Constants.h7
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/ContentView.h15
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/ContentView.m68
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/JSEventHelper.h20
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/JSEventHelper.m41
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Utils.h20
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Utils.m93
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/WebViewDelegate.h49
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/WebViewDelegate.m206
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Window.h23
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Window.m94
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Clipboard.h10
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Clipboard.m51
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Images.xcassets/AppIcon.appiconset/Contents.json63
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Images.xcassets/AppIcon.appiconset/application128x128.pngbin0 -> 11247 bytes
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Images.xcassets/AppIcon.appiconset/application16x16.pngbin0 -> 715 bytes
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Images.xcassets/AppIcon.appiconset/application256x256.pngbin0 -> 29043 bytes
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Images.xcassets/AppIcon.appiconset/application32x32.pngbin0 -> 1787 bytes
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/Images.xcassets/AppIcon.appiconset/application512x512.pngbin0 -> 57374 bytes
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/MacGap-Info.plist32
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/MacGap-Prefix.pch15
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/WindowController.h13
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/WindowController.m54
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/en.lproj/Credits.rtf13
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/en.lproj/InfoPlist.strings2
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/en.lproj/MainMenu.xib3404
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/en.lproj/Window.xib337
-rw-r--r--ext/mac-ui-macgap1-wrapper/src/MacGap/main.m14
52 files changed, 6310 insertions, 0 deletions
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/AppDelegate.h b/ext/mac-ui-macgap1-wrapper/src/MacGap/AppDelegate.h
new file mode 100644
index 00000000..bf7370b5
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/AppDelegate.h
@@ -0,0 +1,18 @@
+//
+// AppDelegate.h
+// MacGap
+//
+// Created by Alex MacCaw on 08/01/2012.
+// Copyright (c) 2012 Twitter. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+#import "Classes/ContentView.h"
+
+#import "WindowController.h"
+
+@interface AppDelegate : NSObject <NSApplicationDelegate>
+
+@property (retain, nonatomic) WindowController *windowController;
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/AppDelegate.m b/ext/mac-ui-macgap1-wrapper/src/MacGap/AppDelegate.m
new file mode 100644
index 00000000..3e25ca13
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/AppDelegate.m
@@ -0,0 +1,145 @@
+//
+// AppDelegate.m
+// MacGap
+//
+// Created by Alex MacCaw on 08/01/2012.
+// Copyright (c) 2012 Twitter. All rights reserved.
+//
+
+#import "AppDelegate.h"
+#include <sys/stat.h>
+#include <sys/types.h>
+
+@implementation AppDelegate
+
+@synthesize windowController;
+
+- (void) applicationWillFinishLaunching:(NSNotification *)aNotification
+{
+}
+
+-(BOOL)applicationShouldHandleReopen:(NSApplication*)application
+ hasVisibleWindows:(BOOL)visibleWindows{
+ if(!visibleWindows){
+ [self.windowController.window makeKeyAndOrderFront: nil];
+ }
+ return YES;
+}
+
+- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication {
+ return YES;
+}
+
+- (void) applicationDidFinishLaunching:(NSNotification *)aNotification {
+ char buf[16384],userAuthTokenPath[4096];
+
+ FILE *pf = fopen("/Library/Application Support/ZeroTier/One/zerotier-one.port","r");
+ long port = 9993; // default
+ if (pf) {
+ long n = fread(buf,1,sizeof(buf)-1,pf);
+ if (n > 0) {
+ buf[n] = (char)0;
+ port = strtol(buf,(char **)0,10);
+ }
+ fclose(pf);
+ }
+
+ char url[16384];
+ memset(url,0,sizeof(url));
+
+ const char *homeDir = getenv("HOME");
+ if (homeDir) {
+ snprintf(userAuthTokenPath,sizeof(userAuthTokenPath),"%s/Library/Application Support/ZeroTier/One/authtoken.secret",homeDir);
+ pf = fopen(userAuthTokenPath,"r");
+ if (pf) {
+ long n = fread(buf,1,sizeof(buf)-1,pf);
+ if (n > 0) {
+ buf[n] = (char)0;
+ snprintf(url,sizeof(url),"http://127.0.0.1:%ld/index.html?authToken=%s",port,buf);
+ }
+ fclose(pf);
+ }
+ }
+
+ if (!url[0]) {
+ // Create authorization reference
+ OSStatus status;
+ AuthorizationRef authorizationRef;
+
+ // AuthorizationCreate and pass NULL as the initial
+ // AuthorizationRights set so that the AuthorizationRef gets created
+ // successfully, and then later call AuthorizationCopyRights to
+ // determine or extend the allowable rights.
+ // http://developer.apple.com/qa/qa2001/qa1172.html
+ status = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagDefaults, &authorizationRef);
+ if (status != errAuthorizationSuccess)
+ {
+ NSLog(@"Error Creating Initial Authorization: %d", status);
+ return;
+ }
+
+ // kAuthorizationRightExecute == "system.privilege.admin"
+ AuthorizationItem right = {kAuthorizationRightExecute, 0, NULL, 0};
+ AuthorizationRights rights = {1, &right};
+ AuthorizationFlags flags = kAuthorizationFlagDefaults | kAuthorizationFlagInteractionAllowed |
+ kAuthorizationFlagPreAuthorize | kAuthorizationFlagExtendRights;
+
+ // Call AuthorizationCopyRights to determine or extend the allowable rights.
+ status = AuthorizationCopyRights(authorizationRef, &rights, NULL, flags, NULL);
+ if (status != errAuthorizationSuccess)
+ {
+ NSLog(@"Copy Rights Unsuccessful: %d", status);
+ return;
+ }
+
+ // use rm tool with -rf
+ char *tool = "/bin/cat";
+ char *args[] = {"/Library/Application Support/ZeroTier/One/authtoken.secret", NULL};
+ FILE *pipe = NULL;
+
+ status = AuthorizationExecuteWithPrivileges(authorizationRef, tool, kAuthorizationFlagDefaults, args, &pipe);
+ if (status != errAuthorizationSuccess)
+ {
+ NSLog(@"Error: %d", status);
+ }
+
+ if (pipe) {
+ long n = (long)fread(buf,1,sizeof(buf)-1,pipe);
+ if (n > 0) {
+ buf[n] = (char)0;
+ snprintf(url,sizeof(url),"http://127.0.0.1:%ld/index.html?authToken=%s",port,buf);
+
+ if (homeDir) {
+ snprintf(userAuthTokenPath,sizeof(userAuthTokenPath),"%s/Library/Application Support/ZeroTier",homeDir);
+ mkdir(userAuthTokenPath,0755);
+ snprintf(userAuthTokenPath,sizeof(userAuthTokenPath),"%s/Library/Application Support/ZeroTier/One",homeDir);
+ mkdir(userAuthTokenPath,0755);
+ snprintf(userAuthTokenPath,sizeof(userAuthTokenPath),"%s/Library/Application Support/ZeroTier/One/authtoken.secret",homeDir);
+ pf = fopen(userAuthTokenPath,"w");
+ if (pf) {
+ fwrite(buf,1,strlen(buf),pf);
+ fclose(pf);
+ chmod(userAuthTokenPath,0600);
+ }
+ }
+ }
+ fclose(pipe);
+ }
+
+ // The only way to guarantee that a credential acquired when you
+ // request a right is not shared with other authorization instances is
+ // to destroy the credential. To do so, call the AuthorizationFree
+ // function with the flag kAuthorizationFlagDestroyRights.
+ // http://developer.apple.com/documentation/Security/Conceptual/authorization_concepts/02authconcepts/chapter_2_section_7.html
+ status = AuthorizationFree(authorizationRef, kAuthorizationFlagDestroyRights);
+ }
+
+ NSString *urlStr = [[NSString alloc] initWithCString:url];
+ self.windowController = [[WindowController alloc] initWithURL: urlStr];
+ [self.windowController showWindow: [NSApplication sharedApplication].delegate];
+ self.windowController.contentView.webView.alphaValue = 1.0;
+ self.windowController.contentView.alphaValue = 1.0;
+ [self.windowController showWindow:self];
+}
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/CallbackDelegate.h b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/CallbackDelegate.h
new file mode 100755
index 00000000..0f31ee41
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/CallbackDelegate.h
@@ -0,0 +1,20 @@
+//
+// CallbackDelegate.h
+// MacGap
+//
+// Created by Joe Hildebrand on 1/10/12.
+// Copyright (c) 2012 Twitter. All rights reserved.
+//
+
+#import "Command.h"
+
+@interface CallbackDelegate : Command {
+}
+
+@property JSObjectRef callback;
+
+- (id) initWithContext:(JSContextRef)aContext forCallback:(WebScriptObject*)aCallback;
+- (id) call;
+- (id) callWithParams:(id)firstOrNil, ... NS_REQUIRES_NIL_TERMINATION;
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/CallbackDelegate.m b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/CallbackDelegate.m
new file mode 100755
index 00000000..5ce8fbe3
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/CallbackDelegate.m
@@ -0,0 +1,168 @@
+//
+// CallbackDelegate.m
+// MacGap
+//
+// Created by Joe Hildebrand on 1/10/12.
+// Copyright (c) 2012 Twitter. All rights reserved.
+//
+
+#import "CallbackDelegate.h"
+#import <JavaScriptCore/JavaScript.h>
+
+@implementation CallbackDelegate
+
+@synthesize callback;
+
+- (id) initWithContext:(JSContextRef)aContext forCallback:(WebScriptObject*)aCallback
+{
+ if (!aCallback)
+ return nil;
+ if ([aCallback isKindOfClass:[WebUndefined class]])
+ return nil;
+
+ self = [super initWithContext:aContext];
+ if (!self)
+ return nil;
+
+ callback = [aCallback JSObject];
+ JSValueProtect(context, callback);
+ return self;
+}
+
+- (void) dealloc
+{
+ if (callback)
+ {
+ JSValueUnprotect(context, callback);
+ callback = nil;
+ }
+}
+
+- (id) objectFromValue:(JSValueRef)val
+{
+ JSStringRef jstr;
+ NSString *rets;
+
+ switch(JSValueGetType(context, val))
+ {
+ case kJSTypeUndefined:
+ case kJSTypeNull:
+ return nil;
+ case kJSTypeBoolean:
+ return [NSNumber numberWithBool:JSValueToBoolean(context, val)];
+ case kJSTypeNumber:
+ return [NSNumber numberWithDouble:JSValueToNumber(context, val, NULL)];
+ case kJSTypeString:
+ jstr = JSValueToStringCopy(context, val, NULL);
+ size_t sz = JSStringGetMaximumUTF8CStringSize(jstr);
+ char *buf = (char*)malloc(sz);
+ JSStringGetUTF8CString(jstr, buf, sz);
+ rets = [NSString stringWithUTF8String:buf];
+ free(buf);
+ return rets;
+ case kJSTypeObject:
+ // TODO: dictionary or something
+ return nil;
+ default:
+ NSAssert(false, @"Invalid JavaScript type");
+ return nil;
+ }
+}
+
+- (JSValueRef) valueFromObject:(id)obj
+{
+ JSValueRef val = nil;
+ if (!obj)
+ {
+ val = JSValueMakeNull(context);
+ }
+ else if ([obj isKindOfClass:[NSString class]])
+ {
+ JSStringRef jstr = JSStringCreateWithUTF8CString([obj UTF8String]);
+ val = JSValueMakeString(context, jstr);
+ JSStringRelease(jstr);
+ }
+ else if ([obj isKindOfClass:[NSNumber class]])
+ {
+ val = JSValueMakeNumber(context, [obj doubleValue]);
+ }
+ else if ([obj isKindOfClass:[NSDictionary class]])
+ {
+ JSObjectRef o = JSObjectMake(context, NULL, NULL);
+ for (NSString *key in obj)
+ {
+ JSStringRef kstr = JSStringCreateWithUTF8CString([key UTF8String]);
+ JSValueRef v = [self valueFromObject:[obj objectForKey:key]];
+
+ JSObjectSetProperty(context, o, kstr, v, kJSPropertyAttributeNone, NULL);
+ JSStringRelease(kstr);
+ }
+ val = o;
+ }
+ else if ([obj isKindOfClass:[NSArray class]])
+ {
+ NSUInteger pcount = [obj count];
+ JSValueRef jsArgs[pcount];
+ NSUInteger i=0;
+ for (id v in obj)
+ {
+ jsArgs[i++] = [self valueFromObject:v];
+ }
+ val = JSObjectMakeArray(context, pcount, jsArgs, NULL);
+ }
+ else if ([obj isKindOfClass:[NSDate class]])
+ {
+ NSTimeInterval secs = [obj timeIntervalSince1970];
+ JSValueRef jsArgs[1];
+ // call the Date(milliseconds) constructor in JS
+ jsArgs[0] = JSValueMakeNumber(context, secs * 1000.0);
+ val = JSObjectMakeDate(context, 1, jsArgs, NULL);
+ }
+ else
+ {
+ NSLog(@"Warning: unknown object type for: %@", obj);
+ val = JSValueMakeUndefined(context);
+ }
+ return val;
+}
+
+- (id) call
+{
+ NSAssert(callback, @"Callback required");
+ if (!JSObjectIsFunction(context, callback))
+ return nil;
+
+ JSValueRef jsArgs[0];
+ JSValueRef ret = JSObjectCallAsFunction(context, callback, NULL, 0, jsArgs, NULL);
+ return [self objectFromValue:ret];
+}
+
+- (id) callWithParams:(id)firstOrNil, ...
+{
+ NSAssert(callback, @"Callback required");
+ if (!JSObjectIsFunction(context, callback))
+ return nil;
+ NSUInteger pcount = 0;
+ id p;
+ va_list args;
+ va_start(args, firstOrNil);
+ for (p=firstOrNil; p; p=va_arg(args, id))
+ {
+ pcount++;
+ }
+ va_end(args);
+
+ JSValueRef jsArgs[pcount];
+ NSUInteger j = 0;
+ va_start(args, firstOrNil);
+ for (p=firstOrNil; p; p=va_arg(args, id))
+ {
+ jsArgs[j++] = [self valueFromObject:p];
+ }
+ va_end(args);
+
+ JSValueRef ret = JSObjectCallAsFunction(context, callback, NULL, j, jsArgs, NULL);
+ return [self objectFromValue:ret];
+}
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/App.h b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/App.h
new file mode 100644
index 00000000..f65ba61e
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/App.h
@@ -0,0 +1,21 @@
+#import <Foundation/Foundation.h>
+
+#import "WindowController.h"
+
+@interface App : NSObject {
+
+}
+
+@property (nonatomic, retain) WebView *webView;
+
+- (id) initWithWebView:(WebView *)view;
+
+- (void) terminate;
+- (void) activate;
+- (void) hide;
+- (void) unhide;
+- (void) beep;
+- (void) bounce;
+- (void) setCustomUserAgent:(NSString *)userAgentString;
+- (NSNumber*) systemIdleTime;
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/App.m b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/App.m
new file mode 100644
index 00000000..6d47a17e
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/App.m
@@ -0,0 +1,128 @@
+#import "App.h"
+
+#import "JSEventHelper.h"
+
+@implementation App
+
+@synthesize webView;
+
+- (id) initWithWebView:(WebView *) view{
+ self = [super init];
+
+ if (self) {
+ self.webView = view;
+ [[[NSWorkspace sharedWorkspace] notificationCenter] addObserver: self
+ selector: @selector(receiveSleepNotification:)
+ name: NSWorkspaceWillSleepNotification object: NULL];
+ [[[NSWorkspace sharedWorkspace] notificationCenter] addObserver: self
+ selector: @selector(receiveWakeNotification:)
+ name: NSWorkspaceDidWakeNotification object: NULL];
+ [[[NSWorkspace sharedWorkspace] notificationCenter] addObserver: self
+ selector: @selector(receiveActivateNotification:)
+ name: NSWorkspaceDidActivateApplicationNotification object: NULL];
+ }
+
+ return self;
+}
+
+- (void) terminate {
+ [NSApp terminate:nil];
+}
+
+- (void) activate {
+ [NSApp activateIgnoringOtherApps:YES];
+}
+
+- (void) hide {
+ [NSApp hide:nil];
+}
+
+- (void) unhide {
+ [NSApp unhide:nil];
+}
+
+- (void)beep {
+ NSBeep();
+}
+
+- (void) bounce {
+ [NSApp requestUserAttention:NSInformationalRequest];
+}
+
+- (void)setCustomUserAgent:(NSString *)userAgentString {
+ [self.webView setCustomUserAgent: userAgentString];
+}
+
+- (void) open:(NSString*)url {
+ [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:url]];
+}
+
+- (void) launch:(NSString *)name {
+ [[NSWorkspace sharedWorkspace] launchApplication:name];
+}
+
+- (void)receiveSleepNotification:(NSNotification*)note{
+ [JSEventHelper triggerEvent:@"sleep" forWebView:self.webView];
+}
+
+- (void) receiveWakeNotification:(NSNotification*)note{
+ [JSEventHelper triggerEvent:@"wake" forWebView:self.webView];
+}
+
+- (void) receiveActivateNotification:(NSNotification*)notification{
+ NSDictionary* userInfo = [notification userInfo];
+ NSRunningApplication* runningApplication = [userInfo objectForKey:NSWorkspaceApplicationKey];
+ if (runningApplication) {
+ NSMutableDictionary* applicationDidGetFocusDict = [[NSMutableDictionary alloc] initWithCapacity:2];
+ [applicationDidGetFocusDict setObject:runningApplication.localizedName
+ forKey:@"localizedName"];
+ [applicationDidGetFocusDict setObject:[runningApplication.bundleURL absoluteString]
+ forKey:@"bundleURL"];
+
+ [JSEventHelper triggerEvent:@"appActivated" withArgs:applicationDidGetFocusDict forWebView:self.webView];
+ }
+}
+
+
+
+
+/*
+ To get the elapsed time since the previous input event—keyboard, mouse, or tablet—specify kCGAnyInputEventType.
+ */
+- (NSNumber*)systemIdleTime {
+ CFTimeInterval timeSinceLastEvent = CGEventSourceSecondsSinceLastEventType(kCGEventSourceStateHIDSystemState, kCGAnyInputEventType);
+
+ return [NSNumber numberWithDouble:timeSinceLastEvent];
+}
+
+
+
+
++ (NSString*) webScriptNameForSelector:(SEL)selector
+{
+ id result = nil;
+
+ if (selector == @selector(open:)) {
+ result = @"open";
+ } else if (selector == @selector(launch:)) {
+ result = @"launch";
+ } else if (selector == @selector(setCustomUserAgent:)) {
+ result = @"setCustomUserAgent";
+ } else if (selector == @selector(systemIdleTime)) {
+ result = @"systemIdleTime";
+ }
+
+ return result;
+}
+
++ (BOOL) isSelectorExcludedFromWebScript:(SEL)selector
+{
+ return NO;
+}
+
++ (BOOL) isKeyExcludedFromWebScript:(const char*)name
+{
+ return YES;
+}
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Command.h b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Command.h
new file mode 100755
index 00000000..65d6b6d4
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Command.h
@@ -0,0 +1,18 @@
+//
+// Command.h
+// MacGap
+//
+// Created by Joe Hildebrand on 1/10/12.
+// Copyright (c) 2012 Twitter. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <Webkit/WebScriptObject.h>
+
+@interface Command : NSObject {
+ JSContextRef context;
+}
+
+- (id) initWithContext:(JSContextRef)aContext;
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Command.m b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Command.m
new file mode 100755
index 00000000..39b85630
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Command.m
@@ -0,0 +1,28 @@
+//
+// Command.m
+// MacGap
+//
+// Created by Joe Hildebrand on 1/10/12.
+// Copyright (c) 2012 Twitter. All rights reserved.
+//
+
+#import "Command.h"
+#import <JavaScriptCore/JSContextRef.h>
+
+@implementation Command
+
+- (id) initWithContext:(JSContextRef)aContext {
+ self = [super init];
+ if (!self)
+ return nil;
+ context = aContext;
+ JSGlobalContextRetain((JSGlobalContextRef)context);
+ return self;
+}
+
+- (void)dealloc
+{
+ if (context)
+ JSGlobalContextRelease((JSGlobalContextRef)context);
+}
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Dock.h b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Dock.h
new file mode 100644
index 00000000..b3c533d7
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Dock.h
@@ -0,0 +1,11 @@
+#import <Foundation/Foundation.h>
+
+@interface Dock : NSObject {
+
+}
+- (void) setBadge:(NSString*)value;
+- (NSString *) badge;
+
+@property (readwrite, copy) NSString *badge;
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Dock.m b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Dock.m
new file mode 100644
index 00000000..a4494d16
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Dock.m
@@ -0,0 +1,31 @@
+#import "Dock.h"
+
+@implementation Dock
+
+@synthesize badge;
+
+- (void) setBadge:(NSString *)value
+{
+ NSDockTile *tile = [[NSApplication sharedApplication] dockTile];
+ [tile setBadgeLabel:value];
+}
+
+- (NSString *) badge
+{
+ NSDockTile *tile = [[NSApplication sharedApplication] dockTile];
+ return [tile badgeLabel];
+}
+
+#pragma mark WebScripting Protocol
+
++ (BOOL) isSelectorExcludedFromWebScript:(SEL)selector
+{
+ return NO;
+}
+
++ (BOOL) isKeyExcludedFromWebScript:(const char*)name
+{
+ return NO;
+}
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/MenuItemProxy.h b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/MenuItemProxy.h
new file mode 100755
index 00000000..d765978f
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/MenuItemProxy.h
@@ -0,0 +1,31 @@
+//
+// MenuItemProxy.h
+// MacGap
+//
+// Created by Joe Hildebrand on 1/15/12.
+// Copyright (c) 2012 Twitter. All rights reserved.
+//
+
+#import "Command.h"
+#import "CallbackDelegate.h"
+
+@class MenuProxy;
+
+@interface MenuItemProxy : Command {
+ NSMenuItem *item;
+ CallbackDelegate *callback;
+}
+
++ (MenuItemProxy*) proxyWithContext:(JSContextRef)aContext andMenuItem:(NSMenuItem*)anItem;
+
+- (MenuProxy*)addSubmenu;
+
+- (void) remove;
+- (void) setCallback:(WebScriptObject*)aCallback;
+- (void) setKey:(NSString*)keyCommand;
+- (void) setTitle:(NSString*)title;
+- (void) enable;
+- (void) disable;
+- (MenuProxy*)submenu;
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/MenuItemProxy.m b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/MenuItemProxy.m
new file mode 100755
index 00000000..7b9702cc
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/MenuItemProxy.m
@@ -0,0 +1,150 @@
+//
+// MenuItemProxy.m
+// MacGap
+//
+// Created by Joe Hildebrand on 1/15/12.
+// Copyright (c) 2012 Twitter. All rights reserved.
+//
+
+#import "MenuItemProxy.h"
+#import "MenuProxy.h"
+
+@implementation MenuItemProxy
+
+- (id) initWithContext:(JSContextRef)aContext andMenuItem:(NSMenuItem*)anItem
+{
+ NSAssert(anItem, @"anItem required");
+ self = [super initWithContext:aContext];
+ if (!self)
+ return nil;
+ item = anItem;
+ item.representedObject = self;
+
+ return self;
+}
+
++ (MenuItemProxy*) proxyWithContext:(JSContextRef)aContext andMenuItem:(NSMenuItem*)anItem
+{
+ MenuItemProxy *proxy = [anItem representedObject];
+ if (proxy)
+ {
+ NSLog(@"MIP Cache hit");
+ NSAssert([proxy class] == [MenuItemProxy class], @"Bad proxy");
+ return proxy;
+ }
+ return [[MenuItemProxy alloc] initWithContext:aContext andMenuItem:anItem];
+}
+
+- (NSString*) description
+{
+ return [item description];
+}
+
+- (MenuProxy*)addSubmenu
+{
+ NSMenu *s = [item submenu];
+ if (!s)
+ {
+ s = [[NSMenu alloc] initWithTitle:@"FFFFFFOOOOO"];
+ [item setSubmenu:s];
+ }
+ return [MenuProxy proxyWithContext:context andMenu:s];
+}
+
+- (void) remove
+{
+ NSMenu *menu = [item menu];
+ [menu removeItem:item];
+}
+
+- (void)callCallback:(id)sender
+{
+ [callback callWithParams:[sender title], nil];
+}
+
+- (void) setCallback:(WebScriptObject*)aCallback
+{
+ NSAssert(item, @"item required");
+ callback = [[CallbackDelegate alloc] initWithContext:context forCallback:aCallback];
+ [item setAction:@selector(callCallback:)];
+ [item setTarget:self];
+}
+
+- (void)setKey:(NSString*)keyCommand
+{
+ NSString *aKey = [MenuProxy getKeyFromString:keyCommand];
+ [item setKeyEquivalent:aKey];
+
+ NSUInteger modifiers = [MenuProxy getModifiersFromString:keyCommand];
+ [item setKeyEquivalentModifierMask:modifiers];
+}
+
+- (void) setTitle:(NSString*)title
+{
+ [item setTitle:title];
+}
+
+- (MenuProxy*)submenu;
+{
+ // TODO: make this work as a property
+ NSMenu *s = [item submenu];
+ if (!s)
+ return nil;
+ return [MenuProxy proxyWithContext:context andMenu:s];
+}
+
+- (void) enable
+{
+ [item setEnabled:YES];
+}
+
+- (void) disable
+{
+ [item setEnabled:NO];
+}
+
+#pragma mark WebScripting protocol
+
++ (BOOL) isSelectorExcludedFromWebScript:(SEL)selector
+{
+ return [self webScriptNameForSelector:selector] == nil;
+}
+
++ (BOOL) isKeyExcludedFromWebScript:(const char*)name
+{
+ return YES;
+}
+
++ (NSString*) webScriptNameForSelector:(SEL)selector
+{
+ id result = nil;
+
+ if (selector == @selector(addSubmenu)) {
+ result = @"addSubmenu";
+ }
+ else if (selector == @selector(remove)) {
+ result = @"remove";
+ }
+ else if (selector == @selector(setCallback:)) {
+ result = @"setCallback";
+ }
+ else if (selector == @selector(setKey:)) {
+ result = @"setKey";
+ }
+ else if (selector == @selector(setTitle:)) {
+ result = @"setTitle";
+ }
+ else if (selector == @selector(submenu)) {
+ result = @"submenu";
+ }
+ else if (selector == @selector(enable)) {
+ result = @"enable";
+ }
+ else if (selector == @selector(disable)) {
+ result = @"disable";
+ }
+
+ return result;
+}
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/MenuProxy.h b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/MenuProxy.h
new file mode 100755
index 00000000..afd6c6ed
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/MenuProxy.h
@@ -0,0 +1,31 @@
+//
+// MenuProxy.h
+// MacGap
+//
+// Created by Joe Hildebrand on 1/14/12.
+// Copyright (c) 2012 Twitter. All rights reserved.
+//
+
+#import "Command.h"
+
+@class MenuItemProxy;
+
+@interface MenuProxy : Command {
+ NSMenu *menu;
+}
+
++ (MenuProxy*)proxyWithContext:(JSContextRef)aContext andMenu:(NSMenu*)aMenu;
+
+- (MenuItemProxy*)addItemWithTitle:(NSString*)title
+ keyEquivalent:(NSString*)aKey
+ callback:(WebScriptObject*)aCallback
+ atIndex:(NSInteger)index;
+
+- (MenuItemProxy*)addSeparator;
+- (MenuItemProxy*)itemForKey:(id)key;
+- (MenuProxy*)removeItem:(id)key;
+
++ (NSString*)getKeyFromString:(NSString*)keyCommand;
++ (NSUInteger*)getModifiersFromString:(NSString*)keyCommand;
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/MenuProxy.m b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/MenuProxy.m
new file mode 100755
index 00000000..5bc10a76
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/MenuProxy.m
@@ -0,0 +1,233 @@
+//
+// MenuProxy.m
+// MacGap
+//
+// Created by Joe Hildebrand on 1/14/12.
+// Copyright (c) 2012 Twitter. All rights reserved.
+//
+
+#import <objc/runtime.h>
+#import <JavaScriptCore/JavaScript.h>
+
+#import "MenuProxy.h"
+#import "MenuItemProxy.h"
+
+static char REPRESENTED_OBJECT;
+
+@interface NSMenu (represented)
+@property (strong) id representedObject;
+@end
+
+@implementation NSMenu (represented)
+
+- (id) representedObject
+{
+ return objc_getAssociatedObject(self, &REPRESENTED_OBJECT);
+}
+
+- (void) setRepresentedObject:(id)representedObject
+{
+ objc_setAssociatedObject(self,
+ &REPRESENTED_OBJECT,
+ representedObject,
+ OBJC_ASSOCIATION_RETAIN);
+}
+
+@end
+
+@implementation MenuProxy
+
+- (id) initWithContext:(JSContextRef)aContext andMenu:(NSMenu*)aMenu
+{
+ self = [super initWithContext:aContext];
+ if (!self)
+ return nil;
+ menu = aMenu;
+ menu.representedObject = self;
+ return self;
+}
+
++ (MenuProxy*)proxyWithContext:(JSContextRef)aContext andMenu:(NSMenu*)aMenu
+{
+ // singleton-ish.
+ MenuProxy *ret = [aMenu representedObject];
+ if (ret)
+ {
+ NSLog(@"MP cache hit");
+ return ret;
+ }
+ return [[MenuProxy alloc] initWithContext:aContext andMenu:aMenu];
+}
+
+- (void) dealloc
+{
+ menu.representedObject = nil;
+}
+
+- (NSString*) description
+{
+ return [menu description];
+}
+
+static BOOL isNullish(id o)
+{
+ if (!o)
+ return YES;
+ if ([o isKindOfClass:[WebUndefined class]])
+ return YES;
+ return NO;
+}
+
+- (MenuItemProxy*)addItemWithTitle:(NSString*)title
+ keyEquivalent:(NSString*)keyCommand
+ callback:(WebScriptObject*)aCallback
+ atIndex:(NSInteger)index
+{
+ if (isNullish(title))
+ title = @"";
+
+ NSString *aKey = [MenuProxy getKeyFromString:keyCommand];
+ NSMenuItem *item = nil;
+
+ if(index) {
+ item = [menu insertItemWithTitle:title action:nil keyEquivalent:aKey atIndex:index ];
+ } else {
+ item = [menu addItemWithTitle:title action:nil keyEquivalent:aKey ];
+
+ }
+
+ // Set the modifiers.
+ NSUInteger modifiers = [MenuProxy getModifiersFromString:keyCommand];
+ [item setKeyEquivalentModifierMask:modifiers];
+
+ if(!menu.supermenu) {
+ NSMenu *s = [[NSMenu alloc] initWithTitle:title];
+ [item setSubmenu:s];
+ }
+
+ MenuItemProxy *mip = [MenuItemProxy proxyWithContext:context andMenuItem:item];
+ if (!isNullish(aCallback))
+ [mip setCallback:aCallback];
+
+
+ return mip;
+}
+
++ (NSString*)getKeyFromString:(NSString*)keyCommand {
+ if (isNullish(keyCommand))
+ keyCommand = @"";
+
+ // Obtain the key (if there are modifiers, it will be the last character).
+ NSString *aKey = @"";
+ if ([keyCommand length] > 0) {
+ aKey = [keyCommand substringFromIndex:[keyCommand length] - 1];
+ }
+
+ return aKey;
+}
+
++ (NSUInteger*)getModifiersFromString:(NSString*)keyCommand {
+ // aKeys may optionally specify one or more modifiers.
+ NSUInteger modifiers = 0;
+
+ if ([keyCommand rangeOfString:@"caps"].location != NSNotFound) modifiers += NSAlphaShiftKeyMask;
+ if ([keyCommand rangeOfString:@"shift"].location != NSNotFound) modifiers += NSShiftKeyMask;
+ if ([keyCommand rangeOfString:@"cmd"].location != NSNotFound) modifiers += NSCommandKeyMask;
+ if ([keyCommand rangeOfString:@"ctrl"].location != NSNotFound) modifiers += NSControlKeyMask;
+ if ([keyCommand rangeOfString:@"opt"].location != NSNotFound) modifiers += NSAlternateKeyMask;
+ if ([keyCommand rangeOfString:@"alt"].location != NSNotFound) modifiers += NSAlternateKeyMask;
+
+ return modifiers;
+}
+
+- (MenuItemProxy*)addSeparator
+{
+ NSMenuItem *sep = [NSMenuItem separatorItem];
+ [menu addItem:sep];
+ return [MenuItemProxy proxyWithContext:context andMenuItem:sep];
+}
+
+- (MenuItemProxy*)itemForKey:(id)key
+{
+ if (isNullish(key))
+ return nil;
+ NSMenuItem *item = nil;
+ if ([key isKindOfClass:[NSNumber class]])
+ {
+ item = [menu itemAtIndex:[key intValue]];
+ }
+ else if ([key isKindOfClass:[NSString class]])
+ {
+ item = [menu itemWithTitle:key];
+ if (!item)
+ {
+ // Try again, with ... appended. e.g. "Save..."
+ item = [menu itemWithTitle:
+ [key stringByAppendingString:@"\u2026"]];
+ }
+ }
+ if (!item)
+ return nil;
+
+ return [MenuItemProxy proxyWithContext:context andMenuItem:item];
+}
+
+- (MenuProxy*)removeItem:(id)key
+{
+ if (isNullish(key))
+ return nil;
+
+ NSMenuItem *item = nil;
+ if ([key isKindOfClass:[NSNumber class]])
+ {
+ item = [menu itemAtIndex:[key intValue]];
+ }
+ else if ([key isKindOfClass:[NSString class]])
+ {
+ item = [menu itemWithTitle:key];
+ if (!item)
+ {
+ // Try again, with ... appended. e.g. "Save..."
+ item = [menu itemWithTitle:
+ [key stringByAppendingString:@"\u2026"]];
+ }
+ }
+ if (!item)
+ return nil;
+
+ [menu removeItem:item];
+ return [MenuProxy proxyWithContext:context andMenu:menu];
+}
+
++ (BOOL) isSelectorExcludedFromWebScript:(SEL)selector
+{
+ return [self webScriptNameForSelector:selector] == nil;
+}
+
++ (BOOL) isKeyExcludedFromWebScript:(const char*)name
+{
+ return YES;
+}
+
++ (NSString*) webScriptNameForSelector:(SEL)selector
+{
+ id result = nil;
+
+ if (selector == @selector(addItemWithTitle:keyEquivalent:callback:atIndex:)) {
+ result = @"addItem";
+ }
+ else if (selector == @selector(addSeparator)) {
+ result = @"addSeparator";
+ }
+ else if (selector == @selector(itemForKey:)) {
+ result = @"getItem";
+ }
+ else if (selector == @selector(removeItem:)) {
+ result = @"removeMenu";
+ }
+
+ return result;
+}
+
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Notice.h b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Notice.h
new file mode 100644
index 00000000..51077a43
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Notice.h
@@ -0,0 +1,26 @@
+//
+// Notice.h
+// MacGap
+//
+// Created by Christian Sullivan on 7/26/12.
+// Copyright (c) 2012 Twitter. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "WindowController.h"
+
+#define APP_NOTICE_NOTIFICATION @"Notice"
+
+@interface Notice : NSObject <NSUserNotificationCenterDelegate> {
+
+}
+
+@property (nonatomic, retain) WebView *webView;
+
+- (id) initWithWebView:(WebView *)view;
+- (void) notify:(NSDictionary*)message;
+- (void) close:(NSString*)notificationId;
++ (BOOL) available;
+
+@end
+
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Notice.m b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Notice.m
new file mode 100644
index 00000000..a4095f9f
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Notice.m
@@ -0,0 +1,108 @@
+//
+// Notice.m
+// MacGap
+//
+// Created by Christian Sullivan on 7/26/12.
+// Copyright (c) 2012 Twitter. All rights reserved.
+//
+
+#import "Notice.h"
+
+#import "JSEventHelper.h"
+
+@implementation Notice
+
+- (id) initWithWebView:(WebView*)view
+{
+ if(self = [super init]) {
+ self.webView = view;
+ [[NSUserNotificationCenter defaultUserNotificationCenter] setDelegate:self];
+ }
+ return self;
+}
+
+- (void) notify:(NSDictionary *)message {
+ NSUserNotification *notification = [[NSUserNotification alloc] init];
+ [notification setTitle:[message valueForKey:@"title"]];
+ [notification setInformativeText:[message valueForKey:@"content"]];
+ [notification setDeliveryDate:[NSDate dateWithTimeInterval:0 sinceDate:[NSDate date]]];
+ BOOL playSound = true; // optional parameter, false only when {sound: false}
+ @try {
+ NSNumber *s = [message valueForKey:@"sound"];
+ if ([[s className] isEqual: @"__NSCFBoolean"]) {
+ playSound = [s boolValue];
+ }
+ }
+ @catch (NSException *exception) {
+ }
+ if (playSound) {
+ [notification setSoundName:NSUserNotificationDefaultSoundName];
+ }
+ NSString *id = @""; // optional, needed for close
+ @try {
+ id = [message valueForKey:@"id"];
+ }
+ @catch (NSException *exception) {
+ }
+ [notification setUserInfo:[NSDictionary dictionaryWithObjectsAndKeys:id, @"id", nil]];
+ NSUserNotificationCenter *center = [NSUserNotificationCenter defaultUserNotificationCenter];
+ [center scheduleNotification:notification];
+}
+
+// close all notifications with id == notificationId or close all notifications if notificationId == "*"
+- (void) close:(NSString*)notificationId {
+ NSUserNotificationCenter *center = [NSUserNotificationCenter defaultUserNotificationCenter];
+ for(NSUserNotification * deliveredNote in center.deliveredNotifications) {
+ if ([notificationId isEqualToString:@"*"] || [deliveredNote.userInfo[@"id"] isEqualToString:notificationId]) {
+ [center removeDeliveredNotification: deliveredNote];
+ }
+ }
+}
+
++ (BOOL) available {
+ if ([NSUserNotificationCenter respondsToSelector:@selector(defaultUserNotificationCenter)])
+ return YES;
+
+ return NO;
+}
+
+- (void) userNotificationCenter:(NSUserNotificationCenter *)center didActivateNotification:(NSUserNotification *)notification
+{
+ NSString *notificationId = [notification.userInfo valueForKey:@"id"];
+ [JSEventHelper triggerEvent:@"macgap.notify.activated" forDetail:notificationId forWebView:self.webView];
+}
+
+#pragma mark WebScripting Protocol
+
++ (BOOL) isSelectorExcludedFromWebScript:(SEL)selector
+{
+ BOOL result = YES;
+ if (selector == @selector(notify:))
+ result = NO;
+ if (selector == @selector(close:))
+ result = NO;
+
+ return result;
+}
+
++ (NSString*) webScriptNameForSelector:(SEL)selector
+{
+ id result = nil;
+
+ if (selector == @selector(notify:)) {
+ result = @"notify";
+ }
+ if (selector == @selector(close:)) {
+ result = @"close";
+ }
+
+ return result;
+}
+
+// right now exclude all properties (eg keys)
++ (BOOL) isKeyExcludedFromWebScript:(const char*)name
+{
+ return YES;
+}
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Path.h b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Path.h
new file mode 100644
index 00000000..f931340d
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Path.h
@@ -0,0 +1,21 @@
+#import <Foundation/Foundation.h>
+
+@interface Path : NSObject {
+
+}
+
+- (NSString *) application;
+- (NSString *) resource;
+- (NSString *) documents;
+- (NSString *) library;
+- (NSString *) home;
+- (NSString *) temp;
+
+@property (readonly,copy) NSString* application;
+@property (readonly,copy) NSString* resource;
+@property (readonly,copy) NSString* documents;
+@property (readonly,copy) NSString* library;
+@property (readonly,copy) NSString* home;
+@property (readonly,copy) NSString* temp;
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Path.m b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Path.m
new file mode 100644
index 00000000..8c54100f
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Path.m
@@ -0,0 +1,53 @@
+#import "Path.h"
+
+@implementation Path
+
+@synthesize application;
+@synthesize resource;
+@synthesize documents;
+@synthesize library;
+@synthesize home;
+@synthesize temp;
+
+- (NSString *)application {
+ return [[NSBundle mainBundle] bundlePath];
+}
+
+- (NSString *)resource {
+ return [[NSBundle mainBundle] resourcePath];
+}
+
+- (NSString *)documents {
+ NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+ return [paths objectAtIndex:0];
+}
+
+- (NSString *)library {
+ NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
+ NSLog( @"%@", paths );
+ return [paths objectAtIndex:0];
+}
+
+- (NSString *)home {
+ return NSHomeDirectory();
+}
+
+- (NSString *)temp {
+ return NSTemporaryDirectory();
+}
+
+#pragma mark WebScripting Protocol
+
+/* checks whether a selector is acceptable to be called from JavaScript */
++ (BOOL) isSelectorExcludedFromWebScript:(SEL)selector
+{
+ return NO;
+}
+
+// right now exclude all properties (eg keys)
++ (BOOL) isKeyExcludedFromWebScript:(const char*)name
+{
+ return NO;
+}
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Sound.h b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Sound.h
new file mode 100644
index 00000000..06707643
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Sound.h
@@ -0,0 +1,17 @@
+#import <Cocoa/Cocoa.h>
+#import "Command.h"
+#import "CallbackDelegate.h"
+
+
+@interface Sound : Command {
+
+}
+
+// pending callbacks for sounds being played, to keep
+// ARC from freeing them too early
+@property (nonatomic, strong) NSMutableSet *pending;
+
+- (void) play:(NSString*)file onComplete:(WebScriptObject*)callback;
+- (void) playSystem:(NSString*)name onComplete:(WebScriptObject*)callback;
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Sound.m b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Sound.m
new file mode 100644
index 00000000..9f4a44db
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/Sound.m
@@ -0,0 +1,97 @@
+#import "Sound.h"
+
+
+@interface PlayDelegate : CallbackDelegate <NSSoundDelegate> {
+}
+
+@property (nonatomic, weak) Sound *sound;
+
+- (id) initWithContext:(JSContextRef)aContext
+ forCallback:(WebScriptObject*)aCallback
+ withSound:(Sound*)aSound;
+@end
+
+@implementation PlayDelegate
+
+@synthesize sound;
+
+- (id) initWithContext:(JSContextRef)aContext
+ forCallback:(WebScriptObject*)aCallback
+ withSound:(Sound*)aSound
+{
+ self = [super initWithContext:aContext forCallback:aCallback];
+ if (!self)
+ return nil;
+ sound = aSound;
+ return self;
+}
+
+- (void)sound:(NSSound *)aSound didFinishPlaying:(BOOL)finishedPlaying {
+ [self callWithParams:[aSound name], nil];
+ [sound.pending removeObject:self];
+}
+
+@end
+
+@implementation Sound
+
+@synthesize pending;
+
+- (id) initWithContext:(JSContextRef)aContext {
+ self = [super initWithContext:aContext];
+ if (!self) {
+ return nil;
+ }
+
+ pending = [NSMutableSet new];
+ return self;
+}
+
+- (void) playSound:(NSSound*)sound onComplete:(WebScriptObject*)callback {
+ if (callback != (id)[WebUndefined undefined]) {
+ PlayDelegate *d = [[PlayDelegate alloc] initWithContext:context
+ forCallback:callback
+ withSound:self];
+ [pending addObject:d];
+ [sound setDelegate:d];
+ }
+ [sound play];
+}
+
+- (void) play:(NSString*)file onComplete:(WebScriptObject*)callback {
+ NSURL* fileUrl = [NSURL fileURLWithPath:[[Utils sharedInstance] pathForResource:file]];
+ DebugNSLog(@"Sound file:%@", [fileUrl description]);
+
+ NSSound* sound = [[NSSound alloc] initWithContentsOfURL:fileUrl byReference:YES];
+ [self playSound:sound onComplete:callback];
+}
+
+- (void) playSystem:(NSString*)name onComplete:(WebScriptObject*)callback {
+ NSSound *systemSound = [NSSound soundNamed:name];
+ [self playSound:systemSound onComplete:callback];
+}
+
+#pragma mark WebScripting Protocol
+
++ (BOOL) isSelectorExcludedFromWebScript:(SEL)selector {
+ return [self webScriptNameForSelector:selector] == nil;
+}
+
++ (BOOL) isKeyExcludedFromWebScript:(const char*)name {
+ return YES;
+}
+
++ (NSString*) webScriptNameForSelector:(SEL)selector {
+ id result = nil;
+
+ if (selector == @selector(play:onComplete:)) {
+ result = @"play";
+ }
+ else if (selector == @selector(playSystem:onComplete:)) {
+ result = @"playSystem";
+ }
+
+ return result;
+}
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/UserDefaults.h b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/UserDefaults.h
new file mode 100644
index 00000000..269191b3
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/UserDefaults.h
@@ -0,0 +1,43 @@
+//
+// UserDefaults.h
+// MacGap
+//
+// Created by Jeff Hanbury on 16/04/2014.
+// Copyright (c) 2014 Twitter. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#import "WindowController.h"
+
+@interface UserDefaults : NSObject
+
+@property (nonatomic, retain) WebView *webView;
+
+- (id) initWithWebView:(WebView *)view;
+- (NSString*) getMyDefaults;
+- (NSDictionary*) myDefaultsDictionary;
+- (void) removeObjectForKey:(NSString*)key;
+- (NSArray*) getUserDefaultsKeys;
+
+- (NSString*) addPrefix:(NSString*)key;
+
+- (void) setString:(NSString*)key withValue:(NSString*)value;
+- (NSString*) getString:(NSString*)key;
+
+- (void) setInteger:(NSString*)key withValue:(NSString*)value;
+- (NSNumber*) getInteger:(NSString*)key;
+
+- (void) setBool:(NSString*)key withValue:(NSString*)value;
+- (NSNumber*) getBool:(NSString*)key;
+
+- (void) setFloat:(NSString*)key withValue:(NSString*)value;
+- (NSNumber*) getFloat:(NSString*)key;
+
+// Could also be implemented:
+//– setObject:forKey:
+//– setDouble:forKey:
+//– setURL:forKey:
+
+@end
+
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/UserDefaults.m b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/UserDefaults.m
new file mode 100644
index 00000000..48568710
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/UserDefaults.m
@@ -0,0 +1,211 @@
+//
+// UserDefaults.m
+// MacGap
+//
+// Created by Jeff Hanbury on 16/04/2014.
+// Copyright (c) 2014 Twitter. All rights reserved.
+//
+
+#import "UserDefaults.h"
+#import "JSEventHelper.h"
+
+@interface UserDefaults() {
+
+}
+
+-(void) setupNotificationCenter;
+
+@end
+
+
+@implementation UserDefaults
+
+- (id) initWithWebView:(WebView *) view{
+ self = [super init];
+
+ if (self) {
+ self.webView = view;
+ [self setupNotificationCenter];
+ }
+
+ return self;
+}
+
+
+-(void) setupNotificationCenter{
+ [[NSNotificationCenter defaultCenter] addObserver:self
+ selector:@selector(defaultsChanged:)
+ name:NSUserDefaultsDidChangeNotification
+ object:nil];
+}
+
+- (void)defaultsChanged:(NSNotification *)notification {
+ NSDictionary* returnDict = [self myDefaultsDictionary];
+ [JSEventHelper triggerEvent:@"userDefaultsChanged" withArgs:returnDict forWebView:self.webView];
+}
+
+- (NSString*) getMyDefaults {
+ NSDictionary* myDefaults = [self myDefaultsDictionary];
+
+ return [[Utils sharedInstance] convertDictionaryToJSON:myDefaults];
+}
+
+- (NSDictionary*) myDefaultsDictionary {
+ NSString* prefix = [kWebScriptNamespace stringByAppendingString:@"_"];
+ NSMutableDictionary* returnDict = [[NSMutableDictionary alloc] init];
+
+ // Get the user defaults.
+ NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
+
+ // Build up a dictionary containing just the items beginning with our
+ // prefix.
+ for (NSString* key in [self getUserDefaultsKeys]) {
+ if ([key hasPrefix:prefix]) {
+ id val = [defaults valueForKey:key];
+ [returnDict setObject:val forKey:key];
+ }
+ }
+
+ return returnDict;
+}
+
+- (NSArray*) getUserDefaultsKeys {
+ NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
+ return [[prefs dictionaryRepresentation] allKeys];
+}
+
+- (void) removeObjectForKey:(NSString*)key {
+ NSString* prefixedKey;
+ prefixedKey = [self addPrefix:key];
+
+ [[NSUserDefaults standardUserDefaults] removeObjectForKey:prefixedKey];
+ [[NSUserDefaults standardUserDefaults] synchronize];
+}
+
+// Check we have a standard prefix for JS-modified keys, for security purposes.
+// If not, add it. This stops JavaScript from ever being able to modify keys
+// it did not create.
+- (NSString*) addPrefix:(NSString*)key {
+ NSString* prefix;
+ prefix = [kWebScriptNamespace stringByAppendingString:@"_"];
+
+ if (![key hasPrefix:prefix]) {
+ key = [prefix stringByAppendingString:key];
+ }
+ return key;
+}
+
+// String
+
+- (void) setString:(NSString*)key withValue:(NSString*)value {
+ NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
+ NSString* prefixedKey;
+ prefixedKey = [self addPrefix:key];
+ [prefs setObject:value forKey:prefixedKey];
+}
+
+- (NSString*) getString:(NSString *)key {
+ NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
+ return [prefs stringForKey:key];
+}
+
+// All the following must convert their type to NSNumber for JavaScript.
+
+// Integer
+
+- (void) setInteger:(NSString*)key withValue:(NSString*)value {
+ NSString* prefixedKey;
+ prefixedKey = [self addPrefix:key];
+
+ NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
+ NSInteger myInt = [value intValue];
+ [prefs setInteger:myInt forKey:prefixedKey];
+}
+
+- (NSNumber*) getInteger:(NSString *)key {
+ NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
+ return [NSNumber numberWithInteger:[prefs integerForKey:key]];
+}
+
+// Boolean
+
+- (void) setBool:(NSString*)key withValue:(NSString*)value {
+ NSString* prefixedKey;
+ prefixedKey = [self addPrefix:key];
+
+ NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
+ BOOL myBool = [value boolValue];
+ [prefs setBool:myBool forKey:prefixedKey];
+}
+
+- (NSNumber*) getBool:(NSString *)key {
+ NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
+ return [NSNumber numberWithBool:[prefs boolForKey:key]];
+}
+
+// Float
+
+- (void) setFloat:(NSString*)key withValue:(NSString*)value {
+ NSString* prefixedKey;
+ prefixedKey = [self addPrefix:key];
+
+ NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
+ float myFloat = [value floatValue];
+ [prefs setFloat:myFloat forKey:prefixedKey];
+}
+
+- (NSNumber*) getFloat:(NSString *)key {
+ NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
+ return [NSNumber numberWithFloat:[prefs floatForKey:key]];
+}
+
+
+#pragma mark WebScripting Protocol
+
++ (BOOL) isSelectorExcludedFromWebScript:(SEL)selector {
+ return NO;
+}
+
++ (NSString*) webScriptNameForSelector:(SEL)selector {
+ id result = nil;
+
+ if (selector == @selector(getMyDefaults)) {
+ result = @"getMyDefaults";
+ }
+
+ if (selector == @selector(removeObjectForKey:)) {
+ result = @"removeObjectForKey";
+ }
+
+ else if (selector == @selector(setString:withValue:)) {
+ result = @"setString";
+ } else if (selector == @selector(getString:)) {
+ result = @"getString";
+ }
+
+ else if (selector == @selector(setInteger:withValue:)) {
+ result = @"setInteger";
+ } else if (selector == @selector(getInteger:)) {
+ result = @"getInteger";
+ }
+
+ else if (selector == @selector(setBool:withValue:)) {
+ result = @"setBool";
+ } else if (selector == @selector(getBool:)) {
+ result = @"getBool";
+ }
+
+ else if (selector == @selector(setFloat:withValue:)) {
+ result = @"setFloat";
+ } else if (selector == @selector(getFloat:)) {
+ result = @"getFloat";
+ }
+
+ return result;
+}
+
++ (BOOL) isKeyExcludedFromWebScript:(const char*)name {
+ return NO;
+}
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/fonts.h b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/fonts.h
new file mode 100644
index 00000000..62c7b7e8
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/fonts.h
@@ -0,0 +1,9 @@
+@interface Fonts : NSObject {
+}
+
+- (NSArray*) availableFonts;
+- (NSArray*) availableFontFamilies;
+- (NSArray*) availableMembersOfFontFamily:(NSString*)fontFamily;
+- (CGFloat) defaultLineHeightForFont:(NSString *)theFontName ofSize:(CGFloat)theFontSize;
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/fonts.m b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/fonts.m
new file mode 100644
index 00000000..b17818a5
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Commands/fonts.m
@@ -0,0 +1,48 @@
+#import "fonts.h"
+
+@implementation Fonts
+
+
+- (NSArray*) availableFonts {
+ return [[NSFontManager sharedFontManager] availableFonts];
+}
+
+- (NSArray*) availableFontFamilies {
+ return [[NSFontManager sharedFontManager] availableFontFamilies];
+}
+
+- (NSArray*) availableMembersOfFontFamily:(NSString *)fontFamily {
+ return [[NSFontManager sharedFontManager] availableMembersOfFontFamily:fontFamily];
+}
+
+- (CGFloat) defaultLineHeightForFont:(NSString*)theFontName ofSize:(CGFloat)theFontSize {
+ NSFont *theFont = [NSFont fontWithName:theFontName size:theFontSize];
+ NSLayoutManager *lm = [[NSLayoutManager alloc] init];
+
+ return [lm defaultLineHeightForFont:theFont];
+}
+
+
+#pragma mark WebScripting Protocol
+
++ (BOOL) isSelectorExcludedFromWebScript:(SEL)selector {
+ return NO;
+}
+
++ (NSString*) webScriptNameForSelector:(SEL)selector {
+ id result = nil;
+
+ if (selector == @selector(availableMembersOfFontFamily:)) {
+ result = @"availableMembersOfFontFamily";
+ } else if (selector == @selector(defaultLineHeightForFont:ofSize:)) {
+ result = @"defaultLineHeightForFont";
+ }
+
+ return result;
+}
+
++ (BOOL) isKeyExcludedFromWebScript:(const char*)name {
+ return NO;
+}
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Constants.h b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Constants.h
new file mode 100644
index 00000000..1fe59d6c
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Constants.h
@@ -0,0 +1,7 @@
+// Application constants
+
+#define kStartPage @"http://127.0.0.1:9993/"
+
+#define kStartFolder @"."
+
+#define kWebScriptNamespace @"macgap" \ No newline at end of file
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/ContentView.h b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/ContentView.h
new file mode 100644
index 00000000..65890a5e
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/ContentView.h
@@ -0,0 +1,15 @@
+#import <Cocoa/Cocoa.h>
+#import <WebKit/WebKit.h>
+
+@class WebViewDelegate;
+
+@interface ContentView : NSView {
+ IBOutlet WebView* webView;
+ WebViewDelegate* delegate;
+}
+
+@property (retain) WebView* webView;
+@property (retain) WebViewDelegate* delegate;
+@property (strong) IBOutlet NSMenu *mainMenu;
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/ContentView.m b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/ContentView.m
new file mode 100644
index 00000000..24e58cd1
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/ContentView.m
@@ -0,0 +1,68 @@
+#import "ContentView.h"
+#import "WebViewDelegate.h"
+#import "AppDelegate.h"
+#import "JSEventHelper.h"
+
+@interface WebPreferences (WebPreferencesPrivate)
+ - (void)_setLocalStorageDatabasePath:(NSString *)path;
+ - (void) setLocalStorageEnabled: (BOOL) localStorageEnabled;
+ - (void) setDatabasesEnabled:(BOOL)databasesEnabled;
+ - (void) setDeveloperExtrasEnabled:(BOOL)developerExtrasEnabled;
+ - (void) setWebGLEnabled:(BOOL)webGLEnabled;
+ - (void) setOfflineWebApplicationCacheEnabled:(BOOL)offlineWebApplicationCacheEnabled;
+@end
+
+@implementation ContentView
+
+@synthesize webView, delegate, mainMenu;
+
+- (void) awakeFromNib
+{
+ WebPreferences *webPrefs = [WebPreferences standardPreferences];
+
+ NSString *cappBundleName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];
+ NSString *applicationSupportFile = [@"~/Library/Application Support/" stringByExpandingTildeInPath];
+ NSString *savePath = [NSString pathWithComponents:[NSArray arrayWithObjects:applicationSupportFile, cappBundleName, @"LocalStorage", nil]];
+ [webPrefs _setLocalStorageDatabasePath:savePath];
+ [webPrefs setLocalStorageEnabled:YES];
+ [webPrefs setDatabasesEnabled:YES];
+ [webPrefs setDeveloperExtrasEnabled:[[NSUserDefaults standardUserDefaults] boolForKey: @"developer"]];
+ [webPrefs setOfflineWebApplicationCacheEnabled:YES];
+ [webPrefs setWebGLEnabled:YES];
+
+ [self.webView setPreferences:webPrefs];
+
+ NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage
+ sharedHTTPCookieStorage];
+ [cookieStorage setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
+
+ [self.webView setApplicationNameForUserAgent: @"MacGap"];
+
+ self.delegate = [[WebViewDelegate alloc] initWithMenu:[NSApp mainMenu]];
+ [self.webView setFrameLoadDelegate:self.delegate];
+ [self.webView setUIDelegate:self.delegate];
+ [self.webView setResourceLoadDelegate:self.delegate];
+ [self.webView setDownloadDelegate:self.delegate];
+ [self.webView setPolicyDelegate:self.delegate];
+ [self.webView setDrawsBackground:NO];
+ [self.webView setShouldCloseWithWindow:NO];
+
+ [self.webView setGroupName:@"MacGap"];
+
+}
+
+- (void) windowResized:(NSNotification*)notification;
+{
+ NSWindow* window = (NSWindow*)notification.object;
+ NSSize size = [window frame].size;
+
+ DebugNSLog(@"window width = %f, window height = %f", size.width, size.height);
+
+ bool isFullScreen = (window.styleMask & NSFullScreenWindowMask) == NSFullScreenWindowMask;
+ int titleBarHeight = isFullScreen ? 0 : [[Utils sharedInstance] titleBarHeight:window];
+
+ [self.webView setFrame:NSMakeRect(0, 0, size.width, size.height - titleBarHeight)];
+ [JSEventHelper triggerEvent:@"orientationchange" forWebView:self.webView];
+}
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/JSEventHelper.h b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/JSEventHelper.h
new file mode 100644
index 00000000..401f3e39
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/JSEventHelper.h
@@ -0,0 +1,20 @@
+//
+// Helper.h
+// MacGap
+//
+// Created by Liam Kaufman Simpkins on 12-01-22.
+// Copyright (c) 2012 Twitter. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "WindowController.h"
+
+@interface JSEventHelper : NSObject
+
++ (void) triggerEvent:(NSString *)event forWebView:(WebView *)webView;
++ (void) triggerEvent:(NSString *)event withArgs:(NSDictionary *)args forWebView:(WebView *)webView;
++ (void) triggerEvent:(NSString *)event withArgs:(NSDictionary *)args forObject:(NSString *)objName forWebView:(WebView *)webView;
++ (void) triggerEvent:(NSString *)event forDetail:(NSString *)detail forWebView:(WebView *)webView;
++ (void) triggerEvent:(NSString *)event forDetail:(NSString *)detail forObject:(NSString *)objName forWebView:(WebView *)webView;
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/JSEventHelper.m b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/JSEventHelper.m
new file mode 100644
index 00000000..65406b3c
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/JSEventHelper.m
@@ -0,0 +1,41 @@
+//
+// Helper.m
+// MacGap
+//
+// Created by Liam Kaufman Simpkins on 12-01-22.
+// Copyright (c) 2012 Twitter. All rights reserved.
+//
+
+#import "JSEventHelper.h"
+
+@implementation JSEventHelper
+
++ (void) triggerEvent:(NSString *)event forWebView:(WebView *)webView {
+ [self triggerEvent:event withArgs:[NSMutableDictionary dictionary] forObject:@"document" forWebView:webView];
+}
+
++ (void) triggerEvent:(NSString *)event withArgs:(NSDictionary *)args forWebView:(WebView *)webView {
+ [self triggerEvent:event withArgs:args forObject:@"document" forWebView:webView];
+}
+
++ (void) triggerEvent:(NSString *)event withArgs:(NSDictionary *)args forObject:(NSString *)objName forWebView:(WebView *)webView {
+
+ // Convert args Dictionary to JSON.
+ NSString* jsonString = [[Utils sharedInstance] convertDictionaryToJSON:args];
+
+ // Create the event JavaScript and run it.
+ NSString * str = [NSString stringWithFormat:@"var e = document.createEvent('Events'); e.initEvent('%@', true, false); e.data=%@; %@.dispatchEvent(e); ", event, jsonString, objName];
+ [webView stringByEvaluatingJavaScriptFromString:str];
+}
+
++ (void) triggerEvent:(NSString *)event forDetail:(NSString *)detail forWebView:(WebView *)webView {
+ [self triggerEvent:event forDetail:detail forObject:@"document" forWebView:webView];
+}
+
++ (void) triggerEvent:(NSString *)event forDetail:(NSString *)detail forObject:(NSString *)objName forWebView:(WebView *)webView {
+ NSString *detailEscaped = [detail stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
+ NSString *str = [NSString stringWithFormat:@"var e = new CustomEvent('%@', { 'detail': decodeURIComponent(\"%@\") }); %@.dispatchEvent(e); ", event, detailEscaped, objName];
+ [webView stringByEvaluatingJavaScriptFromString:str];
+}
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Utils.h b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Utils.h
new file mode 100644
index 00000000..f573d881
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Utils.h
@@ -0,0 +1,20 @@
+#import <Foundation/Foundation.h>
+#import <Webkit/WebScriptObject.h>
+
+#define DEG_EPS 0.001
+#define fequal(a,b) (fabs((a) - (b)) < DEG_EPS)
+#define fequalzero(a) (fabs(a) < DEG_EPS)
+
+@class LoadingView;
+
+@interface Utils : NSObject {
+}
+
+- (float) titleBarHeight:(NSWindow*)aWindow;
+- (NSString*) pathForResource:(NSString*)resourcepath;
+- (NSString*) convertDictionaryToJSON:(NSDictionary*)dict;
+- (NSArray*) convertJSarrayToNSArray:(WebScriptObject*)jsArray;
+
++ (Utils*) sharedInstance;
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Utils.m b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Utils.m
new file mode 100644
index 00000000..8d85c294
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Utils.m
@@ -0,0 +1,93 @@
+#import "Utils.h"
+#import <Webkit/WebScriptObject.h>
+
+static Utils* sharedInstance = nil;
+
+@implementation Utils
+
+- (float) titleBarHeight:(NSWindow*)aWindow
+{
+ NSRect frame = [aWindow frame];
+ NSRect contentRect = [NSWindow contentRectForFrameRect: frame
+ styleMask: NSTitledWindowMask];
+
+ return (frame.size.height - contentRect.size.height);
+}
+
+- (NSString*) pathForResource:(NSString*)resourcepath
+{
+ NSBundle * mainBundle = [NSBundle mainBundle];
+ NSMutableArray *directoryParts = [NSMutableArray arrayWithArray:[resourcepath componentsSeparatedByString:@"/"]];
+ NSString *filename = [directoryParts lastObject];
+ [directoryParts removeLastObject];
+
+ NSString *directoryStr = [NSString stringWithFormat:@"%@/%@", kStartFolder, [directoryParts componentsJoinedByString:@"/"]];
+ return [mainBundle pathForResource:filename
+ ofType:@""
+ inDirectory:directoryStr];
+}
+
+- (NSString*) convertDictionaryToJSON:(NSDictionary*)dict {
+ // Convert defaults Dictionary to JSON.
+ NSError *error;
+ NSData *jsonData = [NSJSONSerialization
+ dataWithJSONObject:dict
+ options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
+ error:&error];
+
+ NSString *jsonString;
+ if (! jsonData) {
+ NSLog(@"Got an error converting to JSON: %@", error);
+ }
+ else {
+ jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
+ }
+
+ return jsonString;
+}
+
+// Convert JavaScript array (arrives as a WebScriptObject) into an NSArray of strings.
+- (NSArray*) convertJSarrayToNSArray:(WebScriptObject*)jsArray {
+ NSInteger count = [[jsArray valueForKey:@"length"] integerValue];
+
+ NSMutableArray *args = [NSMutableArray array];
+ for (int i = 0; i < count; i++) {
+ NSString *item = [jsArray webScriptValueAtIndex:i];
+ if ([item isKindOfClass:[NSString class]]) {
+ [args addObject:item];
+ }
+ }
+
+ return args;
+}
+
+#pragma mark -
+#pragma mark Singleton methods
+
++ (Utils*) sharedInstance
+{
+ @synchronized(self)
+ {
+ if (sharedInstance == nil){
+ sharedInstance = [[Utils alloc] init];
+ }
+ }
+ return sharedInstance;
+}
+
++ (id) allocWithZone:(NSZone *)zone {
+ @synchronized(self) {
+ if (sharedInstance == nil) {
+ sharedInstance = [super allocWithZone:zone];
+ return sharedInstance; // assignment and return on first allocation
+ }
+ }
+ return nil; // on subsequent allocation attempts return nil
+}
+
+- (id) copyWithZone:(NSZone *)zone
+{
+ return self;
+}
+
+@end \ No newline at end of file
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/WebViewDelegate.h b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/WebViewDelegate.h
new file mode 100644
index 00000000..49c6da6b
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/WebViewDelegate.h
@@ -0,0 +1,49 @@
+#import <Cocoa/Cocoa.h>
+#import <WebKit/WebKit.h>
+
+@class Sound;
+@class Dock;
+@class Growl;
+@class Notice;
+@class Path;
+@class App;
+@class Window;
+@class Clipboard;
+@class Fonts;
+@class MenuProxy;
+@class UserDefaults;
+
+@class WindowController;
+
+@interface WebViewDelegate : NSObject {
+ Sound* sound;
+ Dock* dock;
+ Growl* growl;
+ Notice* notice;
+ Path* path;
+ App* app;
+ Window* window;
+ Clipboard* clipboard;
+ Fonts* fonts;
+ NSMenu *mainMenu;
+ UserDefaults* userDefaults;
+}
+
+
+
+@property (nonatomic, retain) Sound* sound;
+@property (nonatomic, retain) Dock* dock;
+@property (nonatomic, retain) Growl* growl;
+@property (nonatomic, retain) Notice* notice;
+@property (nonatomic, retain) Path* path;
+@property (nonatomic, retain) App* app;
+@property (nonatomic, retain) Window* window;
+@property (nonatomic, retain) Clipboard* clipboard;
+@property (nonatomic, retain) Fonts* fonts;
+@property (nonatomic, retain) MenuProxy* menu;
+@property (nonatomic, retain) UserDefaults* userDefaults;
+
+@property (nonatomic, retain) WindowController *requestedWindow;
+
+- (id) initWithMenu:(NSMenu*)menu;
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/WebViewDelegate.m b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/WebViewDelegate.m
new file mode 100644
index 00000000..50578018
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/WebViewDelegate.m
@@ -0,0 +1,206 @@
+#import "WebViewDelegate.h"
+#import "Sound.h"
+#import "Dock.h"
+#import "Notice.h"
+#import "Path.h"
+#import "App.h"
+#import "Window.h"
+#import "WindowController.h"
+#import "Clipboard.h"
+#import "Fonts.h"
+#import "MenuProxy.h"
+#import "UserDefaults.h"
+
+@implementation WebViewDelegate
+
+@synthesize sound;
+@synthesize dock;
+@synthesize growl;
+@synthesize notice;
+@synthesize path;
+@synthesize app;
+@synthesize window;
+@synthesize requestedWindow;
+@synthesize clipboard;
+@synthesize fonts;
+@synthesize menu;
+@synthesize userDefaults;
+
+- (id) initWithMenu:(NSMenu*)aMenu
+{
+ self = [super init];
+ if (!self)
+ return nil;
+
+ mainMenu = aMenu;
+ return self;
+}
+
+- (void) webView:(WebView*)webView didClearWindowObject:(WebScriptObject*)windowScriptObject forFrame:(WebFrame *)frame
+{
+ JSContextRef context = [frame globalContext];
+ if (self.sound == nil) { self.sound = [[Sound alloc] initWithContext:context]; }
+ if (self.dock == nil) { self.dock = [Dock new]; }
+ if (self.path == nil) { self.path = [Path new]; }
+ if (self.clipboard == nil) { self.clipboard = [Clipboard new]; }
+ if (self.fonts == nil) { self.fonts = [Fonts new]; }
+
+ if (self.notice == nil && [Notice available] == YES) {
+ self.notice = [[Notice alloc] initWithWebView:webView];
+ }
+
+ if (self.app == nil) {
+ self.app = [[App alloc] initWithWebView:webView];
+ }
+
+ if (self.window == nil) {
+ self.window = [[Window alloc] initWithWebView:webView];
+ }
+
+ if (self.menu == nil) {
+ self.menu = [MenuProxy proxyWithContext:context andMenu:mainMenu];
+ }
+
+ if (self.userDefaults == nil) {
+ self.userDefaults = [[UserDefaults alloc] initWithWebView:webView];
+ }
+
+ [windowScriptObject setValue:self forKey:kWebScriptNamespace];
+}
+
+
+- (void)webView:(WebView *)sender runOpenPanelForFileButtonWithResultListener:(id < WebOpenPanelResultListener >)resultListener allowMultipleFiles:(BOOL)allowMultipleFiles{
+
+ NSOpenPanel * openDlg = [NSOpenPanel openPanel];
+
+ [openDlg setCanChooseFiles:YES];
+ [openDlg setCanChooseDirectories:NO];
+
+ [openDlg beginWithCompletionHandler:^(NSInteger result){
+ if (result == NSFileHandlingPanelOKButton) {
+ NSArray * files = [[openDlg URLs] valueForKey: @"relativePath"];
+ [resultListener chooseFilenames: files];
+ } else {
+ [resultListener cancel];
+ }
+ }];
+}
+
+- (void) webView:(WebView*)webView addMessageToConsole:(NSDictionary*)message
+{
+ if (![message isKindOfClass:[NSDictionary class]]) {
+ return;
+ }
+
+ NSLog(@"JavaScript console: %@:%@: %@",
+ [[message objectForKey:@"sourceURL"] lastPathComponent], // could be nil
+ [message objectForKey:@"lineNumber"],
+ [message objectForKey:@"message"]);
+}
+
+- (void)webView:(WebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame
+{
+ NSAlert *alert = [[NSAlert alloc] init];
+ [alert addButtonWithTitle:@"OK"];
+ [alert setMessageText:message];
+ [alert setAlertStyle:NSWarningAlertStyle];
+ [alert runModal];
+}
+
+- (BOOL)webView:(WebView *)sender runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame
+{
+ NSAlert *alert = [[NSAlert alloc] init];
+ [alert addButtonWithTitle:@"Yes"];
+ [alert addButtonWithTitle:@"No"];
+ [alert setMessageText:message];
+ [alert setAlertStyle:NSWarningAlertStyle];
+
+ if ([alert runModal] == NSAlertFirstButtonReturn)
+ return YES;
+ else
+ return NO;
+}
+
+/*
+ By default the size of a database is set to 0 [1]. When a database is being created
+ it calls this delegate method to get an increase in quota size - or call an error.
+ PS this method is defined in WebUIDelegatePrivate and may make it difficult, but
+ not impossible [2], to get an app accepted into the mac app store.
+
+ Further reading:
+ [1] http://stackoverflow.com/questions/353808/implementing-a-webview-database-quota-delegate
+ [2] http://stackoverflow.com/questions/4527905/how-do-i-enable-local-storage-in-my-webkit-based-application/4608549#4608549
+ */
+- (void)webView:(WebView *)sender frame:(WebFrame *)frame exceededDatabaseQuotaForSecurityOrigin:(id) origin database:(NSString *)databaseIdentifier
+{
+ static const unsigned long long defaultQuota = 5 * 1024 * 1024;
+ if ([origin respondsToSelector: @selector(setQuota:)]) {
+ [origin performSelector:@selector(setQuota:) withObject:[NSNumber numberWithLongLong: defaultQuota]];
+ } else {
+ NSLog(@"could not increase quota for %lld", defaultQuota);
+ }
+}
+
+- (NSArray *)webView:(WebView *)sender contextMenuItemsForElement:(NSDictionary *)element defaultMenuItems:(NSArray *)defaultMenuItems
+{
+ NSMutableArray *webViewMenuItems = [defaultMenuItems mutableCopy];
+
+ if (webViewMenuItems)
+ {
+ NSEnumerator *itemEnumerator = [defaultMenuItems objectEnumerator];
+ NSMenuItem *menuItem = nil;
+ while ((menuItem = [itemEnumerator nextObject]))
+ {
+ NSInteger tag = [menuItem tag];
+
+ switch (tag)
+ {
+ case WebMenuItemTagOpenLinkInNewWindow:
+ case WebMenuItemTagDownloadLinkToDisk:
+ case WebMenuItemTagCopyLinkToClipboard:
+ case WebMenuItemTagOpenImageInNewWindow:
+ case WebMenuItemTagDownloadImageToDisk:
+ case WebMenuItemTagCopyImageToClipboard:
+ case WebMenuItemTagOpenFrameInNewWindow:
+ case WebMenuItemTagGoBack:
+ case WebMenuItemTagGoForward:
+ case WebMenuItemTagStop:
+ case WebMenuItemTagOpenWithDefaultApplication:
+ case WebMenuItemTagReload:
+ [webViewMenuItems removeObjectIdenticalTo: menuItem];
+ }
+ }
+ }
+
+ return webViewMenuItems;
+}
+
+- (WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request{
+ requestedWindow = [[WindowController alloc] initWithRequest:request];
+ return requestedWindow.contentView.webView;
+}
+
+- (void)webViewShow:(WebView *)sender{
+ [requestedWindow showWindow:sender];
+}
+
+- (void)webView:(WebView *)webView decidePolicyForNewWindowAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request newFrameName:(NSString *)frameName decisionListener:(id < WebPolicyDecisionListener >)listener
+{
+ [[NSWorkspace sharedWorkspace] openURL:[request URL]];
+ [listener ignore];
+}
+
+#pragma mark WebScripting protocol
+
++ (BOOL) isSelectorExcludedFromWebScript:(SEL)selector
+{
+ return YES;
+}
+
++ (BOOL) isKeyExcludedFromWebScript:(const char*)name
+{
+ return NO;
+}
+
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Window.h b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Window.h
new file mode 100644
index 00000000..f721376e
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Window.h
@@ -0,0 +1,23 @@
+#import <Foundation/Foundation.h>
+
+#import "WindowController.h"
+
+@interface Window : NSObject{
+ CGRect _oldRestoreFrame;
+}
+
+@property (retain, nonatomic) WindowController *windowController;
+@property (nonatomic, retain) WebView *webView;
+
+- (id) initWithWebView:(WebView *)view;
+- (void) open:(NSDictionary *)properties;
+- (void) move:(NSDictionary *)properties;
+- (void) resize:(NSDictionary *) properties;
+- (Boolean) isMaximized;
+- (CGFloat) getX;
+- (CGFloat) getY;
+- (void) maximize;
+- (void) restore;
+- (void) toggleFullscreen;
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Window.m b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Window.m
new file mode 100644
index 00000000..2444f62e
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Classes/Window.m
@@ -0,0 +1,94 @@
+#import "Window.h"
+
+@implementation Window
+
+@synthesize windowController, webView;
+
+- (id) initWithWebView:(WebView*)view
+{
+ if(self = [super init]) {
+ self.webView = view;
+ }
+ return self;
+}
+
+- (void) open:(NSDictionary *)properties
+{
+ self.windowController = [[WindowController alloc] initWithURL:[properties valueForKey:@"url"]];
+ [self.windowController showWindow: [NSApplication sharedApplication].delegate];
+ [self.windowController.window makeKeyWindow];
+}
+
+- (void) minimize {
+ [[NSApp mainWindow] miniaturize:[NSApp mainWindow]];
+}
+
+- (void) toggleFullscreen {
+ [[NSApp mainWindow] toggleFullScreen:[NSApp mainWindow]];
+}
+
+- (void) maximize {
+ CGRect a = [NSApp mainWindow].frame;
+ _oldRestoreFrame = CGRectMake(a.origin.x, a.origin.y, a.size.width, a.size.height);
+ [[NSApp mainWindow] setFrame:[[NSScreen mainScreen] visibleFrame] display:YES];
+}
+
+- (Boolean) isMaximized {
+ NSRect a = [NSApp mainWindow].frame;
+ NSRect b = [[NSScreen mainScreen] visibleFrame];
+ return a.origin.x == b.origin.x && a.origin.y == b.origin.y && a.size.width == b.size.width && a.size.height == b.size.height;
+}
+
+- (CGFloat) getX {
+ NSRect frame = [self.webView window].frame;
+ return frame.origin.x;
+}
+
+- (CGFloat) getY {
+ NSRect frame = [self.webView window].frame;
+ return frame.origin.y;
+}
+
+- (void) move:(NSDictionary *)properties
+{
+ NSRect frame = [self.webView window].frame;
+ frame.origin.x = [[properties valueForKey:@"x"] doubleValue];
+ frame.origin.y = [[properties valueForKey:@"y"] doubleValue];
+ [[self.webView window] setFrame:frame display:YES];
+
+}
+
+- (void) resize:(NSDictionary *) properties
+{
+ NSRect frame = [self.webView window].frame;
+ frame.size.width = [[properties valueForKey:@"width"] doubleValue];
+ frame.size.height = [[properties valueForKey:@"height"] doubleValue];
+ [[self.webView window] setFrame:frame display:YES];
+}
+
+
++ (BOOL) isSelectorExcludedFromWebScript:(SEL)selector
+{
+ return NO;
+}
+
++ (NSString*) webScriptNameForSelector:(SEL)selector{
+ id result = nil;
+
+ if (selector == @selector(open:)) {
+ result = @"open";
+ }else if (selector == @selector(move:)){
+ result = @"move";
+ }else if (selector == @selector(resize:)){
+ result = @"resize";
+ }
+
+ return result;
+}
+
++ (BOOL) isKeyExcludedFromWebScript:(const char*)name
+{
+ return YES;
+}
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Clipboard.h b/ext/mac-ui-macgap1-wrapper/src/MacGap/Clipboard.h
new file mode 100644
index 00000000..6c1a2f51
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Clipboard.h
@@ -0,0 +1,10 @@
+#import <Foundation/Foundation.h>
+
+@interface Clipboard : NSObject {
+
+}
+
+- (void) copy:(NSString*)text;
+- (NSString *) paste;
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Clipboard.m b/ext/mac-ui-macgap1-wrapper/src/MacGap/Clipboard.m
new file mode 100644
index 00000000..1c18dea3
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Clipboard.m
@@ -0,0 +1,51 @@
+//
+// clipboard.m
+// MacGap
+//
+// Created by David Zorychta on 2013-07-22.
+// Copyright (c) 2013 Twitter. All rights reserved.
+//
+
+#import "Clipboard.h"
+
+@implementation Clipboard
+
+- (void) copy:(NSString*)text {
+ [[NSPasteboard generalPasteboard] clearContents];
+ [[NSPasteboard generalPasteboard] setString:text forType:NSStringPboardType];
+}
+
+- (NSString *) paste {
+ NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
+ NSArray *classArray = [NSArray arrayWithObject:[NSString class]];
+ NSDictionary *options = [NSDictionary dictionary];
+ BOOL ok = [pasteboard canReadObjectForClasses:classArray options:options];
+ if (ok) {
+ NSArray *objectsToPaste = [pasteboard readObjectsForClasses:classArray options:options];
+ return (NSString *) [objectsToPaste objectAtIndex:0];
+ }
+ return @"";
+}
+
++ (NSString*) webScriptNameForSelector:(SEL)selector
+{
+ id result = nil;
+
+ if (selector == @selector(copy:)) {
+ result = @"copy";
+ }
+
+ return result;
+}
+
++ (BOOL) isSelectorExcludedFromWebScript:(SEL)selector
+{
+ return NO;
+}
+
++ (BOOL) isKeyExcludedFromWebScript:(const char*)name
+{
+ return YES;
+}
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Images.xcassets/AppIcon.appiconset/Contents.json b/ext/mac-ui-macgap1-wrapper/src/MacGap/Images.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 00000000..2592eae9
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Images.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,63 @@
+{
+ "images" : [
+ {
+ "idiom" : "mac",
+ "scale" : "2x",
+ "size" : "16x16"
+ },
+ {
+ "size" : "16x16",
+ "idiom" : "mac",
+ "filename" : "application16x16.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "32x32",
+ "idiom" : "mac",
+ "filename" : "application32x32.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "mac",
+ "scale" : "2x",
+ "size" : "32x32"
+ },
+ {
+ "size" : "128x128",
+ "idiom" : "mac",
+ "filename" : "application128x128.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "mac",
+ "scale" : "2x",
+ "size" : "128x128"
+ },
+ {
+ "size" : "256x256",
+ "idiom" : "mac",
+ "filename" : "application256x256.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "mac",
+ "scale" : "2x",
+ "size" : "256x256"
+ },
+ {
+ "size" : "512x512",
+ "idiom" : "mac",
+ "filename" : "application512x512.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "mac",
+ "scale" : "2x",
+ "size" : "512x512"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Images.xcassets/AppIcon.appiconset/application128x128.png b/ext/mac-ui-macgap1-wrapper/src/MacGap/Images.xcassets/AppIcon.appiconset/application128x128.png
new file mode 100644
index 00000000..93dd80a1
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Images.xcassets/AppIcon.appiconset/application128x128.png
Binary files differ
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Images.xcassets/AppIcon.appiconset/application16x16.png b/ext/mac-ui-macgap1-wrapper/src/MacGap/Images.xcassets/AppIcon.appiconset/application16x16.png
new file mode 100644
index 00000000..3aa19da6
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Images.xcassets/AppIcon.appiconset/application16x16.png
Binary files differ
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Images.xcassets/AppIcon.appiconset/application256x256.png b/ext/mac-ui-macgap1-wrapper/src/MacGap/Images.xcassets/AppIcon.appiconset/application256x256.png
new file mode 100644
index 00000000..c30106b7
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Images.xcassets/AppIcon.appiconset/application256x256.png
Binary files differ
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Images.xcassets/AppIcon.appiconset/application32x32.png b/ext/mac-ui-macgap1-wrapper/src/MacGap/Images.xcassets/AppIcon.appiconset/application32x32.png
new file mode 100644
index 00000000..05ff6cb8
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Images.xcassets/AppIcon.appiconset/application32x32.png
Binary files differ
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/Images.xcassets/AppIcon.appiconset/application512x512.png b/ext/mac-ui-macgap1-wrapper/src/MacGap/Images.xcassets/AppIcon.appiconset/application512x512.png
new file mode 100644
index 00000000..b6b9da61
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/Images.xcassets/AppIcon.appiconset/application512x512.png
Binary files differ
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/MacGap-Info.plist b/ext/mac-ui-macgap1-wrapper/src/MacGap/MacGap-Info.plist
new file mode 100644
index 00000000..3730da8f
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/MacGap-Info.plist
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>en</string>
+ <key>CFBundleExecutable</key>
+ <string>ZeroTier One</string>
+ <key>CFBundleIdentifier</key>
+ <string>com.zerotier.$(PRODUCT_NAME:rfc1034identifier)</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>ZeroTier One</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1</string>
+ <key>LSApplicationCategoryType</key>
+ <string>public.app-category.utilities</string>
+ <key>LSMinimumSystemVersion</key>
+ <string>${MACOSX_DEPLOYMENT_TARGET}</string>
+ <key>NSMainNibFile</key>
+ <string>MainMenu</string>
+ <key>NSPrincipalClass</key>
+ <string>NSApplication</string>
+</dict>
+</plist>
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/MacGap-Prefix.pch b/ext/mac-ui-macgap1-wrapper/src/MacGap/MacGap-Prefix.pch
new file mode 100644
index 00000000..ad05e842
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/MacGap-Prefix.pch
@@ -0,0 +1,15 @@
+//
+// Prefix header for all source files of the 'MacGap' target in the 'MacGap' project
+//
+
+#ifdef __OBJC__
+ #ifdef _DEBUG
+ #define DebugNSLog(format, ...) NSLog(format, ## __VA_ARGS__)
+ #else
+ #define DebugNSLog(format, ...)
+ #endif
+
+ #import <Cocoa/Cocoa.h>
+ #import "Constants.h"
+ #import "Utils.h"
+#endif
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/WindowController.h b/ext/mac-ui-macgap1-wrapper/src/MacGap/WindowController.h
new file mode 100644
index 00000000..72927eff
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/WindowController.h
@@ -0,0 +1,13 @@
+#import <Cocoa/Cocoa.h>
+#import "ContentView.h"
+
+@interface WindowController : NSWindowController {
+
+}
+
+- (id) initWithURL:(NSString *) url;
+- (id) initWithRequest: (NSURLRequest *)request;
+@property (retain) NSURL * url;
+@property (retain) IBOutlet ContentView *contentView;
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/WindowController.m b/ext/mac-ui-macgap1-wrapper/src/MacGap/WindowController.m
new file mode 100644
index 00000000..2765a2e3
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/WindowController.m
@@ -0,0 +1,54 @@
+#import "WindowController.h"
+
+
+@interface WindowController() {
+
+}
+
+-(void) notificationCenter;
+
+@end
+
+@implementation WindowController
+
+@synthesize contentView, url;
+
+- (id) initWithURL:(NSString *) relativeURL{
+ self = [super initWithWindowNibName:@"Window"];
+ self.url = [NSURL URLWithString:relativeURL relativeToURL:[[NSBundle mainBundle] resourceURL]];
+
+ [self.window setFrameAutosaveName:@"MacGapWindow"];
+ [self notificationCenter];
+
+ return self;
+}
+
+-(id) initWithRequest: (NSURLRequest *)request{
+ self = [super initWithWindowNibName:@"Window"];
+ [self notificationCenter];
+ [[self.contentView.webView mainFrame] loadRequest:request];
+
+ return self;
+}
+
+-(void) notificationCenter{
+ [[NSNotificationCenter defaultCenter] addObserver:self.contentView
+ selector:@selector(windowResized:)
+ name:NSWindowDidResizeNotification
+ object:[self window]];
+}
+
+- (void)windowDidLoad
+{
+ [super windowDidLoad];
+
+ if (self.url != nil) {
+ [self.contentView.webView setMainFrameURL:[self.url absoluteString]];
+ }
+
+
+ // Implement this method to handle any initialization after your
+ // window controller's window has been loaded from its nib file.
+}
+
+@end
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/en.lproj/Credits.rtf b/ext/mac-ui-macgap1-wrapper/src/MacGap/en.lproj/Credits.rtf
new file mode 100644
index 00000000..6f388f66
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/en.lproj/Credits.rtf
@@ -0,0 +1,13 @@
+{\rtf1\ansi\ansicpg1252\cocoartf1347\cocoasubrtf570
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\vieww9600\viewh8400\viewkind0
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\b\fs24 \cf0 (c)2011-2015 ZeroTier, Inc.\
+Licensed under the GNU GPLv3\
+\
+UI Wrapper MacGap (c) Twitter, Inc.\
+Licensed under the MIT License\
+http://macgap.com/\
+} \ No newline at end of file
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/en.lproj/InfoPlist.strings b/ext/mac-ui-macgap1-wrapper/src/MacGap/en.lproj/InfoPlist.strings
new file mode 100644
index 00000000..477b28ff
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/en.lproj/InfoPlist.strings
@@ -0,0 +1,2 @@
+/* Localized versions of Info.plist keys */
+
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/en.lproj/MainMenu.xib b/ext/mac-ui-macgap1-wrapper/src/MacGap/en.lproj/MainMenu.xib
new file mode 100644
index 00000000..998c505a
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/en.lproj/MainMenu.xib
@@ -0,0 +1,3404 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
+ <data>
+ <int key="IBDocument.SystemTarget">1080</int>
+ <string key="IBDocument.SystemVersion">14D136</string>
+ <string key="IBDocument.InterfaceBuilderVersion">7702</string>
+ <string key="IBDocument.AppKitVersion">1347.57</string>
+ <string key="IBDocument.HIToolboxVersion">758.70</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="NS.object.0">7702</string>
+ </object>
+ <array key="IBDocument.IntegratedClassDependencies">
+ <string>NSCustomObject</string>
+ <string>NSMenu</string>
+ <string>NSMenuItem</string>
+ </array>
+ <array key="IBDocument.PluginDependencies">
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ </array>
+ <object class="NSMutableDictionary" key="IBDocument.Metadata">
+ <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
+ <integer value="1" key="NS.object.0"/>
+ </object>
+ <array class="NSMutableArray" key="IBDocument.RootObjects" id="1048">
+ <object class="NSCustomObject" id="1021">
+ <string key="NSClassName">NSApplication</string>
+ </object>
+ <object class="NSCustomObject" id="1014">
+ <string key="NSClassName">FirstResponder</string>
+ </object>
+ <object class="NSCustomObject" id="1050">
+ <string key="NSClassName">NSApplication</string>
+ </object>
+ <object class="NSCustomObject" id="976324537">
+ <string key="NSClassName">AppDelegate</string>
+ </object>
+ <object class="NSMenu" id="649796088">
+ <string key="NSTitle">AMainMenu</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="694149608">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">ZeroTier One</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <object class="NSCustomResource" key="NSOnImage" id="35465992">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuCheckmark</string>
+ </object>
+ <object class="NSCustomResource" key="NSMixedImage" id="502551668">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSMenuMixedState</string>
+ </object>
+ <string key="NSAction">submenuAction:</string>
+ <reference key="NSTarget" ref="110575045"/>
+ <object class="NSMenu" key="NSSubmenu" id="110575045">
+ <string key="NSTitle">ZeroTier One</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="238522557">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">About ZeroTier One</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="304266470">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="609285721">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Preferences…</string>
+ <string key="NSKeyEquiv">,</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="481834944">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1046388886">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Services</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <reference key="NSTarget" ref="752062318"/>
+ <object class="NSMenu" key="NSSubmenu" id="752062318">
+ <string key="NSTitle">Services</string>
+ <array class="NSMutableArray" key="NSMenuItems"/>
+ <string key="NSName">_NSServicesMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="646227648">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="755159360">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Hide MacGap</string>
+ <string key="NSKeyEquiv">h</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="342932134">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Hide Others</string>
+ <string key="NSKeyEquiv">h</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="908899353">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Show All</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1056857174">
+ <reference key="NSMenu" ref="110575045"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="632727374">
+ <reference key="NSMenu" ref="110575045"/>
+ <string key="NSTitle">Quit ZeroTier One</string>
+ <string key="NSKeyEquiv">q</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ <string key="NSName">_NSAppleMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="379814623">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">File</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <reference key="NSTarget" ref="720053764"/>
+ <object class="NSMenu" key="NSSubmenu" id="720053764">
+ <string key="NSTitle">File</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="705341025">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">New</string>
+ <string key="NSKeyEquiv">n</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="722745758">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Open…</string>
+ <string key="NSKeyEquiv">o</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1025936716">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Open Recent</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <reference key="NSTarget" ref="1065607017"/>
+ <object class="NSMenu" key="NSSubmenu" id="1065607017">
+ <string key="NSTitle">Open Recent</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="759406840">
+ <reference key="NSMenu" ref="1065607017"/>
+ <string key="NSTitle">Clear Menu</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ <string key="NSName">_NSRecentDocumentsMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="425164168">
+ <reference key="NSMenu" ref="720053764"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="776162233">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Close</string>
+ <string key="NSKeyEquiv">w</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1023925487">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Save…</string>
+ <string key="NSKeyEquiv">s</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="579971712">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Revert to Saved</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1010469920">
+ <reference key="NSMenu" ref="720053764"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="294629803">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Page Setup...</string>
+ <string key="NSKeyEquiv">P</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSToolTip"/>
+ </object>
+ <object class="NSMenuItem" id="49223823">
+ <reference key="NSMenu" ref="720053764"/>
+ <string key="NSTitle">Print…</string>
+ <string key="NSKeyEquiv">p</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="952259628">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Edit</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <reference key="NSTarget" ref="789758025"/>
+ <object class="NSMenu" key="NSSubmenu" id="789758025">
+ <string key="NSTitle">Edit</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="1058277027">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Undo</string>
+ <string key="NSKeyEquiv">z</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="790794224">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Redo</string>
+ <string key="NSKeyEquiv">Z</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1040322652">
+ <reference key="NSMenu" ref="789758025"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="296257095">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Cut</string>
+ <string key="NSKeyEquiv">x</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="860595796">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Copy</string>
+ <string key="NSKeyEquiv">c</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="29853731">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Paste</string>
+ <string key="NSKeyEquiv">v</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="82994268">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Paste and Match Style</string>
+ <string key="NSKeyEquiv">V</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="437104165">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Delete</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="583158037">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Select All</string>
+ <string key="NSKeyEquiv">a</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="212016141">
+ <reference key="NSMenu" ref="789758025"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="892235320">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Find</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <reference key="NSTarget" ref="963351320"/>
+ <object class="NSMenu" key="NSSubmenu" id="963351320">
+ <string key="NSTitle">Find</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="447796847">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Find…</string>
+ <string key="NSKeyEquiv">f</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">1</int>
+ </object>
+ <object class="NSMenuItem" id="738670835">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Find and Replace…</string>
+ <string key="NSKeyEquiv">f</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">12</int>
+ </object>
+ <object class="NSMenuItem" id="326711663">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Find Next</string>
+ <string key="NSKeyEquiv">g</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">2</int>
+ </object>
+ <object class="NSMenuItem" id="270902937">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Find Previous</string>
+ <string key="NSKeyEquiv">G</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">3</int>
+ </object>
+ <object class="NSMenuItem" id="159080638">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Use Selection for Find</string>
+ <string key="NSKeyEquiv">e</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">7</int>
+ </object>
+ <object class="NSMenuItem" id="88285865">
+ <reference key="NSMenu" ref="963351320"/>
+ <string key="NSTitle">Jump to Selection</string>
+ <string key="NSKeyEquiv">j</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="972420730">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Spelling and Grammar</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <reference key="NSTarget" ref="769623530"/>
+ <object class="NSMenu" key="NSSubmenu" id="769623530">
+ <string key="NSTitle">Spelling and Grammar</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="679648819">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Show Spelling and Grammar</string>
+ <string key="NSKeyEquiv">:</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="96193923">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Check Document Now</string>
+ <string key="NSKeyEquiv">;</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="859480356">
+ <reference key="NSMenu" ref="769623530"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="948374510">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Check Spelling While Typing</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="967646866">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Check Grammar With Spelling</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="795346622">
+ <reference key="NSMenu" ref="769623530"/>
+ <string key="NSTitle">Correct Spelling Automatically</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="507821607">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Substitutions</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <reference key="NSTarget" ref="698887838"/>
+ <object class="NSMenu" key="NSSubmenu" id="698887838">
+ <string key="NSTitle">Substitutions</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="65139061">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Show Substitutions</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="19036812">
+ <reference key="NSMenu" ref="698887838"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="605118523">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Smart Copy/Paste</string>
+ <string key="NSKeyEquiv">f</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">1</int>
+ </object>
+ <object class="NSMenuItem" id="197661976">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Smart Quotes</string>
+ <string key="NSKeyEquiv">g</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">2</int>
+ </object>
+ <object class="NSMenuItem" id="672708820">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Smart Dashes</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="708854459">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Smart Links</string>
+ <string key="NSKeyEquiv">G</string>
+ <int key="NSKeyEquivModMask">1179648</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">3</int>
+ </object>
+ <object class="NSMenuItem" id="537092702">
+ <reference key="NSMenu" ref="698887838"/>
+ <string key="NSTitle">Text Replacement</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="288088188">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Transformations</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <reference key="NSTarget" ref="579392910"/>
+ <object class="NSMenu" key="NSSubmenu" id="579392910">
+ <string key="NSTitle">Transformations</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="1060694897">
+ <reference key="NSMenu" ref="579392910"/>
+ <string key="NSTitle">Make Upper Case</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="879586729">
+ <reference key="NSMenu" ref="579392910"/>
+ <string key="NSTitle">Make Lower Case</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="56570060">
+ <reference key="NSMenu" ref="579392910"/>
+ <string key="NSTitle">Capitalize</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="676164635">
+ <reference key="NSMenu" ref="789758025"/>
+ <string key="NSTitle">Speech</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <reference key="NSTarget" ref="785027613"/>
+ <object class="NSMenu" key="NSSubmenu" id="785027613">
+ <string key="NSTitle">Speech</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="731782645">
+ <reference key="NSMenu" ref="785027613"/>
+ <string key="NSTitle">Start Speaking</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="680220178">
+ <reference key="NSMenu" ref="785027613"/>
+ <string key="NSTitle">Stop Speaking</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="302598603">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Format</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <reference key="NSTarget" ref="941447902"/>
+ <object class="NSMenu" key="NSSubmenu" id="941447902">
+ <string key="NSTitle">Format</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="792887677">
+ <reference key="NSMenu" ref="941447902"/>
+ <string key="NSTitle">Font</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <reference key="NSTarget" ref="786677654"/>
+ <object class="NSMenu" key="NSSubmenu" id="786677654">
+ <string key="NSTitle">Font</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="159677712">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Show Fonts</string>
+ <string key="NSKeyEquiv">t</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="305399458">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Bold</string>
+ <string key="NSKeyEquiv">b</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">2</int>
+ </object>
+ <object class="NSMenuItem" id="814362025">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Italic</string>
+ <string key="NSKeyEquiv">i</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">1</int>
+ </object>
+ <object class="NSMenuItem" id="330926929">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Underline</string>
+ <string key="NSKeyEquiv">u</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="533507878">
+ <reference key="NSMenu" ref="786677654"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="158063935">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Bigger</string>
+ <string key="NSKeyEquiv">+</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">3</int>
+ </object>
+ <object class="NSMenuItem" id="885547335">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Smaller</string>
+ <string key="NSKeyEquiv">-</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <int key="NSTag">4</int>
+ </object>
+ <object class="NSMenuItem" id="901062459">
+ <reference key="NSMenu" ref="786677654"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="767671776">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Kern</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <reference key="NSTarget" ref="175441468"/>
+ <object class="NSMenu" key="NSSubmenu" id="175441468">
+ <string key="NSTitle">Kern</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="252969304">
+ <reference key="NSMenu" ref="175441468"/>
+ <string key="NSTitle">Use Default</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="766922938">
+ <reference key="NSMenu" ref="175441468"/>
+ <string key="NSTitle">Use None</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="677519740">
+ <reference key="NSMenu" ref="175441468"/>
+ <string key="NSTitle">Tighten</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="238351151">
+ <reference key="NSMenu" ref="175441468"/>
+ <string key="NSTitle">Loosen</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="691570813">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Ligature</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <reference key="NSTarget" ref="1058217995"/>
+ <object class="NSMenu" key="NSSubmenu" id="1058217995">
+ <string key="NSTitle">Ligature</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="706297211">
+ <reference key="NSMenu" ref="1058217995"/>
+ <string key="NSTitle">Use Default</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="568384683">
+ <reference key="NSMenu" ref="1058217995"/>
+ <string key="NSTitle">Use None</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="663508465">
+ <reference key="NSMenu" ref="1058217995"/>
+ <string key="NSTitle">Use All</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="769124883">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Baseline</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <reference key="NSTarget" ref="18263474"/>
+ <object class="NSMenu" key="NSSubmenu" id="18263474">
+ <string key="NSTitle">Baseline</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="257962622">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Use Default</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="644725453">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Superscript</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1037576581">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Subscript</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="941806246">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Raise</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1045724900">
+ <reference key="NSMenu" ref="18263474"/>
+ <string key="NSTitle">Lower</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="739652853">
+ <reference key="NSMenu" ref="786677654"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="1012600125">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Show Colors</string>
+ <string key="NSKeyEquiv">C</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="214559597">
+ <reference key="NSMenu" ref="786677654"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="596732606">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Copy Style</string>
+ <string key="NSKeyEquiv">c</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="393423671">
+ <reference key="NSMenu" ref="786677654"/>
+ <string key="NSTitle">Paste Style</string>
+ <string key="NSKeyEquiv">v</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ <string key="NSName">_NSFontMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="215659978">
+ <reference key="NSMenu" ref="941447902"/>
+ <string key="NSTitle">Text</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <reference key="NSTarget" ref="446991534"/>
+ <object class="NSMenu" key="NSSubmenu" id="446991534">
+ <string key="NSTitle">Text</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="875092757">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Align Left</string>
+ <string key="NSKeyEquiv">{</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="630155264">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Center</string>
+ <string key="NSKeyEquiv">|</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="945678886">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Justify</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="512868991">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Align Right</string>
+ <string key="NSKeyEquiv">}</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="163117631">
+ <reference key="NSMenu" ref="446991534"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="31516759">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Writing Direction</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <reference key="NSTarget" ref="956096989"/>
+ <object class="NSMenu" key="NSSubmenu" id="956096989">
+ <string key="NSTitle">Writing Direction</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="257099033">
+ <reference key="NSMenu" ref="956096989"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <string key="NSTitle">Paragraph</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="551969625">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CURlZmF1bHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="249532473">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CUxlZnQgdG8gUmlnaHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="607364498">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CVJpZ2h0IHRvIExlZnQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="508151438">
+ <reference key="NSMenu" ref="956096989"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="981751889">
+ <reference key="NSMenu" ref="956096989"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <string key="NSTitle">Selection</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="380031999">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CURlZmF1bHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="825984362">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CUxlZnQgdG8gUmlnaHQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="560145579">
+ <reference key="NSMenu" ref="956096989"/>
+ <string type="base64-UTF8" key="NSTitle">CVJpZ2h0IHRvIExlZnQ</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="908105787">
+ <reference key="NSMenu" ref="446991534"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="644046920">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Show Ruler</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="231811626">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Copy Ruler</string>
+ <string key="NSKeyEquiv">c</string>
+ <int key="NSKeyEquivModMask">1310720</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="883618387">
+ <reference key="NSMenu" ref="446991534"/>
+ <string key="NSTitle">Paste Ruler</string>
+ <string key="NSKeyEquiv">v</string>
+ <int key="NSKeyEquivModMask">1310720</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="586577488">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">View</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <reference key="NSTarget" ref="466310130"/>
+ <object class="NSMenu" key="NSSubmenu" id="466310130">
+ <string key="NSTitle">View</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="102151532">
+ <reference key="NSMenu" ref="466310130"/>
+ <string key="NSTitle">Show Toolbar</string>
+ <string key="NSKeyEquiv">t</string>
+ <int key="NSKeyEquivModMask">1572864</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="237841660">
+ <reference key="NSMenu" ref="466310130"/>
+ <string key="NSTitle">Customize Toolbar…</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="713487014">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Window</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <reference key="NSTarget" ref="835318025"/>
+ <object class="NSMenu" key="NSSubmenu" id="835318025">
+ <string key="NSTitle">Window</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="1011231497">
+ <reference key="NSMenu" ref="835318025"/>
+ <string key="NSTitle">Minimize</string>
+ <string key="NSKeyEquiv">m</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="575023229">
+ <reference key="NSMenu" ref="835318025"/>
+ <string key="NSTitle">Zoom</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="299356726">
+ <reference key="NSMenu" ref="835318025"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ <object class="NSMenuItem" id="625202149">
+ <reference key="NSMenu" ref="835318025"/>
+ <string key="NSTitle">Bring All to Front</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ <string key="NSName">_NSWindowsMenu</string>
+ </object>
+ </object>
+ <object class="NSMenuItem" id="448692316">
+ <reference key="NSMenu" ref="649796088"/>
+ <string key="NSTitle">Help</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ <string key="NSAction">submenuAction:</string>
+ <reference key="NSTarget" ref="992780483"/>
+ <object class="NSMenu" key="NSSubmenu" id="992780483">
+ <string key="NSTitle">Help</string>
+ <array class="NSMutableArray" key="NSMenuItems">
+ <object class="NSMenuItem" id="105068016">
+ <reference key="NSMenu" ref="992780483"/>
+ <string key="NSTitle">ZeroTier One Help</string>
+ <string key="NSKeyEquiv">?</string>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="35465992"/>
+ <reference key="NSMixedImage" ref="502551668"/>
+ </object>
+ </array>
+ <string key="NSName">_NSHelpMenu</string>
+ </object>
+ </object>
+ </array>
+ <string key="NSName">_NSMainMenu</string>
+ </object>
+ </array>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <array key="connectionRecords">
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">terminate:</string>
+ <reference key="source" ref="1050"/>
+ <reference key="destination" ref="632727374"/>
+ </object>
+ <int key="connectionID">449</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">orderFrontStandardAboutPanel:</string>
+ <reference key="source" ref="1021"/>
+ <reference key="destination" ref="238522557"/>
+ </object>
+ <int key="connectionID">142</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="1021"/>
+ <reference key="destination" ref="976324537"/>
+ </object>
+ <int key="connectionID">547</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performMiniaturize:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1011231497"/>
+ </object>
+ <int key="connectionID">37</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">arrangeInFront:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="625202149"/>
+ </object>
+ <int key="connectionID">39</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">print:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="49223823"/>
+ </object>
+ <int key="connectionID">86</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">runPageLayout:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="294629803"/>
+ </object>
+ <int key="connectionID">87</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">clearRecentDocuments:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="759406840"/>
+ </object>
+ <int key="connectionID">127</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performClose:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="776162233"/>
+ </object>
+ <int key="connectionID">193</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleContinuousSpellChecking:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="948374510"/>
+ </object>
+ <int key="connectionID">222</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">undo:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1058277027"/>
+ </object>
+ <int key="connectionID">223</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">copy:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="860595796"/>
+ </object>
+ <int key="connectionID">224</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">checkSpelling:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="96193923"/>
+ </object>
+ <int key="connectionID">225</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">paste:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="29853731"/>
+ </object>
+ <int key="connectionID">226</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">stopSpeaking:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="680220178"/>
+ </object>
+ <int key="connectionID">227</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">cut:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="296257095"/>
+ </object>
+ <int key="connectionID">228</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showGuessPanel:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="679648819"/>
+ </object>
+ <int key="connectionID">230</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">redo:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="790794224"/>
+ </object>
+ <int key="connectionID">231</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">selectAll:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="583158037"/>
+ </object>
+ <int key="connectionID">232</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">startSpeaking:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="731782645"/>
+ </object>
+ <int key="connectionID">233</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">delete:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="437104165"/>
+ </object>
+ <int key="connectionID">235</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performZoom:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="575023229"/>
+ </object>
+ <int key="connectionID">240</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performFindPanelAction:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="447796847"/>
+ </object>
+ <int key="connectionID">241</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">centerSelectionInVisibleArea:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="88285865"/>
+ </object>
+ <int key="connectionID">245</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleGrammarChecking:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="967646866"/>
+ </object>
+ <int key="connectionID">347</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleSmartInsertDelete:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="605118523"/>
+ </object>
+ <int key="connectionID">355</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticQuoteSubstitution:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="197661976"/>
+ </object>
+ <int key="connectionID">356</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticLinkDetection:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="708854459"/>
+ </object>
+ <int key="connectionID">357</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">saveDocument:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1023925487"/>
+ </object>
+ <int key="connectionID">362</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">revertDocumentToSaved:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="579971712"/>
+ </object>
+ <int key="connectionID">364</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">runToolbarCustomizationPalette:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="237841660"/>
+ </object>
+ <int key="connectionID">365</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleToolbarShown:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="102151532"/>
+ </object>
+ <int key="connectionID">366</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">hide:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="755159360"/>
+ </object>
+ <int key="connectionID">367</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">hideOtherApplications:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="342932134"/>
+ </object>
+ <int key="connectionID">368</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">unhideAllApplications:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="908899353"/>
+ </object>
+ <int key="connectionID">370</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">newDocument:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="705341025"/>
+ </object>
+ <int key="connectionID">373</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">openDocument:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="722745758"/>
+ </object>
+ <int key="connectionID">374</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">raiseBaseline:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="941806246"/>
+ </object>
+ <int key="connectionID">426</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">lowerBaseline:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1045724900"/>
+ </object>
+ <int key="connectionID">427</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">copyFont:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="596732606"/>
+ </object>
+ <int key="connectionID">428</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">subscript:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1037576581"/>
+ </object>
+ <int key="connectionID">429</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">superscript:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="644725453"/>
+ </object>
+ <int key="connectionID">430</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">tightenKerning:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="677519740"/>
+ </object>
+ <int key="connectionID">431</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">underline:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="330926929"/>
+ </object>
+ <int key="connectionID">432</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">orderFrontColorPanel:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1012600125"/>
+ </object>
+ <int key="connectionID">433</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">useAllLigatures:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="663508465"/>
+ </object>
+ <int key="connectionID">434</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">loosenKerning:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="238351151"/>
+ </object>
+ <int key="connectionID">435</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">pasteFont:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="393423671"/>
+ </object>
+ <int key="connectionID">436</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">unscript:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="257962622"/>
+ </object>
+ <int key="connectionID">437</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">useStandardKerning:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="252969304"/>
+ </object>
+ <int key="connectionID">438</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">useStandardLigatures:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="706297211"/>
+ </object>
+ <int key="connectionID">439</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">turnOffLigatures:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="568384683"/>
+ </object>
+ <int key="connectionID">440</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">turnOffKerning:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="766922938"/>
+ </object>
+ <int key="connectionID">441</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticSpellingCorrection:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="795346622"/>
+ </object>
+ <int key="connectionID">456</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">orderFrontSubstitutionsPanel:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="65139061"/>
+ </object>
+ <int key="connectionID">458</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticDashSubstitution:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="672708820"/>
+ </object>
+ <int key="connectionID">461</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleAutomaticTextReplacement:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="537092702"/>
+ </object>
+ <int key="connectionID">463</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">uppercaseWord:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="1060694897"/>
+ </object>
+ <int key="connectionID">464</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">capitalizeWord:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="56570060"/>
+ </object>
+ <int key="connectionID">467</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">lowercaseWord:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="879586729"/>
+ </object>
+ <int key="connectionID">468</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">pasteAsPlainText:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="82994268"/>
+ </object>
+ <int key="connectionID">486</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performFindPanelAction:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="326711663"/>
+ </object>
+ <int key="connectionID">487</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performFindPanelAction:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="270902937"/>
+ </object>
+ <int key="connectionID">488</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performFindPanelAction:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="159080638"/>
+ </object>
+ <int key="connectionID">489</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">showHelp:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="105068016"/>
+ </object>
+ <int key="connectionID">493</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">alignCenter:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="630155264"/>
+ </object>
+ <int key="connectionID">518</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">pasteRuler:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="883618387"/>
+ </object>
+ <int key="connectionID">519</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">toggleRuler:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="644046920"/>
+ </object>
+ <int key="connectionID">520</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">alignRight:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="512868991"/>
+ </object>
+ <int key="connectionID">521</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">copyRuler:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="231811626"/>
+ </object>
+ <int key="connectionID">522</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">alignJustified:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="945678886"/>
+ </object>
+ <int key="connectionID">523</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">alignLeft:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="875092757"/>
+ </object>
+ <int key="connectionID">524</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeBaseWritingDirectionNatural:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="551969625"/>
+ </object>
+ <int key="connectionID">525</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeBaseWritingDirectionLeftToRight:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="249532473"/>
+ </object>
+ <int key="connectionID">526</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeBaseWritingDirectionRightToLeft:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="607364498"/>
+ </object>
+ <int key="connectionID">527</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeTextWritingDirectionNatural:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="380031999"/>
+ </object>
+ <int key="connectionID">528</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeTextWritingDirectionLeftToRight:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="825984362"/>
+ </object>
+ <int key="connectionID">529</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">makeTextWritingDirectionRightToLeft:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="560145579"/>
+ </object>
+ <int key="connectionID">530</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">performFindPanelAction:</string>
+ <reference key="source" ref="1014"/>
+ <reference key="destination" ref="738670835"/>
+ </object>
+ <int key="connectionID">535</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="649796088"/>
+ <reference key="destination" ref="1021"/>
+ </object>
+ <int key="connectionID">545</int>
+ </object>
+ </array>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <array key="orderedObjects">
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <array key="object" id="0"/>
+ <reference key="children" ref="1048"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="1021"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="1014"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">First Responder</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-3</int>
+ <reference key="object" ref="1050"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Application</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">29</int>
+ <reference key="object" ref="649796088"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="713487014"/>
+ <reference ref="694149608"/>
+ <reference ref="952259628"/>
+ <reference ref="379814623"/>
+ <reference ref="586577488"/>
+ <reference ref="302598603"/>
+ <reference ref="448692316"/>
+ </array>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">19</int>
+ <reference key="object" ref="713487014"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="835318025"/>
+ </array>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">56</int>
+ <reference key="object" ref="694149608"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="110575045"/>
+ </array>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">217</int>
+ <reference key="object" ref="952259628"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="789758025"/>
+ </array>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">83</int>
+ <reference key="object" ref="379814623"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="720053764"/>
+ </array>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">81</int>
+ <reference key="object" ref="720053764"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="1023925487"/>
+ <reference ref="49223823"/>
+ <reference ref="722745758"/>
+ <reference ref="705341025"/>
+ <reference ref="1025936716"/>
+ <reference ref="294629803"/>
+ <reference ref="776162233"/>
+ <reference ref="425164168"/>
+ <reference ref="579971712"/>
+ <reference ref="1010469920"/>
+ </array>
+ <reference key="parent" ref="379814623"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">75</int>
+ <reference key="object" ref="1023925487"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">78</int>
+ <reference key="object" ref="49223823"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">72</int>
+ <reference key="object" ref="722745758"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">82</int>
+ <reference key="object" ref="705341025"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">124</int>
+ <reference key="object" ref="1025936716"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="1065607017"/>
+ </array>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">77</int>
+ <reference key="object" ref="294629803"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">73</int>
+ <reference key="object" ref="776162233"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">79</int>
+ <reference key="object" ref="425164168"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">112</int>
+ <reference key="object" ref="579971712"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">74</int>
+ <reference key="object" ref="1010469920"/>
+ <reference key="parent" ref="720053764"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">125</int>
+ <reference key="object" ref="1065607017"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="759406840"/>
+ </array>
+ <reference key="parent" ref="1025936716"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">126</int>
+ <reference key="object" ref="759406840"/>
+ <reference key="parent" ref="1065607017"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">205</int>
+ <reference key="object" ref="789758025"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="437104165"/>
+ <reference ref="583158037"/>
+ <reference ref="1058277027"/>
+ <reference ref="212016141"/>
+ <reference ref="296257095"/>
+ <reference ref="29853731"/>
+ <reference ref="860595796"/>
+ <reference ref="1040322652"/>
+ <reference ref="790794224"/>
+ <reference ref="892235320"/>
+ <reference ref="972420730"/>
+ <reference ref="676164635"/>
+ <reference ref="507821607"/>
+ <reference ref="288088188"/>
+ <reference ref="82994268"/>
+ </array>
+ <reference key="parent" ref="952259628"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">202</int>
+ <reference key="object" ref="437104165"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">198</int>
+ <reference key="object" ref="583158037"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">207</int>
+ <reference key="object" ref="1058277027"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">214</int>
+ <reference key="object" ref="212016141"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">199</int>
+ <reference key="object" ref="296257095"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">203</int>
+ <reference key="object" ref="29853731"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">197</int>
+ <reference key="object" ref="860595796"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">206</int>
+ <reference key="object" ref="1040322652"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">215</int>
+ <reference key="object" ref="790794224"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">218</int>
+ <reference key="object" ref="892235320"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="963351320"/>
+ </array>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">216</int>
+ <reference key="object" ref="972420730"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="769623530"/>
+ </array>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">200</int>
+ <reference key="object" ref="769623530"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="948374510"/>
+ <reference ref="96193923"/>
+ <reference ref="679648819"/>
+ <reference ref="967646866"/>
+ <reference ref="859480356"/>
+ <reference ref="795346622"/>
+ </array>
+ <reference key="parent" ref="972420730"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">219</int>
+ <reference key="object" ref="948374510"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">201</int>
+ <reference key="object" ref="96193923"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">204</int>
+ <reference key="object" ref="679648819"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">220</int>
+ <reference key="object" ref="963351320"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="270902937"/>
+ <reference ref="88285865"/>
+ <reference ref="159080638"/>
+ <reference ref="326711663"/>
+ <reference ref="447796847"/>
+ <reference ref="738670835"/>
+ </array>
+ <reference key="parent" ref="892235320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">213</int>
+ <reference key="object" ref="270902937"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">210</int>
+ <reference key="object" ref="88285865"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">221</int>
+ <reference key="object" ref="159080638"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">208</int>
+ <reference key="object" ref="326711663"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">209</int>
+ <reference key="object" ref="447796847"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">57</int>
+ <reference key="object" ref="110575045"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="238522557"/>
+ <reference ref="755159360"/>
+ <reference ref="908899353"/>
+ <reference ref="632727374"/>
+ <reference ref="646227648"/>
+ <reference ref="609285721"/>
+ <reference ref="481834944"/>
+ <reference ref="304266470"/>
+ <reference ref="1046388886"/>
+ <reference ref="1056857174"/>
+ <reference ref="342932134"/>
+ </array>
+ <reference key="parent" ref="694149608"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">58</int>
+ <reference key="object" ref="238522557"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">134</int>
+ <reference key="object" ref="755159360"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">150</int>
+ <reference key="object" ref="908899353"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">136</int>
+ <reference key="object" ref="632727374"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">144</int>
+ <reference key="object" ref="646227648"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">129</int>
+ <reference key="object" ref="609285721"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">143</int>
+ <reference key="object" ref="481834944"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">236</int>
+ <reference key="object" ref="304266470"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">131</int>
+ <reference key="object" ref="1046388886"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="752062318"/>
+ </array>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">149</int>
+ <reference key="object" ref="1056857174"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">145</int>
+ <reference key="object" ref="342932134"/>
+ <reference key="parent" ref="110575045"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">130</int>
+ <reference key="object" ref="752062318"/>
+ <reference key="parent" ref="1046388886"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">24</int>
+ <reference key="object" ref="835318025"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="299356726"/>
+ <reference ref="625202149"/>
+ <reference ref="575023229"/>
+ <reference ref="1011231497"/>
+ </array>
+ <reference key="parent" ref="713487014"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">92</int>
+ <reference key="object" ref="299356726"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5</int>
+ <reference key="object" ref="625202149"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">239</int>
+ <reference key="object" ref="575023229"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">23</int>
+ <reference key="object" ref="1011231497"/>
+ <reference key="parent" ref="835318025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">295</int>
+ <reference key="object" ref="586577488"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="466310130"/>
+ </array>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">296</int>
+ <reference key="object" ref="466310130"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="102151532"/>
+ <reference ref="237841660"/>
+ </array>
+ <reference key="parent" ref="586577488"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">297</int>
+ <reference key="object" ref="102151532"/>
+ <reference key="parent" ref="466310130"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">298</int>
+ <reference key="object" ref="237841660"/>
+ <reference key="parent" ref="466310130"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">211</int>
+ <reference key="object" ref="676164635"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="785027613"/>
+ </array>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">212</int>
+ <reference key="object" ref="785027613"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="680220178"/>
+ <reference ref="731782645"/>
+ </array>
+ <reference key="parent" ref="676164635"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">195</int>
+ <reference key="object" ref="680220178"/>
+ <reference key="parent" ref="785027613"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">196</int>
+ <reference key="object" ref="731782645"/>
+ <reference key="parent" ref="785027613"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">346</int>
+ <reference key="object" ref="967646866"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">348</int>
+ <reference key="object" ref="507821607"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="698887838"/>
+ </array>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">349</int>
+ <reference key="object" ref="698887838"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="605118523"/>
+ <reference ref="197661976"/>
+ <reference ref="708854459"/>
+ <reference ref="65139061"/>
+ <reference ref="19036812"/>
+ <reference ref="672708820"/>
+ <reference ref="537092702"/>
+ </array>
+ <reference key="parent" ref="507821607"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">350</int>
+ <reference key="object" ref="605118523"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">351</int>
+ <reference key="object" ref="197661976"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">354</int>
+ <reference key="object" ref="708854459"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">375</int>
+ <reference key="object" ref="302598603"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="941447902"/>
+ </array>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">376</int>
+ <reference key="object" ref="941447902"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="792887677"/>
+ <reference ref="215659978"/>
+ </array>
+ <reference key="parent" ref="302598603"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">377</int>
+ <reference key="object" ref="792887677"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="786677654"/>
+ </array>
+ <reference key="parent" ref="941447902"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">388</int>
+ <reference key="object" ref="786677654"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="159677712"/>
+ <reference ref="305399458"/>
+ <reference ref="814362025"/>
+ <reference ref="330926929"/>
+ <reference ref="533507878"/>
+ <reference ref="158063935"/>
+ <reference ref="885547335"/>
+ <reference ref="901062459"/>
+ <reference ref="767671776"/>
+ <reference ref="691570813"/>
+ <reference ref="769124883"/>
+ <reference ref="739652853"/>
+ <reference ref="1012600125"/>
+ <reference ref="214559597"/>
+ <reference ref="596732606"/>
+ <reference ref="393423671"/>
+ </array>
+ <reference key="parent" ref="792887677"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">389</int>
+ <reference key="object" ref="159677712"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">390</int>
+ <reference key="object" ref="305399458"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">391</int>
+ <reference key="object" ref="814362025"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">392</int>
+ <reference key="object" ref="330926929"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">393</int>
+ <reference key="object" ref="533507878"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">394</int>
+ <reference key="object" ref="158063935"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">395</int>
+ <reference key="object" ref="885547335"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">396</int>
+ <reference key="object" ref="901062459"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">397</int>
+ <reference key="object" ref="767671776"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="175441468"/>
+ </array>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">398</int>
+ <reference key="object" ref="691570813"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="1058217995"/>
+ </array>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">399</int>
+ <reference key="object" ref="769124883"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="18263474"/>
+ </array>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">400</int>
+ <reference key="object" ref="739652853"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">401</int>
+ <reference key="object" ref="1012600125"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">402</int>
+ <reference key="object" ref="214559597"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">403</int>
+ <reference key="object" ref="596732606"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">404</int>
+ <reference key="object" ref="393423671"/>
+ <reference key="parent" ref="786677654"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">405</int>
+ <reference key="object" ref="18263474"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="257962622"/>
+ <reference ref="644725453"/>
+ <reference ref="1037576581"/>
+ <reference ref="941806246"/>
+ <reference ref="1045724900"/>
+ </array>
+ <reference key="parent" ref="769124883"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">406</int>
+ <reference key="object" ref="257962622"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">407</int>
+ <reference key="object" ref="644725453"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">408</int>
+ <reference key="object" ref="1037576581"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">409</int>
+ <reference key="object" ref="941806246"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">410</int>
+ <reference key="object" ref="1045724900"/>
+ <reference key="parent" ref="18263474"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">411</int>
+ <reference key="object" ref="1058217995"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="706297211"/>
+ <reference ref="568384683"/>
+ <reference ref="663508465"/>
+ </array>
+ <reference key="parent" ref="691570813"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">412</int>
+ <reference key="object" ref="706297211"/>
+ <reference key="parent" ref="1058217995"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">413</int>
+ <reference key="object" ref="568384683"/>
+ <reference key="parent" ref="1058217995"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">414</int>
+ <reference key="object" ref="663508465"/>
+ <reference key="parent" ref="1058217995"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">415</int>
+ <reference key="object" ref="175441468"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="252969304"/>
+ <reference ref="766922938"/>
+ <reference ref="677519740"/>
+ <reference ref="238351151"/>
+ </array>
+ <reference key="parent" ref="767671776"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">416</int>
+ <reference key="object" ref="252969304"/>
+ <reference key="parent" ref="175441468"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">417</int>
+ <reference key="object" ref="766922938"/>
+ <reference key="parent" ref="175441468"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">418</int>
+ <reference key="object" ref="677519740"/>
+ <reference key="parent" ref="175441468"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">419</int>
+ <reference key="object" ref="238351151"/>
+ <reference key="parent" ref="175441468"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">450</int>
+ <reference key="object" ref="288088188"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="579392910"/>
+ </array>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">451</int>
+ <reference key="object" ref="579392910"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="1060694897"/>
+ <reference ref="879586729"/>
+ <reference ref="56570060"/>
+ </array>
+ <reference key="parent" ref="288088188"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">452</int>
+ <reference key="object" ref="1060694897"/>
+ <reference key="parent" ref="579392910"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">453</int>
+ <reference key="object" ref="859480356"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">454</int>
+ <reference key="object" ref="795346622"/>
+ <reference key="parent" ref="769623530"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">457</int>
+ <reference key="object" ref="65139061"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">459</int>
+ <reference key="object" ref="19036812"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">460</int>
+ <reference key="object" ref="672708820"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">462</int>
+ <reference key="object" ref="537092702"/>
+ <reference key="parent" ref="698887838"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">465</int>
+ <reference key="object" ref="879586729"/>
+ <reference key="parent" ref="579392910"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">466</int>
+ <reference key="object" ref="56570060"/>
+ <reference key="parent" ref="579392910"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">485</int>
+ <reference key="object" ref="82994268"/>
+ <reference key="parent" ref="789758025"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">490</int>
+ <reference key="object" ref="448692316"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="992780483"/>
+ </array>
+ <reference key="parent" ref="649796088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">491</int>
+ <reference key="object" ref="992780483"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="105068016"/>
+ </array>
+ <reference key="parent" ref="448692316"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">492</int>
+ <reference key="object" ref="105068016"/>
+ <reference key="parent" ref="992780483"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">496</int>
+ <reference key="object" ref="215659978"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="446991534"/>
+ </array>
+ <reference key="parent" ref="941447902"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">497</int>
+ <reference key="object" ref="446991534"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="875092757"/>
+ <reference ref="630155264"/>
+ <reference ref="945678886"/>
+ <reference ref="512868991"/>
+ <reference ref="163117631"/>
+ <reference ref="31516759"/>
+ <reference ref="908105787"/>
+ <reference ref="644046920"/>
+ <reference ref="231811626"/>
+ <reference ref="883618387"/>
+ </array>
+ <reference key="parent" ref="215659978"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">498</int>
+ <reference key="object" ref="875092757"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">499</int>
+ <reference key="object" ref="630155264"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">500</int>
+ <reference key="object" ref="945678886"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">501</int>
+ <reference key="object" ref="512868991"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">502</int>
+ <reference key="object" ref="163117631"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">503</int>
+ <reference key="object" ref="31516759"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="956096989"/>
+ </array>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">504</int>
+ <reference key="object" ref="908105787"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">505</int>
+ <reference key="object" ref="644046920"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">506</int>
+ <reference key="object" ref="231811626"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">507</int>
+ <reference key="object" ref="883618387"/>
+ <reference key="parent" ref="446991534"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">508</int>
+ <reference key="object" ref="956096989"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="257099033"/>
+ <reference ref="551969625"/>
+ <reference ref="249532473"/>
+ <reference ref="607364498"/>
+ <reference ref="508151438"/>
+ <reference ref="981751889"/>
+ <reference ref="380031999"/>
+ <reference ref="825984362"/>
+ <reference ref="560145579"/>
+ </array>
+ <reference key="parent" ref="31516759"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">509</int>
+ <reference key="object" ref="257099033"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">510</int>
+ <reference key="object" ref="551969625"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">511</int>
+ <reference key="object" ref="249532473"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">512</int>
+ <reference key="object" ref="607364498"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">513</int>
+ <reference key="object" ref="508151438"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">514</int>
+ <reference key="object" ref="981751889"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">515</int>
+ <reference key="object" ref="380031999"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">516</int>
+ <reference key="object" ref="825984362"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">517</int>
+ <reference key="object" ref="560145579"/>
+ <reference key="parent" ref="956096989"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">534</int>
+ <reference key="object" ref="738670835"/>
+ <reference key="parent" ref="963351320"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">546</int>
+ <reference key="object" ref="976324537"/>
+ <reference key="parent" ref="0"/>
+ </object>
+ </array>
+ </object>
+ <dictionary class="NSMutableDictionary" key="flattenedProperties">
+ <string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="112.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="124.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="125.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="126.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="129.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="130.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="131.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="134.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="136.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="143.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="144.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="145.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="149.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="150.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="19.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="195.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="196.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="197.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="198.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="199.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="200.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="201.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="202.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="203.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="204.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="205.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="206.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="207.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="208.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="209.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="210.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="211.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="212.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="213.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="214.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="215.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="216.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="217.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="218.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="219.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="220.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="221.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="23.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="236.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="239.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="24.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="29.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="295.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="296.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="297.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="298.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="346.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="348.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="349.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="350.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="351.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="354.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="375.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="376.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="377.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="388.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="389.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="390.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="391.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="392.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="393.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="394.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="395.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="396.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="397.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="398.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="399.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="400.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="401.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="402.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="403.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="404.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="405.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="406.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="407.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="408.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="409.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="410.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="411.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="412.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="413.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="414.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="415.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="416.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="417.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="418.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="419.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="450.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="451.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="452.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="453.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="454.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="457.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="459.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="460.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="462.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="465.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="466.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="485.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="490.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="491.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="492.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="496.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="497.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="498.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="499.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="5.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="500.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="501.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="502.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="503.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="504.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="505.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="506.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="507.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="508.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="509.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="510.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="511.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="512.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="513.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="514.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="515.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="516.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="517.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="534.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="546.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="56.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="57.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="58.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="72.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="73.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="74.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="75.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="77.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="78.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="79.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="81.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="82.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="83.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="92.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ </dictionary>
+ <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
+ <nil key="activeLocalization"/>
+ <dictionary class="NSMutableDictionary" key="localizations"/>
+ <nil key="sourceID"/>
+ <int key="maxID">547</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <array class="NSMutableArray" key="referencedPartialClassDescriptions">
+ <object class="IBPartialClassDescription">
+ <string key="className">AppDelegate</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">../MacGap/AppDelegate.h</string>
+ </object>
+ </object>
+ </array>
+ <array class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <string key="superclassName">NSResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSApplication.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSBrowser</string>
+ <string key="superclassName">NSControl</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSBrowser.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSControl</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSControl.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSDocument</string>
+ <string key="superclassName">NSObject</string>
+ <dictionary class="NSMutableDictionary" key="actions">
+ <string key="printDocument:">id</string>
+ <string key="revertDocumentToSaved:">id</string>
+ <string key="runPageLayout:">id</string>
+ <string key="saveDocument:">id</string>
+ <string key="saveDocumentAs:">id</string>
+ <string key="saveDocumentTo:">id</string>
+ </dictionary>
+ <dictionary class="NSMutableDictionary" key="actionInfosByName">
+ <object class="IBActionInfo" key="printDocument:">
+ <string key="name">printDocument:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo" key="revertDocumentToSaved:">
+ <string key="name">revertDocumentToSaved:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo" key="runPageLayout:">
+ <string key="name">runPageLayout:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo" key="saveDocument:">
+ <string key="name">saveDocument:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo" key="saveDocumentAs:">
+ <string key="name">saveDocumentAs:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo" key="saveDocumentTo:">
+ <string key="name">saveDocumentTo:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </dictionary>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSDocument.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSDocumentController</string>
+ <string key="superclassName">NSObject</string>
+ <dictionary class="NSMutableDictionary" key="actions">
+ <string key="clearRecentDocuments:">id</string>
+ <string key="newDocument:">id</string>
+ <string key="openDocument:">id</string>
+ <string key="saveAllDocuments:">id</string>
+ </dictionary>
+ <dictionary class="NSMutableDictionary" key="actionInfosByName">
+ <object class="IBActionInfo" key="clearRecentDocuments:">
+ <string key="name">clearRecentDocuments:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo" key="newDocument:">
+ <string key="name">newDocument:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo" key="openDocument:">
+ <string key="name">openDocument:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo" key="saveAllDocuments:">
+ <string key="name">saveAllDocuments:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </dictionary>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSDocumentController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSFormatter</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSMatrix</string>
+ <string key="superclassName">NSControl</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSMatrix.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSMenu</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSMenu.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSMenuItem</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSMovieView</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSMovieView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSPopover</string>
+ <string key="superclassName">NSResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSPopover.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSResponder</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSResponder.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSTableView</string>
+ <string key="superclassName">NSControl</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSTableView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSText</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSText.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSTextView</string>
+ <string key="superclassName">NSText</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSTextView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSView</string>
+ <string key="superclassName">NSResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSViewController</string>
+ <string key="superclassName">NSResponder</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <string key="NS.key.0">view</string>
+ <string key="NS.object.0">NSView</string>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <string key="NS.key.0">view</string>
+ <object class="IBToOneOutletInfo" key="NS.object.0">
+ <string key="name">view</string>
+ <string key="candidateClassName">NSView</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSWindow</string>
+ <string key="superclassName">NSResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSWindow.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">WebView</string>
+ <string key="superclassName">NSView</string>
+ <dictionary class="NSMutableDictionary" key="actions">
+ <string key="goBack:">id</string>
+ <string key="goForward:">id</string>
+ <string key="makeTextLarger:">id</string>
+ <string key="makeTextSmaller:">id</string>
+ <string key="makeTextStandardSize:">id</string>
+ <string key="reload:">id</string>
+ <string key="reloadFromOrigin:">id</string>
+ <string key="stopLoading:">id</string>
+ <string key="takeStringURLFrom:">id</string>
+ <string key="toggleContinuousSpellChecking:">id</string>
+ <string key="toggleSmartInsertDelete:">id</string>
+ </dictionary>
+ <dictionary class="NSMutableDictionary" key="actionInfosByName">
+ <object class="IBActionInfo" key="goBack:">
+ <string key="name">goBack:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo" key="goForward:">
+ <string key="name">goForward:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo" key="makeTextLarger:">
+ <string key="name">makeTextLarger:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo" key="makeTextSmaller:">
+ <string key="name">makeTextSmaller:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo" key="makeTextStandardSize:">
+ <string key="name">makeTextStandardSize:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo" key="reload:">
+ <string key="name">reload:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo" key="reloadFromOrigin:">
+ <string key="name">reloadFromOrigin:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo" key="stopLoading:">
+ <string key="name">stopLoading:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo" key="takeStringURLFrom:">
+ <string key="name">takeStringURLFrom:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo" key="toggleContinuousSpellChecking:">
+ <string key="name">toggleContinuousSpellChecking:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo" key="toggleSmartInsertDelete:">
+ <string key="name">toggleSmartInsertDelete:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </dictionary>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">WebKit.framework/Headers/WebView.h</string>
+ </object>
+ </object>
+ </array>
+ </object>
+ <int key="IBDocument.localizationMode">0</int>
+ <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
+ <bool key="IBDocument.previouslyAttemptedUpgradeToXcode5">NO</bool>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
+ <integer value="4600" key="NS.object.0"/>
+ </object>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
+ <dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
+ <string key="NSMenuCheckmark">{12, 12}</string>
+ <string key="NSMenuMixedState">{10, 2}</string>
+ </dictionary>
+ </data>
+</archive>
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/en.lproj/Window.xib b/ext/mac-ui-macgap1-wrapper/src/MacGap/en.lproj/Window.xib
new file mode 100644
index 00000000..70d0c57b
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/en.lproj/Window.xib
@@ -0,0 +1,337 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
+ <data>
+ <int key="IBDocument.SystemTarget">1070</int>
+ <string key="IBDocument.SystemVersion">11C74</string>
+ <string key="IBDocument.InterfaceBuilderVersion">1938</string>
+ <string key="IBDocument.AppKitVersion">1138.23</string>
+ <string key="IBDocument.HIToolboxVersion">567.00</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.WebKitIBPlugin</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>1938</string>
+ <string>822</string>
+ </object>
+ </object>
+ <object class="NSArray" key="IBDocument.IntegratedClassDependencies">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSWindowTemplate</string>
+ <string>NSView</string>
+ <string>NSCustomObject</string>
+ <string>WebView</string>
+ </object>
+ <object class="NSArray" key="IBDocument.PluginDependencies">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.WebKitIBPlugin</string>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.Metadata">
+ <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
+ <integer value="1" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSCustomObject" id="1001">
+ <string key="NSClassName">WindowController</string>
+ </object>
+ <object class="NSCustomObject" id="1003">
+ <string key="NSClassName">FirstResponder</string>
+ </object>
+ <object class="NSCustomObject" id="1004">
+ <string key="NSClassName">NSApplication</string>
+ </object>
+ <object class="NSWindowTemplate" id="1005">
+ <int key="NSWindowStyleMask">15</int>
+ <int key="NSWindowBacking">2</int>
+ <string key="NSWindowRect">{{196, 240}, {758, 410}}</string>
+ <int key="NSWTFlags">544735232</int>
+ <string key="NSWindowTitle">Window</string>
+ <string key="NSWindowClass">NSWindow</string>
+ <nil key="NSViewClass"/>
+ <nil key="NSUserInterfaceItemIdentifier"/>
+ <object class="NSView" key="NSWindowView" id="1006">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="WebView" id="807146547">
+ <reference key="NSNextResponder" ref="1006"/>
+ <int key="NSvFlags">274</int>
+ <object class="NSMutableSet" key="NSDragTypes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="set.sortedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>Apple HTML pasteboard type</string>
+ <string>Apple PDF pasteboard type</string>
+ <string>Apple PICT pasteboard type</string>
+ <string>Apple URL pasteboard type</string>
+ <string>Apple Web Archive pasteboard type</string>
+ <string>NSColor pasteboard type</string>
+ <string>NSFilenamesPboardType</string>
+ <string>NSStringPboardType</string>
+ <string>NeXT RTFD pasteboard type</string>
+ <string>NeXT Rich Text Format v1.0 pasteboard type</string>
+ <string>NeXT TIFF v4.0 pasteboard type</string>
+ <string>WebURLsWithTitlesPboardType</string>
+ <string>public.png</string>
+ <string>public.url</string>
+ <string>public.url-name</string>
+ </object>
+ </object>
+ <string key="NSFrameSize">{758, 410}</string>
+ <reference key="NSSuperview" ref="1006"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView"/>
+ <int key="NSViewLayerContentsRedrawPolicy">2</int>
+ <string key="NSReuseIdentifierKey">_NS:51</string>
+ <string key="FrameName"/>
+ <string key="GroupName"/>
+ <object class="WebPreferences" key="Preferences">
+ <string key="Identifier"/>
+ <object class="NSMutableDictionary" key="Values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>WebKitDefaultFixedFontSize</string>
+ <string>WebKitDefaultFontSize</string>
+ <string>WebKitMinimumFontSize</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <integer value="12"/>
+ <integer value="12"/>
+ <integer value="1"/>
+ </object>
+ </object>
+ </object>
+ <bool key="UseBackForwardList">YES</bool>
+ <bool key="AllowsUndo">YES</bool>
+ </object>
+ </object>
+ <string key="NSFrameSize">{758, 410}</string>
+ <reference key="NSSuperview"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="807146547"/>
+ </object>
+ <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
+ <string key="NSMaxSize">{10000000000000, 10000000000000}</string>
+ <int key="NSWindowCollectionBehavior">128</int>
+ <bool key="NSWindowIsRestorable">YES</bool>
+ </object>
+ </object>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <object class="NSMutableArray" key="connectionRecords">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">contentView</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="1006"/>
+ </object>
+ <int key="connectionID">23</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">window</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="1005"/>
+ </object>
+ <int key="connectionID">25</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">title: contentView.webView.mainFrameTitle</string>
+ <reference key="source" ref="1005"/>
+ <reference key="destination" ref="1001"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="1005"/>
+ <reference key="NSDestination" ref="1001"/>
+ <string key="NSLabel">title: contentView.webView.mainFrameTitle</string>
+ <string key="NSBinding">title</string>
+ <string key="NSKeyPath">contentView.webView.mainFrameTitle</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">31</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">webView</string>
+ <reference key="source" ref="1006"/>
+ <reference key="destination" ref="807146547"/>
+ </object>
+ <int key="connectionID">19</int>
+ </object>
+ </object>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <object class="NSArray" key="orderedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <object class="NSArray" key="object" id="1002">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <reference key="children" ref="1000"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="1001"/>
+ <reference key="parent" ref="1002"/>
+ <string key="objectName">File's Owner</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="1003"/>
+ <reference key="parent" ref="1002"/>
+ <string key="objectName">First Responder</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-3</int>
+ <reference key="object" ref="1004"/>
+ <reference key="parent" ref="1002"/>
+ <string key="objectName">Application</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1</int>
+ <reference key="object" ref="1005"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1006"/>
+ </object>
+ <reference key="parent" ref="1002"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2</int>
+ <reference key="object" ref="1006"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="807146547"/>
+ </object>
+ <reference key="parent" ref="1005"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5</int>
+ <reference key="object" ref="807146547"/>
+ <reference key="parent" ref="1006"/>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="flattenedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>-1.IBPluginDependency</string>
+ <string>-2.IBPluginDependency</string>
+ <string>-3.IBPluginDependency</string>
+ <string>1.IBPluginDependency</string>
+ <string>1.IBWindowTemplateEditedContentRect</string>
+ <string>1.NSWindowTemplate.visibleAtLaunch</string>
+ <string>2.CustomClassName</string>
+ <string>2.IBPluginDependency</string>
+ <string>5.IBPluginDependency</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{357, 418}, {480, 270}}</string>
+ <integer value="1"/>
+ <string>ContentView</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.WebKitIBPlugin</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="unlocalizedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="1002"/>
+ <reference key="dict.values" ref="1002"/>
+ </object>
+ <nil key="activeLocalization"/>
+ <object class="NSMutableDictionary" key="localizations">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="1002"/>
+ <reference key="dict.values" ref="1002"/>
+ </object>
+ <nil key="sourceID"/>
+ <int key="maxID">31</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <object class="NSMutableArray" key="referencedPartialClassDescriptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">ContentView</string>
+ <string key="superclassName">NSView</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <string key="NS.key.0">webView</string>
+ <string key="NS.object.0">WebView</string>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <string key="NS.key.0">webView</string>
+ <object class="IBToOneOutletInfo" key="NS.object.0">
+ <string key="name">webView</string>
+ <string key="candidateClassName">WebView</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/ContentView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">WebView</string>
+ <object class="NSMutableDictionary" key="actions">
+ <string key="NS.key.0">reloadFromOrigin:</string>
+ <string key="NS.object.0">id</string>
+ </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <string key="NS.key.0">reloadFromOrigin:</string>
+ <object class="IBActionInfo" key="NS.object.0">
+ <string key="name">reloadFromOrigin:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/WebView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">WindowController</string>
+ <string key="superclassName">NSWindowController</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <string key="NS.key.0">contentView</string>
+ <string key="NS.object.0">ContentView</string>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <string key="NS.key.0">contentView</string>
+ <object class="IBToOneOutletInfo" key="NS.object.0">
+ <string key="name">contentView</string>
+ <string key="candidateClassName">ContentView</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/WindowController.h</string>
+ </object>
+ </object>
+ </object>
+ </object>
+ <int key="IBDocument.localizationMode">0</int>
+ <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
+ <integer value="3000" key="NS.object.0"/>
+ </object>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
+ </data>
+</archive>
diff --git a/ext/mac-ui-macgap1-wrapper/src/MacGap/main.m b/ext/mac-ui-macgap1-wrapper/src/MacGap/main.m
new file mode 100644
index 00000000..4ad50ad5
--- /dev/null
+++ b/ext/mac-ui-macgap1-wrapper/src/MacGap/main.m
@@ -0,0 +1,14 @@
+//
+// main.m
+// MacGap
+//
+// Created by Alex MacCaw on 08/01/2012.
+// Copyright (c) 2012 Twitter. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+int main(int argc, char *argv[])
+{
+ return NSApplicationMain(argc, (const char **)argv);
+}